From 8de629470bb48777d79d52e6b22d83fc51d0efed Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Thu, 13 Mar 2025 14:35:42 +0800 Subject: [PATCH 01/31] =?UTF-8?q?=E6=96=B0=E5=A2=9Ecelery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/requirements.txt | Bin 628 -> 2812 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 3395719bc4a8703d46ef4804b143346da6bc5808..aa68f3f7c658eb5121ceb3a4e245453ea24ae5af 100644 GIT binary patch literal 2812 zcmZ{mOK%fV428W$;-^g2Oj-&H7Dyl@1X34Bh*i}l6B?Ri(mY7h9}k?*9_LPIQ8ZCI z_O;JBe%$=|eQh(_*biITwJq(|-s*E|CpNGPeV^G&dm+o*?q$VxuD3(Chh?p^Q=M*X z;&yDWkL-I}*vKknnJP|Wt!?#p#)@3Tx{-aR&s6zVHg=CQMXC?cMmjyyv$Fl+JRYZx z66?ydOcaCowJfzG9>{AbPUIO0X?pNJn5OMk*%$hdX??(eUuHS>sGR#)8H+cF``#C`x0U}~IpF!|h(U^KFi8|xM|S7=Lrqi-^l7W4(Nxdg6-8N)6AevEjYgh}Xq9R> zlloL_(cujRo@NeS`1d0wt5)w}LT6kbJYew3QNFjIj^>BFIA7`*9X0ORD=}>q2L=mQ zX)b)xksH0s{2;yX=uc0haHZ}=gR#E(Kl7FjIX*`Z(EE7fTX!f?`PdVl3n6OsK6F`2 z$<{S2_)69PJ>3Y+MiW%D9C%kgr^Q;R=3b{pxkk#o)Y*}^6`fy6iKxVJrkt=x$HsX$ z(#bJRO!U)p%r5vQT|FDy>HMnezUU*SzJ8+p|4&wmSa|$Y#4_=vGsns@5z4)|u}7!^ zRj&OzYR%kS*@HBhIUD9bss)$iLv4QPp?~_d%)X|Z8n<&kd;&-D*y=P>2ltqxT1fg? zZiQ>$@ndV1&SDN1U4bS)mS^EUDVU3xJ~M9N&x`LS6*d8g>Ht?09rBHnap$~^;~OJ)0H-|XuF z>%c1>)dovq1ykspwJ3Nm?Sp;n@r|8P?C8Acc$J=_I|`SLBVP#hSiISF+`ZH%rX;za z2vI9`o1?Rj&$0vm&T|ii4m~!`h%J&hsL#;53N60dJNsgv-5R@#%AgceS?57FCuclru5iO=jes8Vwc~J#2$1i?{w}) zc~Rs}e66x@3kcxqzOEZFq`y#m#*Aw?j7G3NB0uT9#%=Y|>n%%73>i*|!oYAVo>+tfbs|y<-lbKn zeoX+)ebgh(K7J{+lU4I)66Dpc?u~pcm&_O}iB^Z)o;9CEq=$DTdPBBT>iDAm zIf+f=GH0b43D=^Fy;yV_l&WOSVaFw1ZEFpBKpxan7GVj-Eyl5DQvsN?2s$QCjE3H} zD*%jx4pb4v2XbM#BL$zEBGPq2EEHGE9lj#7=pg8x$t8n^xY7!SMSfV{YD{t^i0T~K zjfK(kj9xplqP*cupUJmh#QGIBg#Lu}gdPwB*p?%iJIAcJxA|;f><#~zgXFqGT3R25 zns1-vshDo2^>GcoW5Ho^KR^vj3=DMJN?IRL@nNj>GYrc0WdszKvbL66IzX}f1_&<4 AP5=M^ -- Gitee From 5ddf5bb9e2ba23c379ed36737a12abfa7d885746 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Wed, 26 Mar 2025 17:31:37 +0800 Subject: [PATCH 02/31] update --- .gitignore | 2 + backend/__init__.py | 9 + backend/application/dispatch.py | 2 +- backend/application/settings.py | 9 +- backend/application/urls.py | 19 +- backend/apps/__init__.py | 9 + backend/apps/crud_patron/__init__.py | 0 backend/apps/crud_patron/admin.py | 3 + backend/apps/crud_patron/apps.py | 6 + .../apps/crud_patron/migrations/__init__.py | 0 backend/apps/crud_patron/models.py | 61 ++ backend/apps/crud_patron/serializers.py | 139 ++++ backend/apps/crud_patron/tests.py | 3 + backend/apps/crud_patron/urls.py | 23 + backend/apps/crud_patron/views.py | 80 +++ backend/apps/utils/__init__.py | 9 + backend/dvadmin/system/views/dictionary.py | 4 +- backend/dvadmin/system/views/menu_button.py | 2 +- backend/dvadmin/system/views/user.py | 2 - backend/dvadmin/utils/import_export_mixin.py | 2 +- backend/requirements.txt | Bin 2812 -> 3608 bytes backend/static/drf-yasg/redoc/redoc.min.js | 2 +- web/package.json | 7 +- .../{logo-mini.svg => logo-mini-bak.svg} | 0 web/src/assets/logo-mini.png | Bin 0 -> 4137 bytes web/src/layout/footer/index.vue | 2 +- web/src/layout/logo/index.vue | 2 +- web/src/layout/navBars/breadcrumb/user.vue | 5 +- .../CrudPatronAddressModelViewSet/api.ts | 50 ++ .../CrudPatronAddressModelViewSet/crud.tsx | 158 +++++ .../CrudPatronAddressModelViewSet/index.vue | 56 ++ .../crud_patron/CrudPatronModelViewSet/api.ts | 50 ++ .../CrudPatronModelViewSet/crud.tsx | 414 +++++++++++ .../CrudPatronModelViewSet/free/crud.tsx | 126 ++++ .../CrudPatronModelViewSet/free/index.vue | 70 ++ .../CrudPatronModelViewSet/index.vue | 55 ++ .../components/DeptUserCom/crud copy.aatsx | 398 +++++++++++ .../dept/components/DeptUserCom/crud.tsx | 63 +- web/src/views/system/home/bakindex.vue | 643 ++++++++++++++++++ web/src/views/system/home/index.vue | 636 +---------------- web/src/views/system/login/index.vue | 2 +- .../menu/components/MenuButtonCom/crud.tsx | 5 +- 42 files changed, 2438 insertions(+), 690 deletions(-) create mode 100644 backend/__init__.py create mode 100644 backend/apps/__init__.py create mode 100644 backend/apps/crud_patron/__init__.py create mode 100644 backend/apps/crud_patron/admin.py create mode 100644 backend/apps/crud_patron/apps.py create mode 100644 backend/apps/crud_patron/migrations/__init__.py create mode 100644 backend/apps/crud_patron/models.py create mode 100644 backend/apps/crud_patron/serializers.py create mode 100644 backend/apps/crud_patron/tests.py create mode 100644 backend/apps/crud_patron/urls.py create mode 100644 backend/apps/crud_patron/views.py create mode 100644 backend/apps/utils/__init__.py rename web/src/assets/{logo-mini.svg => logo-mini-bak.svg} (100%) create mode 100644 web/src/assets/logo-mini.png create mode 100644 web/src/views/crud_patron/CrudPatronAddressModelViewSet/api.ts create mode 100644 web/src/views/crud_patron/CrudPatronAddressModelViewSet/crud.tsx create mode 100644 web/src/views/crud_patron/CrudPatronAddressModelViewSet/index.vue create mode 100644 web/src/views/crud_patron/CrudPatronModelViewSet/api.ts create mode 100644 web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx create mode 100644 web/src/views/crud_patron/CrudPatronModelViewSet/free/crud.tsx create mode 100644 web/src/views/crud_patron/CrudPatronModelViewSet/free/index.vue create mode 100644 web/src/views/crud_patron/CrudPatronModelViewSet/index.vue create mode 100644 web/src/views/system/dept/components/DeptUserCom/crud copy.aatsx create mode 100644 web/src/views/system/home/bakindex.vue diff --git a/.gitignore b/.gitignore index 95d65ce2b9..d999b56385 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ /backend/venv /backend/.idea +/backend/media +/web/node_modules .idea .history/ diff --git a/backend/__init__.py b/backend/__init__.py new file mode 100644 index 0000000000..4c245e18e2 --- /dev/null +++ b/backend/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/15 15:50 +@File: __init__.py.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" diff --git a/backend/application/dispatch.py b/backend/application/dispatch.py index 101b3ab8c0..f5d6f4bf8f 100644 --- a/backend/application/dispatch.py +++ b/backend/application/dispatch.py @@ -32,7 +32,7 @@ def _get_all_dictionary(): "children": list( Dictionary.objects.filter(parent=instance.id) .filter(status=1) - .values("label", "value", "type", "color") + .values("id", "label", "value", "type", "color") ), } ) diff --git a/backend/application/settings.py b/backend/application/settings.py index e6bdec5eaa..5f658f3bd3 100644 --- a/backend/application/settings.py +++ b/backend/application/settings.py @@ -62,6 +62,13 @@ INSTALLED_APPS = [ "dvadmin.system", ] +# 自定义应用 +My_Apps = [ + 'apps.crud_patron', # 客户管理 +] + +INSTALLED_APPS += My_Apps + MIDDLEWARE = [ "dvadmin.utils.middleware.HealthCheckMiddleware", "django.middleware.security.SecurityMiddleware", @@ -404,7 +411,7 @@ PLUGINS_URL_PATTERNS = [] # ********** 一键导入插件配置开始 ********** # 例如: # from dvadmin_upgrade_center.settings import * # 升级中心 -# from dvadmin3_celery.settings import * # celery 异步任务 +from dvadmin3_celery.settings import * # celery 异步任务 # from dvadmin_third.settings import * # 第三方用户管理 # from dvadmin_ak_sk.settings import * # 秘钥管理管理 # from dvadmin_tenants.settings import * # 租户管理 diff --git a/backend/application/urls.py b/backend/application/urls.py index cb5a89997a..78e816dada 100644 --- a/backend/application/urls.py +++ b/backend/application/urls.py @@ -110,13 +110,22 @@ urlpatterns = ( path("api/init/settings/", InitSettingsViewSet.as_view()), path("apiLogin/", ApiLogin.as_view()), - # 仅用于开发,上线需关闭 - path("api/token/", LoginTokenView.as_view()), - # 前端页面映射 - path('web/', web_view, name='web_view'), - path('web/', serve_web_files, name='serve_web_files'), + # # 仅用于开发,上线需关闭 + # path("api/token/", LoginTokenView.as_view()), + # # 前端页面映射 + # path('web/', web_view, name='web_view'), + # path('web/', serve_web_files, name='serve_web_files'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_URL) + [re_path(ele.get('re_path'), include(ele.get('include'))) for ele in settings.PLUGINS_URL_PATTERNS] ) + +#添加如下内容,把自己的路由单独写出来,这样方便与dvadmin3的官方路由作区分 +My_Urls = ( + [ #这里的crud_demo是指django创建的应用名称crud_demo + path('',include('apps.crud_patron.urls')),] +) + +# 这里把自己的路径单独出来,后面再追加在一起 +urlpatterns += My_Urls diff --git a/backend/apps/__init__.py b/backend/apps/__init__.py new file mode 100644 index 0000000000..99661c216e --- /dev/null +++ b/backend/apps/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/14 11:36 +@File: __init__.py.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" diff --git a/backend/apps/crud_patron/__init__.py b/backend/apps/crud_patron/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/crud_patron/admin.py b/backend/apps/crud_patron/admin.py new file mode 100644 index 0000000000..8c38f3f3da --- /dev/null +++ b/backend/apps/crud_patron/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/apps/crud_patron/apps.py b/backend/apps/crud_patron/apps.py new file mode 100644 index 0000000000..cccf857e97 --- /dev/null +++ b/backend/apps/crud_patron/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CrudPatronConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "apps.crud_patron" diff --git a/backend/apps/crud_patron/migrations/__init__.py b/backend/apps/crud_patron/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/crud_patron/models.py b/backend/apps/crud_patron/models.py new file mode 100644 index 0000000000..616241fdd8 --- /dev/null +++ b/backend/apps/crud_patron/models.py @@ -0,0 +1,61 @@ +from django.db import models + +# Create your models here. +from dvadmin.utils.models import CoreModel, table_prefix +from dvadmin.system.models import Users, Dictionary, FileList + + +class CrudPatronAddressModel(CoreModel): + name = models.CharField(max_length=255, verbose_name="收件人名称", help_text="收件人名称") + mobile = models.CharField(max_length=255, verbose_name="收件人手机", help_text="收件人手机") + address = models.CharField(max_length=255, verbose_name="收件地址", help_text="收件地址") + note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") + + def __str__(self): + return f"{self.name}" + + class Meta: + db_table = table_prefix + 'crud_patron_address' + verbose_name = '收件人信息表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + +class CrudPatronModel(CoreModel): + username = models.CharField(max_length=255, verbose_name="客户名称", null=True, blank=True, help_text="客户名称") + phone = models.CharField(max_length=255, verbose_name="联系电话", null=True, blank=True, help_text="联系电话") + email = models.EmailField(max_length=255, verbose_name="邮箱地址", null=True, blank=True, help_text="邮箱地址") + age = models.IntegerField(verbose_name="年龄", null=True, blank=True, help_text="年龄") + GENDER_CHOICES = ( + (0, "未知"), + (1, "男"), + (2, "女"), + ) + sex = models.IntegerField(default=0, choices=GENDER_CHOICES, verbose_name="性别", null=True, blank=True, + help_text="性别") + open_order_name = models.CharField(max_length=255, verbose_name="开单名称") + my_remark = models.CharField(max_length=255, verbose_name="我方备注", null=True, blank=True, help_text="我方备注") + HIERARCHY_CHOICES = ( + (0, "1级"), + (1, "2级"), + (2, "3级"), + (3, "4级"), + (4, "5级"), + ) + hierarchy = models.IntegerField(default=0, choices=HIERARCHY_CHOICES, verbose_name="客户等级", help_text="客户等级") + tags = models.ManyToManyField(Dictionary, verbose_name="客户标签", blank=True, db_constraint=False, + help_text="客户标签", related_name="crud_patron_tags") + express = models.CharField(max_length=255, verbose_name="默认物流", null=True, blank=True, help_text="默认物流") + salesman = models.ManyToManyField(Users, verbose_name="业务员", blank=True, db_constraint=False, + help_text="业务员", related_name="crud_patron_salesman") + files = models.JSONField(verbose_name="上传附件", null=True, help_text="上传附件") + images = models.JSONField(verbose_name="上传图片", null=True, help_text="上传图片") + addressee = models.ManyToManyField(CrudPatronAddressModel, verbose_name="收件信息", blank=True, + db_constraint=False, help_text="收件信息") + + class Meta: + db_table = table_prefix + 'crud_patron' + app_label = 'crud_patron' + verbose_name = '客户管理表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) diff --git a/backend/apps/crud_patron/serializers.py b/backend/apps/crud_patron/serializers.py new file mode 100644 index 0000000000..2ba89f2514 --- /dev/null +++ b/backend/apps/crud_patron/serializers.py @@ -0,0 +1,139 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/16 09:59 +@File: serializers.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + +from .models import CrudPatronModel, CrudPatronAddressModel +from dvadmin.utils.serializers import CustomModelSerializer +from rest_framework import serializers + + +class CrudPatronAddressModelExportImportSerializer(CustomModelSerializer): + class Meta: + model = CrudPatronAddressModel + fields = "__all__" # 指定需要序列化的字段 + + +class CrudPatronModelImportSerializer(CustomModelSerializer): + + class Meta: + model = CrudPatronModel + fields = "__all__" + + +class CrudPatronModelExportSerializer(CustomModelSerializer): + + class Meta: + model = CrudPatronModel + fields = "__all__" + + +class CrudPatronModelSerializer(CustomModelSerializer): + """ + 序列化器 + """ + + # 收件信息字段定制 + addressee = serializers.SerializerMethodField() + + class Meta: + model = CrudPatronModel + fields = "__all__" + + def get_addressee(self, obj): + """ 结构化收件地址信息 """ + return [ + { + "name": addr.name, + "mobile": addr.mobile, + "address": addr.address, + "note": addr.note, + "id": -addr.id, + "$editable_id": -addr.id, + "create_datetime": addr.create_datetime.strftime("%Y-%m-%d %H:%M:%S") + } + for addr in obj.addressee.all() + ] + + +class CrudPatronAddressModelSerializer(CustomModelSerializer): + class Meta: + model = CrudPatronAddressModel + fields = "__all__" # 指定需要序列化的字段 + + +class CrudPatronModelCreateUpdateSerializer(CustomModelSerializer): + # 处理嵌套地址创建 + addressee = CrudPatronAddressModelSerializer(many=True, required=False) + + class Meta: + model = CrudPatronModel + fields = "__all__" + read_only_fields = ("id", "create_datetime", "update_datetime") + + def create(self, validated_data): + # 提取地址数据 + addresses_data = validated_data.pop('addressee', []) + + # 创建主对象 + instance = super().create(validated_data) + + # 创建关联地址 + self._process_addresses(instance, addresses_data) + return instance + + def update(self, instance, validated_data): + # 提取地址数据 + addresses_data = validated_data.pop('addressee', []) + + # 更新主对象 + instance = super().update(instance, validated_data) + + # 清除旧地址并创建新地址 + instance.addressee.clear() + self._process_addresses(instance, addresses_data) + return instance + + def _process_addresses(self, instance, addresses_data): + """ 创建/更新多对多字段 addressee """ + request = self.context.get('request') + for address_data in addresses_data: + # 处理新建地址(带负ID表示临时对象) + if address_data.get('id', 0) < 0: + address_data.pop('id', None) + address_data.pop('$editable_id', None) + + # 联合查询条件 + query = CrudPatronAddressModel.objects.filter( + name=address_data.get('name'), + mobile=address_data.get('mobile') + ) + + # 存在则更新,不存在则创建 + if query.exists(): + addr_obj = query.first() + address_serializer = CrudPatronAddressModelSerializer( + addr_obj, + data=address_data, + partial=True, # 允许部分更新 + context={'request': request} + ) + else: + address_serializer = CrudPatronAddressModelSerializer( + data=address_data, + context={'request': request} + ) + + address_serializer.is_valid(raise_exception=True) + address = address_serializer.save( + modifier=request.user.id if request else None, + dept_belong_id=getattr(request.user, 'dept_id', None) if request else None + ) + + # 仅当新建时添加关联(更新时已存在关联) + instance.addressee.add(address) diff --git a/backend/apps/crud_patron/tests.py b/backend/apps/crud_patron/tests.py new file mode 100644 index 0000000000..c2629a3aba --- /dev/null +++ b/backend/apps/crud_patron/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. \ No newline at end of file diff --git a/backend/apps/crud_patron/urls.py b/backend/apps/crud_patron/urls.py new file mode 100644 index 0000000000..6b6c2809ae --- /dev/null +++ b/backend/apps/crud_patron/urls.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/16 10:07 +@File: urls.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + + +from rest_framework.routers import SimpleRouter + +from .views import CrudPatronModelViewSet, CrudPatronAddressModelViewSet + +router = SimpleRouter() +# 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudPatronViewSet +router.register("api/CrudPatronModelViewSet", CrudPatronModelViewSet) +router.register("api/CrudPatronAddressModelViewSet", CrudPatronAddressModelViewSet) + +urlpatterns = [ +] +urlpatterns += router.urls \ No newline at end of file diff --git a/backend/apps/crud_patron/views.py b/backend/apps/crud_patron/views.py new file mode 100644 index 0000000000..fc32d9816f --- /dev/null +++ b/backend/apps/crud_patron/views.py @@ -0,0 +1,80 @@ +from django.shortcuts import render + +# Create your views here. +from .models import CrudPatronModel, CrudPatronAddressModel +from .serializers import CrudPatronModelSerializer, CrudPatronModelCreateUpdateSerializer +from .serializers import CrudPatronModelExportSerializer, CrudPatronModelImportSerializer +from .serializers import CrudPatronAddressModelSerializer, CrudPatronAddressModelExportImportSerializer +from dvadmin.utils.viewset import CustomModelViewSet + + +class CrudPatronModelViewSet(CustomModelViewSet): + """ + 客户管理 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = CrudPatronModel.objects.all() + serializer_class = CrudPatronModelSerializer + create_serializer_class = CrudPatronModelCreateUpdateSerializer + update_serializer_class = CrudPatronModelCreateUpdateSerializer + + # 导出序列化器 + export_serializer_class = CrudPatronModelExportSerializer + export_field_label = { + "username": "客户名称", + "phone": "联系电话", + "email": "邮箱地址", + # "age": "年龄", + # "sex": "性别", + # "open_order_name": "开单名称", + # "my_remark": "我方备注", + # "hierarchy": "客户等级", + # "tags": "客户标签", + # "express": "默认物流", + # "salesman": "业务员", + # "addressee": "收件信息", + } + + # 导入序列化器 + import_serializer_class = CrudPatronModelImportSerializer + import_field_dict = { + "username": "客户名称", + "phone": "联系电话", + "email": "邮箱地址", + "open_order_name": "开单名称", + } + + +class CrudPatronAddressModelViewSet(CustomModelViewSet): + """ + 收件人信息 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = CrudPatronAddressModel.objects.all() + serializer_class = CrudPatronAddressModelSerializer + create_serializer_class = CrudPatronAddressModelSerializer + update_serializer_class = CrudPatronAddressModelSerializer + + data_dict = { + "name": "收件人名称", + "mobile": "收件人手机", + "address": "收件地址", + "note": "备注", + } + + # 导出序列化器 + export_serializer_class = CrudPatronAddressModelExportImportSerializer + export_field_label = data_dict + + # 导入序列化器 + import_serializer_class = CrudPatronAddressModelExportImportSerializer + import_field_dict = data_dict + diff --git a/backend/apps/utils/__init__.py b/backend/apps/utils/__init__.py new file mode 100644 index 0000000000..e4cb647fdf --- /dev/null +++ b/backend/apps/utils/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/15 17:49 +@File: __init__.py.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" diff --git a/backend/dvadmin/system/views/dictionary.py b/backend/dvadmin/system/views/dictionary.py index 46c2a9c606..21ffea1569 100644 --- a/backend/dvadmin/system/views/dictionary.py +++ b/backend/dvadmin/system/views/dictionary.py @@ -24,7 +24,7 @@ class DictionarySerializer(CustomModelSerializer): class Meta: model = Dictionary fields = "__all__" - read_only_fields = ["id"] + read_only_fields = ["id"] # 不显示id @@ -102,6 +102,6 @@ class InitDictionaryViewSet(APIView): data = [ele for ele in dispatch.get_dictionary_config().values()] else: data = self.queryset.filter(parent__value=dictionary_key, status=True).values('label', 'value', 'type', - 'color') + 'color', 'id') return SuccessResponse(data=data, msg="获取成功") return SuccessResponse(data=[], msg="获取成功") diff --git a/backend/dvadmin/system/views/menu_button.py b/backend/dvadmin/system/views/menu_button.py index d290bb1c30..c1ca7c9085 100644 --- a/backend/dvadmin/system/views/menu_button.py +++ b/backend/dvadmin/system/views/menu_button.py @@ -101,7 +101,7 @@ class MenuButtonViewSet(CustomModelViewSet): {'menu': menu_obj.id, 'name': '详情', 'value': f'{menu_obj.component_name}:Retrieve', 'api': f'/api/{menu_obj.component_name}/{{id}}/', 'method': 0}, {'menu': menu_obj.id, 'name': '复制', 'value': f'{menu_obj.component_name}:Copy', 'api': f'/api/{menu_obj.component_name}/', 'method': 1}, {'menu': menu_obj.id, 'name': '导入', 'value': f'{menu_obj.component_name}:Import', 'api': f'/api/{menu_obj.component_name}/import_data/', 'method': 1}, - {'menu': menu_obj.id, 'name': '导出', 'value': f'{menu_obj.component_name}:Export', 'api': f'/api{menu_obj.component_name}/export_data/', 'method': 1},] + {'menu': menu_obj.id, 'name': '导出', 'value': f'{menu_obj.component_name}:Export', 'api': f'/api/{menu_obj.component_name}/export_data/', 'method': 1},] serializer = self.get_serializer(data=result_list, many=True) serializer.is_valid(raise_exception=True) serializer.save() diff --git a/backend/dvadmin/system/views/user.py b/backend/dvadmin/system/views/user.py index 16fcbe9429..7ee5e81fdd 100644 --- a/backend/dvadmin/system/views/user.py +++ b/backend/dvadmin/system/views/user.py @@ -426,11 +426,9 @@ class UserViewSet(CustomModelViewSet): queryset = self.filter_queryset(self.get_queryset()) else: queryset = self.filter_queryset(self.get_queryset()) - # print(queryset.values('id','name','dept__id')) page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True, request=request) - # print(serializer.data) return self.get_paginated_response(serializer.data) serializer = self.get_serializer(queryset, many=True, request=request) diff --git a/backend/dvadmin/utils/import_export_mixin.py b/backend/dvadmin/utils/import_export_mixin.py index e188ff5fa2..25b826d0ef 100644 --- a/backend/dvadmin/utils/import_export_mixin.py +++ b/backend/dvadmin/utils/import_export_mixin.py @@ -311,7 +311,7 @@ class ExportSerializerMixin: DownloadCenter.objects.create(creator=request.user, task_name=f'{get_verbose_name(queryset)}数据导出任务', dept_belong_id=request.user.dept_id).pk, self.export_field_label ) - return SuccessResponse(msg="导入任务已创建,请前往‘下载中心’等待下载") + return SuccessResponse(msg="导出任务已创建,请前往‘下载中心’等待下载") except: pass # 导出excel 表 diff --git a/backend/requirements.txt b/backend/requirements.txt index aa68f3f7c658eb5121ceb3a4e245453ea24ae5af..bfa119c1a7c8f192aa1a09b09e8b967fccbc8565 100644 GIT binary patch delta 726 zcmZuvu}%U(6nuAx5RIjwKne@WBizZUjT%F1Vu2lnIk<}u;f~;e5(^3~Eljr1-ym05 zSosac4=}Mc{(wg3?e2+%*(|r@&Cbl5x1X!`YqvK|k7BGLozV`KLoQWl1G`Eqv_u|_ zP>raCQ-?y0siDr>k(hmr=>rr0L2S>iUW{oQw?nYUsD}9M(L`fd#fA=Zu~r){7;BMF z0dDaBE)AsqP~Ne%uKSCh==uq;9?l)jUX%X7ZIUAzrdtdk8~`){eG8|#)rxq}6vVap zw(LVr#o&rpvzYjqU8C&N7+|0JD27PJg0DFlXNEq+-NLNI+5;)llh{+;C%dkSy=-}% zI|{%Q$Rs>iQkip>Ti8z0%tl7tgNqQ+aFOHL#I|M214yLRV-Q6!HjflT{|!y~kbND|Ie7Vz1kjm>Vxw>N%g-aG3$S<5v#P7-lO_XC$#?$C F_yL&dgZBUc delta 57 zcmV-90LK5A9Q+lKjIr>{0h2-lFq5bQ;Ipy>Isua$2Bwqf1{||42WA12;0Ughv4*e.theme.spacing.unit}px; `;Object.defineProperty,Object.getOwnPropertyDescriptor;let qv=class extends n.Component{render(){const{operation:e}=this.props,t=e.codeSamples,r=t.length>0,o=1===t.length&&this.context.hideSingleRequestSampleTab;return r&&n.createElement("div",null,n.createElement(Tu,null," ",lo("requestSamples")," "),n.createElement(Dp,{defaultIndex:0},n.createElement(Ap,{hidden:o},t.map((e=>n.createElement(jp,{key:e.lang+"_"+(e.label||"")},void 0!==e.label?e.label:e.lang)))),t.map((e=>n.createElement(Np,{key:e.lang+"_"+(e.label||"")},xu(e)?n.createElement("div",null,n.createElement(jv,{content:e.requestBodyContent})):n.createElement(ah,{lang:e.lang,source:e.source}))))))||null}};qv.contextType=Sa,qv=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],qv);Object.defineProperty,Object.getOwnPropertyDescriptor;let Wv=class extends n.Component{render(){const{operation:e}=this.props,t=e.responses.filter((e=>e.content&&e.content.hasSample));return t.length>0&&n.createElement("div",null,n.createElement(Tu,null," ",lo("responseSamples")," "),n.createElement(Dp,{defaultIndex:0},n.createElement(Ap,null,t.map((e=>n.createElement(jp,{className:"tab-"+e.type,key:e.code},e.code)))),t.map((e=>n.createElement(Np,{key:e.code},n.createElement("div",null,n.createElement(jv,{content:e.content})))))))||null}};Wv=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Wv);var Hv=Object.defineProperty,Yv=Object.defineProperties,Kv=Object.getOwnPropertyDescriptors,Gv=Object.getOwnPropertySymbols,Qv=Object.prototype.hasOwnProperty,Xv=Object.prototype.propertyIsEnumerable,Jv=(e,t,n)=>t in e?Hv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Zv=ga.div` margin-bottom: ${({theme:e})=>6*e.spacing.unit}px; -`,eb=im((({operation:e})=>{const{name:t,description:r,deprecated:o,externalDocs:i,isWebhook:a,httpVerb:s}=e,l=!(!r&&!i),{showWebhookVerb:c}=n.useContext(Sa);return n.createElement(Sa.Consumer,null,(u=>n.createElement(Au,((e,t)=>Yv(e,Kv(t)))(((e,t)=>{for(var n in t||(t={}))Qv.call(t,n)&&Jv(e,n,t[n]);if(Gv)for(var n of Gv(t))Xv.call(t,n)&&Jv(e,n,t[n]);return e})({},{[gf]:e.operationHash}),{id:e.operationHash}),n.createElement(Ou,null,n.createElement(ju,null,n.createElement(Uu,{to:e.id}),t," ",o&&n.createElement(qu,{type:"warning"}," Deprecated "),a&&n.createElement(qu,{type:"primary"}," ","Webhook ",c&&s&&"| "+s.toUpperCase())),u.pathInMiddlePanel&&!a&&n.createElement(Vy,{operation:e,inverted:!0}),l&&n.createElement(Zv,null,void 0!==r&&n.createElement(Ff,{source:r}),i&&n.createElement(xm,{externalDocs:i})),n.createElement(Sm,{extensions:e.extensions}),n.createElement(gv,{securities:e.security}),n.createElement(Xy,{parameters:e.parameters,body:e.requestBody}),n.createElement(fv,{responses:e.responses}),n.createElement(kv,{callbacks:e.callbacks})),n.createElement(Pu,null,!u.pathInMiddlePanel&&!a&&n.createElement(Vy,{operation:e}),n.createElement(qv,{operation:e}),n.createElement(Wv,{operation:e}),n.createElement(Vv,{callbacks:e.callbacks})))))}));var tb=Object.defineProperty,nb=Object.getOwnPropertyDescriptor,rb=Object.getOwnPropertySymbols,ob=Object.prototype.hasOwnProperty,ib=Object.prototype.propertyIsEnumerable,ab=(e,t,n)=>t in e?tb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,sb=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?nb(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&tb(t,n,i),i};let lb=class extends n.Component{render(){const e=this.props.items;return 0===e.length?null:e.map((e=>n.createElement(cb,{key:e.id,item:e})))}};lb=sb([im],lb);let cb=class extends n.Component{render(){const e=this.props.item;let t;const{type:r}=e;switch(r){case"group":t=null;break;case"tag":case"section":default:t=n.createElement(pb,((e,t)=>{for(var n in t||(t={}))ob.call(t,n)&&ab(e,n,t[n]);if(rb)for(var n of rb(t))ib.call(t,n)&&ab(e,n,t[n]);return e})({},this.props));break;case"operation":t=n.createElement(db,{item:e})}return n.createElement(n.Fragment,null,t&&n.createElement(Su,{id:e.id,underlined:"operation"===e.type},t),e.items&&n.createElement(lb,{items:e.items}))}};cb=sb([im],cb);const ub=e=>n.createElement(Ou,{compact:!0},e);let pb=class extends n.Component{render(){const{name:e,description:t,externalDocs:r,level:o}=this.props.item,i=2===o?ju:Ru;return n.createElement(n.Fragment,null,n.createElement(Au,null,n.createElement(Ou,{compact:!1},n.createElement(i,null,n.createElement(Uu,{to:this.props.item.id}),e))),n.createElement(vy,{parentId:this.props.item.id,source:t||"",htmlWrap:ub}),r&&n.createElement(Au,null,n.createElement(Ou,null,n.createElement(xm,{externalDocs:r}))))}};pb=sb([im],pb);let db=class extends n.Component{render(){return n.createElement(eb,{operation:this.props.item})}};db=sb([im],db);var fb=Object.defineProperty,hb=Object.defineProperties,mb=(Object.getOwnPropertyDescriptor,Object.getOwnPropertyDescriptors),gb=Object.getOwnPropertySymbols,yb=Object.prototype.hasOwnProperty,vb=Object.prototype.propertyIsEnumerable,bb=(e,t,n)=>t in e?fb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let wb=class extends n.Component{constructor(){super(...arguments),this.ref=n.createRef(),this.activate=e=>{this.props.onActivate(this.props.item),e.stopPropagation()}}componentDidMount(){this.scrollIntoViewIfActive()}componentDidUpdate(){this.scrollIntoViewIfActive()}scrollIntoViewIfActive(){this.props.item.active&&this.ref.current&&Hr(this.ref.current)}render(){const{item:e,withoutChildren:t}=this.props;return n.createElement(Oy,{onClick:this.activate,depth:e.depth,"data-item-id":e.id},"operation"===e.type?n.createElement(xb,((e,t)=>hb(e,mb(t)))(((e,t)=>{for(var n in t||(t={}))yb.call(t,n)&&bb(e,n,t[n]);if(gb)for(var n of gb(t))vb.call(t,n)&&bb(e,n,t[n]);return e})({},this.props),{item:e})):n.createElement(Ey,{depth:e.depth,active:e.active,type:e.type,ref:this.ref},n.createElement(Py,{title:e.sidebarLabel},e.sidebarLabel,this.props.children),e.depth>0&&e.items.length>0&&n.createElement(Bu,{float:"right",direction:e.expanded?"down":"right"})||null),!t&&e.items&&e.items.length>0&&n.createElement(Pb,{expanded:e.expanded,items:e.items,onActivate:this.props.onActivate}))}};wb=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],wb);const xb=im((e=>{const{item:t}=e,r=n.createRef(),{showWebhookVerb:o}=n.useContext(Sa);return n.useEffect((()=>{e.item.active&&r.current&&Hr(r.current)}),[e.item.active,r]),n.createElement(Ey,{depth:t.depth,active:t.active,deprecated:t.deprecated,ref:r},t.isWebhook?n.createElement(xy,{type:"hook"},o?t.httpVerb:lo("webhook")):n.createElement(xy,{type:t.httpVerb},ms(t.httpVerb)),n.createElement(Py,{width:"calc(100% - 38px)"},t.sidebarLabel,e.children))}));var kb=Object.defineProperty,_b=(Object.getOwnPropertyDescriptor,Object.getOwnPropertySymbols),Ob=Object.prototype.hasOwnProperty,Sb=Object.prototype.propertyIsEnumerable,Eb=(e,t,n)=>t in e?kb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let Pb=class extends n.Component{render(){const{items:e,root:t,className:r}=this.props,o=null==this.props.expanded||this.props.expanded;return n.createElement(_y,((e,t)=>{for(var n in t||(t={}))Ob.call(t,n)&&Eb(e,n,t[n]);if(_b)for(var n of _b(t))Sb.call(t,n)&&Eb(e,n,t[n]);return e})({className:r,style:this.props.style,expanded:o},t?{role:"menu"}:{}),e.map(((e,t)=>n.createElement(wb,{key:t,item:e,onActivate:this.props.onActivate}))))}};function Ab(){const[e,t]=(0,n.useState)(!1);return(0,n.useEffect)((()=>{t(!0)}),[]),e?n.createElement("img",{alt:"redocly logo",onError:()=>t(!1),src:"https://cdn.redoc.ly/redoc/logo-mini.svg"}):null}Pb=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Pb);Object.defineProperty,Object.getOwnPropertyDescriptor;let $b=class extends n.Component{constructor(){super(...arguments),this.activate=e=>{if(e&&e.active&&this.context.menuToggle)return e.expanded?e.collapse():e.expand();this.props.menu.activateAndScroll(e,!0),setTimeout((()=>{this._updateScroll&&this._updateScroll()}))},this.saveScrollUpdate=e=>{this._updateScroll=e}}render(){const e=this.props.menu;return n.createElement(Pd,{updateFn:this.saveScrollUpdate,className:this.props.className,options:{wheelPropagation:!1}},n.createElement(Pb,{items:e.items,onActivate:this.activate,root:!0}),n.createElement(Ay,null,n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://redocly.com/redoc/"},n.createElement(Ab,null),"API docs by Redocly")))}};$b.contextType=Sa,$b=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],$b);const Cb=({open:e})=>{const t=e?8:-4;return n.createElement(jb,null,n.createElement(Rb,{size:15,style:{transform:`translate(2px, ${t}px) rotate(180deg)`,transition:"transform 0.2s ease"}}),n.createElement(Rb,{size:15,style:{transform:`translate(2px, ${0-t}px)`,transition:"transform 0.2s ease"}}))},Rb=({size:e=10,className:t="",style:r})=>n.createElement("svg",{className:t,style:r||{},viewBox:"0 0 926.23699 573.74994",version:"1.1",x:"0px",y:"0px",width:e,height:e},n.createElement("g",{transform:"translate(904.92214,-879.1482)"},n.createElement("path",{d:"\n m -673.67664,1221.6502 -231.2455,-231.24803 55.6165,\n -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894,\n 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892,\n -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696,\n -174.68583 0.6895,0 26.281,25.03215 56.8701,\n 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864\n -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688,\n -104.0616 -231.873,-231.248 z\n ",fill:"currentColor"}))),jb=ga.div` +`,eb=im((({operation:e})=>{const{name:t,description:r,deprecated:o,externalDocs:i,isWebhook:a,httpVerb:s}=e,l=!(!r&&!i),{showWebhookVerb:c}=n.useContext(Sa);return n.createElement(Sa.Consumer,null,(u=>n.createElement(Au,((e,t)=>Yv(e,Kv(t)))(((e,t)=>{for(var n in t||(t={}))Qv.call(t,n)&&Jv(e,n,t[n]);if(Gv)for(var n of Gv(t))Xv.call(t,n)&&Jv(e,n,t[n]);return e})({},{[gf]:e.operationHash}),{id:e.operationHash}),n.createElement(Ou,null,n.createElement(ju,null,n.createElement(Uu,{to:e.id}),t," ",o&&n.createElement(qu,{type:"warning"}," Deprecated "),a&&n.createElement(qu,{type:"primary"}," ","Webhook ",c&&s&&"| "+s.toUpperCase())),u.pathInMiddlePanel&&!a&&n.createElement(Vy,{operation:e,inverted:!0}),l&&n.createElement(Zv,null,void 0!==r&&n.createElement(Ff,{source:r}),i&&n.createElement(xm,{externalDocs:i})),n.createElement(Sm,{extensions:e.extensions}),n.createElement(gv,{securities:e.security}),n.createElement(Xy,{parameters:e.parameters,body:e.requestBody}),n.createElement(fv,{responses:e.responses}),n.createElement(kv,{callbacks:e.callbacks})),n.createElement(Pu,null,!u.pathInMiddlePanel&&!a&&n.createElement(Vy,{operation:e}),n.createElement(qv,{operation:e}),n.createElement(Wv,{operation:e}),n.createElement(Vv,{callbacks:e.callbacks})))))}));var tb=Object.defineProperty,nb=Object.getOwnPropertyDescriptor,rb=Object.getOwnPropertySymbols,ob=Object.prototype.hasOwnProperty,ib=Object.prototype.propertyIsEnumerable,ab=(e,t,n)=>t in e?tb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,sb=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?nb(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&tb(t,n,i),i};let lb=class extends n.Component{render(){const e=this.props.items;return 0===e.length?null:e.map((e=>n.createElement(cb,{key:e.id,item:e})))}};lb=sb([im],lb);let cb=class extends n.Component{render(){const e=this.props.item;let t;const{type:r}=e;switch(r){case"group":t=null;break;case"tag":case"section":default:t=n.createElement(pb,((e,t)=>{for(var n in t||(t={}))ob.call(t,n)&&ab(e,n,t[n]);if(rb)for(var n of rb(t))ib.call(t,n)&&ab(e,n,t[n]);return e})({},this.props));break;case"operation":t=n.createElement(db,{item:e})}return n.createElement(n.Fragment,null,t&&n.createElement(Su,{id:e.id,underlined:"operation"===e.type},t),e.items&&n.createElement(lb,{items:e.items}))}};cb=sb([im],cb);const ub=e=>n.createElement(Ou,{compact:!0},e);let pb=class extends n.Component{render(){const{name:e,description:t,externalDocs:r,level:o}=this.props.item,i=2===o?ju:Ru;return n.createElement(n.Fragment,null,n.createElement(Au,null,n.createElement(Ou,{compact:!1},n.createElement(i,null,n.createElement(Uu,{to:this.props.item.id}),e))),n.createElement(vy,{parentId:this.props.item.id,source:t||"",htmlWrap:ub}),r&&n.createElement(Au,null,n.createElement(Ou,null,n.createElement(xm,{externalDocs:r}))))}};pb=sb([im],pb);let db=class extends n.Component{render(){return n.createElement(eb,{operation:this.props.item})}};db=sb([im],db);var fb=Object.defineProperty,hb=Object.defineProperties,mb=(Object.getOwnPropertyDescriptor,Object.getOwnPropertyDescriptors),gb=Object.getOwnPropertySymbols,yb=Object.prototype.hasOwnProperty,vb=Object.prototype.propertyIsEnumerable,bb=(e,t,n)=>t in e?fb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let wb=class extends n.Component{constructor(){super(...arguments),this.ref=n.createRef(),this.activate=e=>{this.props.onActivate(this.props.item),e.stopPropagation()}}componentDidMount(){this.scrollIntoViewIfActive()}componentDidUpdate(){this.scrollIntoViewIfActive()}scrollIntoViewIfActive(){this.props.item.active&&this.ref.current&&Hr(this.ref.current)}render(){const{item:e,withoutChildren:t}=this.props;return n.createElement(Oy,{onClick:this.activate,depth:e.depth,"data-item-id":e.id},"operation"===e.type?n.createElement(xb,((e,t)=>hb(e,mb(t)))(((e,t)=>{for(var n in t||(t={}))yb.call(t,n)&&bb(e,n,t[n]);if(gb)for(var n of gb(t))vb.call(t,n)&&bb(e,n,t[n]);return e})({},this.props),{item:e})):n.createElement(Ey,{depth:e.depth,active:e.active,type:e.type,ref:this.ref},n.createElement(Py,{title:e.sidebarLabel},e.sidebarLabel,this.props.children),e.depth>0&&e.items.length>0&&n.createElement(Bu,{float:"right",direction:e.expanded?"down":"right"})||null),!t&&e.items&&e.items.length>0&&n.createElement(Pb,{expanded:e.expanded,items:e.items,onActivate:this.props.onActivate}))}};wb=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],wb);const xb=im((e=>{const{item:t}=e,r=n.createRef(),{showWebhookVerb:o}=n.useContext(Sa);return n.useEffect((()=>{e.item.active&&r.current&&Hr(r.current)}),[e.item.active,r]),n.createElement(Ey,{depth:t.depth,active:t.active,deprecated:t.deprecated,ref:r},t.isWebhook?n.createElement(xy,{type:"hook"},o?t.httpVerb:lo("webhook")):n.createElement(xy,{type:t.httpVerb},ms(t.httpVerb)),n.createElement(Py,{width:"calc(100% - 38px)"},t.sidebarLabel,e.children))}));var kb=Object.defineProperty,_b=(Object.getOwnPropertyDescriptor,Object.getOwnPropertySymbols),Ob=Object.prototype.hasOwnProperty,Sb=Object.prototype.propertyIsEnumerable,Eb=(e,t,n)=>t in e?kb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let Pb=class extends n.Component{render(){const{items:e,root:t,className:r}=this.props,o=null==this.props.expanded||this.props.expanded;return n.createElement(_y,((e,t)=>{for(var n in t||(t={}))Ob.call(t,n)&&Eb(e,n,t[n]);if(_b)for(var n of _b(t))Sb.call(t,n)&&Eb(e,n,t[n]);return e})({className:r,style:this.props.style,expanded:o},t?{role:"menu"}:{}),e.map(((e,t)=>n.createElement(wb,{key:t,item:e,onActivate:this.props.onActivate}))))}};function Ab(){const[e,t]=(0,n.useState)(!1);return(0,n.useEffect)((()=>{t(!0)}),[]),e?n.createElement("img",{alt:"redocly logo",onError:()=>t(!1),src:"https://cdn.redoc.ly/redoc/logo-mini.png"}):null}Pb=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Pb);Object.defineProperty,Object.getOwnPropertyDescriptor;let $b=class extends n.Component{constructor(){super(...arguments),this.activate=e=>{if(e&&e.active&&this.context.menuToggle)return e.expanded?e.collapse():e.expand();this.props.menu.activateAndScroll(e,!0),setTimeout((()=>{this._updateScroll&&this._updateScroll()}))},this.saveScrollUpdate=e=>{this._updateScroll=e}}render(){const e=this.props.menu;return n.createElement(Pd,{updateFn:this.saveScrollUpdate,className:this.props.className,options:{wheelPropagation:!1}},n.createElement(Pb,{items:e.items,onActivate:this.activate,root:!0}),n.createElement(Ay,null,n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://redocly.com/redoc/"},n.createElement(Ab,null),"API docs by Redocly")))}};$b.contextType=Sa,$b=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],$b);const Cb=({open:e})=>{const t=e?8:-4;return n.createElement(jb,null,n.createElement(Rb,{size:15,style:{transform:`translate(2px, ${t}px) rotate(180deg)`,transition:"transform 0.2s ease"}}),n.createElement(Rb,{size:15,style:{transform:`translate(2px, ${0-t}px)`,transition:"transform 0.2s ease"}}))},Rb=({size:e=10,className:t="",style:r})=>n.createElement("svg",{className:t,style:r||{},viewBox:"0 0 926.23699 573.74994",version:"1.1",x:"0px",y:"0px",width:e,height:e},n.createElement("g",{transform:"translate(904.92214,-879.1482)"},n.createElement("path",{d:"\n m -673.67664,1221.6502 -231.2455,-231.24803 55.6165,\n -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894,\n 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892,\n -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696,\n -174.68583 0.6895,0 26.281,25.03215 56.8701,\n 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864\n -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688,\n -104.0616 -231.873,-231.248 z\n ",fill:"currentColor"}))),jb=ga.div` user-select: none; width: 20px; height: 20px; diff --git a/web/package.json b/web/package.json index ca4c3067e3..789d363890 100644 --- a/web/package.json +++ b/web/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", - "@fast-crud/fast-crud": "^1.21.2", + "@fast-crud/fast-crud": "^1.14.1", "@fast-crud/fast-extends": "^1.21.2", "@fast-crud/ui-element": "^1.21.2", "@fast-crud/ui-interface": "^1.21.2", @@ -56,7 +56,8 @@ "vue-i18n": "^9.14.0", "vue-router": "^4.4.3", "vxe-table": "^4.6.18", - "xe-utils": "^3.5.30" + "xe-utils": "^3.5.30", + "yarn": "^1.22.22" }, "devDependencies": { "@types/node": "^18.19.42", @@ -71,7 +72,7 @@ "prettier": "^2.8.1", "sass": "^1.56.2", "typescript": "^4.9.4", - "vite": "^5.4.1", + "vite": "^6.2.1", "vite-plugin-vue-setup-extend": "^0.4.0", "vue-eslint-parser": "^9.4.3" }, diff --git a/web/src/assets/logo-mini.svg b/web/src/assets/logo-mini-bak.svg similarity index 100% rename from web/src/assets/logo-mini.svg rename to web/src/assets/logo-mini-bak.svg diff --git a/web/src/assets/logo-mini.png b/web/src/assets/logo-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..b64d6990b0c48877fac54c2f94ff87c2a7469a62 GIT binary patch literal 4137 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 literal 0 HcmV?d00001 diff --git a/web/src/layout/footer/index.vue b/web/src/layout/footer/index.vue index 67e6e5c07b..e94752d26a 100644 --- a/web/src/layout/footer/index.vue +++ b/web/src/layout/footer/index.vue @@ -1,7 +1,7 @@ diff --git a/web/src/layout/logo/index.vue b/web/src/layout/logo/index.vue index 1a656bbf4e..1f1c504696 100644 --- a/web/src/layout/logo/index.vue +++ b/web/src/layout/logo/index.vue @@ -12,7 +12,7 @@ import { computed } from 'vue'; import { storeToRefs } from 'pinia'; import { useThemeConfig } from '/@/stores/themeConfig'; -import logoMini from '/@/assets/logo-mini.svg'; +import logoMini from '/@/assets/logo-mini.png'; import { SystemConfigStore } from "/@/stores/systemConfig"; import _ from "lodash-es"; // 定义变量内容 diff --git a/web/src/layout/navBars/breadcrumb/user.vue b/web/src/layout/navBars/breadcrumb/user.vue index 61793c974a..5ef35b57ea 100644 --- a/web/src/layout/navBars/breadcrumb/user.vue +++ b/web/src/layout/navBars/breadcrumb/user.vue @@ -12,7 +12,8 @@ - + +
diff --git a/web/src/views/crud_patron/CrudPatronAddressModelViewSet/api.ts b/web/src/views/crud_patron/CrudPatronAddressModelViewSet/api.ts new file mode 100644 index 0000000000..8e939d4b7e --- /dev/null +++ b/web/src/views/crud_patron/CrudPatronAddressModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/CrudPatronAddressModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/crud_patron/CrudPatronAddressModelViewSet/crud.tsx b/web/src/views/crud_patron/CrudPatronAddressModelViewSet/crud.tsx new file mode 100644 index 0000000000..b9998b7935 --- /dev/null +++ b/web/src/views/crud_patron/CrudPatronAddressModelViewSet/crud.tsx @@ -0,0 +1,158 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('CrudPatronAddressModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('CrudPatronAddressModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('CrudPatronAddressModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('CrudPatronAddressModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('CrudPatronAddressModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('CrudPatronAddressModelViewSet:Delete') + }, + }, + }, + columns: { + name: { + title: '收件人名称', + type: 'input', + search: { show: true }, + column: { + minWidth: 60, + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '收件人名称必填' }], + component: { + placeholder: '请输入收件人名称', + }, + }, + }, + mobile: { + title: '手机号码', + type: 'input', + search: { show: true }, + column: { + minWidth: 50, //最小列宽 + }, + form: { + component:{ + placeholder:"请输入", + }, + rules: [ + { required: true, message: '手机号码必填' }, + { + max: 11, + message: '请输入正确的手机号码', + trigger: 'blur', + }, + { + pattern: /^1[3-9]\d{9}$/, + message: '请输入正确的手机号码', + }, + ], + }, + }, + address: { + title: '收件地址', + type: 'textarea', + search: { show: true }, + column: { + show: false, + minWidth: 120, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入收件地址', + }, + }, + }, + note: { + title: '备注', + type: 'textarea', + search: { show: true }, + column: { + show: false, + minWidth: 120, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入备注', + }, + }, + }, + + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/crud_patron/CrudPatronAddressModelViewSet/index.vue b/web/src/views/crud_patron/CrudPatronAddressModelViewSet/index.vue new file mode 100644 index 0000000000..d76a3c8c93 --- /dev/null +++ b/web/src/views/crud_patron/CrudPatronAddressModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/api.ts b/web/src/views/crud_patron/CrudPatronModelViewSet/api.ts new file mode 100644 index 0000000000..698d0d8da5 --- /dev/null +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request, downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/CrudPatronModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx b/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx new file mode 100644 index 0000000000..c050647222 --- /dev/null +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx @@ -0,0 +1,414 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _, { get } from 'lodash-es'; +import * as api from './api'; +import { getBaseURL } from '/@/utils/baseUrl'; +import { createUploaderRules } from "@fast-crud/fast-extends"; +import EditableFreeSub from "./free/index.vue"; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + console.log(123123, crudExpose) + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + show: auth('CrudPatronModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + } + }, + add: { + show: auth('CrudPatronModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + align: 'center', + buttons: { + view: { + type: 'text', + order: 1, + show: auth('CrudPatronModelViewSet:Retrieve'), + }, + edit: { + type: 'text', + order: 2, + show: auth('CrudPatronModelViewSet:Update'), + }, + copy: { + type: 'text', + order: 3, + show: auth('CrudPatronModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('CrudPatronModelViewSet:Delete') + }, + }, + }, + columns: { + username: { + title: '客户名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入客户名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入客户名称', + }, + }, + }, + open_order_name: { + title: '开单名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入开单名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '开单名称必填' }], + component: { + placeholder: '请输入开单名称', + }, + }, + }, + phone: { + title: '联系电话', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入联系电话', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入联系电话', + }, + }, + }, + email: { + title: '邮箱', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入邮箱地址', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [ + { + type: 'email', + message: '请输入正确的邮箱地址', + trigger: ['blur', 'change'], + }, + ], + component: { + placeholder: '请输入邮箱', + }, + }, + }, + age: { + title: '年龄', + type: 'number', + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入客户年龄', + }, + }, + }, + sex: { + title: '性别', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请选择性别', + }, + }, + column: { + sortable: 'custom', + }, + dict: dict({ + data: dictionary('gender'), + }), + form: { + value: 1, + component: { + optionName: 'el-radio', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + my_remark: { + title: '我方备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入我方备注', + }, + }, + }, + tags: { + title: '客户标签', + search: { + show: false, + component: { + props: { + name: 'fs-dict-select', + clearable: true, + }, + }, + }, + type: 'dict-select', + dict: dict({ + value: 'id', + label: 'label', + data: dictionary('patron_tag'), + }), + form: { + rules: [ + // 表单校验规则 + { + required: false, + }, + ], + component: { + multiple: true, + filterable: true, + placeholder: '请选择标签', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + express: { + title: '默认物流', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('express'), + }), + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入默认物流', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + salesman: { + title: '业务员', + search: { + show: false, + }, + type: 'dict-select', + dict: dict({ + url: '/api/system/user/', + value: 'id', + label: 'name', + }), + form: { + component: { + multiple: true, + filterable: true, + placeholder: '请选择业务员', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + hierarchy: { + title: '客户等级', + search: { + show: true, + component: { + placeholder: '请选择客户等级', + }, + }, + type: ['dict-radio', 'colspan'], + dict: dict({ + data: dictionary('patron'), + }), + form: { + value: 0, + component: { + optionName: 'el-radio-button', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + images: { + title: "照片墙", + type: "image-uploader", + form: { + component: { + limit: 10, + uploader: { + type: "form", + }, + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { + context.form.images.forEach((item, index) => { + context.form.images[index] = getBaseURL(item) + }) + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最多可上传10个图片" + }, + column: { + component: { + // 列显示 + async buildUrl(value) { + return getBaseURL(value); + }, + // 列放大预览 + async buildPreviewUrl({ url, index }: any) { + return url + "?preview=600x600"; + } + } + } + }, + files: { + title: "上传附件", + type: "file-uploader", + form: { + component: { + limit: 5, + uploader: { + type: "form", + }, + accept: ".pdf,.csv,.doc,.docx,.xls,.xlsx,.mp4,.zip,.7z,.rar", + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { + context.form.files.forEach((item, index) => { + context.form.files[index] = getBaseURL(item) + }) + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最大可上传5个文件" + }, + column: { + show: false, + component: { + async buildUrl(value) { + return getBaseURL(value); + }, + } + } + }, + addressee: { + title: "收件人信息", + type: "text", + form: { + component: { + name: EditableFreeSub, + vModel: "modelValue", + readonly: true, + }, + col: { + span: 24 + } + }, + column: { + show: false, + formatter: ({ row }) => { + return row.addressee?.length + "条数据"; + } + } + }, + + }, + form: { + // 具体可配置请参考 grid 布局: http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html + display: "flex", + wrapper: { + width: "80%", + }, + async beforeSubmit() { + const validate = await crudExpose.getFormComponentRef("addressee")?.validate(); + if (validate !== true) { + return false; + } + }, + }, + toolbar: { + buttons: { + export: { + show: true + } + } + } + }, + }; +} \ No newline at end of file diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/free/crud.tsx b/web/src/views/crud_patron/CrudPatronModelViewSet/free/crud.tsx new file mode 100644 index 0000000000..cfd89c8207 --- /dev/null +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/free/crud.tsx @@ -0,0 +1,126 @@ +import { CreateCrudOptionsProps, CreateCrudOptionsRet, dict } from "@fast-crud/fast-crud"; +import { inject } from "vue"; + +export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + const { crudBinding } = crudExpose; + + const getScope = inject('get:scope') + const { index, row, form, mode} = getScope() + // console.log('当前上下文',index, row, form, mode) + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + show: false + }, + addRow: { + show: mode == 'view'?false:true + } + } + }, + search: { + show: false + }, + toolbar: { + show: false, + buttons: { + refresh: { + show: false + }, + search: { + show: false + } + } + }, + table: { + editable: { + enabled: false, + mode: "free", + showAction: false, + activeDefault: true + } + }, + pagination: { show: false, pageSize: 9999999 }, + columns: { + name: { + title: '收件人名称', + type: 'text', + column: { + minWidth: 50, //最小列宽 + }, + form: { + component:{ + placeholder:"请输入", + disabled:mode == 'view'?true:false, + }, + rules: [ + // 表单校验规则 + { + required: true, + message: '收件人名称必填项', + }, + ], + }, + }, + mobile: { + title: '手机号码', + type: 'text', + column: { + minWidth: 50, //最小列宽 + }, + form: { + component:{ + placeholder:"请输入", + disabled:mode == 'view'?true:false, + }, + rules: [ + { + max: 11, + message: '请输入正确的手机号码', + trigger: 'blur', + }, + { + pattern: /^1[3-9]\d{9}$/, + message: '请输入正确的手机号码', + }, + ], + }, + }, + address: { + title: '收件地址', + type: 'textarea', + form: { + component:{ + placeholder:"请输入", + disabled:mode == 'view'?true:false, + }, + rules: [ + { + required: true, + message: '收件地址必填项', + }, + ], + }, + }, + note: { + title: '备注', + type: 'textarea', + form: { + component:{ + placeholder:"请输入", + disabled:mode == 'view'?true:false, + }, + }, + }, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 90, + show: mode == 'view'?false:true + }, + } + }; +} diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/free/index.vue b/web/src/views/crud_patron/CrudPatronModelViewSet/free/index.vue new file mode 100644 index 0000000000..759423ec01 --- /dev/null +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/free/index.vue @@ -0,0 +1,70 @@ + + + + \ No newline at end of file diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/index.vue b/web/src/views/crud_patron/CrudPatronModelViewSet/index.vue new file mode 100644 index 0000000000..bf92c144cb --- /dev/null +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/index.vue @@ -0,0 +1,55 @@ + + + \ No newline at end of file diff --git a/web/src/views/system/dept/components/DeptUserCom/crud copy.aatsx b/web/src/views/system/dept/components/DeptUserCom/crud copy.aatsx new file mode 100644 index 0000000000..e0b70f9851 --- /dev/null +++ b/web/src/views/system/dept/components/DeptUserCom/crud copy.aatsx @@ -0,0 +1,398 @@ +import { inject } from 'vue'; +import { dict, UserPageQuery, AddReq, DelReq, EditReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import { request } from '/@/utils/service'; +import * as api from './api'; +import { dictionary } from '/@/utils/dictionary'; +import { successMessage } from '/@/utils/message'; +import { auth } from "/@/utils/authFunction"; + +export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + const show_all = context?.isShowChildFlag.value ? '1' : '0'; + const res = await api.GetList({ ...query, show_all }); + /** + * 处理crud警告:Invalid prop: type check failed for prop "name". Expected String with value "2", got Number with value 2. + */ + // res.data.forEach((item: any) => { + // item.dept = String(item.dept); + // if (item.role && Array.isArray(item.role) && item.role.length > 0) { + // item.role = item.role.map((r: number) => String(r)); + // } + // }); + return res; + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + const res = await api.DelObj(row.id); + context?.getDeptInfo(); + return res; + }; + const addRequest = async ({ form }: AddReq) => { + const res = await api.AddObj(form); + context?.getDeptInfo(); + return res; + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + + return { + crudOptions: { + table: { + remove: { + confirmMessage: '是否删除该用户?', + }, + }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + // actionbar: { + // buttons: { + // add: { + // show: auth('user:Create') + // }, + // export: { + // text: '导出', //按钮文字 + // title: '导出', //鼠标停留显示的信息 + // show: auth('user:Export'), + // click() { + // return exportRequest(crudExpose!.getSearchFormData()); + // }, + // }, + // }, + // }, + search: { + container: { + layout: 'multi-line', + action: { + col: { + span: 10, + }, + }, + }, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 250, + buttons: { + view: { + show: false, + }, + edit: { + show: auth('user:Update'), + }, + remove: { + show: auth('user:Delete'), + }, + custom: { + text: '重设密码', + type: 'primary', + show: auth('user:ResetPassword'), + tooltip: { + placement: 'top', + content: '重设密码', + }, + click: (ctx: any) => context?.handleResetPwdOpen(ctx.row), + }, + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + }, + }, + search: { + title: '关键词', + column: { + show: false, + }, + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入关键词', + }, + }, + form: { + show: false, + component: { + props: { + clearable: true, + }, + }, + }, + }, + username: { + title: '账号', + type: 'input', + column: { + minWidth: 100, //最小列宽 + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '账号必填项', + }, + ], + component: { + placeholder: '请输入账号', + }, + }, + }, + password: { + title: '密码', + type: 'input', + column: { + show: false, + }, + editForm: { + show: false, + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '密码必填项', + }, + ], + component: { + span: 12, + showPassword: true, + placeholder: '请输入密码', + }, + // value: vm.systemConfig('base.default_password'), + }, + /* valueResolve(row, key) { + if (row.password) { + row.password = vm.$md5(row.password) + } + } */ + }, + name: { + title: '姓名', + type: 'input', + column: { + minWidth: 100, //最小列宽 + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '姓名必填项', + }, + ], + component: { + span: 12, + placeholder: '请输入姓名', + }, + }, + }, + dept: { + title: '部门', + type: 'dict-tree', + dict: dict({ + isTree: true, + url: '/api/system/dept/all_dept/', + value: 'id', + label: 'name', + }), + column: { + minWidth: 200, //最小列宽 + formatter({ value, row, index }) { + return row.dept_name_all + } + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + component: { + filterable: true, + placeholder: '请选择', + props: { + props: { + value: 'id', + label: 'name', + }, + }, + }, + }, + }, + role: { + title: '角色', + search: { + show: true, + component: { + props: { + name:'fs-dict-select', + clearable: true, + }, + }, + }, + type: 'dict-select', + dict: dict({ + url: '/api/system/role/', + value: 'id', + label: 'name', + }), + column: { + minWidth: 200, //最小列宽 + // formatter({ value, row, index }) { + // const values = row.role_info.map((item: any) => item.name); + // return values.join(',') + // } + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + component: { + multiple: true, + filterable: true, + placeholder: '请选择角色', + }, + }, + }, + mobile: { + title: '手机号码', + type: 'input', + column: { + minWidth: 120, //最小列宽 + }, + form: { + rules: [ + { + max: 20, + message: '请输入正确的手机号码', + trigger: 'blur', + }, + { + pattern: /^1[3-9]\d{9}$/, + message: '请输入正确的手机号码', + }, + ], + component: { + placeholder: '请输入手机号码', + }, + }, + }, + email: { + title: '邮箱', + column: { + width: 260, + }, + form: { + rules: [ + { + type: 'email', + message: '请输入正确的邮箱地址', + trigger: ['blur', 'change'], + }, + ], + component: { + placeholder: '请输入邮箱', + }, + }, + }, + gender: { + title: '性别', + type: 'dict-select', + dict: dict({ + data: dictionary('gender'), + }), + form: { + value: 1, + component: { + span: 12, + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + user_type: { + title: '用户类型', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('user_type'), + }), + column: { + minWidth: 100, //最小列宽 + }, + form: { + show: false, + value: 0, + component: { + span: 12, + }, + }, + }, + is_active: { + title: '锁定', + search: { + show: true, + }, + type: 'dict-radio', + column: { + component: { + name: 'fs-dict-switch', + activeText: '', + inactiveText: '', + style: '--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6', + onChange: compute((context) => { + return () => { + api.UpdateObj(context.row).then((res: APIResponseData) => { + successMessage(res.msg as string); + }); + }; + }), + }, + }, + dict: dict({ + data: dictionary('button_status_bool'), + }), + }, + avatar: { + title: '头像', + type: 'avatar-uploader', + form: { + show: false, + }, + column: { + width: 100, + showOverflowTooltip: true, + } + }, + }, + }, + }; +}; diff --git a/web/src/views/system/dept/components/DeptUserCom/crud.tsx b/web/src/views/system/dept/components/DeptUserCom/crud.tsx index aaa855c714..8c9e57962c 100644 --- a/web/src/views/system/dept/components/DeptUserCom/crud.tsx +++ b/web/src/views/system/dept/components/DeptUserCom/crud.tsx @@ -53,21 +53,21 @@ export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOp editRequest, delRequest, }, - actionbar: { - buttons: { - add: { - show: auth('user:Create') - }, - export: { - text: '导出', //按钮文字 - title: '导出', //鼠标停留显示的信息 - show: auth('user:Export'), - click() { - return exportRequest(crudExpose!.getSearchFormData()); - }, - }, - }, - }, + // actionbar: { + // buttons: { + // add: { + // show: auth('user:Create') + // }, + // export: { + // text: '导出', //按钮文字 + // title: '导出', //鼠标停留显示的信息 + // show: auth('user:Export'), + // click() { + // return exportRequest(crudExpose!.getSearchFormData()); + // }, + // }, + // }, + // }, search: { container: { layout: 'multi-line', @@ -244,26 +244,9 @@ export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOp }, role: { title: '角色', - search: { - show: true, - component: { - props: { - clearable: true, - }, - }, - }, type: 'dict-select', - dict: dict({ - url: '/api/system/role/', - value: 'id', - label: 'name', - }), - column: { - minWidth: 200, //最小列宽 - // formatter({ value, row, index }) { - // const values = row.role_info.map((item: any) => item.name); - // return values.join(',') - // } + search: { + show: true }, form: { rules: [ @@ -279,6 +262,18 @@ export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOp placeholder: '请选择角色', }, }, + dict: dict({ + url: '/api/system/role/', + value: 'id', + label: 'name', + }), + column: { + minWidth: 200, //最小列宽 + // formatter({ value, row, index }) { + // const values = row.role_info.map((item: any) => item.name); + // return values.join(',') + // } + }, }, mobile: { title: '手机号码', diff --git a/web/src/views/system/home/bakindex.vue b/web/src/views/system/home/bakindex.vue new file mode 100644 index 0000000000..6475fba53b --- /dev/null +++ b/web/src/views/system/home/bakindex.vue @@ -0,0 +1,643 @@ + + + + + diff --git a/web/src/views/system/home/index.vue b/web/src/views/system/home/index.vue index 6475fba53b..e0390f95f8 100644 --- a/web/src/views/system/home/index.vue +++ b/web/src/views/system/home/index.vue @@ -1,643 +1,17 @@ - diff --git a/web/src/views/system/login/index.vue b/web/src/views/system/login/index.vue index 0f4d9c8618..f6c293bd78 100644 --- a/web/src/views/system/login/index.vue +++ b/web/src/views/system/login/index.vue @@ -71,7 +71,7 @@ import {defineAsyncComponent, onMounted, reactive, computed, watch} from 'vue'; import { storeToRefs } from 'pinia'; import { useThemeConfig } from '/@/stores/themeConfig'; import { NextLoading } from '/@/utils/loading'; -import logoMini from '/@/assets/logo-mini.svg'; +import logoMini from '/@/assets/logo-mini.png'; import loginMain from '/@/assets/login-main.svg'; import loginBg from '/@/assets/login-bg.png'; import { SystemConfigStore } from '/@/stores/systemConfig' diff --git a/web/src/views/system/menu/components/MenuButtonCom/crud.tsx b/web/src/views/system/menu/components/MenuButtonCom/crud.tsx index 79675fba30..9eab7c3a36 100644 --- a/web/src/views/system/menu/components/MenuButtonCom/crud.tsx +++ b/web/src/views/system/menu/components/MenuButtonCom/crud.tsx @@ -185,7 +185,7 @@ export const createCrudOptions = function ({crudExpose, context}: CreateCrudOpti form: { rules: [{required: true, message: '权限名称必填'}], component: { - placeholder: '输入权限名称搜索', + placeholder: '输入权限名称', props: { clearable: true, allowCreate: true, @@ -194,8 +194,7 @@ export const createCrudOptions = function ({crudExpose, context}: CreateCrudOpti }, helper: { render() { - return ; + return ; }, }, }, -- Gitee From 40f0f146013f5f101055cf1090b59e8d1a90b2e9 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Wed, 26 Mar 2025 17:45:45 +0800 Subject: [PATCH 03/31] update DockerfileBuild version --- docker_env/django/DockerfileBuild | 2 +- docker_env/web/DockerfileBuild | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker_env/django/DockerfileBuild b/docker_env/django/DockerfileBuild index 53e5049202..8f51d2e0cf 100644 --- a/docker_env/django/DockerfileBuild +++ b/docker_env/django/DockerfileBuild @@ -1,4 +1,4 @@ -FROM python:3.10-alpine +FROM python:3.11-alpine RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk update && apk add bash bash-doc bash-completion git freetds-dev jpeg-dev linux-headers mysql-client mariadb-dev build-base libffi-dev openssl-dev zlib-dev bzip2-dev pcre-dev ncurses-dev readline-dev tk-dev postgresql-dev WORKDIR /backend diff --git a/docker_env/web/DockerfileBuild b/docker_env/web/DockerfileBuild index 1f725cafe3..6768e6c393 100644 --- a/docker_env/web/DockerfileBuild +++ b/docker_env/web/DockerfileBuild @@ -1,4 +1,4 @@ -FROM node:16.19-alpine +FROM node:22.12-alpine WORKDIR / COPY ./web/package.json . RUN yarn install --registry=https://registry.npmmirror.com -- Gitee From 47f3f67ce29eedf1ae4dcd2beb89caf5c1ec1ba6 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sat, 29 Mar 2025 17:27:00 +0800 Subject: [PATCH 04/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker_env/celery/Dockerfile | 2 +- docker_env/django/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker_env/celery/Dockerfile b/docker_env/celery/Dockerfile index 7d57c7aa90..5379b22e48 100644 --- a/docker_env/celery/Dockerfile +++ b/docker_env/celery/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.cn-zhangjiakou.aliyuncs.com/dvadmin-pro/dvadmin3-base-backend:latest +FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxibears-erp-django:latest WORKDIR /backend COPY ./backend/ . RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' diff --git a/docker_env/django/Dockerfile b/docker_env/django/Dockerfile index cad6fed52a..a317748323 100644 --- a/docker_env/django/Dockerfile +++ b/docker_env/django/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.cn-zhangjiakou.aliyuncs.com/dvadmin-pro/dvadmin3-base-backend:latest +FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxibears-erp-django:latest WORKDIR /backend COPY ./backend/ . RUN ls ./conf/ -- Gitee From f0933a81bf45f256063334c9b35a8983c50f18ee Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sat, 29 Mar 2025 17:39:36 +0800 Subject: [PATCH 05/31] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/.env.development | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/.env.development b/web/.env.development index dc36b291b2..1c3ca5db36 100644 --- a/web/.env.development +++ b/web/.env.development @@ -2,7 +2,7 @@ ENV = 'development' # 本地环境接口地址 -VITE_API_URL = 'http://127.0.0.1:8001' +VITE_API_URL = 'http://127.0.0.1:8000' # 是否启用按钮权限 VITE_PM_ENABLED = true -- Gitee From 2d8066d77406eef2a61e477cabbbe40fa47e22e4 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sat, 29 Mar 2025 17:43:23 +0800 Subject: [PATCH 06/31] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/conf/env.py | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 backend/conf/env.py diff --git a/backend/conf/env.py b/backend/conf/env.py new file mode 100644 index 0000000000..a6c1bb2a12 --- /dev/null +++ b/backend/conf/env.py @@ -0,0 +1,50 @@ +import os + +from application.settings import BASE_DIR + +# ================================================= # +# *************** mysql数据库 配置 *************** # +# ================================================= # +# 数据库 ENGINE ,默认演示使用 sqlite3 数据库,正式环境建议使用 mysql 数据库 +# sqlite3 设置 1111111111111111111 +# DATABASE_ENGINE = "django.db.backends.sqlite3" +# DATABASE_NAME = os.path.join(BASE_DIR, "db.sqlite3") + +# 使用mysql时,改为此配置 +DATABASE_ENGINE = "django.db.backends.mysql" +DATABASE_NAME = 'xxibears' # mysql 时使用 + +# 数据库地址 改为自己数据库地址 +DATABASE_HOST = '192.168.0.252' +# # 数据库端口 +DATABASE_PORT = 3306 +# # 数据库用户名 +DATABASE_USER = "root" +# # 数据库密码 +DATABASE_PASSWORD = 'xxibears@666' + +# 表前缀 +TABLE_PREFIX = "xxibears_" +# ================================================= # +# ******** redis配置,无redis 可不进行配置 ******** # +# ================================================= # +REDIS_DB = 1 +CELERY_BROKER_DB = 3 +REDIS_PASSWORD = 'xxibears@666' +REDIS_HOST = '192.168.0.252' +REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' +# ================================================= # +# ****************** 功能 启停 ******************* # +# ================================================= # +DEBUG = True +# 启动登录详细概略获取(通过调用api获取ip详细地址。如果是内网,关闭即可) +ENABLE_LOGIN_ANALYSIS_LOG = True +# 登录接口 /api/token/ 是否需要验证码认证,用于测试,正式环境建议取消 +LOGIN_NO_CAPTCHA_AUTH = True +# ================================================= # +# ****************** 其他 配置 ******************* # +# ================================================= # + +ALLOWED_HOSTS = ["*"] +# 列权限中排除App应用 +COLUMN_EXCLUDE_APPS = [] -- Gitee From f49464d297430ea822cd85ed986739e1fb32a2f0 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sat, 29 Mar 2025 17:48:26 +0800 Subject: [PATCH 07/31] =?UTF-8?q?=E5=88=86=E6=94=AF=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/conf/env.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/conf/env.py b/backend/conf/env.py index a6c1bb2a12..16ebbfe353 100644 --- a/backend/conf/env.py +++ b/backend/conf/env.py @@ -6,7 +6,7 @@ from application.settings import BASE_DIR # *************** mysql数据库 配置 *************** # # ================================================= # # 数据库 ENGINE ,默认演示使用 sqlite3 数据库,正式环境建议使用 mysql 数据库 -# sqlite3 设置 1111111111111111111 +# sqlite3 设置 # DATABASE_ENGINE = "django.db.backends.sqlite3" # DATABASE_NAME = os.path.join(BASE_DIR, "db.sqlite3") -- Gitee From c999ec161a70b40246935ddc57b425aad1893a6e Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sat, 29 Mar 2025 17:56:31 +0800 Subject: [PATCH 08/31] =?UTF-8?q?1=E3=80=81=E5=8F=AA=E8=BF=87=E6=BB=A4medi?= =?UTF-8?q?a=E6=96=87=E4=BB=B6=E5=A4=B9=E5=86=85=E7=9A=84=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E3=80=82=202=E3=80=81=E6=B7=BB=E5=8A=A0form=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E5=86=85=E7=9A=84=E6=95=B0=E6=8D=AE=E8=BD=AC=E5=8C=96?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index d999b56385..260f7385b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ /backend/venv /backend/.idea -/backend/media +/backend/media/* /web/node_modules .idea diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx b/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx index c050647222..e67fc84bb6 100644 --- a/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx @@ -317,9 +317,9 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud }, }, //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 - valueBuilder(context) { + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 context.form.images.forEach((item, index) => { - context.form.images[index] = getBaseURL(item) + context.form.images[index] = getBaseURL(item) // 拼接图片地址 }) }, rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), @@ -350,9 +350,9 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud accept: ".pdf,.csv,.doc,.docx,.xls,.xlsx,.mp4,.zip,.7z,.rar", }, //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 - valueBuilder(context) { + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 context.form.files.forEach((item, index) => { - context.form.files[index] = getBaseURL(item) + context.form.files[index] = getBaseURL(item) // 拼接图片地址 }) }, rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), -- Gitee From c6bdf13a850f46ad988158fc7deebe5cfade9975 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sun, 30 Mar 2025 09:05:57 +0800 Subject: [PATCH 09/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0docker=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker_env/celery/Dockerfile | 2 +- docker_env/django/Dockerfile | 2 +- docker_env/web/Dockerfile | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docker_env/celery/Dockerfile b/docker_env/celery/Dockerfile index 5379b22e48..e4c68335cd 100644 --- a/docker_env/celery/Dockerfile +++ b/docker_env/celery/Dockerfile @@ -1,4 +1,4 @@ -FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxibears-erp-django:latest +FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxibears-erp-django WORKDIR /backend COPY ./backend/ . RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' diff --git a/docker_env/django/Dockerfile b/docker_env/django/Dockerfile index a317748323..4a9415d162 100644 --- a/docker_env/django/Dockerfile +++ b/docker_env/django/Dockerfile @@ -1,4 +1,4 @@ -FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxibears-erp-django:latest +FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxibears-erp-django WORKDIR /backend COPY ./backend/ . RUN ls ./conf/ diff --git a/docker_env/web/Dockerfile b/docker_env/web/Dockerfile index 73fc4e7cd6..6bcb168e7a 100644 --- a/docker_env/web/Dockerfile +++ b/docker_env/web/Dockerfile @@ -1,9 +1,8 @@ -FROM registry.cn-zhangjiakou.aliyuncs.com/dvadmin-pro/dvadmin3-base-web:18.20-alpine +FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxibears-erp-web WORKDIR /web/ COPY web/. . -RUN yarn install --registry=https://registry.npmmirror.com RUN yarn build -FROM nginx:alpine +FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-nginx COPY ./docker_env/nginx/my.conf /etc/nginx/conf.d/my.conf COPY --from=0 /web/dist /usr/share/nginx/html -- Gitee From de63b3847589a38ab2373a97ec361852fee2f568 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sun, 30 Mar 2025 11:31:24 +0800 Subject: [PATCH 10/31] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/.gitignore | 1 - web/dist/assets/401.6AFBTDZ2.js | 1 + web/dist/assets/401.C9Gorf2A.css | 1 + web/dist/assets/404.C6XJAvwQ.js | 1 + web/dist/assets/404.DufCVmXm.css | 1 + web/dist/assets/RoleDrawer.BpHBBT47.js | 2 + web/dist/assets/RoleDrawer.DWSu5Noa.css | 1 + web/dist/assets/RoleMenuBtn.Bp4G33F9.js | 1 + web/dist/assets/RoleMenuBtn.DUIvX6wu.css | 1 + web/dist/assets/RoleMenuBtnStores.jih0HPlG.js | 1 + web/dist/assets/RoleMenuField.uy3HOin6.css | 1 + web/dist/assets/RoleMenuField.yC8sUp8w.js | 1 + .../assets/RoleMenuFieldStores.DOA5KVAo.js | 1 + web/dist/assets/RoleMenuTree.C_dfgRWh.js | 1 + .../assets/RoleMenuTreeStores.CcYKMfIL.js | 1 + web/dist/assets/RoleUserStores.B3zDIJVl.js | 1 + web/dist/assets/RoleUsers.BQsqUzR_.js | 1 + web/dist/assets/RoleUsersStores.Co01fjT9.js | 1 + .../_plugin-vue_export-helper.DlAUqK2U.js | 1 + web/dist/assets/account.CY4fFktS.css | 1 + web/dist/assets/account.Ck0WfhoZ.js | 1 + web/dist/assets/addContent.DqE5gM-b.js | 1 + ...ue_type_script_setup_true_lang.CGM52RJA.js | 1 + web/dist/assets/addTabs.BpUOg-6O.js | 1 + ...ue_type_script_setup_true_lang.C5irVEUK.js | 1 + web/dist/assets/api.7fuRR03W.js | 1 + web/dist/assets/api.C_BUo8_Z.js | 1 + web/dist/assets/api.CqMNLOVM.js | 1 + web/dist/assets/api.DcIfMooN.js | 1 + web/dist/assets/api.Dw2kt7dJ.js | 1 + web/dist/assets/api.jJ3Ot51X.js | 1 + web/dist/assets/aside.CcbNtRz7.js | 2 + web/dist/assets/associationTable.BfghxRvS.js | 1 + ...ue_type_script_setup_true_lang.D723xajV.js | 1 + web/dist/assets/authFunction.Br9oRcVU.js | 1 + web/dist/assets/bakindex.BK2ZxFPm.css | 1 + web/dist/assets/bakindex.PZnjOQZJ.js | 1 + web/dist/assets/breadcrumb.CgSM-oQ7.css | 1 + web/dist/assets/breadcrumb.wqwFczeO.js | 1 + web/dist/assets/changePwd.37FoB_fi.js | 1 + web/dist/assets/changePwd.Dumi_sqx.css | 1 + web/dist/assets/classic.CJq6kQh6.js | 2 + web/dist/assets/closeFull.CzjSgIlY.js | 1 + web/dist/assets/closeFull.aavHxrrN.css | 1 + web/dist/assets/columnPermission.C1SV5wrv.js | 1 + web/dist/assets/columns.CmHaca52.js | 2 + web/dist/assets/columnsAside.DcFcWAsf.js | 1 + web/dist/assets/columnsAside.TyXXNMHi.css | 1 + web/dist/assets/commonCrud.CCkJYHLJ.js | 1 + web/dist/assets/contextmenu.DhtroW7_.js | 1 + web/dist/assets/contextmenu.Q99eYcOG.css | 1 + web/dist/assets/crud.7rE-T_E9.js | 1 + web/dist/assets/crud.B9j8xmfD.css | 1 + web/dist/assets/crud.BNBeHM1q.js | 1 + web/dist/assets/crud.BZns8qMI.js | 1 + web/dist/assets/crud.Bj8U6YGH.js | 1 + web/dist/assets/crud.BqLXCUBJ.js | 1 + web/dist/assets/crud.C3GYL5gO.js | 1 + web/dist/assets/crud.CFv1w-We.js | 1 + web/dist/assets/crud.CXN7XRtA.js | 1 + web/dist/assets/crud.CXcyYhx9.js | 1 + web/dist/assets/crud.C_P-uSI6.js | 1 + web/dist/assets/crud.ChSkQb0R.js | 1 + web/dist/assets/crud.DBHnuhcJ.js | 1 + web/dist/assets/crud.DdutpvhZ.js | 1 + web/dist/assets/crud.Dl7qlUZf.js | 1 + web/dist/assets/crud.DqhsfUWs.js | 1 + web/dist/assets/crud.DzuWahSU.css | 1 + web/dist/assets/crud.FaW-C1Tj.js | 1 + web/dist/assets/crud.QVkmZ2MD.js | 1 + web/dist/assets/crud.X4Uyb4ud.js | 1 + web/dist/assets/crud.aEhwQ47D.js | 1 + web/dist/assets/crud.aa8KfaOa.js | 1 + web/dist/assets/crud.hXHWdc3w.js | 1 + web/dist/assets/crudTable.DrJHJ0aT.js | 1 + ...ue_type_script_setup_true_lang.Ch6lbP_F.js | 1 + web/dist/assets/defaults.Bat_bZMk.js | 2 + web/dist/assets/dictionary.CH8ZDdyo.js | 1 + web/dist/assets/echarts.8mhZIf8A.js | 74 + .../assets/fontawesome-webfont.B-jkhYfk.woff2 | Bin 0 -> 77160 bytes .../assets/fontawesome-webfont.CDK5bt4p.woff | Bin 0 -> 98024 bytes .../assets/fontawesome-webfont.CQDK8MU3.ttf | Bin 0 -> 165548 bytes .../assets/fontawesome-webfont.D13rzr4g.svg | 2671 +++++++++++++++++ .../assets/fontawesome-webfont.G5YE5S7X.eot | Bin 0 -> 165742 bytes web/dist/assets/formContent.B3OsGQeK.css | 1 + web/dist/assets/formContent.BGb37XcT.js | 1 + web/dist/assets/formatTime.in1fXasu.js | 1 + .../assets/fs-cropper-8eb4add2.Dy2wapzG.js | 11 + .../fs-cropper-uploader-a4003ae3.Co0sTjIx.js | 1 + .../fs-file-uploader-1c0076b5.BrqWgCRO.js | 1 + .../fs-files-format-d3f2439b.8v7-IHF2.js | 1 + .../assets/fs-uploader-070ca0b5.C2RU4GoG.js | 1 + web/dist/assets/header.D3A4TWO0.js | 2 + web/dist/assets/headerImage.BUBciz5F.png | Bin 0 -> 9356 bytes web/dist/assets/horizontal.C8egFxd2.js | 2 + web/dist/assets/horizontal.jmWcI8YP.css | 1 + .../iconfont.1741744105265.CEnVhfJy.ttf | Bin 0 -> 7444 bytes .../iconfont.1741744105265.Dp-KMXjm.woff | Bin 0 -> 4264 bytes web/dist/assets/iconfont.CV5FmyBR.ttf | Bin 0 -> 5532 bytes web/dist/assets/iframes.DGiIlSBz.js | 1 + web/dist/assets/img404.DizYJBZK.png | Bin 0 -> 71017 bytes web/dist/assets/index-03e6f703.C7gOK_VK.js | 181 ++ web/dist/assets/index-e86e660e.DK_ekHy-.js | 105 + web/dist/assets/index-ea3d8438.CNl2mUZd.js | 859 ++++++ web/dist/assets/index.4o_Ki8Im.js | 1 + web/dist/assets/index.5gN3CZEU.css | 1 + web/dist/assets/index.B4YvKwUk.js | 1 + web/dist/assets/index.B5UZM4_y.css | 1 + web/dist/assets/index.BB25-PUl.js | 1 + web/dist/assets/index.BBt1_1E0.js | 1 + web/dist/assets/index.BGa-0oci.css | 1 + web/dist/assets/index.BKFTHIJo.js | 1 + web/dist/assets/index.BLuyqBKT.js | 2 + web/dist/assets/index.BMLVfHDg.js | 1 + web/dist/assets/index.BQWmd8dy.js | 2 + web/dist/assets/index.BRUoq9JF.js | 1 + web/dist/assets/index.BWG65dbY.js | 1 + web/dist/assets/index.BW_nUQ-M.css | 1 + web/dist/assets/index.BXmVc7SW.css | 1 + web/dist/assets/index.BdKOiafz.js | 1 + web/dist/assets/index.BeHuKCBj.js | 1 + web/dist/assets/index.BeW-LAFJ.css | 1 + web/dist/assets/index.BfMtt70x.css | 1 + web/dist/assets/index.BiQ0b2iy.css | 1 + web/dist/assets/index.BqRUnpx4.js | 2 + web/dist/assets/index.C7FCFxIG.js | 1 + web/dist/assets/index.C8nsmekx.js | 1 + web/dist/assets/index.C9xbvsVt.js | 3 + web/dist/assets/index.CIuc4c82.js | 1 + web/dist/assets/index.CM92p2dK.js | 1 + web/dist/assets/index.CPtAIYcr.js | 1 + web/dist/assets/index.CSLxyD_P.js | 2 + web/dist/assets/index.CSmNi5Hz.js | 1 + web/dist/assets/index.ChB7-cPb.js | 1 + web/dist/assets/index.ChcSV4Ko.css | 1 + web/dist/assets/index.CkCcWuPb.js | 177 ++ web/dist/assets/index.CmQFx-VW.js | 1 + web/dist/assets/index.CvWHgkGx.js | 1 + web/dist/assets/index.CvqYXTn4.js | 1 + web/dist/assets/index.CyYN-Q1l.js | 7 + web/dist/assets/index.Cz3epfbJ.css | 1 + web/dist/assets/index.D2QvUCMr.js | 2 + web/dist/assets/index.D3i38FYS.css | 1 + web/dist/assets/index.D9cKcRvH.js | 2 + web/dist/assets/index.DAOEvW-k.css | 1 + web/dist/assets/index.DAY6IrRg.css | 1 + web/dist/assets/index.DEew3V8g.css | 1 + web/dist/assets/index.DHbr1QT_.js | 1 + web/dist/assets/index.DLjSDZf5.js | 1 + web/dist/assets/index.DMz3gwxH.css | 1 + web/dist/assets/index.DPJ4CiP8.css | 1 + web/dist/assets/index.DRHSrNPe.js | 1 + web/dist/assets/index.DSEWcWyr.css | 1 + web/dist/assets/index.DSpMR-iu.js | 1 + web/dist/assets/index.DTNB1H71.js | 2 + web/dist/assets/index.DYBcdGkb.js | 2 + web/dist/assets/index.DZYMe7om.js | 1 + web/dist/assets/index.DayMOj0i.css | 1 + web/dist/assets/index.DkxfxyK9.css | 1 + web/dist/assets/index.DrV5TFZn.js | 2 + web/dist/assets/index.Dv8PJbHD.js | 1 + web/dist/assets/index.DvQZPXXd.css | 17 + web/dist/assets/index.Dvn9Ron_.css | 1 + web/dist/assets/index.DyaDdQXc.js | 1 + web/dist/assets/index.Sw7mFMVJ.css | 1 + web/dist/assets/index.YScPw7bZ.js | 1 + web/dist/assets/index.es.DmevZXPX.js | 1 + web/dist/assets/index.jXmfan6a.js | 1 + web/dist/assets/index.n3SGtHTP.css | 1 + web/dist/assets/index.n_iG98Gs.js | 1 + web/dist/assets/index.o9ZI4IMk.js | 1 + web/dist/assets/index.swimFhvf.js | 1 + ...ue_type_script_setup_true_lang.SUHDC48E.js | 1 + ...tup_true_name_importExcel_lang.PF0MdneX.js | 1 + ...t_setup_true_name_svgIcon_lang.DVS5ZgXC.js | 1 + web/dist/assets/index.w8K3oiOo.css | 1 + web/dist/assets/index.xfyTK7zP.css | 1 + web/dist/assets/index.xycF2T5O.js | 1 + web/dist/assets/link.BXLIWc5_.css | 1 + web/dist/assets/link.Dm4igRQf.js | 1 + web/dist/assets/list.CbvnQeqe.css | 1 + web/dist/assets/list.DrfbZE2c.js | 1 + web/dist/assets/login-bg.DC65RvUL.png | Bin 0 -> 563208 bytes web/dist/assets/logo-mini.Cm36vqeJ.js | 1 + web/dist/assets/logo-mini.PKXMkVhA.png | Bin 0 -> 4137 bytes web/dist/assets/main.B3b7-7PA.js | 2 + web/dist/assets/md5.DLPczxzP.js | 1 + web/dist/assets/mobile.HNTeVw5Q.js | 1 + web/dist/assets/mobile.iDTauq8v.css | 1 + web/dist/assets/parent.C6EbHvur.js | 2 + web/dist/assets/scan.CncQYAmv.js | 1 + web/dist/assets/scan.DrFMZsLm.css | 1 + web/dist/assets/search.Da1RhtvH.js | 1 + web/dist/assets/search.gOvPOjoo.css | 1 + web/dist/assets/setings.D9eqS4-9.css | 1 + web/dist/assets/setings.DZx2-WcA.js | 6 + web/dist/assets/subItem.BfAnlXnN.js | 1 + web/dist/assets/tagsView.B9nwrDkZ.css | 1 + web/dist/assets/tagsView.DJSmzEFB.js | 7 + web/dist/assets/transverse.CaB-GJdl.js | 2 + .../uploader-alioss-72a67ab7.9Ys1k9Y2.js | 84 + .../assets/uploader-cos-d6837856.pQtblLcI.js | 11 + .../assets/uploader-form-59673bb1.DivG8mbB.js | 1 + .../uploader-qiniu-f6a47e00.C4hHpgGo.js | 1 + .../assets/uploader-s3-aa58ec2a.CaCaoLM3.js | 35 + web/dist/assets/user.CjoHUFmQ.css | 1 + web/dist/assets/user.D2LPe_dv.js | 2 + web/dist/assets/userNews.BQ1mXTAw.js | 1 + web/dist/assets/userNews.g_t1e8q7.css | 1 + web/dist/assets/vertical.D5BzUQaZ.js | 2 + web/dist/assets/vue.Cw4Y52yh.js | 27 + web/dist/favicon.ico | Bin 0 -> 16958 bytes web/dist/index.html | 33 + web/dist/version-build | 1 + 214 files changed, 4513 insertions(+), 1 deletion(-) create mode 100644 web/dist/assets/401.6AFBTDZ2.js create mode 100644 web/dist/assets/401.C9Gorf2A.css create mode 100644 web/dist/assets/404.C6XJAvwQ.js create mode 100644 web/dist/assets/404.DufCVmXm.css create mode 100644 web/dist/assets/RoleDrawer.BpHBBT47.js create mode 100644 web/dist/assets/RoleDrawer.DWSu5Noa.css create mode 100644 web/dist/assets/RoleMenuBtn.Bp4G33F9.js create mode 100644 web/dist/assets/RoleMenuBtn.DUIvX6wu.css create mode 100644 web/dist/assets/RoleMenuBtnStores.jih0HPlG.js create mode 100644 web/dist/assets/RoleMenuField.uy3HOin6.css create mode 100644 web/dist/assets/RoleMenuField.yC8sUp8w.js create mode 100644 web/dist/assets/RoleMenuFieldStores.DOA5KVAo.js create mode 100644 web/dist/assets/RoleMenuTree.C_dfgRWh.js create mode 100644 web/dist/assets/RoleMenuTreeStores.CcYKMfIL.js create mode 100644 web/dist/assets/RoleUserStores.B3zDIJVl.js create mode 100644 web/dist/assets/RoleUsers.BQsqUzR_.js create mode 100644 web/dist/assets/RoleUsersStores.Co01fjT9.js create mode 100644 web/dist/assets/_plugin-vue_export-helper.DlAUqK2U.js create mode 100644 web/dist/assets/account.CY4fFktS.css create mode 100644 web/dist/assets/account.Ck0WfhoZ.js create mode 100644 web/dist/assets/addContent.DqE5gM-b.js create mode 100644 web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js create mode 100644 web/dist/assets/addTabs.BpUOg-6O.js create mode 100644 web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js create mode 100644 web/dist/assets/api.7fuRR03W.js create mode 100644 web/dist/assets/api.C_BUo8_Z.js create mode 100644 web/dist/assets/api.CqMNLOVM.js create mode 100644 web/dist/assets/api.DcIfMooN.js create mode 100644 web/dist/assets/api.Dw2kt7dJ.js create mode 100644 web/dist/assets/api.jJ3Ot51X.js create mode 100644 web/dist/assets/aside.CcbNtRz7.js create mode 100644 web/dist/assets/associationTable.BfghxRvS.js create mode 100644 web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js create mode 100644 web/dist/assets/authFunction.Br9oRcVU.js create mode 100644 web/dist/assets/bakindex.BK2ZxFPm.css create mode 100644 web/dist/assets/bakindex.PZnjOQZJ.js create mode 100644 web/dist/assets/breadcrumb.CgSM-oQ7.css create mode 100644 web/dist/assets/breadcrumb.wqwFczeO.js create mode 100644 web/dist/assets/changePwd.37FoB_fi.js create mode 100644 web/dist/assets/changePwd.Dumi_sqx.css create mode 100644 web/dist/assets/classic.CJq6kQh6.js create mode 100644 web/dist/assets/closeFull.CzjSgIlY.js create mode 100644 web/dist/assets/closeFull.aavHxrrN.css create mode 100644 web/dist/assets/columnPermission.C1SV5wrv.js create mode 100644 web/dist/assets/columns.CmHaca52.js create mode 100644 web/dist/assets/columnsAside.DcFcWAsf.js create mode 100644 web/dist/assets/columnsAside.TyXXNMHi.css create mode 100644 web/dist/assets/commonCrud.CCkJYHLJ.js create mode 100644 web/dist/assets/contextmenu.DhtroW7_.js create mode 100644 web/dist/assets/contextmenu.Q99eYcOG.css create mode 100644 web/dist/assets/crud.7rE-T_E9.js create mode 100644 web/dist/assets/crud.B9j8xmfD.css create mode 100644 web/dist/assets/crud.BNBeHM1q.js create mode 100644 web/dist/assets/crud.BZns8qMI.js create mode 100644 web/dist/assets/crud.Bj8U6YGH.js create mode 100644 web/dist/assets/crud.BqLXCUBJ.js create mode 100644 web/dist/assets/crud.C3GYL5gO.js create mode 100644 web/dist/assets/crud.CFv1w-We.js create mode 100644 web/dist/assets/crud.CXN7XRtA.js create mode 100644 web/dist/assets/crud.CXcyYhx9.js create mode 100644 web/dist/assets/crud.C_P-uSI6.js create mode 100644 web/dist/assets/crud.ChSkQb0R.js create mode 100644 web/dist/assets/crud.DBHnuhcJ.js create mode 100644 web/dist/assets/crud.DdutpvhZ.js create mode 100644 web/dist/assets/crud.Dl7qlUZf.js create mode 100644 web/dist/assets/crud.DqhsfUWs.js create mode 100644 web/dist/assets/crud.DzuWahSU.css create mode 100644 web/dist/assets/crud.FaW-C1Tj.js create mode 100644 web/dist/assets/crud.QVkmZ2MD.js create mode 100644 web/dist/assets/crud.X4Uyb4ud.js create mode 100644 web/dist/assets/crud.aEhwQ47D.js create mode 100644 web/dist/assets/crud.aa8KfaOa.js create mode 100644 web/dist/assets/crud.hXHWdc3w.js create mode 100644 web/dist/assets/crudTable.DrJHJ0aT.js create mode 100644 web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js create mode 100644 web/dist/assets/defaults.Bat_bZMk.js create mode 100644 web/dist/assets/dictionary.CH8ZDdyo.js create mode 100644 web/dist/assets/echarts.8mhZIf8A.js create mode 100644 web/dist/assets/fontawesome-webfont.B-jkhYfk.woff2 create mode 100644 web/dist/assets/fontawesome-webfont.CDK5bt4p.woff create mode 100644 web/dist/assets/fontawesome-webfont.CQDK8MU3.ttf create mode 100644 web/dist/assets/fontawesome-webfont.D13rzr4g.svg create mode 100644 web/dist/assets/fontawesome-webfont.G5YE5S7X.eot create mode 100644 web/dist/assets/formContent.B3OsGQeK.css create mode 100644 web/dist/assets/formContent.BGb37XcT.js create mode 100644 web/dist/assets/formatTime.in1fXasu.js create mode 100644 web/dist/assets/fs-cropper-8eb4add2.Dy2wapzG.js create mode 100644 web/dist/assets/fs-cropper-uploader-a4003ae3.Co0sTjIx.js create mode 100644 web/dist/assets/fs-file-uploader-1c0076b5.BrqWgCRO.js create mode 100644 web/dist/assets/fs-files-format-d3f2439b.8v7-IHF2.js create mode 100644 web/dist/assets/fs-uploader-070ca0b5.C2RU4GoG.js create mode 100644 web/dist/assets/header.D3A4TWO0.js create mode 100644 web/dist/assets/headerImage.BUBciz5F.png create mode 100644 web/dist/assets/horizontal.C8egFxd2.js create mode 100644 web/dist/assets/horizontal.jmWcI8YP.css create mode 100644 web/dist/assets/iconfont.1741744105265.CEnVhfJy.ttf create mode 100644 web/dist/assets/iconfont.1741744105265.Dp-KMXjm.woff create mode 100644 web/dist/assets/iconfont.CV5FmyBR.ttf create mode 100644 web/dist/assets/iframes.DGiIlSBz.js create mode 100644 web/dist/assets/img404.DizYJBZK.png create mode 100644 web/dist/assets/index-03e6f703.C7gOK_VK.js create mode 100644 web/dist/assets/index-e86e660e.DK_ekHy-.js create mode 100644 web/dist/assets/index-ea3d8438.CNl2mUZd.js create mode 100644 web/dist/assets/index.4o_Ki8Im.js create mode 100644 web/dist/assets/index.5gN3CZEU.css create mode 100644 web/dist/assets/index.B4YvKwUk.js create mode 100644 web/dist/assets/index.B5UZM4_y.css create mode 100644 web/dist/assets/index.BB25-PUl.js create mode 100644 web/dist/assets/index.BBt1_1E0.js create mode 100644 web/dist/assets/index.BGa-0oci.css create mode 100644 web/dist/assets/index.BKFTHIJo.js create mode 100644 web/dist/assets/index.BLuyqBKT.js create mode 100644 web/dist/assets/index.BMLVfHDg.js create mode 100644 web/dist/assets/index.BQWmd8dy.js create mode 100644 web/dist/assets/index.BRUoq9JF.js create mode 100644 web/dist/assets/index.BWG65dbY.js create mode 100644 web/dist/assets/index.BW_nUQ-M.css create mode 100644 web/dist/assets/index.BXmVc7SW.css create mode 100644 web/dist/assets/index.BdKOiafz.js create mode 100644 web/dist/assets/index.BeHuKCBj.js create mode 100644 web/dist/assets/index.BeW-LAFJ.css create mode 100644 web/dist/assets/index.BfMtt70x.css create mode 100644 web/dist/assets/index.BiQ0b2iy.css create mode 100644 web/dist/assets/index.BqRUnpx4.js create mode 100644 web/dist/assets/index.C7FCFxIG.js create mode 100644 web/dist/assets/index.C8nsmekx.js create mode 100644 web/dist/assets/index.C9xbvsVt.js create mode 100644 web/dist/assets/index.CIuc4c82.js create mode 100644 web/dist/assets/index.CM92p2dK.js create mode 100644 web/dist/assets/index.CPtAIYcr.js create mode 100644 web/dist/assets/index.CSLxyD_P.js create mode 100644 web/dist/assets/index.CSmNi5Hz.js create mode 100644 web/dist/assets/index.ChB7-cPb.js create mode 100644 web/dist/assets/index.ChcSV4Ko.css create mode 100644 web/dist/assets/index.CkCcWuPb.js create mode 100644 web/dist/assets/index.CmQFx-VW.js create mode 100644 web/dist/assets/index.CvWHgkGx.js create mode 100644 web/dist/assets/index.CvqYXTn4.js create mode 100644 web/dist/assets/index.CyYN-Q1l.js create mode 100644 web/dist/assets/index.Cz3epfbJ.css create mode 100644 web/dist/assets/index.D2QvUCMr.js create mode 100644 web/dist/assets/index.D3i38FYS.css create mode 100644 web/dist/assets/index.D9cKcRvH.js create mode 100644 web/dist/assets/index.DAOEvW-k.css create mode 100644 web/dist/assets/index.DAY6IrRg.css create mode 100644 web/dist/assets/index.DEew3V8g.css create mode 100644 web/dist/assets/index.DHbr1QT_.js create mode 100644 web/dist/assets/index.DLjSDZf5.js create mode 100644 web/dist/assets/index.DMz3gwxH.css create mode 100644 web/dist/assets/index.DPJ4CiP8.css create mode 100644 web/dist/assets/index.DRHSrNPe.js create mode 100644 web/dist/assets/index.DSEWcWyr.css create mode 100644 web/dist/assets/index.DSpMR-iu.js create mode 100644 web/dist/assets/index.DTNB1H71.js create mode 100644 web/dist/assets/index.DYBcdGkb.js create mode 100644 web/dist/assets/index.DZYMe7om.js create mode 100644 web/dist/assets/index.DayMOj0i.css create mode 100644 web/dist/assets/index.DkxfxyK9.css create mode 100644 web/dist/assets/index.DrV5TFZn.js create mode 100644 web/dist/assets/index.Dv8PJbHD.js create mode 100644 web/dist/assets/index.DvQZPXXd.css create mode 100644 web/dist/assets/index.Dvn9Ron_.css create mode 100644 web/dist/assets/index.DyaDdQXc.js create mode 100644 web/dist/assets/index.Sw7mFMVJ.css create mode 100644 web/dist/assets/index.YScPw7bZ.js create mode 100644 web/dist/assets/index.es.DmevZXPX.js create mode 100644 web/dist/assets/index.jXmfan6a.js create mode 100644 web/dist/assets/index.n3SGtHTP.css create mode 100644 web/dist/assets/index.n_iG98Gs.js create mode 100644 web/dist/assets/index.o9ZI4IMk.js create mode 100644 web/dist/assets/index.swimFhvf.js create mode 100644 web/dist/assets/index.vue_vue_type_script_setup_true_lang.SUHDC48E.js create mode 100644 web/dist/assets/index.vue_vue_type_script_setup_true_name_importExcel_lang.PF0MdneX.js create mode 100644 web/dist/assets/index.vue_vue_type_script_setup_true_name_svgIcon_lang.DVS5ZgXC.js create mode 100644 web/dist/assets/index.w8K3oiOo.css create mode 100644 web/dist/assets/index.xfyTK7zP.css create mode 100644 web/dist/assets/index.xycF2T5O.js create mode 100644 web/dist/assets/link.BXLIWc5_.css create mode 100644 web/dist/assets/link.Dm4igRQf.js create mode 100644 web/dist/assets/list.CbvnQeqe.css create mode 100644 web/dist/assets/list.DrfbZE2c.js create mode 100644 web/dist/assets/login-bg.DC65RvUL.png create mode 100644 web/dist/assets/logo-mini.Cm36vqeJ.js create mode 100644 web/dist/assets/logo-mini.PKXMkVhA.png create mode 100644 web/dist/assets/main.B3b7-7PA.js create mode 100644 web/dist/assets/md5.DLPczxzP.js create mode 100644 web/dist/assets/mobile.HNTeVw5Q.js create mode 100644 web/dist/assets/mobile.iDTauq8v.css create mode 100644 web/dist/assets/parent.C6EbHvur.js create mode 100644 web/dist/assets/scan.CncQYAmv.js create mode 100644 web/dist/assets/scan.DrFMZsLm.css create mode 100644 web/dist/assets/search.Da1RhtvH.js create mode 100644 web/dist/assets/search.gOvPOjoo.css create mode 100644 web/dist/assets/setings.D9eqS4-9.css create mode 100644 web/dist/assets/setings.DZx2-WcA.js create mode 100644 web/dist/assets/subItem.BfAnlXnN.js create mode 100644 web/dist/assets/tagsView.B9nwrDkZ.css create mode 100644 web/dist/assets/tagsView.DJSmzEFB.js create mode 100644 web/dist/assets/transverse.CaB-GJdl.js create mode 100644 web/dist/assets/uploader-alioss-72a67ab7.9Ys1k9Y2.js create mode 100644 web/dist/assets/uploader-cos-d6837856.pQtblLcI.js create mode 100644 web/dist/assets/uploader-form-59673bb1.DivG8mbB.js create mode 100644 web/dist/assets/uploader-qiniu-f6a47e00.C4hHpgGo.js create mode 100644 web/dist/assets/uploader-s3-aa58ec2a.CaCaoLM3.js create mode 100644 web/dist/assets/user.CjoHUFmQ.css create mode 100644 web/dist/assets/user.D2LPe_dv.js create mode 100644 web/dist/assets/userNews.BQ1mXTAw.js create mode 100644 web/dist/assets/userNews.g_t1e8q7.css create mode 100644 web/dist/assets/vertical.D5BzUQaZ.js create mode 100644 web/dist/assets/vue.Cw4Y52yh.js create mode 100644 web/dist/favicon.ico create mode 100644 web/dist/index.html create mode 100644 web/dist/version-build diff --git a/web/.gitignore b/web/.gitignore index 8cef918682..4edf6dca0e 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -1,6 +1,5 @@ .DS_Store node_modules -/dist yarn.lock # local env files diff --git a/web/dist/assets/401.6AFBTDZ2.js b/web/dist/assets/401.6AFBTDZ2.js new file mode 100644 index 0000000000..387545b8a4 --- /dev/null +++ b/web/dist/assets/401.6AFBTDZ2.js @@ -0,0 +1 @@ +import{w as m,aR as r,F as d,aA as f,x as g,y as p,z as e,a5 as i,a7 as u,a0 as _,a4 as h,X as v}from"./vue.Cw4Y52yh.js";import{u as w,b as T,S as b}from"./index.CkCcWuPb.js";import{_ as C}from"./_plugin-vue_export-helper.DlAUqK2U.js";const F=m({name:"401",setup(){const s=w(),t=T(),{themeConfig:a}=r(s),{isTagsViewCurrenFull:n}=r(t),l=()=>{b.clear(),window.location.reload()},c=d(()=>{let{isTagsview:o}=a.value;return n.value?"30px":o?"114px":"80px"});return{onSetAuth:l,initTagViewHeight:c}}}),x={class:"error-flex"},y={class:"left"},A={class:"left-item"},V={class:"left-item-animation left-item-title"},$={class:"left-item-animation left-item-msg"},S={class:"left-item-animation left-item-btn"};function k(s,t,a,n,l,c){const o=f("el-button");return p(),g("div",{class:"error layout-view-bg-white",style:v({height:`calc(100vh - ${s.initTagViewHeight}`})},[e("div",x,[e("div",y,[e("div",A,[t[0]||(t[0]=e("div",{class:"left-item-animation left-item-num"},"401",-1)),e("div",V,i(s.$t("message.noAccess.accessTitle")),1),e("div",$,i(s.$t("message.noAccess.accessMsg")),1),e("div",S,[u(o,{type:"primary",round:"",onClick:s.onSetAuth},{default:_(()=>[h(i(s.$t("message.noAccess.accessBtn")),1)]),_:1},8,["onClick"])])])]),t[1]||(t[1]=e("div",{class:"right"},[e("img",{src:"https://img-blog.csdnimg.cn/3333f265772a4fa89287993500ecbf96.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHl0LXRvcA==,size_16,color_FFFFFF,t_70,g_se,x_16"})],-1))])],4)}const z=C(F,[["render",k],["__scopeId","data-v-858f28e6"]]);export{z as default}; diff --git a/web/dist/assets/401.C9Gorf2A.css b/web/dist/assets/401.C9Gorf2A.css new file mode 100644 index 0000000000..38aee7a015 --- /dev/null +++ b/web/dist/assets/401.C9Gorf2A.css @@ -0,0 +1 @@ +.error[data-v-858f28e6]{height:100%;background-color:var(--el-color-white);display:flex}.error .error-flex[data-v-858f28e6]{margin:auto;display:flex;height:350px;width:900px}.error .error-flex .left[data-v-858f28e6]{flex:1;height:100%;align-items:center;display:flex}.error .error-flex .left .left-item .left-item-animation[data-v-858f28e6]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards}.error .error-flex .left .left-item .left-item-num[data-v-858f28e6]{color:var(--el-color-info);font-size:55px}.error .error-flex .left .left-item .left-item-title[data-v-858f28e6]{font-size:20px;color:var(--el-text-color-primary);margin:15px 0 5px;animation-delay:.1s}.error .error-flex .left .left-item .left-item-msg[data-v-858f28e6]{color:var(--el-text-color-secondary);font-size:12px;margin-bottom:30px;animation-delay:.2s}.error .error-flex .left .left-item .left-item-btn[data-v-858f28e6]{animation-delay:.2s}.error .error-flex .right[data-v-858f28e6]{flex:1;opacity:0;animation-name:error-img;animation-duration:2s;animation-fill-mode:forwards}.error .error-flex .right img[data-v-858f28e6]{width:100%;height:100%} diff --git a/web/dist/assets/404.C6XJAvwQ.js b/web/dist/assets/404.C6XJAvwQ.js new file mode 100644 index 0000000000..64a03035e9 --- /dev/null +++ b/web/dist/assets/404.C6XJAvwQ.js @@ -0,0 +1 @@ +import{w as u,aR as m,aU as c,F as f,aA as p,x as g,y as _,z as e,a5 as i,a7 as v,a0 as h,a4 as T,X as w}from"./vue.Cw4Y52yh.js";import{u as C,b as V}from"./index.CkCcWuPb.js";import{_ as $}from"./_plugin-vue_export-helper.DlAUqK2U.js";const y=u({name:"404",setup(){const t=C(),s=V(),{themeConfig:n}=m(t),{isTagsViewCurrenFull:a}=m(s),r=c(),l=()=>{r.push("/")},o=f(()=>{let{isTagsview:d}=n.value;return a.value?"30px":d?"114px":"80px"});return{onGoHome:l,initTagViewHeight:o}}}),b="/assets/img404.DizYJBZK.png",x={class:"error-flex"},B={class:"left"},F={class:"left-item"},R={class:"left-item-animation left-item-title"},k={class:"left-item-animation left-item-msg"},H={class:"left-item-animation left-item-btn"};function z(t,s,n,a,r,l){const o=p("el-button");return _(),g("div",{class:"error layout-view-bg-white",style:w({height:`calc(100vh - ${t.initTagViewHeight}`})},[e("div",x,[e("div",B,[e("div",F,[s[0]||(s[0]=e("div",{class:"left-item-animation left-item-num"},"404",-1)),e("div",R,i(t.$t("message.notFound.foundTitle")),1),e("div",k,i(t.$t("message.notFound.foundMsg")),1),e("div",H,[v(o,{type:"primary",round:"",onClick:t.onGoHome},{default:h(()=>[T(i(t.$t("message.notFound.foundBtn")),1)]),_:1},8,["onClick"])])])]),s[1]||(s[1]=e("div",{class:"right"},[e("img",{src:b})],-1))])],4)}const S=$(y,[["render",z],["__scopeId","data-v-43ed7a98"]]);export{S as default}; diff --git a/web/dist/assets/404.DufCVmXm.css b/web/dist/assets/404.DufCVmXm.css new file mode 100644 index 0000000000..26b9b30abc --- /dev/null +++ b/web/dist/assets/404.DufCVmXm.css @@ -0,0 +1 @@ +.error[data-v-43ed7a98]{height:100%;background-color:var(--el-color-white);display:flex}.error .error-flex[data-v-43ed7a98]{margin:auto;display:flex;height:350px;width:900px}.error .error-flex .left[data-v-43ed7a98]{flex:1;height:100%;align-items:center;display:flex}.error .error-flex .left .left-item .left-item-animation[data-v-43ed7a98]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards}.error .error-flex .left .left-item .left-item-num[data-v-43ed7a98]{color:var(--el-color-info);font-size:55px}.error .error-flex .left .left-item .left-item-title[data-v-43ed7a98]{font-size:20px;color:var(--el-text-color-primary);margin:15px 0 5px;animation-delay:.1s}.error .error-flex .left .left-item .left-item-msg[data-v-43ed7a98]{color:var(--el-text-color-secondary);font-size:12px;margin-bottom:30px;animation-delay:.2s}.error .error-flex .left .left-item .left-item-btn[data-v-43ed7a98]{animation-delay:.2s}.error .error-flex .right[data-v-43ed7a98]{flex:1;opacity:0;animation-name:error-img;animation-duration:2s;animation-fill-mode:forwards}.error .error-flex .right img[data-v-43ed7a98]{width:100%;height:100%} diff --git a/web/dist/assets/RoleDrawer.BpHBBT47.js b/web/dist/assets/RoleDrawer.BpHBBT47.js new file mode 100644 index 0000000000..6ef99b193c --- /dev/null +++ b/web/dist/assets/RoleDrawer.BpHBBT47.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RoleMenuTree.C_dfgRWh.js","assets/api.7fuRR03W.js","assets/vue.Cw4Y52yh.js","assets/index.CkCcWuPb.js","assets/index.DvQZPXXd.css","assets/RoleMenuTreeStores.CcYKMfIL.js","assets/RoleMenuBtnStores.jih0HPlG.js","assets/RoleMenuFieldStores.DOA5KVAo.js","assets/RoleMenuBtn.Bp4G33F9.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/RoleMenuBtn.DUIvX6wu.css","assets/RoleMenuField.yC8sUp8w.js","assets/RoleMenuField.uy3HOin6.css","assets/RoleUsers.BQsqUzR_.js","assets/RoleUsersStores.Co01fjT9.js"])))=>i.map(i=>d[i]); +import{Z as Pe,_ as T}from"./index.CkCcWuPb.js";import{_ as ge,D as R,F as w,H as B,ae as ee,O as ae,$ as Se,V as k,y as j,a3 as we,C as N,B as Me,x as ne,W as Ee,X as Re,G as h,az as ye,P as W,w as be,aA as O,a7 as z,a0 as x,z as Y,aP as U,a4 as F,a5 as K,a6 as ke}from"./vue.Cw4Y52yh.js";import{R as Ce}from"./api.7fuRR03W.js";import{R as De}from"./RoleUsersStores.Co01fjT9.js";import{_ as Ve}from"./_plugin-vue_export-helper.DlAUqK2U.js";const Ne={__name:"splitpanes",props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click"],setup(A,{emit:C}){const m=C,u=A,D=ge(),l=R([]),M=w(()=>l.value.reduce((e,n)=>(e[~~n.id]=n)&&e,{})),f=w(()=>l.value.length),v=R(null),P=R(!1),c=R({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),d=R({splitter:null,timeoutId:null}),y=w(()=>({[`splitpanes splitpanes--${u.horizontal?"horizontal":"vertical"}`]:!0,"splitpanes--dragging":c.value.dragging})),b=()=>{document.addEventListener("mousemove",r,{passive:!1}),document.addEventListener("mouseup",g),"ontouchstart"in window&&(document.addEventListener("touchmove",r,{passive:!1}),document.addEventListener("touchend",g))},E=()=>{document.removeEventListener("mousemove",r,{passive:!1}),document.removeEventListener("mouseup",g),"ontouchstart"in window&&(document.removeEventListener("touchmove",r,{passive:!1}),document.removeEventListener("touchend",g))},V=(e,n)=>{const t=e.target.closest(".splitpanes__splitter");if(t){const{left:a,top:i}=t.getBoundingClientRect(),{clientX:s,clientY:o}="ontouchstart"in window&&e.touches?e.touches[0]:e;c.value.cursorOffset=u.horizontal?o-i:s-a}b(),c.value.mouseDown=!0,c.value.activeSplitter=n},r=e=>{c.value.mouseDown&&(e.preventDefault(),c.value.dragging=!0,requestAnimationFrame(()=>{se(ie(e)),m("resize",l.value.map(n=>({min:n.min,max:n.max,size:n.size})))}))},g=()=>{c.value.dragging&&m("resized",l.value.map(e=>({min:e.min,max:e.max,size:e.size}))),c.value.mouseDown=!1,setTimeout(()=>{c.value.dragging=!1,E()},100)},S=(e,n)=>{"ontouchstart"in window&&(e.preventDefault(),u.dblClickSplitter&&(d.value.splitter===n?(clearTimeout(d.value.timeoutId),d.value.timeoutId=null,$(e,n),d.value.splitter=null):(d.value.splitter=n,d.value.timeoutId=setTimeout(()=>d.value.splitter=null,500)))),c.value.dragging||m("splitter-click",l.value[n])},$=(e,n)=>{let t=0;l.value=l.value.map((a,i)=>(a.size=i===n?a.max:a.min,i!==n&&(t+=a.min),a)),l.value[n].size-=t,m("pane-maximize",l.value[n]),m("resized",l.value.map(a=>({min:a.min,max:a.max,size:a.size})))},te=(e,n)=>{m("pane-click",M.value[n])},ie=e=>{const n=v.value.getBoundingClientRect(),{clientX:t,clientY:a}="ontouchstart"in window&&e.touches?e.touches[0]:e;return{x:t-(u.horizontal?0:c.value.cursorOffset)-n.left,y:a-(u.horizontal?c.value.cursorOffset:0)-n.top}},le=e=>{e=e[u.horizontal?"y":"x"];const n=v.value[u.horizontal?"clientHeight":"clientWidth"];return u.rtl&&!u.horizontal&&(e=n-e),e*100/n},se=e=>{const n=c.value.activeSplitter;let t={prevPanesSize:H(n),nextPanesSize:L(n),prevReachedMinPanes:0,nextReachedMinPanes:0};const a=0+(u.pushOtherPanes?0:t.prevPanesSize),i=100-(u.pushOtherPanes?0:t.nextPanesSize),s=Math.max(Math.min(le(e),i),a);let o=[n,n+1],p=l.value[o[0]]||null,_=l.value[o[1]]||null;const G=p.max<100&&s>=p.max+t.prevPanesSize,xe=_.max<100&&s<=100-(_.max+L(n+1));if(G||xe){G?(p.size=p.max,_.size=Math.max(100-p.max-t.prevPanesSize-t.nextPanesSize,0)):(p.size=Math.max(100-_.max-t.prevPanesSize-L(n+1),0),_.size=_.max);return}if(u.pushOtherPanes){const J=oe(t,s);if(!J)return;({sums:t,panesToResize:o}=J),p=l.value[o[0]]||null,_=l.value[o[1]]||null}p!==null&&(p.size=Math.min(Math.max(s-t.prevPanesSize-t.prevReachedMinPanes,p.min),p.max)),_!==null&&(_.size=Math.min(Math.max(100-s-t.nextPanesSize-t.nextReachedMinPanes,_.min),_.max))},oe=(e,n)=>{const t=c.value.activeSplitter,a=[t,t+1];return n{s>a[0]&&s<=t&&(i.size=i.min,e.prevReachedMinPanes+=i.min)}),e.prevPanesSize=H(a[0]),a[0]===void 0)?(e.prevReachedMinPanes=0,l.value[0].size=l.value[0].min,l.value.forEach((i,s)=>{s>0&&s<=t&&(i.size=i.min,e.prevReachedMinPanes+=i.min)}),l.value[a[1]].size=100-e.prevReachedMinPanes-l.value[0].min-e.prevPanesSize-e.nextPanesSize,null):n>100-e.nextPanesSize-l.value[a[1]].min&&(a[1]=ue(t).index,e.nextReachedMinPanes=0,a[1]>t+1&&l.value.forEach((i,s)=>{s>t&&s{s=t+1&&(i.size=i.min,e.nextReachedMinPanes+=i.min)}),l.value[a[0]].size=100-e.prevPanesSize-L(a[0]-1),null):{sums:e,panesToResize:a}},H=e=>l.value.reduce((n,t,a)=>n+(al.value.reduce((n,t,a)=>n+(a>e+1?t.size:0),0),re=e=>[...l.value].reverse().find(n=>n.indexn.min)||{},ue=e=>l.value.find(n=>n.index>e+1&&n.size>n.min)||{},de=()=>{var e;Array.from(((e=v.value)==null?void 0:e.children)||[]).forEach(n=>{const t=n.classList.contains("splitpanes__pane"),a=n.classList.contains("splitpanes__splitter");!t&&!a&&(n.remove(),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."))})},Z=(e,n,t=!1)=>{const a=e-1,i=document.createElement("div");i.classList.add("splitpanes__splitter"),t||(i.onmousedown=s=>V(s,a),typeof window<"u"&&"ontouchstart"in window&&(i.ontouchstart=s=>V(s,a)),i.onclick=s=>S(s,a+1)),u.dblClickSplitter&&(i.ondblclick=s=>$(s,a+1)),n.parentNode.insertBefore(i,n)},me=e=>{e.onmousedown=void 0,e.onclick=void 0,e.ondblclick=void 0,e.remove()},I=()=>{var e;const n=Array.from(((e=v.value)==null?void 0:e.children)||[]);n.forEach(a=>{a.className.includes("splitpanes__splitter")&&me(a)});let t=0;n.forEach(a=>{a.className.includes("splitpanes__pane")&&(!t&&u.firstSplitter?Z(t,a,!0):t&&Z(t,a),t++)})},ve=({uid:e,...n})=>{const t=M.value[e];Object.entries(n).forEach(([a,i])=>t[a]=i)},ce=e=>{var n;let t=-1;Array.from(((n=v.value)==null?void 0:n.children)||[]).some(a=>(a.className.includes("splitpanes__pane")&&t++,a.isSameNode(e.el))),l.value.splice(t,0,{...e,index:t}),l.value.forEach((a,i)=>a.index=i),P.value&&W(()=>{I(),q({addedPane:l.value[t]}),m("pane-add",{index:t,panes:l.value.map(a=>({min:a.min,max:a.max,size:a.size}))})})},pe=e=>{const n=l.value.findIndex(a=>a.id===e),t=l.value.splice(n,1)[0];l.value.forEach((a,i)=>a.index=i),W(()=>{I(),q({removedPane:{...t}}),m("pane-remove",{removed:t,panes:l.value.map(a=>({min:a.min,max:a.max,size:a.size}))})})},q=(e={})=>{!e.addedPane&&!e.removedPane?he():l.value.some(n=>n.givenSize!==null||n.min||n.max<100)?fe(e):ze(),P.value&&m("resized",l.value.map(n=>({min:n.min,max:n.max,size:n.size})))},ze=()=>{const e=100/f.value;let n=0;const t=[],a=[];l.value.forEach(i=>{i.size=Math.max(Math.min(e,i.max),i.min),n-=i.size,i.size>=i.max&&t.push(i.id),i.size<=i.min&&a.push(i.id)}),n>.1&&X(n,t,a)},he=()=>{let e=100;const n=[],t=[];let a=0;l.value.forEach(s=>{e-=s.size,s.givenSize!==null&&a++,s.size>=s.max&&n.push(s.id),s.size<=s.min&&t.push(s.id)});let i=100;e>.1&&(l.value.forEach(s=>{s.givenSize===null&&(s.size=Math.max(Math.min(e/(f.value-a),s.max),s.min)),i-=s.size}),i>.1&&X(i,n,t))},fe=({addedPane:e,removedPane:n}={})=>{let t=100/f.value,a=0;const i=[],s=[];((e==null?void 0:e.givenSize)??null)!==null&&(t=(100-e.givenSize)/(f.value-1).value),l.value.forEach(o=>{a-=o.size,o.size>=o.max&&i.push(o.id),o.size<=o.min&&s.push(o.id)}),!(Math.abs(a)<.1)&&(l.value.forEach(o=>{(e==null?void 0:e.givenSize)!==null&&(e==null?void 0:e.id)===o.id||(o.size=Math.max(Math.min(t,o.max),o.min)),a-=o.size,o.size>=o.max&&i.push(o.id),o.size<=o.min&&s.push(o.id)}),a>.1&&X(a,i,s))},X=(e,n,t)=>{let a;e>0?a=e/(f.value-n.length):a=e/(f.value-t.length),l.value.forEach((i,s)=>{if(e>0&&!n.includes(i.id)){const o=Math.max(Math.min(i.size+a,i.max),i.min),p=o-i.size;e-=p,i.size=o}else if(!t.includes(i.id)){const o=Math.max(Math.min(i.size+a,i.max),i.min),p=o-i.size;e-=p,i.size=o}}),Math.abs(e)>.1&&W(()=>{P.value&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})};B(()=>u.firstSplitter,()=>I()),B(()=>u.dblClickSplitter,e=>{[...v.value.querySelectorAll(".splitpanes__splitter")].forEach((n,t)=>{n.ondblclick=e?a=>$(a,t):void 0})}),ee(()=>P.value=!1),ae(()=>{de(),I(),q(),m("ready"),P.value=!0});const _e=()=>{var e;return ye("div",{ref:v,class:y.value},(e=D.default)==null?void 0:e.call(D))};return k("panes",l),k("indexedPanes",M),k("horizontal",w(()=>u.horizontal)),k("requestUpdate",ve),k("onPaneAdd",ce),k("onPaneRemove",pe),k("onPaneClick",te),(e,n)=>(j(),Se(we(_e)))}},Q={__name:"pane",props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(A){var C;const m=A,u=N("requestUpdate"),D=N("onPaneAdd"),l=N("horizontal"),M=N("onPaneRemove"),f=N("onPaneClick"),v=(C=Me())==null?void 0:C.uid,P=N("indexedPanes"),c=w(()=>P.value[v]),d=R(null),y=w(()=>{const r=isNaN(m.size)||m.size===void 0?0:parseFloat(m.size);return Math.max(Math.min(r,E.value),b.value)}),b=w(()=>{const r=parseFloat(m.minSize);return isNaN(r)?0:r}),E=w(()=>{const r=parseFloat(m.maxSize);return isNaN(r)?100:r}),V=w(()=>{var r;return`${l.value?"height":"width"}: ${(r=c.value)==null?void 0:r.size}%`});return ae(()=>{D({id:v,el:d.value,min:b.value,max:E.value,givenSize:m.size===void 0?null:y.value,size:y.value})}),B(()=>y.value,r=>u({uid:v,size:r})),B(()=>b.value,r=>u({uid:v,min:r})),B(()=>E.value,r=>u({uid:v,max:r})),ee(()=>M(v)),(r,g)=>(j(),ne("div",{ref_key:"paneEl",ref:d,class:"splitpanes__pane",onClick:g[0]||(g[0]=S=>h(f)(S,r._.uid)),style:Re(V.value)},[Ee(r.$slots,"default")],4))}},Oe={class:"pane-box"},Le={class:"pane-box"},Be=be({__name:"RoleDrawer",setup(A){const C=U(()=>T(()=>import("./RoleMenuTree.C_dfgRWh.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),m=U(()=>T(()=>import("./RoleMenuBtn.Bp4G33F9.js"),__vite__mapDeps([8,2,1,3,4,6,5,9,10]))),u=U(()=>T(()=>import("./RoleMenuField.yC8sUp8w.js"),__vite__mapDeps([11,1,2,3,4,7,9,12]))),D=U(()=>T(()=>import("./RoleUsers.BQsqUzR_.js"),__vite__mapDeps([13,1,2,3,4,14]))),l=Ce(),M=De(),f=R("first"),v=R(!1),P=()=>{v.value=!0,M.get_all_users(),M.set_right_users(l.$state.users)};return(c,d)=>{const y=O("el-tag"),b=O("el-button"),E=O("el-tab-pane"),V=O("el-tabs"),r=O("el-drawer"),g=O("el-dialog");return j(),ne(ke,null,[z(r,{modelValue:h(l).drawerVisible,"onUpdate:modelValue":d[1]||(d[1]=S=>h(l).drawerVisible=S),title:"权限配置",direction:"rtl",size:"80%","close-on-click-modal":!1,"before-close":h(l).handleDrawerClose,"destroy-on-close":!0},{header:x(()=>[Y("div",null,[d[3]||(d[3]=F(" 当前授权角色: ")),z(y,{style:{"margin-right":"20px"}},{default:x(()=>[F(K(h(l).roleName),1)]),_:1}),d[4]||(d[4]=F(" 授权人员: ")),z(b,{size:"small",icon:h(Pe),onClick:P},{default:x(()=>[F(K(h(l).users.length),1)]),_:1},8,["icon"])])]),default:x(()=>[z(h(Ne),{class:"default-theme",style:{height:"100%"}},{default:x(()=>[z(h(Q),{"min-size":"20",size:"22"},{default:x(()=>[Y("div",Oe,[z(h(C))])]),_:1}),z(h(Q),{"min-size":"20"},{default:x(()=>[Y("div",Le,[z(V,{modelValue:f.value,"onUpdate:modelValue":d[0]||(d[0]=S=>f.value=S),class:"demo-tabs"},{default:x(()=>[z(E,{label:"接口权限",name:"first"},{default:x(()=>[z(h(m))]),_:1}),z(E,{label:"列字段权限",name:"second"},{default:x(()=>[z(h(u))]),_:1})]),_:1},8,["modelValue"])])]),_:1})]),_:1})]),_:1},8,["modelValue","before-close"]),z(g,{modelValue:v.value,"onUpdate:modelValue":d[2]||(d[2]=S=>v.value=S),title:"授权用户",width:"700px","close-on-click-modal":!1},{default:x(()=>[z(h(D))]),_:1},8,["modelValue"])],64)}}}),$e=Ve(Be,[["__scopeId","data-v-35437ed6"]]);export{$e as default}; diff --git a/web/dist/assets/RoleDrawer.DWSu5Noa.css b/web/dist/assets/RoleDrawer.DWSu5Noa.css new file mode 100644 index 0000000000..8e22df9088 --- /dev/null +++ b/web/dist/assets/RoleDrawer.DWSu5Noa.css @@ -0,0 +1 @@ +@charset "UTF-8";.splitpanes{display:flex;width:100%;height:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;-moz-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;box-sizing:border-box;position:relative;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme .splitpanes--dragging{-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}.pane-box[data-v-35437ed6]{width:100vw;height:100vh;max-width:100%;max-height:100%;overflow:auto;padding:10px;background-color:#fff} diff --git a/web/dist/assets/RoleMenuBtn.Bp4G33F9.js b/web/dist/assets/RoleMenuBtn.Bp4G33F9.js new file mode 100644 index 0000000000..1da0ce74f7 --- /dev/null +++ b/web/dist/assets/RoleMenuBtn.Bp4G33F9.js @@ -0,0 +1 @@ +import{w as G,D as m,F as K,O as j,aA as s,x as _,y as d,a2 as H,a7 as o,G as U,z as u,a1 as C,a0 as r,a6 as v,aq as V,$ as x,a8 as R,a4 as b,a5 as Q,ad as W}from"./vue.Cw4Y52yh.js";import{R as Y,a as Z,s as ee,b as ae}from"./api.7fuRR03W.js";import{R as le}from"./RoleMenuBtnStores.jih0HPlG.js";import{R as te}from"./RoleMenuTreeStores.CcYKMfIL.js";import{L as g,X as $,E as T}from"./index.CkCcWuPb.js";import{_ as ne}from"./_plugin-vue_export-helper.DlAUqK2U.js";const oe={key:0,class:"pccm-item"},se={class:"menu-form-alert"},de={style:{display:"flex","align-items":"center","white-space":"nowrap","margin-bottom":"10px"}},ue={class:"btn-item"},re=["onClick"],ie={class:"pc-dialog"},ce=G({__name:"RoleMenuBtn",setup(pe){const w=Y(),I=te(),f=le(),p=m(!1),t=m({id:0,menu_btn_pre_id:0,isCheck:!1,name:"",data_range:g.get("role_default_data_range"),dept:g.get("role_default_custom_dept")}),n=m({id:0,menu_btn_pre_id:0,isCheck:!1,name:"",data_range:0,dept:[]}),h=m([{label:"仅本人数据权限",value:0},{label:"本部门及以下数据权限",value:1},{label:"本部门数据权限",value:2},{label:"全部数据权限",value:3},{label:"自定数据权限",value:4}]),B={children:"children",label:"name",value:"id"},N=async l=>{t.value.data_range=l,g.set("role_default_data_range",l)},P=async l=>{t.value.dept=l,g.set("role_default_custom_dept",l)},A=async l=>{l<4&&(n.value.dept=[])},E=K(()=>function(l,a){const c=$.find(h.value,i=>{if(i.value===l)return i.label});return l===t.value.data_range&&(l!==4||JSON.stringify(a)===JSON.stringify(t.value.dept))?"默认接口权限":c.label}),O=async l=>{n.value=t.value;const a={isCheck:l.isCheck,roleId:w.roleId,menuId:I.id,btnId:l.id,data_range:t.value.data_range,dept:t.value.dept},{data:c,msg:i}=await ae(a);f.updateState(c),T({message:i,type:"success"})},L=async()=>{const{data:l,msg:a}=await ee(n.value);n.value=l,p.value=!1,T({message:a,type:"success"})},D=()=>{p.value=!1},F=async l=>{n.value=l,p.value=!0},k=m([]);return j(async()=>{const l=await Z({role:w.roleId,menu_button:n.value.id}),a=$.toArrayTree(l.data,{parentKey:"parent",strict:!1});k.value=a}),(l,a)=>{const c=s("el-option"),i=s("el-select"),M=s("el-tree-select"),J=s("Setting"),X=s("el-icon"),q=s("el-checkbox"),S=s("el-button"),z=s("el-dialog");return d(),_(v,null,[U(f).$state.length>0?(d(),_("div",oe,[u("div",se,[u("div",de,[a[6]||(a[6]=u("span",null,"默认接口权限:",-1)),o(i,{modelValue:t.value.data_range,"onUpdate:modelValue":a[0]||(a[0]=e=>t.value.data_range=e),onChange:N,placeholder:"请选择",style:{"margin-left":"5px",width:"250px","min-width":"250px"}},{default:r(()=>[(d(!0),_(v,null,V(h.value,e=>(d(),x(c,{key:e.value,label:e.label,value:e.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),C(o(M,{"node-key":"id",modelValue:t.value.dept,"onUpdate:modelValue":a[1]||(a[1]=e=>t.value.dept=e),props:B,data:k.value,onChange:a[2]||(a[2]=e=>P(t.value.dept)),placeholder:"请选择自定义部门",multiple:"","check-strictly":"","render-after-expand":!1,"show-checkbox":"",class:"dialog-tree",style:{"margin-left":"15px",width:"AUTO","min-width":"250px","margin-top":"0"}},null,8,["modelValue","data"]),[[R,t.value.data_range===4]])]),a[7]||(a[7]=u("span",null,"配置操作功能接口权限,配置数据权限点击小齿轮",-1))]),(d(!0),_(v,null,V(U(f).$state,e=>(d(),x(q,{key:e.id,modelValue:e.isCheck,"onUpdate:modelValue":y=>e.isCheck=y,onChange:y=>O(e)},{default:r(()=>[u("div",ue,[b(Q(e.data_range!==null?`${e.name}(${E.value(e.data_range,e.dept)})`:e.name)+" ",1),C(u("span",{onClick:W(y=>F(e),["stop","prevent"])},[o(X,null,{default:r(()=>[o(J)]),_:1})],8,re),[[R,e.isCheck]])])]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"]))),128))])):H("",!0),o(z,{modelValue:p.value,"onUpdate:modelValue":a[5]||(a[5]=e=>p.value=e),title:"数据权限配置",width:"400px","close-on-click-modal":!1,"before-close":D},{footer:r(()=>[u("div",null,[o(S,{type:"primary",onClick:L},{default:r(()=>a[8]||(a[8]=[b(" 确定")])),_:1}),o(S,{onClick:D},{default:r(()=>a[9]||(a[9]=[b(" 取消")])),_:1})])]),default:r(()=>[u("div",ie,[o(i,{modelValue:n.value.data_range,"onUpdate:modelValue":a[3]||(a[3]=e=>n.value.data_range=e),onChange:A,placeholder:"请选择"},{default:r(()=>[(d(!0),_(v,null,V(h.value,e=>(d(),x(c,{key:e.value,label:e.label,value:e.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),C(o(M,{"node-key":"id",modelValue:n.value.dept,"onUpdate:modelValue":a[4]||(a[4]=e=>n.value.dept=e),props:B,data:k.value,multiple:"","check-strictly":"","render-after-expand":!1,"show-checkbox":"",class:"dialog-tree"},null,8,["modelValue","data"]),[[R,n.value.data_range===4]])])]),_:1},8,["modelValue"])],64)}}}),ke=ne(ce,[["__scopeId","data-v-e4db1c3e"]]);export{ke as default}; diff --git a/web/dist/assets/RoleMenuBtn.DUIvX6wu.css b/web/dist/assets/RoleMenuBtn.DUIvX6wu.css new file mode 100644 index 0000000000..2678ed67e1 --- /dev/null +++ b/web/dist/assets/RoleMenuBtn.DUIvX6wu.css @@ -0,0 +1 @@ +@charset "UTF-8";.pccm-item[data-v-e4db1c3e]{margin-bottom:10px}.pccm-item .menu-form-alert[data-v-e4db1c3e]{color:#fff;line-height:24px;padding:8px 16px;margin-bottom:20px;border-radius:4px;background-color:var(--el-color-primary)}.el-checkbox[data-v-e4db1c3e]{width:20%}.btn-item[data-v-e4db1c3e]{display:flex;align-items:center;justify-content:center}.btn-item .el-icon[data-v-e4db1c3e]{margin-left:5px}.dialog-tree[data-v-e4db1c3e]{width:100%;margin-top:20px} diff --git a/web/dist/assets/RoleMenuBtnStores.jih0HPlG.js b/web/dist/assets/RoleMenuBtnStores.jih0HPlG.js new file mode 100644 index 0000000000..b7b3cb1888 --- /dev/null +++ b/web/dist/assets/RoleMenuBtnStores.jih0HPlG.js @@ -0,0 +1 @@ +import{v as n}from"./vue.Cw4Y52yh.js";const o=n("RoleMenuBtnStores",{state:()=>[],actions:{setState(t){this.$state=t,this.$state.length=t.length},updateState(t){const e=this.$state.findIndex(s=>s.id===t.id);e!==-1&&(this.$state[e]=t)}}});export{o as R}; diff --git a/web/dist/assets/RoleMenuField.uy3HOin6.css b/web/dist/assets/RoleMenuField.uy3HOin6.css new file mode 100644 index 0000000000..5573af0c35 --- /dev/null +++ b/web/dist/assets/RoleMenuField.uy3HOin6.css @@ -0,0 +1 @@ +@charset "UTF-8";.pccm-item[data-v-088391a4]{margin-bottom:10px}.pccm-item .menu-form-alert[data-v-088391a4]{color:#fff;line-height:24px;padding:8px 16px;margin-bottom:20px;border-radius:4px;background-color:var(--el-color-primary)}.pccm-item .menu-form-btn[data-v-088391a4]{margin-left:10px;height:40px;padding:8px 16px;margin-bottom:20px}.pccm-item .btn-item[data-v-088391a4]{display:flex;align-items:center}.pccm-item .btn-item span[data-v-088391a4]{margin-left:5px}.pccm-item .columns-list .width-txt[data-v-088391a4]{width:200px}.pccm-item .columns-list .width-check[data-v-088391a4]{width:100px}.pccm-item .columns-list .width-icon[data-v-088391a4]{cursor:pointer}.pccm-item .columns-list .columns-head[data-v-088391a4]{display:flex;align-items:center;padding:6px 0;border-bottom:1px solid #ebeef5;box-sizing:border-box}.pccm-item .columns-list .columns-head span[data-v-088391a4]{font-weight:900}.pccm-item .columns-list .columns-content[data-v-088391a4]{max-height:calc(100vh - 240px);overflow-y:auto}.pccm-item .columns-list .columns-content .columns-item[data-v-088391a4]{display:flex;align-items:center;padding:6px 0;box-sizing:border-box}.pccm-item .columns-list .columns-content .columns-item .ci-checkout[data-v-088391a4]{height:auto!important} diff --git a/web/dist/assets/RoleMenuField.yC8sUp8w.js b/web/dist/assets/RoleMenuField.yC8sUp8w.js new file mode 100644 index 0000000000..674a1b41eb --- /dev/null +++ b/web/dist/assets/RoleMenuField.yC8sUp8w.js @@ -0,0 +1 @@ +import{R as F,c as b}from"./api.7fuRR03W.js";import{R as M,a as y}from"./RoleMenuFieldStores.DOA5KVAo.js";import{E as $}from"./index.CkCcWuPb.js";import{w as S,aA as f,x as a,a2 as N,G as c,y as l,z as t,a7 as m,a4 as k,a0 as v,a6 as p,aq as _,a5 as V}from"./vue.Cw4Y52yh.js";import{_ as U}from"./_plugin-vue_export-helper.DlAUqK2U.js";const B={key:0,class:"pccm-item"},D={class:"menu-form-alert"},E={class:"columns-list"},z={class:"columns-head"},H={class:"columns-content"},I={class:"width-txt"},q=S({__name:"RoleMenuField",setup(A){const d=M(),h=y(),R=F(),x=(r,s,u)=>{for(const n of d.$state)n[s]=n[u]?n[s]:r},g=async()=>{const r=await b(R.$state.roleId,d.$state);$({message:r.msg,type:"success"})};return(r,s)=>{const u=f("el-button"),n=f("el-checkbox");return c(d).$state.length>0?(l(),a("div",B,[t("div",D,[m(u,{size:"small",onClick:g},{default:v(()=>s[0]||(s[0]=[k("保存 ")])),_:1}),s[1]||(s[1]=k(" 配置数据列字段权限 "))]),t("ul",E,[t("li",z,[s[2]||(s[2]=t("div",{class:"width-txt"},[t("span",null,"字段")],-1)),(l(!0),a(p,null,_(c(h).$state,(e,i)=>(l(),a("div",{key:i,class:"width-check"},[m(n,{modelValue:e.checked,"onUpdate:modelValue":o=>e.checked=o,onChange:o=>x(o,e.value,e.disabled)},{default:v(()=>[t("span",null,V(e.label),1)]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])]))),128))]),t("div",H,[(l(!0),a(p,null,_(c(d).$state,(e,i)=>(l(),a("li",{key:i,class:"columns-item"},[t("div",I,V(e.title),1),(l(!0),a(p,null,_(c(h).$state,(o,w)=>(l(),a("div",{key:w,class:"width-check"},[m(n,{modelValue:e[o.value],"onUpdate:modelValue":C=>e[o.value]=C,class:"ci-checkout",disabled:e[o.disabled]},null,8,["modelValue","onUpdate:modelValue","disabled"])]))),128))]))),128))])])])):N("",!0)}}}),O=U(q,[["__scopeId","data-v-088391a4"]]);export{O as default}; diff --git a/web/dist/assets/RoleMenuFieldStores.DOA5KVAo.js b/web/dist/assets/RoleMenuFieldStores.DOA5KVAo.js new file mode 100644 index 0000000000..635880069b --- /dev/null +++ b/web/dist/assets/RoleMenuFieldStores.DOA5KVAo.js @@ -0,0 +1 @@ +import{v as a}from"./vue.Cw4Y52yh.js";const l=a("RoleMenuFieldStores",{state:()=>[],actions:{setState(e){this.$state=e,this.$state.length=e.length}}}),t=a("RoleMenuFieldHeaderStores",{state:()=>[{value:"is_create",label:"新增可见",disabled:"disabled_create",checked:!1},{value:"is_update",label:"编辑可见",disabled:"disabled_update",checked:!1},{value:"is_query",label:"列表可见",disabled:"disabled_query",checked:!1}]});export{l as R,t as a}; diff --git a/web/dist/assets/RoleMenuTree.C_dfgRWh.js b/web/dist/assets/RoleMenuTree.C_dfgRWh.js new file mode 100644 index 0000000000..7b1ad0a5a1 --- /dev/null +++ b/web/dist/assets/RoleMenuTree.C_dfgRWh.js @@ -0,0 +1 @@ +import{R as h,d as p,e as R,f as M}from"./api.7fuRR03W.js";import{R as k}from"./RoleMenuTreeStores.CcYKMfIL.js";import{R as _}from"./RoleMenuBtnStores.jih0HPlG.js";import{R as g,a as y}from"./RoleMenuFieldStores.DOA5KVAo.js";import{X as C,E as S}from"./index.CkCcWuPb.js";import{w as I,D as c,O as v,aA as w,$ as T,y as B}from"./vue.Cw4Y52yh.js";const X=I({__name:"RoleMenuTree",setup(D){const o=h(),d=k(),s=_(),l=g(),u=y(),a=c([]),r=c([]),i={children:"children",label:"name",value:"id"},m=(e,t)=>{R({roleId:o.roleId,menuId:e.id,isCheck:t}).then(n=>{S({message:n.msg,type:"success"})})},f=async e=>{if(e.is_catalog)s.setState([]),l.setState([]);else{d.setRoleMenuTree(e);const{data:t}=await M({roleId:o.roleId,menuId:e.id});s.setState(t.menu_btn),l.setState(t.menu_field)}u.$reset()};return v(async()=>{a.value=await p({roleId:o.roleId}),r.value=C.toTreeArray(a.value).filter(e=>e.isCheck).map(e=>e.id)}),(e,t)=>{const n=w("el-tree");return B(),T(n,{ref:"treeRef",data:a.value,props:i,"default-checked-keys":r.value,onCheckChange:m,onNodeClick:f,"node-key":"id","check-strictly":"","highlight-current":"","show-checkbox":"","default-expand-all":""},null,8,["data","default-checked-keys"])}}});export{X as default}; diff --git a/web/dist/assets/RoleMenuTreeStores.CcYKMfIL.js b/web/dist/assets/RoleMenuTreeStores.CcYKMfIL.js new file mode 100644 index 0000000000..8dff6661ed --- /dev/null +++ b/web/dist/assets/RoleMenuTreeStores.CcYKMfIL.js @@ -0,0 +1 @@ +import{v as t}from"./vue.Cw4Y52yh.js";const o=t("RoleMenuTreeStores",{state:()=>({id:0,parent:0,name:"",isCheck:!1,is_catalog:!1}),actions:{setRoleMenuTree(e){this.$state=e}}});export{o as R}; diff --git a/web/dist/assets/RoleUserStores.B3zDIJVl.js b/web/dist/assets/RoleUserStores.B3zDIJVl.js new file mode 100644 index 0000000000..cf5e405859 --- /dev/null +++ b/web/dist/assets/RoleUserStores.B3zDIJVl.js @@ -0,0 +1 @@ +import{v as r}from"./vue.Cw4Y52yh.js";const i=r("RoleUserStores",{state:()=>({drawerVisible:!1,role_id:void 0,role_name:void 0}),actions:{handleDrawerOpen(e){this.drawerVisible=!0,this.role_name=e.name,this.role_id=e.id},handleDrawerClose(){this.drawerVisible=!1}}});export{i as R}; diff --git a/web/dist/assets/RoleUsers.BQsqUzR_.js b/web/dist/assets/RoleUsers.BQsqUzR_.js new file mode 100644 index 0000000000..887361d0bf --- /dev/null +++ b/web/dist/assets/RoleUsers.BQsqUzR_.js @@ -0,0 +1 @@ +import{R as m,h as p}from"./api.7fuRR03W.js";import{R as u}from"./RoleUsersStores.Co01fjT9.js";import{E as _}from"./index.CkCcWuPb.js";import{w as d,aA as c,$ as f,y as i,G as o}from"./vue.Cw4Y52yh.js";const C=d({__name:"RoleUsers",setup(R){const r=m(),t=u(),l=(n,e,a)=>{p(r.$state.roleId,{direction:e,movedKeys:a}).then(s=>{r.set_state(s.data),_({message:s.msg,type:"success"})})};return(n,e)=>{const a=c("el-transfer");return i(),f(a,{modelValue:o(t).$state.right_users,"onUpdate:modelValue":e[0]||(e[0]=s=>o(t).$state.right_users=s),filterable:"",titles:["未授权用户","已授权用户"],data:o(t).$state.all_users,props:{key:"id",label:"name"},onChange:l},null,8,["modelValue","data"])}}});export{C as default}; diff --git a/web/dist/assets/RoleUsersStores.Co01fjT9.js b/web/dist/assets/RoleUsersStores.Co01fjT9.js new file mode 100644 index 0000000000..cbce89761d --- /dev/null +++ b/web/dist/assets/RoleUsersStores.Co01fjT9.js @@ -0,0 +1 @@ +import{v as e}from"./vue.Cw4Y52yh.js";import{g as r}from"./api.7fuRR03W.js";import{X as o}from"./index.CkCcWuPb.js";const _=e("RoleUsersStores",{state:()=>({all_users:[],right_users:[]}),actions:{get_all_users(){r().then(s=>{this.$state.all_users=s})},set_right_users(s){this.$state.right_users=o.map(s,t=>t.id)}}});export{_ as R}; diff --git a/web/dist/assets/_plugin-vue_export-helper.DlAUqK2U.js b/web/dist/assets/_plugin-vue_export-helper.DlAUqK2U.js new file mode 100644 index 0000000000..718edd3390 --- /dev/null +++ b/web/dist/assets/_plugin-vue_export-helper.DlAUqK2U.js @@ -0,0 +1 @@ +const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _}; diff --git a/web/dist/assets/account.CY4fFktS.css b/web/dist/assets/account.CY4fFktS.css new file mode 100644 index 0000000000..554d3ea2ed --- /dev/null +++ b/web/dist/assets/account.CY4fFktS.css @@ -0,0 +1 @@ +.login-content-form[data-v-c978d4da]{margin-top:20px}.login-content-form .login-animation1[data-v-c978d4da]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.1s}.login-content-form .login-animation2[data-v-c978d4da]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.2s}.login-content-form .login-animation3[data-v-c978d4da]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.3s}.login-content-form .login-animation4[data-v-c978d4da]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.4s}.login-content-form .login-content-password[data-v-c978d4da]{display:inline-block;width:20px;cursor:pointer}.login-content-form .login-content-password[data-v-c978d4da]:hover{color:#909399}.login-content-form .login-content-captcha[data-v-c978d4da]{width:100%;padding:0;font-weight:700;letter-spacing:5px}.login-content-form .login-content-submit[data-v-c978d4da]{width:100%;letter-spacing:2px;font-weight:800;margin-top:15px} diff --git a/web/dist/assets/account.Ck0WfhoZ.js b/web/dist/assets/account.Ck0WfhoZ.js new file mode 100644 index 0000000000..ca6b1a5b56 --- /dev/null +++ b/web/dist/assets/account.Ck0WfhoZ.js @@ -0,0 +1 @@ +import{w as E,aR as R,aQ as K,aU as N,af as $,D as M,F as V,O,ax as z,aA as t,x as P,y as k,a7 as a,a2 as U,a0 as o,$ as j,z as F,Y as L,a5 as J,ao as Q,a6 as Y}from"./vue.Cw4Y52yh.js";import{v as G,u as H,c as q,d as T,f as W,R as X,S as Z,T as x,U as ee,A as ae,F as oe,E as se,N as ne}from"./index.CkCcWuPb.js";import{a as te}from"./formatTime.in1fXasu.js";import{g as A,l as le}from"./api.jJ3Ot51X.js";import{M as re}from"./md5.DLPczxzP.js";import{_ as ce}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ie=E({name:"loginAccount",setup(){const{t:e}=G.useI18n(),s=H(),{themeConfig:S}=R(s),{userInfos:B}=R(q()),p=K(),_=N(),n=$({isShowPassword:!1,ruleForm:{username:"",password:"",captcha:"",captchaKey:"",captchaImgBase:""},loading:{signIn:!1}}),m=$({username:[{required:!0,message:"请填写账号",trigger:"blur"}],password:[{required:!0,message:"请填写密码",trigger:"blur"}],captcha:[{required:!0,message:"请填写验证码",trigger:"blur"}]}),r=M(),i=V(()=>te(new Date)),w=V(()=>T().systemConfig["base.captcha_state"]),C=async()=>{A().then(l=>{n.ruleForm.captchaImgBase=l.data.image_base,n.ruleForm.captchaKey=l.data.key})},d=async()=>{window.open(W("/api/system/apply_for_trial/"))},y=async()=>{n.ruleForm.captcha="",A().then(l=>{n.ruleForm.captchaImgBase=l.data.image_base,n.ruleForm.captchaKey=l.data.key})},g=async()=>{r.value&&await r.value.validate(l=>{l?le({...n.ruleForm,password:re.hashStr(n.ruleForm.password)}).then(u=>{if(u.code===2e3){const{data:h}=u;if(X.set("username",u.data.username),Z.set("token",u.data.access),q().setPwdChangeCount(h.pwd_change_count),h.pwd_change_count==0)return _.push("/login");S.value.isRequestRoutes?(ee(),f()):(x(),f())}}).catch(u=>{y()}):ae("请填写登录信息")})},f=()=>{var h,I,b,v;oe().getSystemDictionarys();let l=i.value;if(B.value.pwd_change_count>0){(h=p.query)!=null&&h.redirect?_.push({path:(I=p.query)==null?void 0:I.redirect,query:Object.keys((b=p.query)==null?void 0:b.params).length>0?JSON.parse((v=p.query)==null?void 0:v.params):""}):_.push("/"),n.loading.signIn=!0;const D=e("message.signInText");se.success(`${l},${D}`)}ne.start()};return O(()=>{C(),T().getSystemConfigs()}),{refreshCaptcha:y,loginClick:g,loginSuccess:f,isShowCaptcha:w,state:n,formRef:r,rules:m,applyBtnClick:d,showApply:()=>window.location.href.indexOf("public")!=-1,...z(n)}}}),ue={key:0,style:{"text-align":"center"}};function pe(e,s,S,B,p,_){const n=t("ele-User"),m=t("el-icon"),r=t("el-input"),i=t("el-form-item"),w=t("ele-Unlock"),C=t("ele-Position"),d=t("el-col"),y=t("el-image"),g=t("el-button"),f=t("el-form");return k(),P(Y,null,[a(f,{ref:"formRef",size:"large",class:"login-content-form",model:e.state.ruleForm,rules:e.rules,onKeyup:Q(e.loginClick,["enter"])},{default:o(()=>[a(i,{class:"login-animation1",prop:"username"},{default:o(()=>[a(r,{type:"text",placeholder:e.$t("message.account.accountPlaceholder1"),modelValue:e.ruleForm.username,"onUpdate:modelValue":s[0]||(s[0]=c=>e.ruleForm.username=c),clearable:"",autocomplete:"off"},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(n)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),a(i,{class:"login-animation2",prop:"password"},{default:o(()=>[a(r,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder2"),modelValue:e.ruleForm.password,"onUpdate:modelValue":s[2]||(s[2]=c=>e.ruleForm.password=c)},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(w)]),_:1})]),suffix:o(()=>[F("i",{class:L(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:s[1]||(s[1]=c=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),e.isShowCaptcha?(k(),j(i,{key:0,class:"login-animation3",prop:"captcha"},{default:o(()=>[a(d,{span:15},{default:o(()=>[a(r,{type:"text",maxlength:"4",placeholder:e.$t("message.account.accountPlaceholder3"),modelValue:e.ruleForm.captcha,"onUpdate:modelValue":s[3]||(s[3]=c=>e.ruleForm.captcha=c),clearable:"",autocomplete:"off"},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(C)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),a(d,{span:1}),a(d,{span:8},{default:o(()=>[a(g,{class:"login-content-captcha"},{default:o(()=>[a(y,{src:e.ruleForm.captchaImgBase,onClick:e.refreshCaptcha},null,8,["src","onClick"])]),_:1})]),_:1})]),_:1})):U("",!0),a(i,{class:"login-animation4"},{default:o(()=>[a(g,{type:"primary",class:"login-content-submit",round:"",onClick:e.loginClick,loading:e.loading.signIn},{default:o(()=>[F("span",null,J(e.$t("message.account.accountBtnText")),1)]),_:1},8,["onClick","loading"])]),_:1})]),_:1},8,["model","rules","onKeyup"]),e.showApply()?(k(),P("div",ue,[a(g,{class:"login-content-apply",link:"",type:"primary",plain:"",round:"",onClick:e.applyBtnClick},{default:o(()=>s[4]||(s[4]=[F("span",null,"申请试用",-1)])),_:1},8,["onClick"])])):U("",!0)],64)}const ye=ce(ie,[["render",pe],["__scopeId","data-v-c978d4da"]]);export{ye as default}; diff --git a/web/dist/assets/addContent.DqE5gM-b.js b/web/dist/assets/addContent.DqE5gM-b.js new file mode 100644 index 0000000000..9383a471fc --- /dev/null +++ b/web/dist/assets/addContent.DqE5gM-b.js @@ -0,0 +1 @@ +import{_ as o}from"./addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js";import"./api.Dw2kt7dJ.js";import"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";import"./associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js";import"./dictionary.CH8ZDdyo.js";export{o as default}; diff --git a/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js b/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js new file mode 100644 index 0000000000..d918a2f1bb --- /dev/null +++ b/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js @@ -0,0 +1 @@ +import{G as j,A as B}from"./api.Dw2kt7dJ.js";import{_ as G}from"./associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js";import{s as N}from"./index.CkCcWuPb.js";import{d as M}from"./dictionary.CH8ZDdyo.js";import{w as P,af as U,D as V,C as S,O as z,aA as m,x as f,y as u,a7 as o,a0 as r,$ as y,a2 as x,G as t,a6 as c,aq as g,a4 as D}from"./vue.Cw4Y52yh.js";const F={style:{padding:"20px"}},Z={key:1},W=P({__name:"addContent",setup(E){let a=U({parent:null,title:null,key:null,form_item_type:"",rule:null,placeholder:null});const k=V(),_=V(),q=U({parent:[{required:!0,message:"请选择"}],title:[{required:!0,message:"请输入"}],key:[{required:!0,message:"请输入"},{pattern:/^[A-Za-z0-9_]+$/,message:"请输入数字、字母或下划线"}],form_item_type:[{required:!0,message:"请输入"}]});let v=V([]),w=V([{label:"必填项",value:'{"required": true, "message": "必填项不能为空"}'},{label:"邮箱",value:'{ "type": "email", "message": "请输入正确的邮箱地址"}'},{label:"URL地址",value:'{ "type": "url", "message": "请输入正确的URL地址"}'}]);const C=()=>{j({parent__isnull:!0,limit:999}).then(s=>{v.value=s.data})},O=S("refreshView"),R=async s=>{s&&await s.validate((l,d)=>{l?B(a).then(i=>{i.code==2e3&&(N("新增成功"),O())}):console.log("error submit!",d)})},A=()=>new Promise(function(s,l){if(_){if(!_.onSubmit())return l(!1);const{formObj:d}=_;return a.setting=d,s(!0)}else return s(!0)});return z(()=>{C()}),(s,l)=>{const d=m("el-option"),i=m("el-select"),n=m("el-form-item"),b=m("el-input"),L=m("el-input-number"),T=m("el-button"),$=m("el-form");return u(),f("div",F,[o($,{ref_key:"formRef",ref:k,model:t(a),rules:q,"label-width":"80px"},{default:r(()=>[o(n,{label:"所属分组",prop:"parent"},{default:r(()=>[o(i,{modelValue:t(a).parent,"onUpdate:modelValue":l[0]||(l[0]=e=>t(a).parent=e),placeholder:"请选择分组",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(v),(e,p)=>(u(),y(d,{label:e.title,value:e.id,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"标题",prop:"title"},{default:r(()=>[o(b,{modelValue:t(a).title,"onUpdate:modelValue":l[1]||(l[1]=e=>t(a).title=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"key值",prop:"key"},{default:r(()=>[o(b,{modelValue:t(a).key,"onUpdate:modelValue":l[2]||(l[2]=e=>t(a).key=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"表单类型",prop:"form_item_type"},{default:r(()=>[o(i,{modelValue:t(a).form_item_type,"onUpdate:modelValue":l[3]||(l[3]=e=>t(a).form_item_type=e),placeholder:"请选择",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(M)("config_form_type"),(e,p)=>(u(),y(d,{label:e.label,value:e.value,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),[4,5,6].indexOf(t(a).form_item_type)>-1?(u(),y(n,{key:0,label:"字典key",prop:"setting",rules:[{required:!0,message:"不能为空"}]},{default:r(()=>[o(b,{modelValue:t(a).setting,"onUpdate:modelValue":l[4]||(l[4]=e=>t(a).setting=e),placeholder:"请输入dictionary中key值",clearable:""},null,8,["modelValue"])]),_:1})):x("",!0),[13,14].indexOf(t(a).form_item_type)>-1?(u(),f("div",Z,[o(G,{ref_key:"associationTableRef",ref:_,modelValue:t(a).setting,"onUpdate:modelValue":l[5]||(l[5]=e=>t(a).setting=e),onUpdateVal:A},null,8,["modelValue"])])):x("",!0),o(n,{label:"校验规则"},{default:r(()=>[o(i,{modelValue:t(a).rule,"onUpdate:modelValue":l[6]||(l[6]=e=>t(a).rule=e),multiple:"",placeholder:"请选择(可多选)",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(w),(e,p)=>(u(),y(d,{label:e.label,value:e.value,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"提示信息",prop:"placeholder"},{default:r(()=>[o(b,{modelValue:t(a).placeholder,"onUpdate:modelValue":l[7]||(l[7]=e=>t(a).placeholder=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"排序",prop:"sort"},{default:r(()=>[o(L,{modelValue:t(a).sort,"onUpdate:modelValue":l[8]||(l[8]=e=>t(a).sort=e),min:0,max:99},null,8,["modelValue"])]),_:1}),o(n,null,{default:r(()=>[o(T,{type:"primary",onClick:l[9]||(l[9]=e=>R(k.value))},{default:r(()=>l[10]||(l[10]=[D("立即创建")])),_:1})]),_:1})]),_:1},8,["model","rules"])])}}});export{W as _}; diff --git a/web/dist/assets/addTabs.BpUOg-6O.js b/web/dist/assets/addTabs.BpUOg-6O.js new file mode 100644 index 0000000000..42befbe22f --- /dev/null +++ b/web/dist/assets/addTabs.BpUOg-6O.js @@ -0,0 +1 @@ +import{_ as o}from"./addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js";import"./api.Dw2kt7dJ.js";import"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";export{o as default}; diff --git a/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js b/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js new file mode 100644 index 0000000000..a358f3f0f1 --- /dev/null +++ b/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js @@ -0,0 +1 @@ +import{A as V}from"./api.Dw2kt7dJ.js";import{s as b}from"./index.CkCcWuPb.js";import{w as x,af as f,D as g,C as v,aA as m,x as w,y as C,a7 as t,a0 as o,G as s,a4 as p}from"./vue.Cw4Y52yh.js";const A={style:{padding:"20px"}},R=x({__name:"addTabs",setup(j){let l=f({title:null,key:null});const i=g(),_=f({title:[{required:!0,message:"请输入"}],key:[{required:!0,message:"请输入"},{pattern:/^[A-Za-z0-9]+$/,message:"只能是英文和数字"}]}),y=v("refreshView"),c=async u=>{u&&await u.validate((e,a)=>{e?V(l).then(n=>{n.code==2e3&&(b("新增成功"),y())}):console.log("error submit!",a)})};return(u,e)=>{const a=m("el-input"),n=m("el-form-item"),d=m("el-button"),k=m("el-form");return C(),w("div",A,[t(k,{ref_key:"formRef",ref:i,model:s(l),rules:_,"label-width":"80px"},{default:o(()=>[t(n,{label:"标题",prop:"title"},{default:o(()=>[t(a,{modelValue:s(l).title,"onUpdate:modelValue":e[0]||(e[0]=r=>s(l).title=r)},null,8,["modelValue"])]),_:1}),t(n,{label:"key值",prop:"key"},{default:o(()=>[t(a,{modelValue:s(l).key,"onUpdate:modelValue":e[1]||(e[1]=r=>s(l).key=r)},null,8,["modelValue"])]),_:1}),t(n,null,{default:o(()=>[t(d,{type:"primary",onClick:e[2]||(e[2]=r=>c(i.value))},{default:o(()=>e[3]||(e[3]=[p("立即创建")])),_:1}),t(d,null,{default:o(()=>e[4]||(e[4]=[p("取消")])),_:1})]),_:1})]),_:1},8,["model","rules"])])}}});export{R as _}; diff --git a/web/dist/assets/api.7fuRR03W.js b/web/dist/assets/api.7fuRR03W.js new file mode 100644 index 0000000000..d4520606c7 --- /dev/null +++ b/web/dist/assets/api.7fuRR03W.js @@ -0,0 +1 @@ +import{v as o}from"./vue.Cw4Y52yh.js";import{r as t,X as n}from"./index.CkCcWuPb.js";const s={drawerVisible:!1,roleId:void 0,roleName:void 0,users:[]},i=o("RoleDrawerStores",{state:()=>({...s}),actions:{handleDrawerOpen(e){this.drawerVisible=!0,this.set_state(e)},set_state(e){this.roleName=e.name,this.roleId=e.id,this.users=e.users},handleDrawerClose(){Object.assign(this.$state,s)}}});function l(e){return t({url:"/api/system/role_menu_button_permission/get_role_menu/",method:"get",params:e}).then(r=>n.toArrayTree(r.data,{key:"id",parentKey:"parent",children:"children",strict:!1}))}function m(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu/",method:"put",data:e})}function _(e){return t({url:"/api/system/role_menu_button_permission/get_role_menu_btn_field/",method:"get",params:e})}function p(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu_btn/",method:"put",data:e})}function d(e,r){return t({url:`/api/system/role_menu_button_permission/${e}/set_role_menu_field/`,method:"put",data:r})}function h(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu_btn_data_range/",method:"put",data:e})}function c(e){return t({url:"/api/system/role_menu_button_permission/role_to_dept_all/",method:"get",params:e})}function f(){return t({url:"/api/system/user/",method:"get",params:{limit:999}}).then(e=>n.map(e.data,r=>({id:r.id,name:r.name})))}function b(e,r){return t({url:`/api/system/role/${e}/set_role_users/`,method:"put",data:r})}export{i as R,c as a,p as b,d as c,l as d,m as e,_ as f,f as g,b as h,h as s}; diff --git a/web/dist/assets/api.C_BUo8_Z.js b/web/dist/assets/api.C_BUo8_Z.js new file mode 100644 index 0000000000..81bc1af98b --- /dev/null +++ b/web/dist/assets/api.C_BUo8_Z.js @@ -0,0 +1 @@ +import{r as e}from"./index.CkCcWuPb.js";const r="/api/system/dept/";function a(t){return e({url:r,method:"get",params:t})}function n(t){return e({url:r,method:"post",data:t})}function u(t){return e({url:r+t.id+"/",method:"put",data:t})}function d(t){return e({url:r+t+"/",method:"delete"})}function s(t){return e({url:r,method:"get",params:t})}function p(t){return e({url:r+"move_up/",method:"post",data:t})}function m(t){return e({url:r+"move_down/",method:"post",data:t})}export{n as A,d as D,a as G,u as U,m as a,p as d,s as l}; diff --git a/web/dist/assets/api.CqMNLOVM.js b/web/dist/assets/api.CqMNLOVM.js new file mode 100644 index 0000000000..4c17b2dbc4 --- /dev/null +++ b/web/dist/assets/api.CqMNLOVM.js @@ -0,0 +1 @@ +import{r as e}from"./index.CkCcWuPb.js";const r="/api/system/menu/";function u(t){return e({url:r,method:"get",params:t})}function o(t){return e({url:r,method:"post",data:t})}function a(t){return e({url:r+t.id+"/",method:"put",data:t})}function d(t){return e({url:r+t+"/",method:"delete"})}function m(t){return e({url:r,method:"get",params:t})}function s(t){return e({url:r+"move_up/",method:"post",data:t})}function i(t){return e({url:r+"move_down/",method:"post",data:t})}export{o as A,d as D,u as G,a as U,i as a,m as l,s as m}; diff --git a/web/dist/assets/api.DcIfMooN.js b/web/dist/assets/api.DcIfMooN.js new file mode 100644 index 0000000000..25fb6865b6 --- /dev/null +++ b/web/dist/assets/api.DcIfMooN.js @@ -0,0 +1 @@ +import{r as u}from"./index.CkCcWuPb.js";function e(t){return u({url:"/api/system/column/",method:"get",params:t})}function o(t){return u({url:"/api/system/column/auto_match_fields/",method:"post",data:t})}function s(t){return u({url:"/api/system/column/",method:"post",data:t})}function m(t){return u({url:`/api/system/column/${t}/`,method:"delete"})}function n(t){return u({url:`/api/system/column/${t.id}/`,method:"put",data:t})}export{o as a,s as b,m as d,e as g,n as u}; diff --git a/web/dist/assets/api.Dw2kt7dJ.js b/web/dist/assets/api.Dw2kt7dJ.js new file mode 100644 index 0000000000..c646c7a985 --- /dev/null +++ b/web/dist/assets/api.Dw2kt7dJ.js @@ -0,0 +1 @@ +import{r as e}from"./index.CkCcWuPb.js";const r="/api/system/system_config/";function a(t){return e({url:r,method:"get",params:t})}function s(t){return e({url:r,method:"post",data:t})}function u(t){return e({url:r+t.id+"/",method:"put",data:t})}function o(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}function d(t){return e({url:r+"save_content/",method:"put",data:t})}export{s as A,o as D,a as G,u as U,d as s}; diff --git a/web/dist/assets/api.jJ3Ot51X.js b/web/dist/assets/api.jJ3Ot51X.js new file mode 100644 index 0000000000..22729afc22 --- /dev/null +++ b/web/dist/assets/api.jJ3Ot51X.js @@ -0,0 +1 @@ +import{r as a}from"./index.CkCcWuPb.js";function r(){return a({url:"/api/captcha/",method:"get"})}function e(t){return a({url:"/api/login/",method:"post",data:t})}function n(t){return a({url:"/api/system/user/login_change_password/",method:"post",data:t})}export{n as a,r as g,e as l}; diff --git a/web/dist/assets/aside.CcbNtRz7.js b/web/dist/assets/aside.CcbNtRz7.js new file mode 100644 index 0000000000..8e9e7d71ca --- /dev/null +++ b/web/dist/assets/aside.CcbNtRz7.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.BB25-PUl.js","assets/vue.Cw4Y52yh.js","assets/index.CkCcWuPb.js","assets/index.DvQZPXXd.css","assets/logo-mini.Cm36vqeJ.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/index.DayMOj0i.css","assets/vertical.D5BzUQaZ.js"])))=>i.map(i=>d[i]); +import{ae as N,u as O,b as $,e as u,af as q,_ as F}from"./index.CkCcWuPb.js";import{w as I,aQ as z,D as S,aR as p,af as j,F as x,am as G,H as R,aA as w,a1 as Q,a8 as Y,G as y,x as J,y as A,a7 as v,a0 as M,$ as K,a2 as U,aP as T,Y as X}from"./vue.Cw4Y52yh.js";const Z={class:"h100"},ee=I({name:"layoutAside"}),ne=I({...ee,setup(te){const B=z(),E=T(()=>F(()=>import("./index.BB25-PUl.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),V=T(()=>F(()=>import("./vertical.D5BzUQaZ.js"),__vite__mapDeps([7,2,1,3]))),d=S(),f=S(0),_=N(),W=O(),k=$(),{routesList:r}=p(_),{themeConfig:n}=p(W),{isTagsViewCurrenFull:D}=p(k),l=j({menuList:[],clientWidth:0}),P=x(()=>{const{layout:e,isCollapse:t,menuBar:s}=n.value,o=["#FFFFFF","#FFF","#fff","#ffffff"].includes(s)?"layout-el-aside-br-color":"";if(l.clientWidth<=1e3)if(t){document.body.setAttribute("class","el-popup-parent--hidden");const g=document.querySelector(".layout-container"),i=document.createElement("div");return i.setAttribute("class","layout-aside-mobile-mode"),g.appendChild(i),i.addEventListener("click",m),[o,"layout-aside-mobile","layout-aside-mobile-open"]}else return m(),[o,"layout-aside-mobile","layout-aside-mobile-close"];else return e==="columns"?t?[o,"layout-aside-pc-1"]:[o,"layout-aside-pc-220"]:t?[o,"layout-aside-pc-64"]:[o,"layout-aside-pc-220"]}),H=x(()=>{let{layout:e,isShowLogo:t}=n.value;return t&&e==="defaults"||t&&e==="columns"}),m=()=>{const e=document.querySelector(".layout-aside-mobile-mode");e==null||e.setAttribute("style","animation: error-img-two 0.3s"),setTimeout(()=>{var s;(s=e==null?void 0:e.parentNode)==null||s.removeChild(e)},300),document.body.clientWidth<1e3&&(n.value.isCollapse=!1),document.body.setAttribute("class","")},C=(e,t)=>{for(let s=0;s0&&(a.children.findIndex(i=>i.path===t)!==-1||C(a.children,t)!==null))return s}return null},c=(e="")=>{if(n.value.layout==="columns")return!1;let{layout:t,isClassicSplitMenu:s}=n.value;t==="classic"&&s?(f.value=C(r.value,e||B.path)||0,l.menuList=h(r.value[f.value].children||[r.value[f.value]])):l.menuList=h(r.value)},h=e=>e.filter(t=>{var s;return!((s=t.meta)!=null&&s.isHide)}).map(t=>(t=Object.assign({},t),t.children&&(t.children=h(t.children)),t)),b=e=>{l.clientWidth=e},L=e=>{let{layout:t}=n.value;if(t!=="columns")return!1;e||u.emit("restoreDefault"),_.setColumnsMenuHover(e)};return G(()=>{b(document.body.clientWidth),c(),u.on("setSendColumnsChildren",e=>{l.menuList=e.children}),u.on("setSendClassicChildren",e=>{let{layout:t,isClassicSplitMenu:s}=n.value;t==="classic"&&s&&(l.menuList=[],c(e.path))}),u.on("getBreadcrumbIndexSetFilterRoutes",()=>{c()}),u.on("layoutMobileResize",e=>{b(e.clientWidth),m()})}),R(n.value,e=>{e.isShowLogoChange!==e.isShowLogo&&d.value&&d.value.update()}),R(q.state,e=>{let{layout:t,isClassicSplitMenu:s}=e.themeConfig.themeConfig;if(t==="classic"&&s)return!1;c()},{deep:!0}),(e,t)=>{const s=w("el-scrollbar"),a=w("el-aside");return Q((A(),J("div",Z,[v(a,{class:X(["layout-aside",P.value])},{default:M(()=>[H.value?(A(),K(y(E),{key:0})):U("",!0),v(s,{class:"flex-auto",ref_key:"layoutAsideScrollbarRef",ref:d,onMouseenter:t[0]||(t[0]=o=>L(!0)),onMouseleave:t[1]||(t[1]=o=>L(!1))},{default:M(()=>[v(y(V),{menuList:l.menuList},null,8,["menuList"])]),_:1},512)]),_:1},8,["class"])],512)),[[Y,!y(D)]])}}});export{ne as default}; diff --git a/web/dist/assets/associationTable.BfghxRvS.js b/web/dist/assets/associationTable.BfghxRvS.js new file mode 100644 index 0000000000..48d5d24bbc --- /dev/null +++ b/web/dist/assets/associationTable.BfghxRvS.js @@ -0,0 +1 @@ +import{_ as o}from"./associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js";import"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";export{o as default}; diff --git a/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js b/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js new file mode 100644 index 0000000000..fb6cb55ba3 --- /dev/null +++ b/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js @@ -0,0 +1 @@ +import"./index.CkCcWuPb.js";import{w as S,af as q,D as b,aA as m,x as f,y as r,a7 as s,G as l,a0 as a,a6 as y,aq as h,$ as g,z as d,a5 as u}from"./vue.Cw4Y52yh.js";const z={style:{float:"left"}},B={style:{float:"right",color:"#8492a6","font-size":"13px"}},N={style:{float:"left"}},O={style:{float:"right",color:"#8492a6","font-size":"13px"}},U={style:{float:"left"}},w={style:{float:"right",color:"#8492a6","font-size":"13px"}},D={style:{float:"left"}},R={style:{float:"right",color:"#8492a6","font-size":"13px"}},L=S({__name:"associationTable",props:["value"],emits:["updateVal"],setup(j,{emit:A}){let o=q({table:null,primarykey:null,field:null,searchField:null,oldSearchField:null});b("");let k=b([]),i=b([]);const v=b(),x=p=>{const{tableFields:t}=k.find(n=>n.table===p);i=t},F=p=>{const t=i.filter(n=>p.indexOf(n.field)>-1);o.searchField=t};return(p,t)=>{const n=m("el-option"),_=m("el-select"),c=m("el-form-item"),C=m("el-form");return r(),f("div",null,[s(C,{model:l(o),ref_key:"associationRef",ref:v},{default:a(()=>[s(c,{label:"关联表",prop:"table",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).table,"onUpdate:modelValue":t[0]||(t[0]=e=>l(o).table=e),filterable:"",clearable:"",placeholder:"请选择",onChange:x},{default:a(()=>[(r(!0),f(y,null,h(l(k),e=>(r(),g(n,{key:e.table,label:e.tableName,value:e.table},{default:a(()=>[d("span",z,u(e.tableName),1),d("span",B,u(e.table),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"显示字段",prop:"field",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).field,"onUpdate:modelValue":t[1]||(t[1]=e=>l(o).field=e),filterable:"",clearable:"",placeholder:"请选择"},{default:a(()=>[(r(!0),f(y,null,h(l(i),e=>(r(),g(n,{key:e.table,label:e.title,value:e.field},{default:a(()=>[d("span",N,u(e.field),1),d("span",O,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"储存字段",prop:"primarykey",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).primarykey,"onUpdate:modelValue":t[2]||(t[2]=e=>l(o).primarykey=e),filterable:"",clearable:"",placeholder:"请选择"},{default:a(()=>[(r(!0),f(y,null,h(l(i),(e,V)=>(r(),g(n,{key:V,label:e.title,value:e.field},{default:a(()=>[d("span",U,u(e.field),1),d("span",w,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"过滤条件",prop:"oldSearchField",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).oldSearchField,"onUpdate:modelValue":t[3]||(t[3]=e=>l(o).oldSearchField=e),multiple:"",filterable:"",clearable:"",placeholder:"请选择",onChange:F},{default:a(()=>[(r(!0),f(y,null,h(l(i),(e,V)=>(r(),g(n,{key:V,label:e.title,value:e.field},{default:a(()=>[d("span",D,u(e.field),1),d("span",R,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])])}}});export{L as _}; diff --git a/web/dist/assets/authFunction.Br9oRcVU.js b/web/dist/assets/authFunction.Br9oRcVU.js new file mode 100644 index 0000000000..10e1dff678 --- /dev/null +++ b/web/dist/assets/authFunction.Br9oRcVU.js @@ -0,0 +1 @@ +import{H as s}from"./index.CkCcWuPb.js";function a(t){return s().data.some(o=>o===t)}export{a}; diff --git a/web/dist/assets/bakindex.BK2ZxFPm.css b/web/dist/assets/bakindex.BK2ZxFPm.css new file mode 100644 index 0000000000..365cf7b3a4 --- /dev/null +++ b/web/dist/assets/bakindex.BK2ZxFPm.css @@ -0,0 +1 @@ +.home-container[data-v-36645091]{overflow:hidden}.home-container .home-card-one .home-card-item[data-v-36645091],.home-container .home-card-two .home-card-item[data-v-36645091],.home-container .home-card-three .home-card-item[data-v-36645091]{width:100%;height:130px;border-radius:4px;transition:all ease .3s;padding:20px;overflow:hidden;background:var(--el-color-white);color:var(--el-text-color-primary);border:1px solid var(--next-border-color-light)}.home-container .home-card-one .home-card-item[data-v-36645091]:hover,.home-container .home-card-two .home-card-item[data-v-36645091]:hover,.home-container .home-card-three .home-card-item[data-v-36645091]:hover{box-shadow:0 2px 12px var(--next-color-dark-hover);transition:all ease .3s}.home-container .home-card-one .home-card-item-icon[data-v-36645091],.home-container .home-card-two .home-card-item-icon[data-v-36645091],.home-container .home-card-three .home-card-item-icon[data-v-36645091]{width:70px;height:70px;border-radius:100%;flex-shrink:1}.home-container .home-card-one .home-card-item-icon i[data-v-36645091],.home-container .home-card-two .home-card-item-icon i[data-v-36645091],.home-container .home-card-three .home-card-item-icon i[data-v-36645091]{color:var(--el-text-color-placeholder)}.home-container .home-card-one .home-card-item-title[data-v-36645091],.home-container .home-card-two .home-card-item-title[data-v-36645091],.home-container .home-card-three .home-card-item-title[data-v-36645091]{font-size:15px;font-weight:700;height:30px}.home-container .home-card-one .home-one-animation0[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:0s}.home-container .home-card-one .home-one-animation1[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.1s}.home-container .home-card-one .home-one-animation2[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.2s}.home-container .home-card-one .home-one-animation3[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.3s}.home-container .home-card-two .home-card-item[data-v-36645091],.home-container .home-card-three .home-card-item[data-v-36645091]{height:400px;width:100%;overflow:hidden}.home-container .home-card-two .home-card-item .home-monitor[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor[data-v-36645091]{height:100%}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item[data-v-36645091]{width:25%;height:111px;display:flex}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .flex-warp-item-box[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .flex-warp-item-box[data-v-36645091]{margin:auto;text-align:center;color:var(--el-text-color-primary);display:flex;border-radius:5px;background:var(--next-bg-color);cursor:pointer;transition:all .3s ease}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .flex-warp-item-box[data-v-36645091]:hover,.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .flex-warp-item-box[data-v-36645091]:hover{background:var(--el-color-primary-light-9);transition:all .3s ease}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation0[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation0[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:0s}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation1[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation1[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.1s}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation2[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation2[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.2s}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation3[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation3[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.3s}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation4[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation4[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.4s}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation5[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation5[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.5s}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation6[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation6[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.6s}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation7[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation7[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.7s}.home-container .home-card-two .home-card-item .home-monitor .flex-warp-item .home-animation8[data-v-36645091],.home-container .home-card-three .home-card-item .home-monitor .flex-warp-item .home-animation8[data-v-36645091]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.8s} diff --git a/web/dist/assets/bakindex.PZnjOQZJ.js b/web/dist/assets/bakindex.PZnjOQZJ.js new file mode 100644 index 0000000000..7956c64b8b --- /dev/null +++ b/web/dist/assets/bakindex.PZnjOQZJ.js @@ -0,0 +1 @@ +import{i as x,L as u}from"./echarts.8mhZIf8A.js";import{w as H,D as z,aR as M,af as Y,O as K,ag as G,H as W,P as S,ax as V,aA as D,x as g,y as d,a7 as n,a0 as i,a6 as N,aq as P,$ as I,Y as f,z as o,a5 as p,X as y}from"./vue.Cw4Y52yh.js";import{b as X,u as Z}from"./index.CkCcWuPb.js";import{_ as Q}from"./_plugin-vue_export-helper.DlAUqK2U.js";let t={homeChartOne:null,homeChartTwo:null,homeCharThree:null,dispose:[null,"",void 0]};const J=H({name:"home",setup(){const c=z(),m=z(),b=z(),A=X(),T=Z(),{themeConfig:w}=M(T),{isTagsViewCurrenFull:r}=M(A),e=Y({homeOne:[{num1:"125,12",num2:"-12.32",num3:"订单统计信息",num4:"fa fa-meetup",color1:"#FF6462",color2:"--next-color-primary-lighter",color3:"--el-color-primary"},{num1:"653,33",num2:"+42.32",num3:"月度计划信息",num4:"iconfont icon-ditu",color1:"#6690F9",color2:"--next-color-success-lighter",color3:"--el-color-success"},{num1:"125,65",num2:"+17.32",num3:"年度计划信息",num4:"iconfont icon-zaosheng",color1:"#6690F9",color2:"--next-color-warning-lighter",color3:"--el-color-warning"},{num1:"520,43",num2:"-10.01",num3:"访问统计信息",num4:"fa fa-github-alt",color1:"#FF6462",color2:"--next-color-danger-lighter",color3:"--el-color-danger"}],homeThree:[{icon:"iconfont icon-yangan",label:"浅粉红",value:"2.1%OBS/M",iconColor:"#F72B3F"},{icon:"iconfont icon-wendu",label:"深红(猩红)",value:"30℃",iconColor:"#91BFF8"},{icon:"iconfont icon-shidu",label:"淡紫红",value:"57%RH",iconColor:"#88D565"},{icon:"iconfont icon-shidu",label:"弱紫罗兰红",value:"107w",iconColor:"#88D565"},{icon:"iconfont icon-zaosheng",label:"中紫罗兰红",value:"57DB",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"紫罗兰",value:"57PV",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"暗紫罗兰",value:"517Cpd",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"幽灵白",value:"12kg",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"海军蓝",value:"64fm",iconColor:"#FBD4A0"}],myCharts:[],charts:{theme:"",bgColor:"",color:"#303133"}}),s=()=>{t.dispose.some(h=>h===t.homeChartOne)||t.homeChartOne.dispose(),t.homeChartOne=x(c.value,e.charts.theme);const a={backgroundColor:e.charts.bgColor,title:{text:"政策补贴额度",x:"left",textStyle:{fontSize:"15",color:e.charts.color}},grid:{top:70,right:20,bottom:30,left:30},tooltip:{trigger:"axis"},legend:{data:["预购队列","最新成交价"],right:0},xAxis:{data:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]},yAxis:[{type:"value",name:"价格",splitLine:{show:!0,lineStyle:{type:"dashed",color:"#f5f5f5"}}}],series:[{name:"预购队列",type:"line",symbolSize:6,symbol:"circle",smooth:!0,data:[0,41.1,30.4,65.1,53.3,53.3,53.3,41.1,30.4,65.1,53.3,10],lineStyle:{color:"#fe9a8b"},itemStyle:{color:"#fe9a8b",borderColor:"#fe9a8b"},areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"#fe9a8bb3"},{offset:1,color:"#fe9a8b03"}])}},{name:"最新成交价",type:"line",symbolSize:6,symbol:"circle",smooth:!0,data:[0,24.1,7.2,15.5,42.4,42.4,42.4,24.1,7.2,15.5,42.4,0],lineStyle:{color:"#9E87FF"},itemStyle:{color:"#9E87FF",borderColor:"#9E87FF"},areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"#9E87FFb3"},{offset:1,color:"#9E87FF03"}])},emphasis:{itemStyle:{color:{type:"radial",x:.5,y:.5,r:.5,colorStops:[{offset:0,color:"#9E87FF"},{offset:.4,color:"#9E87FF"},{offset:.5,color:"#fff"},{offset:.7,color:"#fff"},{offset:.8,color:"#fff"},{offset:1,color:"#fff"}]},borderColor:"#9E87FF",borderWidth:2}}}]};t.homeChartOne.setOption(a),e.myCharts.push(t.homeChartOne)},l=()=>{t.dispose.some(F=>F===t.homeChartTwo)||t.homeChartTwo.dispose(),t.homeChartTwo=x(m.value,e.charts.theme);for(var a=["房屋及结构物","专用设备","通用设备","文物和陈列品","图书、档案"],h=[34.2,38.87,17.88,9.05,2.05],E=[],v=0;v {c}%"},graphic:{elements:[{type:"image",z:-1,style:{image:w.value.isIsDark?"":"data:image/png;base64,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",width:230,height:230},left:"16.5%",top:"center"}]},legend:{type:"scroll",orient:"vertical",right:"0%",left:"65%",top:"center",itemWidth:14,itemHeight:14,data:a,textStyle:{rich:{name:{fontSize:14,fontWeight:400,width:200,height:35,padding:[0,0,0,60],color:e.charts.color},rate:{fontSize:15,fontWeight:500,height:35,width:40,padding:[0,0,0,30],color:e.charts.color}}}},series:[{type:"pie",radius:["82",w.value.isIsDark?"50":"102"],center:["32%","50%"],itemStyle:{color:function(F){return L[F.dataIndex]}},label:{show:!1},labelLine:{show:!1},data:E}]};t.homeChartTwo.setOption(O),e.myCharts.push(t.homeChartTwo)},B=()=>{t.dispose.some(h=>h===t.homeCharThree)||t.homeCharThree.dispose(),t.homeCharThree=x(b.value,e.charts.theme);const a={backgroundColor:e.charts.bgColor,title:{text:"地热开发利用",x:"left",textStyle:{fontSize:"15",color:e.charts.color}},tooltip:{trigger:"axis"},legend:{data:["供温","回温","压力值(Mpa)"],right:0},grid:{top:70,right:80,bottom:30,left:80},xAxis:[{type:"category",data:["1km","2km","3km","4km","5km","6km"],boundaryGap:!0,axisTick:{show:!1}}],yAxis:[{name:"供回温度(℃)",nameLocation:"middle",nameTextStyle:{padding:[3,4,50,6]},splitLine:{show:!0,lineStyle:{type:"dashed",color:"#f5f5f5"}},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:e.charts.color,formatter:"{value} "}},{name:"压力值(Mpa)",nameLocation:"middle",nameTextStyle:{padding:[50,4,5,6]},splitLine:{show:!1},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:e.charts.color,formatter:"{value} "}}],series:[{name:"供温",type:"line",smooth:!0,showSymbol:!0,symbol:"path://M150 0 L80 175 L250 75 L50 75 L220 175 Z",symbolSize:12,yAxisIndex:0,areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(250,180,101,0.3)"},{offset:1,color:"rgba(250,180,101,0)"}]),shadowColor:"rgba(250,180,101,0.2)",shadowBlur:20},itemStyle:{color:"#FF8000"},data:[{value:1,stationName:"s1"},{value:3,stationName:"s2"},{value:4,stationName:"s3"},{value:9,stationName:"s4"},{value:3,stationName:"s5"},{value:2,stationName:"s6"}]},{name:"回温",type:"line",smooth:!0,showSymbol:!0,symbol:"emptyCircle",symbolSize:12,yAxisIndex:0,areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(199, 237, 250,0.5)"},{offset:1,color:"rgba(199, 237, 250,0.2)"}],!1)},itemStyle:{color:"#3bbc86"},data:[{value:31,stationName:"s1"},{value:36,stationName:"s2"},{value:54,stationName:"s3"},{value:24,stationName:"s4"},{value:73,stationName:"s5"},{value:22,stationName:"s6"}]},{name:"压力值(Mpa)",type:"bar",barWidth:30,yAxisIndex:1,itemStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(108,80,243,0.3)"},{offset:1,color:"rgba(108,80,243,0)"}]),borderRadius:[30,30,0,0]},data:[{value:11,stationName:"s1"},{value:34,stationName:"s2"},{value:54,stationName:"s3"},{value:39,stationName:"s4"},{value:63,stationName:"s5"},{value:24,stationName:"s6"}]}]};t.homeCharThree.setOption(a),e.myCharts.push(t.homeCharThree)},C=()=>{S(()=>{for(let a=0;a{e.myCharts[a].resize()},a*1e3)})},R=()=>{window.addEventListener("resize",C)};return K(()=>{R()}),G(()=>{C()}),W(()=>r.value,()=>{C()}),W(()=>w.value.isIsDark,a=>{S(()=>{e.charts.theme=a?"dark":"",e.charts.bgColor=a?"transparent":"",e.charts.color=a?"#dadada":"#303133",setTimeout(()=>{s()},500),setTimeout(()=>{l()},700),setTimeout(()=>{B()},1e3)})},{deep:!0,immediate:!0}),{homeLineRef:c,homePieRef:m,homeBarRef:b,...V(e)}}}),k={class:"home-container"},q={class:"home-card-item flex"},j={class:"flex-auto"},U={class:"font30"},_={class:"mt10"},$={class:"home-card-item"},ee={style:{height:"100%"},ref:"homeLineRef"},oe={class:"home-card-item"},te={style:{height:"100%"},ref:"homePieRef"},ae={class:"home-card-item"},se={class:"home-monitor"},le={class:"flex-warp"},ie={class:"flex-margin"},re={class:"pl5"},ne={class:"mt10"},ce={class:"home-card-item"},me={style:{height:"100%"},ref:"homeBarRef"};function he(c,m,b,A,T,w){const r=D("el-col"),e=D("el-row");return d(),g("div",k,[n(e,{gutter:15,class:"home-card-one mb15"},{default:i(()=>[(d(!0),g(N,null,P(c.homeOne,(s,l)=>(d(),I(r,{xs:24,sm:12,md:12,lg:6,xl:6,key:l,class:f({"home-media home-media-lg":l>1,"home-media-sm":l===1})},{default:i(()=>[o("div",q,[o("div",{class:f(["flex-margin flex w100",` home-one-animation${l}`])},[o("div",j,[o("span",U,p(s.num1),1),o("span",{class:"ml5 font16",style:y({color:s.color1})},p(s.num2)+"%",5),o("div",_,p(s.num3),1)]),o("div",{class:"home-card-item-icon flex",style:y({background:`var(${s.color2})`})},[o("i",{class:f(["flex-margin font32",s.num4]),style:y({color:`var(${s.color3})`})},null,6)],4)],2)])]),_:2},1032,["class"]))),128))]),_:1}),n(e,{gutter:15,class:"home-card-two mb15"},{default:i(()=>[n(r,{xs:24,sm:14,md:14,lg:16,xl:16},{default:i(()=>[o("div",$,[o("div",ee,null,512)])]),_:1}),n(r,{xs:24,sm:10,md:10,lg:8,xl:8,class:"home-media"},{default:i(()=>[o("div",oe,[o("div",te,null,512)])]),_:1})]),_:1}),n(e,{gutter:15,class:"home-card-three"},{default:i(()=>[n(r,{xs:24,sm:10,md:10,lg:8,xl:8},{default:i(()=>[o("div",ae,[m[0]||(m[0]=o("div",{class:"home-card-item-title"},"快捷导航工具",-1)),o("div",se,[o("div",le,[(d(!0),g(N,null,P(c.homeThree,(s,l)=>(d(),g("div",{class:"flex-warp-item",key:l},[o("div",{class:f(["flex-warp-item-box",`home-animation${l}`])},[o("div",ie,[o("i",{class:f(s.icon),style:y({color:s.iconColor})},null,6),o("span",re,p(s.label),1),o("div",ne,p(s.value),1)])],2)]))),128))])])])]),_:1}),n(r,{xs:24,sm:14,md:14,lg:16,xl:16,class:"home-media"},{default:i(()=>[o("div",ce,[o("div",me,null,512)])]),_:1})]),_:1})])}const we=Q(J,[["render",he],["__scopeId","data-v-36645091"]]);export{we as default}; diff --git a/web/dist/assets/breadcrumb.CgSM-oQ7.css b/web/dist/assets/breadcrumb.CgSM-oQ7.css new file mode 100644 index 0000000000..b1701d2fe4 --- /dev/null +++ b/web/dist/assets/breadcrumb.CgSM-oQ7.css @@ -0,0 +1 @@ +.layout-navbars-breadcrumb[data-v-6ee1e737]{flex:1;height:inherit;display:flex;align-items:center}.layout-navbars-breadcrumb .layout-navbars-breadcrumb-icon[data-v-6ee1e737]{cursor:pointer;font-size:18px;color:var(--next-bg-topBarColor);height:100%;width:40px;opacity:.8}.layout-navbars-breadcrumb .layout-navbars-breadcrumb-icon[data-v-6ee1e737]:hover{opacity:1}.layout-navbars-breadcrumb .layout-navbars-breadcrumb-span[data-v-6ee1e737]{display:flex;opacity:.7;color:var(--next-bg-topBarColor)}.layout-navbars-breadcrumb .layout-navbars-breadcrumb-iconfont[data-v-6ee1e737]{font-size:14px;margin-right:5px}.layout-navbars-breadcrumb[data-v-6ee1e737] .el-breadcrumb__separator{opacity:.7;color:var(--next-bg-topBarColor)}.layout-navbars-breadcrumb[data-v-6ee1e737] .el-breadcrumb__inner a{font-weight:unset!important;color:var(--next-bg-topBarColor)}.layout-navbars-breadcrumb[data-v-6ee1e737] .el-breadcrumb__inner a:hover{color:var(--el-color-primary)!important} diff --git a/web/dist/assets/breadcrumb.wqwFczeO.js b/web/dist/assets/breadcrumb.wqwFczeO.js new file mode 100644 index 0000000000..ac65a913f0 --- /dev/null +++ b/web/dist/assets/breadcrumb.wqwFczeO.js @@ -0,0 +1 @@ +import{w as k,aR as S,aQ as T,aU as R,af as $,F as E,O as G,aW as M,aA as m,x as i,a2 as d,y as r,a7 as b,G as p,a0 as f,aF as U,a6 as q,aq as z,$ as h,a5 as _,ad as A,a4 as D}from"./vue.Cw4Y52yh.js";import{ae as O,u as Q,o as W,L}from"./index.CkCcWuPb.js";import{_ as j}from"./_plugin-vue_export-helper.DlAUqK2U.js";const H={key:0,class:"layout-navbars-breadcrumb"},J={key:0,class:"layout-navbars-breadcrumb-span"},K={key:1},P={key:2},X=["onClick"],Y=k({name:"layoutBreadcrumb"}),Z=k({...Y,setup(ee){const B=O(),w=Q(),{themeConfig:o}=S(w),{routesList:g}=S(B),c=T(),C=R(),e=$({breadcrumbList:[],routeSplit:[],routeSplitFirst:"",routeSplitIndex:1}),I=E(()=>{u(c.path);const{layout:t,isBreadcrumb:a}=o.value;return t==="classic"||t==="transverse"?!1:!!a}),x=t=>{const{redirect:a,path:n}=t;a?C.push(a):C.push(n)},F=()=>{o.value.isCollapse=!o.value.isCollapse,N()},N=()=>{L.remove("themeConfig"),L.set("themeConfig",o.value)},v=t=>{t.forEach(a=>{e.routeSplit.forEach((n,y,l)=>{e.routeSplitFirst===a.path&&(e.routeSplitFirst+=`/${l[e.routeSplitIndex]}`,e.breadcrumbList.push(a),e.routeSplitIndex++,a.children&&v(a.children))})})},u=t=>{if(!o.value.isBreadcrumb)return!1;e.breadcrumbList=[g.value[0]],e.routeSplit=t.split("/"),e.routeSplit.shift(),e.routeSplitFirst=`/${e.routeSplit[0]}`,e.routeSplitIndex=1,v(g.value),(c.name==="home"||c.name==="notFound"&&e.breadcrumbList.length>1)&&e.breadcrumbList.shift(),e.breadcrumbList.length>0&&(e.breadcrumbList[e.breadcrumbList.length-1].meta.tagsViewName=W.setTagsViewNameI18n(c))};return G(()=>{u(c.path)}),M(t=>{u(t.path)}),(t,a)=>{const n=m("SvgIcon"),y=m("el-breadcrumb-item"),l=m("el-breadcrumb");return I.value?(r(),i("div",H,[b(n,{class:"layout-navbars-breadcrumb-icon",name:p(o).isCollapse?"ele-Expand":"ele-Fold",size:16,onClick:F},null,8,["name"]),b(l,{class:"layout-navbars-breadcrumb-hide"},{default:f(()=>[b(U,{name:"breadcrumb"},{default:f(()=>[(r(!0),i(q,null,z(e.breadcrumbList,(s,V)=>(r(),h(y,{key:s.meta.tagsViewName?s.meta.tagsViewName:s.meta.title},{default:f(()=>[V===e.breadcrumbList.length-1?(r(),i("span",J,[p(o).isBreadcrumbIcon?(r(),h(n,{key:0,name:s.meta.icon,class:"layout-navbars-breadcrumb-iconfont"},null,8,["name"])):d("",!0),s.meta.tagsViewName?(r(),i("div",P,_(s.meta.tagsViewName),1)):(r(),i("div",K,_(t.$t(s.meta.title)),1))])):(r(),i("a",{key:1,onClick:A(te=>x(s),["prevent"])},[p(o).isBreadcrumbIcon?(r(),h(n,{key:0,name:s.meta.icon,class:"layout-navbars-breadcrumb-iconfont"},null,8,["name"])):d("",!0),D(_(t.$t(s.meta.title)),1)],8,X))]),_:2},1024))),128))]),_:1})]),_:1})])):d("",!0)}}}),oe=j(Z,[["__scopeId","data-v-6ee1e737"]]);export{oe as default}; diff --git a/web/dist/assets/changePwd.37FoB_fi.js b/web/dist/assets/changePwd.37FoB_fi.js new file mode 100644 index 0000000000..27c558bcdc --- /dev/null +++ b/web/dist/assets/changePwd.37FoB_fi.js @@ -0,0 +1 @@ +import{w as B,aR as S,aQ as b,aU as q,af as k,D as T,F as A,O as D,ax as N,aA as u,x as R,y as V,a7 as s,a2 as M,a0 as o,z as y,Y as $,a5 as z,ao as O,a6 as K}from"./vue.Cw4Y52yh.js";import{v as j,u as L,c as x,R as J,d as Q,f as Y,T as Z,U as G,A as E,F as H,E as W,N as X}from"./index.CkCcWuPb.js";import{a as ee}from"./formatTime.in1fXasu.js";import{a as se}from"./api.jJ3Ot51X.js";import{M as I}from"./md5.DLPczxzP.js";import{_ as oe}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ae=B({name:"changePwd",setup(){const{t:e}=j.useI18n(),a=L(),{themeConfig:F}=S(a),{userInfos:U}=S(x()),d=b(),h=q(),n=k({isShowPassword:!1,ruleForm:{username:"",password:"",password_regain:""},loading:{signIn:!1}}),p=k({username:[{required:!0,message:"请填写账号",trigger:"blur"}],password:[{required:!0,message:"请填写密码",trigger:"blur"},{validator:(m,r,t)=>{const w=new RegExp("(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}");r===""?t(new Error("请输入密码")):w.test(r)?(n.ruleForm.password!==""&&i.value.validateField("password"),t()):t(new Error("您的密码复杂度太低(密码中必须包含字母、数字)"))},trigger:"blur"}],password_regain:[{required:!0,message:"请填写密码",trigger:"blur"},{validator:(m,r,t)=>{r===""?t(new Error("请再次输入密码")):r!==n.ruleForm.password?t(new Error("两次输入密码不一致!")):t()},trigger:"blur"}]}),i=T(),f=A(()=>ee(new Date)),_=async()=>{window.open(Y("/api/system/apply_for_trial/"))},l=async()=>{i.value&&await i.value.validate(m=>{m?se({...n.ruleForm,password:I.hashStr(n.ruleForm.password),password_regain:I.hashStr(n.ruleForm.password_regain)}).then(r=>{r.code===2e3&&(F.value.isRequestRoutes?(G(),C()):(Z(),C()))}).catch(r=>{E("登录失败")}):E("请填写登录信息")})},C=()=>{var t,w,v,P;H().getSystemDictionarys();let m=f.value;(t=d.query)!=null&&t.redirect?h.push({path:(w=d.query)==null?void 0:w.redirect,query:Object.keys((v=d.query)==null?void 0:v.params).length>0?JSON.parse((P=d.query)==null?void 0:P.params):""}):h.push("/"),n.loading.signIn=!0;const r=e("message.signInText");W.success(`${m},${r}`),X.start()};return D(()=>{n.ruleForm.username=J.get("username"),Q().getSystemConfigs()}),{loginClick:l,loginSuccess:C,state:n,formRef:i,rules:p,applyBtnClick:_,showApply:()=>window.location.href.indexOf("public")!=-1,...N(n)}}}),ne={key:0,style:{"text-align":"center"}};function re(e,a,F,U,d,h){const n=u("ele-User"),c=u("el-icon"),g=u("el-input"),p=u("el-form-item"),i=u("ele-Unlock"),f=u("el-button"),_=u("el-form");return V(),R(K,null,[s(_,{ref:"formRef",size:"large",class:"login-content-form",model:e.state.ruleForm,rules:e.rules,onKeyup:O(e.loginClick,["enter"])},{default:o(()=>[s(p,{class:"login-animation1",prop:"username"},{default:o(()=>[s(g,{type:"text",placeholder:e.$t("message.account.accountPlaceholder1"),readonly:"",modelValue:e.ruleForm.username,"onUpdate:modelValue":a[0]||(a[0]=l=>e.ruleForm.username=l),clearable:"",autocomplete:"off"},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(n)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation2",prop:"password"},{default:o(()=>[s(g,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder4"),modelValue:e.ruleForm.password,"onUpdate:modelValue":a[2]||(a[2]=l=>e.ruleForm.password=l)},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(i)]),_:1})]),suffix:o(()=>[y("i",{class:$(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:a[1]||(a[1]=l=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation3",prop:"password_regain"},{default:o(()=>[s(g,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder5"),modelValue:e.ruleForm.password_regain,"onUpdate:modelValue":a[4]||(a[4]=l=>e.ruleForm.password_regain=l)},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(i)]),_:1})]),suffix:o(()=>[y("i",{class:$(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:a[3]||(a[3]=l=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation4"},{default:o(()=>[s(f,{type:"primary",class:"login-content-submit",round:"",onClick:e.loginClick,loading:e.loading.signIn},{default:o(()=>[y("span",null,z(e.$t("message.account.accountBtnText")),1)]),_:1},8,["onClick","loading"])]),_:1})]),_:1},8,["model","rules","onKeyup"]),e.showApply()?(V(),R("div",ne,[s(f,{class:"login-content-apply",link:"",type:"primary",plain:"",round:"",onClick:e.applyBtnClick},{default:o(()=>a[5]||(a[5]=[y("span",null,"申请试用",-1)])),_:1},8,["onClick"])])):M("",!0)],64)}const ce=oe(ae,[["render",re],["__scopeId","data-v-deeb965b"]]);export{ce as default}; diff --git a/web/dist/assets/changePwd.Dumi_sqx.css b/web/dist/assets/changePwd.Dumi_sqx.css new file mode 100644 index 0000000000..e1eb98b34d --- /dev/null +++ b/web/dist/assets/changePwd.Dumi_sqx.css @@ -0,0 +1 @@ +.login-content-form[data-v-deeb965b]{margin-top:20px}.login-content-form .login-animation1[data-v-deeb965b]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.1s}.login-content-form .login-animation2[data-v-deeb965b]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.2s}.login-content-form .login-animation3[data-v-deeb965b]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.3s}.login-content-form .login-animation4[data-v-deeb965b]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.4s}.login-content-form .login-animation5[data-v-deeb965b]{opacity:0;animation-name:error-num;animation-duration:.5s;animation-fill-mode:forwards;animation-delay:.5s}.login-content-form .login-content-password[data-v-deeb965b]{display:inline-block;width:20px;cursor:pointer}.login-content-form .login-content-password[data-v-deeb965b]:hover{color:#909399}.login-content-form .login-content-captcha[data-v-deeb965b]{width:100%;padding:0;font-weight:700;letter-spacing:5px}.login-content-form .login-content-submit[data-v-deeb965b]{width:100%;letter-spacing:2px;font-weight:800;margin-top:15px} diff --git a/web/dist/assets/classic.CJq6kQh6.js b/web/dist/assets/classic.CJq6kQh6.js new file mode 100644 index 0000000000..6423242b8a --- /dev/null +++ b/web/dist/assets/classic.CJq6kQh6.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.CcbNtRz7.js","assets/index.CkCcWuPb.js","assets/vue.Cw4Y52yh.js","assets/index.DvQZPXXd.css","assets/header.D3A4TWO0.js","assets/main.B3b7-7PA.js","assets/tagsView.DJSmzEFB.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/tagsView.B9nwrDkZ.css"])))=>i.map(i=>d[i]); +import{u as g,_ as e}from"./index.CkCcWuPb.js";import{w as p,D as E,aQ as L,aR as V,F as w,O as A,H as _,aA as P,$ as l,y as f,a0 as d,a7 as t,G as a,aP as o,z as k,a2 as x,P as M}from"./vue.Cw4Y52yh.js";const D={class:"flex-center layout-backtop"},O=p({name:"layoutClassic"}),H=p({...O,setup(b){const m=o(()=>e(()=>import("./aside.CcbNtRz7.js"),__vite__mapDeps([0,1,2,3]))),y=o(()=>e(()=>import("./header.D3A4TWO0.js"),__vite__mapDeps([4,1,2,3]))),v=o(()=>e(()=>import("./main.B3b7-7PA.js"),__vite__mapDeps([5,1,2,3]))),T=o(()=>e(()=>import("./tagsView.DJSmzEFB.js"),__vite__mapDeps([6,1,2,3,7,8]))),s=E(),R=L(),h=g(),{themeConfig:r}=V(h),C=w(()=>r.value.isTagsview),c=()=>{var n;(n=s.value)==null||n.layoutMainScrollbarRef.update()},i=()=>{M(()=>{setTimeout(()=>{c(),s.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return A(()=>{i()}),_(()=>R.path,()=>{i()}),_(r,()=>{c()},{deep:!0}),(n,B)=>{const u=P("el-container");return f(),l(u,{class:"layout-container flex-center"},{default:d(()=>[t(a(y)),t(u,{class:"layout-mian-height-50"},{default:d(()=>[t(a(m)),k("div",D,[C.value?(f(),l(a(T),{key:0})):x("",!0),t(a(v),{ref_key:"layoutMainRef",ref:s},null,512)])]),_:1})]),_:1})}}});export{H as default}; diff --git a/web/dist/assets/closeFull.CzjSgIlY.js b/web/dist/assets/closeFull.CzjSgIlY.js new file mode 100644 index 0000000000..f8c81991f7 --- /dev/null +++ b/web/dist/assets/closeFull.CzjSgIlY.js @@ -0,0 +1 @@ +import{w as s,aR as n,aA as c,x as r,a2 as u,G as _,y as i,z as m,a7 as f}from"./vue.Cw4Y52yh.js";import{b as p}from"./index.CkCcWuPb.js";import{_ as d}from"./_plugin-vue_export-helper.DlAUqK2U.js";const C={key:0,class:"layout-navbars-close-full"},v={class:"layout-navbars-close-full-icon"},g=s({name:"layoutCloseFull"}),F=s({...g,setup(V){const e=p(),{isTagsViewCurrenFull:o}=n(e),t=()=>{e.setCurrenFullscreen(!1)};return(a,b)=>{const l=c("SvgIcon");return _(o)?(i(),r("div",C,[m("div",v,[f(l,{name:"ele-Close",title:a.$t("message.tagsView.closeFullscreen"),onClick:t},null,8,["title"])])])):u("",!0)}}}),h=d(F,[["__scopeId","data-v-83ab04b1"]]);export{h as default}; diff --git a/web/dist/assets/closeFull.aavHxrrN.css b/web/dist/assets/closeFull.aavHxrrN.css new file mode 100644 index 0000000000..b5791e3cfd --- /dev/null +++ b/web/dist/assets/closeFull.aavHxrrN.css @@ -0,0 +1 @@ +.layout-navbars-close-full[data-v-83ab04b1]{position:fixed;z-index:9999999999;right:-30px;top:-30px}.layout-navbars-close-full .layout-navbars-close-full-icon[data-v-83ab04b1]{width:60px;height:60px;border-radius:100%;cursor:pointer;background:#0000001a;transition:all .3s ease;position:relative}.layout-navbars-close-full .layout-navbars-close-full-icon[data-v-83ab04b1] i{position:absolute;left:10px;top:35px;color:#333;transition:all .3s ease}.layout-navbars-close-full[data-v-83ab04b1]:hover{transition:all .3s ease}.layout-navbars-close-full[data-v-83ab04b1]:hover i{color:var(--el-color-primary);transition:all .3s ease} diff --git a/web/dist/assets/columnPermission.C1SV5wrv.js b/web/dist/assets/columnPermission.C1SV5wrv.js new file mode 100644 index 0000000000..e2752528ec --- /dev/null +++ b/web/dist/assets/columnPermission.C1SV5wrv.js @@ -0,0 +1 @@ +import{X as d}from"./index.CkCcWuPb.js";const r=async(n,e,s=[])=>{const t=await n();e.pagination==null&&(e.pagination={show:!0});const i=e.columns,c=["checked","_index","id","create_datetime","update_datetime"].concat(s);return d.eachTree(i,(o,a)=>{!c.includes(String(a))&&a in t.data&&(t.data[a].is_query||(o.column.show=!1,o.column.columnSetDisabled=!0),o.addForm={show:t.data[a].is_create},o.editForm={show:t.data[a].is_update})}),e};export{r as h}; diff --git a/web/dist/assets/columns.CmHaca52.js b/web/dist/assets/columns.CmHaca52.js new file mode 100644 index 0000000000..b4496d3fc5 --- /dev/null +++ b/web/dist/assets/columns.CmHaca52.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.CcbNtRz7.js","assets/index.CkCcWuPb.js","assets/vue.Cw4Y52yh.js","assets/index.DvQZPXXd.css","assets/header.D3A4TWO0.js","assets/main.B3b7-7PA.js","assets/columnsAside.DcFcWAsf.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/columnsAside.TyXXNMHi.css"])))=>i.map(i=>d[i]); +import{u as b,_ as o}from"./index.CkCcWuPb.js";import{w as p,D as _,aQ as A,aR as E,O as w,H as i,aA as f,$ as L,y as P,a0 as r,a7 as e,G as a,aP as t,P as k}from"./vue.Cw4Y52yh.js";const M=p({name:"layoutColumns"}),x=p({...M,setup(S){const m=t(()=>o(()=>import("./aside.CcbNtRz7.js"),__vite__mapDeps([0,1,2,3]))),d=t(()=>o(()=>import("./header.D3A4TWO0.js"),__vite__mapDeps([4,1,2,3]))),y=t(()=>o(()=>import("./main.B3b7-7PA.js"),__vite__mapDeps([5,1,2,3]))),R=t(()=>o(()=>import("./columnsAside.DcFcWAsf.js"),__vite__mapDeps([6,2,1,3,7,8]))),s=_(""),n=_(),v=A(),T=b(),{themeConfig:h}=E(T),l=()=>{s.value.update(),n.value.layoutMainScrollbarRef.update()},c=()=>{k(()=>{setTimeout(()=>{l(),s.value.wrapRef.scrollTop=0,n.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return w(()=>{c()}),i(()=>v.path,()=>{c()}),i(h,()=>{l()},{deep:!0}),(D,O)=>{const C=f("el-scrollbar"),u=f("el-container");return P(),L(u,{class:"layout-container"},{default:r(()=>[e(a(R)),e(u,{class:"layout-columns-warp layout-container-view h100"},{default:r(()=>[e(a(m)),e(C,{ref_key:"layoutScrollbarRef",ref:s,class:"layout-backtop"},{default:r(()=>[e(a(d)),e(a(y),{ref_key:"layoutMainRef",ref:n},null,512)]),_:1},512)]),_:1})]),_:1})}}});export{x as default}; diff --git a/web/dist/assets/columnsAside.DcFcWAsf.js b/web/dist/assets/columnsAside.DcFcWAsf.js new file mode 100644 index 0000000000..33f0f756d4 --- /dev/null +++ b/web/dist/assets/columnsAside.DcFcWAsf.js @@ -0,0 +1 @@ +import{w as R,D as I,aR as M,aQ as F,aU as U,af as j,O as z,ab as V,aW as q,H as E,aA as $,x as c,y as d,a7 as v,a0 as G,z as m,a6 as Q,aq as W,Y as C,G as f,a5 as O,P as Y}from"./vue.Cw4Y52yh.js";import{ae as J,u as K,e as i,af as X}from"./index.CkCcWuPb.js";import{_ as Z}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ee={class:"layout-columns-aside"},te=["onClick","onMouseenter","title"],se={class:"columns-vertical-title font12"},ne=["href"],oe={class:"columns-vertical-title font12"},le=R({name:"layoutColumnsAside"}),ie=R({...le,setup(ae){const A=I([]),_=I(),h=J(),k=K(),{routesList:x,isColumnsMenuHover:b,isColumnsNavHover:D}=M(h),{themeConfig:a}=M(k),y=F(),L=U(),t=j({columnsAsideList:[],liIndex:0,liOldIndex:null,liHoverIndex:null,liOldPath:null,difference:0,routeSplit:[]}),S=e=>{t.liIndex=e,_.value.style.top=`${A.value[e].offsetTop+t.difference}px`},P=(e,s)=>{S(s);let{path:o,redirect:l}=e;l?L.push(l):L.push(o)},T=(e,s)=>{if(!a.value.isColumnsMenuHoverPreload)return!1;let{path:o}=e;t.liOldPath=o,t.liOldIndex=s,t.liHoverIndex=s,i.emit("setSendColumnsChildren",r(o)),h.setColumnsMenuHover(!1),h.setColumnsNavHover(!0)},N=async()=>{await h.setColumnsNavHover(!1),setTimeout(()=>{!b&&!D&&i.emit("restoreDefault")},100)},g=e=>{Y(()=>{S(e)})},w=()=>{var s;t.columnsAsideList=H(x.value);const e=r(y.path);if(Object.keys(e).length<=0)return!1;g((s=e.item)==null?void 0:s.k),i.emit("setSendColumnsChildren",e)},r=e=>{const s=e.split("/");let o={children:[]};return t.columnsAsideList.map((l,n)=>{l.path===`/${s[1]}`&&(l.k=n,o.item={...l},o.children=[{...l}],l.children&&(o.children=l.children))}),o},H=e=>e.filter(s=>{var o;return!((o=s.meta)!=null&&o.isHide)}).map(s=>(s=Object.assign({},s),s.children&&(s.children=H(s.children)),s)),B=e=>{t.routeSplit=e.split("/"),t.routeSplit.shift();const s=`/${t.routeSplit[0]}`,o=t.columnsAsideList.find(l=>l.path===s);if(!o)return!1;setTimeout(()=>{g(o.k)},0)};return z(()=>{w(),i.on("restoreDefault",()=>{t.liOldIndex=null,t.liOldPath=null})}),V(()=>{i.off("restoreDefault",()=>{})}),q(e=>{B(e.path),i.emit("setSendColumnsChildren",r(e.path))}),E(X.state,e=>{if(e.themeConfig.themeConfig.columnsAsideStyle==="columnsRound"?t.difference=3:t.difference=0,!e.routesList.isColumnsMenuHover&&!e.routesList.isColumnsNavHover)t.liHoverIndex=null,i.emit("setSendColumnsChildren",r(y.path));else{if(t.liHoverIndex=t.liOldIndex,!t.liOldPath)return!1;i.emit("setSendColumnsChildren",r(t.liOldPath))}},{deep:!0}),(e,s)=>{const o=$("SvgIcon"),l=$("el-scrollbar");return d(),c("div",ee,[v(l,null,{default:G(()=>[m("ul",{onMouseleave:s[0]||(s[0]=n=>N())},[(d(!0),c(Q,null,W(t.columnsAsideList,(n,u)=>(d(),c("li",{key:u,onClick:p=>P(n,u),onMouseenter:p=>T(n,u),ref_for:!0,ref:p=>{p&&(A.value[u]=p)},class:C({"layout-columns-active":t.liIndex===u,"layout-columns-hover":t.liHoverIndex===u}),title:e.$t(n.meta.title)},[!n.meta.isLink||n.meta.isLink&&n.meta.isIframe?(d(),c("div",{key:0,class:C(f(a).columnsAsideLayout)},[v(o,{name:n.meta.icon},null,8,["name"]),m("div",se,O(e.$t(n.meta.title)&&e.$t(n.meta.title).length>=4?e.$t(n.meta.title).substr(0,f(a).columnsAsideLayout==="columns-vertical"?4:3):e.$t(n.meta.title)),1)],2)):(d(),c("div",{key:1,class:C(f(a).columnsAsideLayout)},[m("a",{href:n.meta.isLink,target:"_blank"},[v(o,{name:n.meta.icon},null,8,["name"]),m("div",oe,O(e.$t(n.meta.title)&&e.$t(n.meta.title).length>=4?e.$t(n.meta.title).substr(0,f(a).columnsAsideLayout==="columns-vertical"?4:3):e.$t(n.meta.title)),1)],8,ne)],2))],42,te))),128)),m("div",{ref_key:"columnsAsideActiveRef",ref:_,class:C(f(a).columnsAsideStyle)},null,2)],32)]),_:1})])}}}),de=Z(ie,[["__scopeId","data-v-a5c512c6"]]);export{de as default}; diff --git a/web/dist/assets/columnsAside.TyXXNMHi.css b/web/dist/assets/columnsAside.TyXXNMHi.css new file mode 100644 index 0000000000..a64102ed22 --- /dev/null +++ b/web/dist/assets/columnsAside.TyXXNMHi.css @@ -0,0 +1 @@ +.layout-columns-aside[data-v-a5c512c6]{width:70px;height:100%;background:var(--next-bg-columnsMenuBar)}.layout-columns-aside ul[data-v-a5c512c6]{position:relative}.layout-columns-aside ul .layout-columns-active[data-v-a5c512c6]{color:var(--next-bg-columnsMenuBarColor)!important;transition:.3s ease-in-out}.layout-columns-aside ul .layout-columns-hover[data-v-a5c512c6],.layout-columns-aside ul li[data-v-a5c512c6]:hover,.layout-columns-aside ul .layout-columns-hover a[data-v-a5c512c6],.layout-columns-aside ul li:hover a[data-v-a5c512c6]{color:var(--el-color-primary)}.layout-columns-aside ul li[data-v-a5c512c6]{color:var(--next-bg-columnsMenuBarColor);width:100%;height:50px;text-align:center;display:flex;cursor:pointer;position:relative;z-index:1}.layout-columns-aside ul li .columns-vertical[data-v-a5c512c6]{margin:auto}.layout-columns-aside ul li .columns-vertical .columns-vertical-title[data-v-a5c512c6]{padding-top:1px}.layout-columns-aside ul li .columns-horizontal[data-v-a5c512c6]{display:flex;height:50px;width:100%;align-items:center;padding:0 5px}.layout-columns-aside ul li .columns-horizontal i[data-v-a5c512c6]{margin-right:3px}.layout-columns-aside ul li .columns-horizontal a[data-v-a5c512c6]{display:flex}.layout-columns-aside ul li .columns-horizontal a .columns-horizontal-title[data-v-a5c512c6]{padding-top:1px}.layout-columns-aside ul li a[data-v-a5c512c6]{text-decoration:none;color:var(--next-bg-columnsMenuBarColor)}.layout-columns-aside ul .columns-round[data-v-a5c512c6],.layout-columns-aside ul .columns-card[data-v-a5c512c6]{background:var(--el-color-primary);color:var(--el-color-white);position:absolute;left:50%;top:2px;height:44px;width:65px;transform:translate(-50%);z-index:0;transition:.3s ease-in-out;border-radius:5px}.layout-columns-aside ul .columns-card[data-v-a5c512c6]{top:0;height:50px;width:100%;border-radius:0} diff --git a/web/dist/assets/commonCrud.CCkJYHLJ.js b/web/dist/assets/commonCrud.CCkJYHLJ.js new file mode 100644 index 0000000000..cb0b87e93b --- /dev/null +++ b/web/dist/assets/commonCrud.CCkJYHLJ.js @@ -0,0 +1 @@ +import{G as l,m as c}from"./index.CkCcWuPb.js";import{w as d,D as p,H as h,x as f,y as w,a5 as u,I as _}from"./vue.Cw4Y52yh.js";const b=d({__name:"index",props:{modelValue:{type:Number||String}},setup(s){const e=s,t=p();return h(()=>e.modelValue,async o=>{const r=await l().getParentDeptById(o);if(r!=null&&r.nodes){let i="";console.log(r),r.nodes.forEach((n,m)=>{i+=m>0?`/${n.name}`:n.name}),t.value=i}},{immediate:!0}),(o,a)=>(w(),f("div",null,u(t.value),1))}}),g={create_datetime:{form:!1,table:!1,search:!1,width:160},update_datetime:{form:!1,table:!1,search:!1,width:160},creator_name:{form:!1,table:!1,search:!1,width:100},modifier_name:{form:!1,table:!1,search:!1,width:100},dept_belong_id:{form:!1,table:!1,search:!1,width:300},description:{form:!1,table:!1,search:!1,width:100}};function D(s,e={}){const t={...s};for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)){const a=t[o],r=e[o];a&&r&&(t[o]={...a,...r})}return t}const y=(s={})=>{const e=D(g,s);return{dept_belong_id:{title:"所属部门",type:"dict-tree",search:{show:e.dept_belong_id.search},dict:c({url:"/api/system/dept/all_dept/",isTree:!0,value:"id",label:"name",children:"children"}),column:{align:"center",width:e.dept_belong_id.width,show:e.dept_belong_id.table,component:{is:_(b),vModel:"modelValue"}},form:{show:e.dept_belong_id.form,component:{multiple:!1,clearable:!0,props:{checkStrictly:!0,props:{label:"name",value:"id"}}},helper:"默认不填则为当前创建用户的部门ID"}},description:{title:"备注",search:{show:e.description.search},type:"textarea",column:{width:e.description.width,show:e.description.table},form:{show:e.description.form,component:{placeholder:"请输入内容",showWordLimit:!0,maxlength:"200"}},viewForm:{show:!0}},modifier_name:{title:"修改人",search:{show:e.modifier_name.search},column:{width:e.modifier_name.width,show:e.modifier_name.table},form:{show:e.modifier_name.form},viewForm:{show:!0}},creator_name:{title:"创建人",search:{show:e.creator_name.search},column:{width:e.creator_name.width,show:e.creator_name.table},form:{show:e.creator_name.form},viewForm:{show:!0}},update_datetime:{title:"更新时间",type:"datetime",search:{show:e.update_datetime.search,col:{span:8},component:{type:"datetimerange",props:{"start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss","picker-options":{shortcuts:[{text:"最近一周",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*7),t.$emit("pick",[a,o])}},{text:"最近一个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*30),t.$emit("pick",[a,o])}},{text:"最近三个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*90),t.$emit("pick",[a,o])}}]}}},valueResolve(t){const{value:o}=t;o&&(t.form.update_datetime_after=o[0],t.form.update_datetime_before=o[1],delete t.form.update_datetime)}},column:{width:e.update_datetime.width,show:e.update_datetime.table},form:{show:e.update_datetime.form},viewForm:{show:!0}},create_datetime:{title:"创建时间",type:"datetime",search:{show:e.create_datetime.search,col:{span:8},component:{type:"datetimerange",props:{"start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss","picker-options":{shortcuts:[{text:"最近一周",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*7),t.$emit("pick",[a,o])}},{text:"最近一个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*30),t.$emit("pick",[a,o])}},{text:"最近三个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*90),t.$emit("pick",[a,o])}}]}}},valueResolve(t){const{value:o}=t;o&&(t.form.create_datetime_after=o[0],t.form.create_datetime_before=o[1],delete t.form.create_datetime)}},column:{width:e.create_datetime.width,show:e.create_datetime.table},form:{show:e.create_datetime.form},viewForm:{show:!0}}}};export{y as c}; diff --git a/web/dist/assets/contextmenu.DhtroW7_.js b/web/dist/assets/contextmenu.DhtroW7_.js new file mode 100644 index 0000000000..4a58b58cdf --- /dev/null +++ b/web/dist/assets/contextmenu.DhtroW7_.js @@ -0,0 +1 @@ +import{w as m,af as k,F as y,O as v,ab as L,H as b,aA as I,$ as S,y as o,a0 as V,a1 as M,x as a,X as d,z as l,a6 as u,aq as E,a2 as $,a7 as B,a5 as O,a8 as W,a9 as z}from"./vue.Cw4Y52yh.js";import{_ as A}from"./_plugin-vue_export-helper.DlAUqK2U.js";const D={class:"el-dropdown-menu"},F=["onClick"],N=m({name:"layoutTagsViewContextmenu"}),T=m({...N,props:{dropdown:{type:Object,default:()=>({x:0,y:0})}},emits:["currentContextmenuClick"],setup(p,{expose:f,emit:x}){const n=p,w=x,e=k({isShow:!1,dropdownList:[{contextMenuClickId:0,txt:"message.tagsView.refresh",affix:!1,icon:"ele-RefreshRight"},{contextMenuClickId:1,txt:"message.tagsView.close",affix:!1,icon:"ele-Close"},{contextMenuClickId:2,txt:"message.tagsView.closeOther",affix:!1,icon:"ele-CircleClose"},{contextMenuClickId:3,txt:"message.tagsView.closeAll",affix:!1,icon:"ele-FolderDelete"},{contextMenuClickId:4,txt:"message.tagsView.fullscreen",affix:!1,icon:"iconfont icon-fullscreen"}],item:{},arrowLeft:10}),r=y(()=>n.dropdown.x+117>document.documentElement.clientWidth?{x:document.documentElement.clientWidth-117-5,y:n.dropdown.y}:n.dropdown),C=t=>{w("currentContextmenuClick",Object.assign({},{contextMenuClickId:t},e.item))},_=t=>{var i;e.item=t,(i=t.meta)!=null&&i.isAffix?e.dropdownList[1].affix=!0:e.dropdownList[1].affix=!1,c(),setTimeout(()=>{e.isShow=!0},10)},c=()=>{e.isShow=!1};return v(()=>{document.body.addEventListener("click",c)}),L(()=>{document.body.removeEventListener("click",c)}),b(()=>n.dropdown,({x:t})=>{t+117>document.documentElement.clientWidth?e.arrowLeft=117-(document.documentElement.clientWidth-t):e.arrowLeft=10},{deep:!0}),f({openContextmenu:_}),(t,i)=>{const h=I("SvgIcon");return o(),S(z,{name:"el-zoom-in-center"},{default:V(()=>[M((o(),a("div",{"aria-hidden":"true",class:"el-dropdown__popper el-popper is-light is-pure custom-contextmenu",role:"tooltip","data-popper-placement":"bottom",style:d(`top: ${r.value.y+5}px;left: ${r.value.x}px;`),key:Math.random()},[l("ul",D,[(o(!0),a(u,null,E(e.dropdownList,(s,g)=>(o(),a(u,null,[s.affix?$("",!0):(o(),a("li",{class:"el-dropdown-menu__item","aria-disabled":"false",tabindex:"-1",key:g,onClick:j=>C(s.contextMenuClickId)},[B(h,{name:s.icon},null,8,["name"]),l("span",null,O(t.$t(s.txt)),1)],8,F))],64))),256))]),l("div",{class:"el-popper__arrow",style:d({left:`${e.arrowLeft}px`})},null,4)],4)),[[W,e.isShow]])]),_:1})}}}),H=A(T,[["__scopeId","data-v-4b07d0ca"]]);export{H as default}; diff --git a/web/dist/assets/contextmenu.Q99eYcOG.css b/web/dist/assets/contextmenu.Q99eYcOG.css new file mode 100644 index 0000000000..2d9ff4730d --- /dev/null +++ b/web/dist/assets/contextmenu.Q99eYcOG.css @@ -0,0 +1 @@ +.custom-contextmenu[data-v-4b07d0ca]{transform-origin:center top;z-index:2190;position:fixed}.custom-contextmenu .el-dropdown-menu__item[data-v-4b07d0ca]{font-size:12px!important;white-space:nowrap}.custom-contextmenu .el-dropdown-menu__item i[data-v-4b07d0ca]{font-size:12px!important} diff --git a/web/dist/assets/crud.7rE-T_E9.js b/web/dist/assets/crud.7rE-T_E9.js new file mode 100644 index 0000000000..2e98c78319 --- /dev/null +++ b/web/dist/assets/crud.7rE-T_E9.js @@ -0,0 +1 @@ +import{r as l,m as u}from"./index.CkCcWuPb.js";import{d as n}from"./dictionary.CH8ZDdyo.js";import"./vue.Cw4Y52yh.js";const o="/api/system/dictionary/";function i(e){return l({url:o,method:"get",params:e})}function s(e){return l({url:o,method:"post",data:e})}function c(e){return l({url:o+e.id+"/",method:"put",data:e})}function d(e){return l({url:o+e+"/",method:"delete",data:{}})}const y=function({crudExpose:e,context:p}){return{crudOptions:{request:{pageRequest:async t=>await i(t),addRequest:async({form:t})=>{const a=e.getSearchFormData().parent;if(t.parent=a,a)return await s(t)},editRequest:async({form:t,row:r})=>(t.id=r.id,await c(t)),delRequest:async({row:t})=>await d(t.id)},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text"},remove:{iconRight:"Delete",type:"text"}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,a=e.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+r+1}}},label:{title:"名称",search:{show:!0,component:{props:{clearable:!0}}},type:"input",form:{rules:[{required:!0,message:"名称必填项"}],component:{props:{clearable:!0},placeholder:"请输入名称"}}},type:{title:"数据值类型",type:"dict-select",search:{disabled:!0,component:{props:{clearable:!0}}},show:!1,dict:u({data:[{label:"text",value:0},{label:"number",value:1},{label:"date",value:2},{label:"datetime",value:3},{label:"time",value:4},{label:"file",value:5},{label:"boolean",value:6},{label:"images",value:7}]}),form:{rules:[{required:!0,message:"数据值类型必填项"}],value:0,component:{props:{clearable:!0},placeholder:"请选择数据值类型"}}},value:{title:"数据值",search:{show:!0,component:{props:{clearable:!0}}},view:{component:{props:{height:100,width:100}}},type:"input",form:{rules:[{required:!0,message:"数据值必填项"}],component:{props:{clearable:!0},placeholder:"请输入数据值"}}},status:{title:"状态",width:80,search:{show:!0},type:"dict-radio",dict:u({data:n("button_status_bool")}),form:{value:!0,rules:[{required:!0,message:"状态必填项"}]}},sort:{title:"排序",width:70,type:"number",form:{value:1,component:{},rules:[{required:!0,message:"排序必填项"}]}},color:{title:"标签颜色",width:90,search:{disabled:!0},type:"dict-select",dict:u({data:[{label:"success",value:"success",color:"success"},{label:"primary",value:"primary",color:"primary"},{label:"info",value:"info",color:"info"},{label:"danger",value:"danger",color:"danger"},{label:"warning",value:"warning",color:"warning"}]}),form:{component:{props:{clearable:!0}}}},is_value:{title:"是否值",column:{show:!1},form:{show:!1,value:!0}}}}}};export{y as createCrudOptions}; diff --git a/web/dist/assets/crud.B9j8xmfD.css b/web/dist/assets/crud.B9j8xmfD.css new file mode 100644 index 0000000000..21f33bdd79 --- /dev/null +++ b/web/dist/assets/crud.B9j8xmfD.css @@ -0,0 +1 @@ +.many-to-many-tag[data-v-0838bf04]{margin-right:5px}.many-to-many-tag[data-v-0838bf04]:last-child{margin-right:0} diff --git a/web/dist/assets/crud.BNBeHM1q.js b/web/dist/assets/crud.BNBeHM1q.js new file mode 100644 index 0000000000..18e5d46aa7 --- /dev/null +++ b/web/dist/assets/crud.BNBeHM1q.js @@ -0,0 +1 @@ +import{r as o,d as y,m as s,n as b,q as x,s as c}from"./index.CkCcWuPb.js";import{d as i}from"./dictionary.CH8ZDdyo.js";import{a}from"./authFunction.Br9oRcVU.js";import{aR as v,F as d}from"./vue.Cw4Y52yh.js";import{M as _}from"./md5.DLPczxzP.js";import{c as q}from"./commonCrud.CCkJYHLJ.js";const n="/api/system/user/";function B(t){return o({url:"/api/system/dept/all_dept/",method:"get",params:t})}function R(t){return o({url:n,method:"get",params:t})}function T(t){return o({url:n,method:"post",data:t})}function m(t){return o({url:n+t.id+"/",method:"put",data:t})}function C(t){return o({url:n+t+"/",method:"delete",data:{id:t}})}function S(t){return o({url:n+t+"/reset_to_default_password/",method:"put"})}const D=function({crudExpose:t}){const p=async e=>await R(e),h=async({form:e,row:r})=>(e.id=r.id,await m(e)),f=async({row:e})=>await C(e.id),w=async({form:e})=>await T(e),l=async e=>{await S(e.id),c("重置密码成功")},g=y(),{systemConfig:u}=v(g);return d(()=>u.value),{crudOptions:{table:{remove:{confirmMessage:"是否删除该用户?"}},request:{pageRequest:p,addRequest:w,editRequest:h,delRequest:f},form:{initialForm:{password:d(()=>u.value["base.default_password"])}},actionbar:{buttons:{add:{show:a("user:Create")},export:{text:"导出",title:"导出",show:a("user:Export"),click:e=>x.confirm("确定重设密码吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>l(e.row))}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:a("user:Update")},remove:{iconRight:"Delete",type:"text",show:a("user:Delete")},custom:{text:"重设密码",type:"text",show:a("user:ResetPassword"),tooltip:{placement:"top",content:"重设密码"},click:e=>{const{row:r}=e;l(r)}}}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},username:{title:"账号",search:{show:!0},type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"账号必填项"}],component:{placeholder:"请输入账号"}}},password:{title:"密码",type:"password",column:{show:!1},editForm:{show:!1},form:{rules:[{required:!0,message:"密码必填项"}],component:{span:12,showPassword:!0,placeholder:"请输入密码"}},valueResolve({form:e}){e.password&&(e.password=_.hashStr(e.password))}},name:{title:"姓名",search:{show:!0},type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"姓名必填项"}],component:{span:12,placeholder:"请输入姓名"}}},dept:{title:"部门",search:{disabled:!0},type:"dict-tree",dict:s({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"}),column:{minWidth:200,formatter({value:e,row:r,index:O}){return r.dept_name_all}},form:{rules:[{required:!0,message:"必填项"}],component:{filterable:!0,placeholder:"请选择",props:{checkStrictly:!0,props:{value:"id",label:"name"}}}}},role:{title:"角色",search:{disabled:!0},type:"dict-select",dict:s({url:"/api/system/role/",value:"id",label:"name"}),column:{minWidth:200},form:{rules:[{required:!0,message:"必填项"}],component:{multiple:!0,filterable:!0,placeholder:"请选择角色"}}},mobile:{title:"手机号码",search:{show:!0},type:"input",column:{minWidth:120},form:{rules:[{max:20,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}],component:{placeholder:"请输入手机号码"}}},email:{title:"邮箱",column:{width:260},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},gender:{title:"性别",type:"dict-select",dict:s({data:i("gender")}),form:{value:1,component:{span:12}},component:{props:{color:"auto"}}},user_type:{title:"用户类型",search:{show:!0},type:"dict-select",dict:s({data:i("user_type")}),column:{minWidth:100},form:{show:!1,value:0,component:{span:12}}},is_active:{title:"状态",search:{show:!0},type:"dict-radio",column:{component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:b(e=>()=>{m(e.row).then(r=>{c(r.msg)})})}},dict:s({data:i("button_status_bool")})},avatar:{title:"头像",type:"avatar-uploader",align:"center",form:{show:!1},column:{minWidth:100}},...q({dept_belong_id:{form:!0,table:!0}})}}}},F=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:D},Symbol.toStringTag,{value:"Module"}));export{B as G,F as a,D as c}; diff --git a/web/dist/assets/crud.BZns8qMI.js b/web/dist/assets/crud.BZns8qMI.js new file mode 100644 index 0000000000..515a608083 --- /dev/null +++ b/web/dist/assets/crud.BZns8qMI.js @@ -0,0 +1 @@ +import{r as a,m as c,n as l,s as d}from"./index.CkCcWuPb.js";import{d as p}from"./dictionary.CH8ZDdyo.js";import{a as i}from"./authFunction.Br9oRcVU.js";import{a7 as m,aA as h,P as f}from"./vue.Cw4Y52yh.js";const o="/api/system/dictionary/";function w(t){return a({url:o,method:"get",params:t})}function y(t){return a({url:o,method:"post",data:t})}function u(t){return a({url:o+t.id+"/",method:"put",data:t})}function g(t){return a({url:o+t+"/",method:"delete",data:{id:t}})}const C=function({crudExpose:t,context:n}){return{crudOptions:{request:{pageRequest:async e=>await w(e),addRequest:async({form:e})=>await y(e),editRequest:async({form:e,row:r})=>(e.id=r.id,await u(e)),delRequest:async({row:e})=>await g(e.id)},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:i("dictionary:Update")},remove:{iconRight:"Delete",type:"text",show:i("dictionary:Delete")},custom:{text:"字典配置",type:"text",show:i("dictionary:Update"),tooltip:{placement:"top",content:"字典配置"},click:e=>{const{row:r}=e;n.subDictRef.value.drawer=!0,f(()=>{n.subDictRef.value.setSearchFormData({form:{parent:r.id}}),n.subDictRef.value.doRefresh()})}}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let r=e.index??1,s=t.crudBinding.value.pagination;return((s.currentPage??1)-1)*s.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},label:{title:"字典名称",search:{show:!0,component:{props:{clearable:!0}}},type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"字典名称必填项"}],component:{props:{clearable:!0},placeholder:"请输入字典名称"}}},value:{title:"字典编号",search:{disabled:!0,component:{props:{clearable:!0}}},type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"字典编号必填项"}],component:{props:{clearable:!0},placeholder:"请输入字典编号"},helper:{render(e){return m(h("el-alert"),{title:"使用方法:dictionary('字典编号')",type:"warning"},null)}}}},status:{title:"状态",search:{show:!0},type:"dict-radio",column:{minWidth:90,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(e=>()=>{u(e.row).then(r=>{d(r.msg)})})}},dict:c({data:p("button_status_bool")})},sort:{title:"排序",type:"number",column:{minWidth:80},form:{value:1}}}}}};export{C as createCrudOptions}; diff --git a/web/dist/assets/crud.Bj8U6YGH.js b/web/dist/assets/crud.Bj8U6YGH.js new file mode 100644 index 0000000000..2c5f55098b --- /dev/null +++ b/web/dist/assets/crud.Bj8U6YGH.js @@ -0,0 +1 @@ +import{r as s,m as l,n as p,s as m}from"./index.CkCcWuPb.js";import{d as h}from"./dictionary.CH8ZDdyo.js";import{a as n}from"./authFunction.Br9oRcVU.js";import"./vue.Cw4Y52yh.js";const o="/api/system/api_white_list/";function b(t){return s({url:o,method:"get",params:t})}function f(t){return s({url:o,method:"post",data:t})}function d(t){return s({url:o+t.id+"/",method:"put",data:t})}function w(t){return s({url:o+t+"/",method:"delete",data:{id:t}})}const P=function({crudExpose:t}){return{crudOptions:{request:{pageRequest:async e=>await b(e),addRequest:async({form:e})=>await f(e),editRequest:async({form:e,row:a})=>(e.id=a.id,await d(e)),delRequest:async({row:e})=>await w(e.id)},actionbar:{buttons:{add:{show:n("api_white_list:Create")}}},rowHandle:{fixed:"right",width:150,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:n("api_white_list:Update")},remove:{iconRight:"Delete",type:"text",show:n("api_white_list:Delete")}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let a=e.index??1,r=t.crudBinding.value.pagination;return((r.currentPage??1)-1)*r.pageSize+a+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},method:{title:"请求方式",sortable:"custom",search:{disabled:!1},type:"dict-select",dict:l({data:[{label:"GET",value:0},{label:"POST",value:1},{label:"PUT",value:2},{label:"DELETE",value:3},{label:"PATCH",value:4}]}),column:{minWidth:120},form:{rules:[{required:!0,message:"必填项"}],component:{span:12},itemProps:{class:{yxtInput:!0}}}},url:{title:"接口地址",sortable:"custom",search:{disabled:!0},type:"dict-select",dict:l({async getData(e){return s("/swagger.json").then(a=>{const r=Object.keys(a.paths),u=[];for(const c of r){const i={label:"",value:""};i.label=c,i.value=c,u.push(i)}return u})}}),column:{minWidth:200},form:{rules:[{required:!0,message:"必填项"}],component:{span:24,props:{allowCreate:!0,filterable:!0,clearable:!0}},itemProps:{class:{yxtInput:!0}},helper:{position:"label",tooltip:{placement:"top-start"},text:"请正确填写,以免请求时被拦截。匹配单例使用正则,例如:/api/xx/.*?/"}}},enable_datasource:{title:"数据权限认证",search:{disabled:!1},type:"dict-radio",column:{minWidth:120,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:p(e=>()=>{d(e.row).then(a=>{m(a.msg)})})}},dict:l({data:h("button_status_bool")})}}}}};export{P as createCrudOptions}; diff --git a/web/dist/assets/crud.BqLXCUBJ.js b/web/dist/assets/crud.BqLXCUBJ.js new file mode 100644 index 0000000000..49f19b0af9 --- /dev/null +++ b/web/dist/assets/crud.BqLXCUBJ.js @@ -0,0 +1 @@ +import{r as a,k as c}from"./index.CkCcWuPb.js";import{a as r}from"./authFunction.Br9oRcVU.js";import"./vue.Cw4Y52yh.js";const o="/api/CrudPatronAddressModelViewSet/";function p(e){return a({url:o,method:"get",params:e})}function m(e){return a({url:o,method:"post",data:e})}function h(e){return a({url:o+e.id+"/",method:"put",data:e})}function w(e){return a({url:o+e+"/",method:"delete",data:{id:e}})}function f(e){return c({url:o+"export_data/",params:e,method:"get"})}function q({crudExpose:e}){const d=async t=>await p(t),n=async({form:t,row:s})=>(s.id&&(t.id=s.id),await h(t)),u=async({row:t})=>await w(t.id),i=async({form:t})=>await m(t),l=async t=>await f(t);return{crudOptions:{request:{pageRequest:d,addRequest:i,editRequest:n,delRequest:u},actionbar:{buttons:{export:{show:r("CrudPatronAddressModelViewSet:Export"),text:"导出",title:"导出",click(){return l(e.getSearchFormData())}},add:{show:r("CrudPatronAddressModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:r("CrudPatronAddressModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("CrudPatronAddressModelViewSet:Update")},copy:{type:"text",order:3,show:r("CrudPatronAddressModelViewSet:Copy")},remove:{type:"text",order:4,show:r("CrudPatronAddressModelViewSet:Delete")}}},columns:{name:{title:"收件人名称",type:"input",search:{show:!0},column:{minWidth:60,sortable:"custom"},form:{rules:[{required:!0,message:"收件人名称必填"}],component:{placeholder:"请输入收件人名称"}}},mobile:{title:"手机号码",type:"input",search:{show:!0},column:{minWidth:50},form:{component:{placeholder:"请输入"},rules:[{required:!0,message:"手机号码必填"},{max:11,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}]}},address:{title:"收件地址",type:"textarea",search:{show:!0},column:{show:!1,minWidth:120,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入收件地址"}}},note:{title:"备注",type:"textarea",search:{show:!0},column:{show:!1,minWidth:120,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入备注"}}}}}}}export{q as default}; diff --git a/web/dist/assets/crud.C3GYL5gO.js b/web/dist/assets/crud.C3GYL5gO.js new file mode 100644 index 0000000000..27993c5c2f --- /dev/null +++ b/web/dist/assets/crud.C3GYL5gO.js @@ -0,0 +1 @@ +import{r as u,m as y,X as r}from"./index.CkCcWuPb.js";import{a as i}from"./authFunction.Br9oRcVU.js";import{D as v,P as x}from"./vue.Cw4Y52yh.js";const s="/api/system/column/";function D(t){return u({url:s,method:"get",params:t})}function q(t){return u({url:s,method:"post",data:t})}function R(t){return u({url:s+t.id+"/",method:"put",data:t})}function S(t){return u({url:s+t+"/",method:"delete",data:{id:t}})}function C(t){return u({url:s+"multiple_delete/",method:"delete",data:{keys:t}})}function M(){return u({url:"/api/system/column/get_models/",method:"get"})}const _=function({crudExpose:t,props:O,modelDialog:m,selectOptions:c,allModelData:k}){const p=async e=>{if(c.value.id)return await D({menu:c.value.id})},f=async({form:e,row:l})=>(e.id=l.id,await R(e)),h=async({row:e})=>await S(e.id),g=async({form:e})=>(e.menu=c.value.id,await q(e)),n=v([]),b=e=>{const o=t.getTableData().filter(a=>!e.includes(a));r.arrayEach(e,a=>{r.pluck(n.value,"id").includes(a.id)||(n.value=r.union(n.value,[a]))}),r.arrayEach(o,a=>{n.value=r.remove(n.value,d=>d.id!==a.id)})},w=()=>{const e=t.getBaseTableRef(),l=t.getTableData(),o=r.filter(l,a=>r.pluck(n.value,"id").includes(a.id));x(()=>{r.arrayEach(o,a=>{e.toggleRowSelection(a,!0)})})};return{selectedRows:n,crudOptions:{request:{pageRequest:p,addRequest:g,editRequest:f,delRequest:h},pagination:{show:!1},actionbar:{buttons:{add:{show:i("column:Create")},auto:{text:"自动匹配",type:"success",show:i("column:Match"),click:()=>m.value=!0}}},rowHandle:{fixed:"right",buttons:{view:{show:!1},edit:{show:i("column:Update")},remove:{show:i("column:Delete")}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},table:{rowKey:"id",onSelectionChange:b,onRefreshed:()=>w()},columns:{$checked:{title:"选择",form:{show:!1},column:{type:"selection",align:"center",width:"70px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let l=e.index??1,o=t.crudBinding.value.pagination;return((o.currentPage??1)-1)*o.pageSize+l+1}}},model:{title:"model",type:"dict-select",dict:y({url:"/api/system/column/get_models/",label:"title",value:"key"}),column:{sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{span:12,showSearch:!0,filterable:!0,filterOption(e,l){return l.label.indexOf(e)>=0||l.value.indexOf(e)>=0}}}},title:{title:"中文名",sortable:"custom",search:{show:!0},type:"text",form:{rules:[{required:!0,message:"必填项"}],component:{span:12,placeholder:"请输入中文名"}}},field_name:{title:"字段名",type:"text",search:{show:!0},column:{sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{span:12,placeholder:"请输入字段名"}}}}}}},P=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:_},Symbol.toStringTag,{value:"Module"}));export{C as B,P as a,_ as c,M as g}; diff --git a/web/dist/assets/crud.CFv1w-We.js b/web/dist/assets/crud.CFv1w-We.js new file mode 100644 index 0000000000..a9d8d50b26 --- /dev/null +++ b/web/dist/assets/crud.CFv1w-We.js @@ -0,0 +1 @@ +import{r as o,m as l}from"./index.CkCcWuPb.js";import{c as p}from"./commonCrud.CCkJYHLJ.js";const n="/api/system/login_log/";function c(e){return o({url:n,method:"get",params:e})}function a(e){return o({url:n,method:"post",data:e})}function u(e){return o({url:n+e.id+"/",method:"put",data:e})}function d(e){return o({url:n+e+"/",method:"delete",data:{id:e}})}function W(){return o({url:n+"field_permission/",method:"get"})}const m=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await c(t),addRequest:async({form:t})=>await a(t),editRequest:async({form:t,row:r})=>(t.id=r.id,await u(t)),delRequest:async({row:t})=>await d(t.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,i=e.crudBinding.value.pagination;return((i.currentPage??1)-1)*i.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"登录用户名",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录用户名"}}},ip:{title:"登录ip",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录ip"}}},isp:{title:"运营商",search:{disabled:!0},disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入运营商"}}},continent:{title:"大州",type:"input",column:{minWidth:90},form:{disabled:!0,component:{placeholder:"请输入大州"}},component:{props:{color:"auto"}}},country:{title:"国家",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入国家"}},component:{props:{color:"auto"}}},province:{title:"省份",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入省份"}},component:{props:{color:"auto"}}},city:{title:"城市",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入城市"}},component:{props:{color:"auto"}}},district:{title:"县区",key:"",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入县区"}},component:{props:{color:"auto"}}},area_code:{title:"区域代码",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入区域代码"}},component:{props:{color:"auto"}}},country_english:{title:"英文全称",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入英文全称"}},component:{props:{color:"auto"}}},country_code:{title:"简称",type:"input",column:{minWidth:100},form:{component:{placeholder:"请输入简称"}},component:{props:{color:"auto"}}},longitude:{title:"经度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入经度"}},component:{props:{color:"auto"}}},latitude:{title:"纬度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入纬度"}},component:{props:{color:"auto"}}},login_type:{title:"登录类型",type:"dict-select",search:{disabled:!1},dict:l({data:[{label:"普通登录",value:1},{label:"微信扫码登录",value:2}]}),column:{minWidth:120},form:{component:{placeholder:"请选择登录类型"}}},os:{title:"操作系统",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入操作系统"}}},browser:{title:"浏览器名",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入浏览器名"}}},agent:{title:"agent信息",disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入agent信息"}}},...p({create_datetime:{search:!0}})}}}},w=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:m},Symbol.toStringTag,{value:"Module"}));export{W as G,w as a,m as c}; diff --git a/web/dist/assets/crud.CXN7XRtA.js b/web/dist/assets/crud.CXN7XRtA.js new file mode 100644 index 0000000000..937e6cf5d7 --- /dev/null +++ b/web/dist/assets/crud.CXN7XRtA.js @@ -0,0 +1 @@ +import{r as l,B as b,m as y}from"./index.CkCcWuPb.js";import{c as g}from"./commonCrud.CCkJYHLJ.js";import{w,D as s,H as _,aA as W,$ as x,y as q,I as C,F as R}from"./vue.Cw4Y52yh.js";import{_ as V}from"./_plugin-vue_export-helper.DlAUqK2U.js";const h="/api/system/login_log/";function B(e){return l({url:h,method:"get",params:e})}function O(e){return l({url:h,method:"post",data:e})}function k(e){return l({url:h+e.id+"/",method:"put",data:e})}function D(e){return l({url:h+e+"/",method:"delete",data:{id:e}})}const I=w({__name:"index",props:{dict:{type:Array,required:!0},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:u}){const o=e,f=u;s([]);const a=s(),p=s([]),c=s({label:"label",value:"value"});_(()=>o.modelValue,n=>{l({url:o.dict.url,params:{id:o.modelValue}}).then(m=>{const i=m.data;console.log(i),i&&i.length===1?a.value=i[0][c.value.label]:a.value=null})},{immediate:!0});const{ui:t}=b(),r=t.formItem.injectFormItemContext();function d(n){f("update:modelValue",n),a.value=n,r.onChange(),r.onBlur()}return o.dict.url instanceof Function?l(o.dict.url).then(n=>{p.value=n.data}):(c.value.label=o.dict.label,c.value.value=o.dict.value,l({url:o.dict.url}).then(n=>{p.value=n.data})),(n,m)=>{const i=W("el-select-v2");return q(),x(i,{modelValue:a.value,"onUpdate:modelValue":m[0]||(m[0]=v=>a.value=v),options:p.value,style:{width:"100%"},clearable:!0,props:c.value,onChange:d},null,8,["modelValue","options","props"])}}}),j=V(I,[["__scopeId","data-v-d3d07a23"]]),H=function({crudExpose:e,isEcharts:u,initChart:o}){return{crudOptions:{request:{pageRequest:async t=>await B(t),addRequest:async({form:t})=>await O(t),editRequest:async({form:t,row:r})=>(t.id=r.id,await k(t)),delRequest:async({row:t})=>await D(t.id)},actionbar:{buttons:{add:{show:!0},showEcharts:{type:"warning",text:R(()=>u.value?"隐藏图表":"显示图表"),click:()=>{u.value=!u.value}}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,d=e.crudBinding.value.pagination;return((d.currentPage??1)-1)*d.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"测试自定义组件",dict:y({url({form:t}){return"/api/system/role/"},label:"name",value:"id"}),form:{component:{name:C(j)}}},ip:{title:"登录ip",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录ip"}}},isp:{title:"运营商",search:{disabled:!0},disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入运营商"}}},continent:{title:"大州",type:"input",column:{minWidth:90},form:{disabled:!0,component:{placeholder:"请输入大州"}},component:{props:{color:"auto"}}},country:{title:"国家",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入国家"}},component:{props:{color:"auto"}}},province:{title:"省份",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入省份"}},component:{props:{color:"auto"}}},city:{title:"城市",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入城市"}},component:{props:{color:"auto"}}},district:{title:"县区",key:"",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入县区"}},component:{props:{color:"auto"}}},area_code:{title:"区域代码",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入区域代码"}},component:{props:{color:"auto"}}},country_english:{title:"英文全称",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入英文全称"}},component:{props:{color:"auto"}}},country_code:{title:"简称",type:"input",column:{minWidth:100},form:{component:{placeholder:"请输入简称"}},component:{props:{color:"auto"}}},longitude:{title:"经度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入经度"}},component:{props:{color:"auto"}}},latitude:{title:"纬度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入纬度"}},component:{props:{color:"auto"}}},login_type:{title:"登录类型",type:"dict-select",search:{disabled:!1},dict:y({data:[{label:"普通登录",value:1},{label:"微信扫码登录",value:2}]}),column:{minWidth:120},form:{component:{placeholder:"请选择登录类型"}}},os:{title:"操作系统",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入操作系统"}}},browser:{title:"浏览器名",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入浏览器名"}}},agent:{title:"agent信息",disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入agent信息"}}},...g({create_datetime:{search:!0}})}}}};export{H as createCrudOptions}; diff --git a/web/dist/assets/crud.CXcyYhx9.js b/web/dist/assets/crud.CXcyYhx9.js new file mode 100644 index 0000000000..0965d39397 --- /dev/null +++ b/web/dist/assets/crud.CXcyYhx9.js @@ -0,0 +1 @@ +import{r as o}from"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";const r="/api/system/operation_log/";function i(e){return o({url:r,method:"get",params:e})}function s(e){return o({url:r,method:"post",data:e})}function d(e){return o({url:r+e.id+"/",method:"put",data:e})}function l(e){return o({url:r+e+"/",method:"delete",data:{id:e}})}const b=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await i(t),addRequest:async({form:t})=>await s(t),editRequest:async({form:t,row:n})=>(t.id=n.id,await d(t)),delRequest:async({row:t})=>await l(t.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let n=t.index??1,a=e.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+n+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},request_modular:{title:"请求模块",search:{disabled:!1},type:"input",column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入请求模块"}}},request_path:{title:"请求地址",search:{disabled:!1},type:"input",column:{minWidth:200},form:{disabled:!0,component:{placeholder:"请输入请求地址"}}},request_body:{column:{showOverflowTooltip:!0,width:200,minWidth:100},title:"请求参数",search:{disabled:!0},disabled:!0,type:"textarea",form:{component:{props:{type:"textarea"},autosize:{minRows:2,maxRows:8},placeholder:"请输入关键词"}}},request_method:{title:"请求方法",type:"input",search:{disabled:!1},column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入请求方法"}},component:{props:{color:"auto"}}},request_msg:{title:"操作说明",disabled:!0,form:{component:{span:12}}},request_ip:{title:"IP地址",search:{disabled:!1},type:"input",column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入IP地址"}},component:{props:{color:"auto"}}},request_browser:{title:"请求浏览器",type:"input",column:{minWidth:120},form:{disabled:!0},component:{props:{color:"auto"}}},response_code:{title:"响应码",search:{disabled:!0},type:"input",column:{minWidth:100},form:{disabled:!0},component:{props:{color:"auto"}}},request_os:{title:"操作系统",disabled:!0,search:{disabled:!0},type:"input",column:{minWidth:120},form:{disabled:!0},component:{props:{color:"auto"}}},json_result:{title:"返回信息",search:{disabled:!0},type:"input",column:{minWidth:150},form:{disabled:!0},component:{props:{color:"auto"}}},creator_name:{title:"操作人",column:{minWidth:100},form:{disabled:!0}}}}}};export{b as createCrudOptions}; diff --git a/web/dist/assets/crud.C_P-uSI6.js b/web/dist/assets/crud.C_P-uSI6.js new file mode 100644 index 0000000000..51de7bcd92 --- /dev/null +++ b/web/dist/assets/crud.C_P-uSI6.js @@ -0,0 +1 @@ +import{C as o}from"./vue.Cw4Y52yh.js";function n({crudExpose:t}){const{crudBinding:s}=t,a=o("get:scope"),{index:r,row:l,form:i,mode:e}=a();return{crudOptions:{actionbar:{buttons:{add:{show:!1},addRow:{show:e!="view"}}},search:{show:!1},toolbar:{show:!1,buttons:{refresh:{show:!1},search:{show:!1}}},table:{editable:{enabled:!1,mode:"free",showAction:!1,activeDefault:!0}},pagination:{show:!1,pageSize:9999999},columns:{name:{title:"收件人名称",type:"text",column:{minWidth:50},form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{required:!0,message:"收件人名称必填项"}]}},mobile:{title:"手机号码",type:"text",column:{minWidth:50},form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{max:11,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}]}},address:{title:"收件地址",type:"textarea",form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{required:!0,message:"收件地址必填项"}]}},note:{title:"备注",type:"textarea",form:{component:{placeholder:"请输入",disabled:e=="view"}}}},rowHandle:{fixed:"right",width:90,show:e!="view"}}}}export{n as default}; diff --git a/web/dist/assets/crud.ChSkQb0R.js b/web/dist/assets/crud.ChSkQb0R.js new file mode 100644 index 0000000000..aa6377b601 --- /dev/null +++ b/web/dist/assets/crud.ChSkQb0R.js @@ -0,0 +1 @@ +import{r as c,k as w,p as u,m as a,f as s}from"./index.CkCcWuPb.js";import y from"./index.B4YvKwUk.js";import{a as o}from"./authFunction.Br9oRcVU.js";import{d as n}from"./dictionary.CH8ZDdyo.js";import"./vue.Cw4Y52yh.js";import"./crud.C_P-uSI6.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const l="/api/CrudPatronModelViewSet/";function g(t){return c({url:l,method:"get",params:t})}function b(t){return c({url:l,method:"post",data:t})}function x(t){return c({url:l+t.id+"/",method:"put",data:t})}function q(t){return c({url:l+t+"/",method:"delete",data:{id:t}})}function v(t){return w({url:l+"export_data/",params:t,method:"get"})}function O({crudExpose:t}){const p=async e=>await g(e),d=async({form:e,row:r})=>(r.id&&(e.id=r.id),await x(e)),m=async({row:e})=>await q(e.id),h=async({form:e})=>await b(e),f=async e=>await v(e);return console.log(123123,t),{crudOptions:{request:{pageRequest:p,addRequest:h,editRequest:d,delRequest:m},actionbar:{buttons:{export:{show:o("CrudPatronModelViewSet:Export"),text:"导出",title:"导出",click(){return f(t.getSearchFormData())}},add:{show:o("CrudPatronModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,align:"center",buttons:{view:{type:"text",order:1,show:o("CrudPatronModelViewSet:Retrieve")},edit:{type:"text",order:2,show:o("CrudPatronModelViewSet:Update")},copy:{type:"text",order:3,show:o("CrudPatronModelViewSet:Copy")},remove:{type:"text",order:4,show:o("CrudPatronModelViewSet:Delete")}}},columns:{username:{title:"客户名称",type:"text",search:{show:!0,component:{placeholder:"请输入客户名称"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入客户名称"}}},open_order_name:{title:"开单名称",type:"text",search:{show:!0,component:{placeholder:"请输入开单名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"开单名称必填"}],component:{placeholder:"请输入开单名称"}}},phone:{title:"联系电话",type:"text",search:{show:!0,component:{placeholder:"请输入联系电话"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入联系电话"}}},email:{title:"邮箱",type:"text",search:{show:!0,component:{placeholder:"请输入邮箱地址"}},column:{sortable:"custom"},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},age:{title:"年龄",type:"number",column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入客户年龄"}}},sex:{title:"性别",type:"dict-radio",search:{show:!0,component:{placeholder:"请选择性别"}},column:{sortable:"custom"},dict:a({data:n("gender")}),form:{value:1,component:{optionName:"el-radio"}},component:{props:{color:"auto"}}},my_remark:{title:"我方备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入我方备注"}}},tags:{title:"客户标签",search:{show:!1,component:{props:{name:"fs-dict-select",clearable:!0}}},type:"dict-select",dict:a({value:"id",label:"label",data:n("patron_tag")}),form:{rules:[{required:!1}],component:{multiple:!0,filterable:!0,placeholder:"请选择标签"}},component:{props:{color:"auto"}}},express:{title:"默认物流",search:{show:!0},type:"dict-select",dict:a({data:n("express")}),form:{rules:[{required:!1}],component:{placeholder:"请输入默认物流"}},component:{props:{color:"auto"}}},salesman:{title:"业务员",search:{show:!1},type:"dict-select",dict:a({url:"/api/system/user/",value:"id",label:"name"}),form:{component:{multiple:!0,filterable:!0,placeholder:"请选择业务员"}},component:{props:{color:"auto"}}},hierarchy:{title:"客户等级",search:{show:!0,component:{placeholder:"请选择客户等级"}},type:["dict-radio","colspan"],dict:a({data:n("patron")}),form:{value:0,component:{optionName:"el-radio-button"}},component:{props:{color:"auto"}}},images:{title:"照片墙",type:"image-uploader",form:{component:{limit:10,uploader:{type:"form"}},valueBuilder(e){e.form.images.forEach((r,i)=>{e.form.images[i]=s(r)})},rules:u([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最多可上传10个图片"},column:{component:{async buildUrl(e){return s(e)},async buildPreviewUrl({url:e,index:r}){return e+"?preview=600x600"}}}},files:{title:"上传附件",type:"file-uploader",form:{component:{limit:5,uploader:{type:"form"},accept:".pdf,.csv,.doc,.docx,.xls,.xlsx,.mp4,.zip,.7z,.rar"},valueBuilder(e){e.form.files.forEach((r,i)=>{e.form.files[i]=s(r)})},rules:u([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最大可上传5个文件"},column:{show:!1,component:{async buildUrl(e){return s(e)}}}},addressee:{title:"收件人信息",type:"text",form:{component:{name:y,vModel:"modelValue",readonly:!0},col:{span:24}},column:{show:!1,formatter:({row:e})=>{var r;return((r=e.addressee)==null?void 0:r.length)+"条数据"}}}},form:{display:"flex",wrapper:{width:"80%"},async beforeSubmit(){var r;if(await((r=t.getFormComponentRef("addressee"))==null?void 0:r.validate())!==!0)return!1}},toolbar:{buttons:{export:{show:!0}}}}}}export{O as default}; diff --git a/web/dist/assets/crud.DBHnuhcJ.js b/web/dist/assets/crud.DBHnuhcJ.js new file mode 100644 index 0000000000..b9c1d01075 --- /dev/null +++ b/web/dist/assets/crud.DBHnuhcJ.js @@ -0,0 +1 @@ +import{r as a,m as o,n as p,s as m}from"./index.CkCcWuPb.js";import{d as i}from"./dictionary.CH8ZDdyo.js";import{a as u}from"./authFunction.Br9oRcVU.js";const l="/api/system/user/";function c(t){return a({url:l,method:"get",params:t})}function h(t){return a({url:l,method:"post",data:t})}function n(t){return a({url:l+t.id+"/",method:"put",data:t})}function f(t){return a({url:l+t+"/",method:"delete",data:{id:t}})}function O(t,e){return a({url:`/api/system/dept/dept_info/?dept_id=${t}&show_all=${e}`,method:"get"})}function D(t,e){return a({url:`/api/system/user/${t}/reset_password/`,method:"put",data:e})}const w=function({crudExpose:t,context:e}){return{crudOptions:{table:{remove:{confirmMessage:"是否删除该用户?"}},request:{pageRequest:async r=>{const s=e!=null&&e.isShowChildFlag.value?"1":"0";return await c({...r,show_all:s})},addRequest:async({form:r})=>{const s=await h(r);return e==null||e.getDeptInfo(),s},editRequest:async({form:r,row:s})=>(r.id=s.id,await n(r)),delRequest:async({row:r})=>{const s=await f(r.id);return e==null||e.getDeptInfo(),s}},search:{container:{layout:"multi-line",action:{col:{span:10}}}},rowHandle:{fixed:"right",width:250,buttons:{view:{show:!1},edit:{show:u("user:Update")},remove:{show:u("user:Delete")},custom:{text:"重设密码",type:"primary",show:u("user:ResetPassword"),tooltip:{placement:"top",content:"重设密码"},click:r=>e==null?void 0:e.handleResetPwdOpen(r.row)}}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"账号",type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"账号必填项"}],component:{placeholder:"请输入账号"}}},password:{title:"密码",type:"input",column:{show:!1},editForm:{show:!1},form:{rules:[{required:!0,message:"密码必填项"}],component:{span:12,showPassword:!0,placeholder:"请输入密码"}}},name:{title:"姓名",type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"姓名必填项"}],component:{span:12,placeholder:"请输入姓名"}}},dept:{title:"部门",type:"dict-tree",dict:o({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"}),column:{minWidth:200,formatter({value:r,row:s,index:d}){return s.dept_name_all}},form:{rules:[{required:!0,message:"必填项"}],component:{filterable:!0,placeholder:"请选择",props:{props:{value:"id",label:"name"}}}}},role:{title:"角色",type:"dict-select",search:{show:!0},form:{rules:[{required:!0,message:"必填项"}],component:{multiple:!0,filterable:!0,placeholder:"请选择角色"}},dict:o({url:"/api/system/role/",value:"id",label:"name"}),column:{minWidth:200}},mobile:{title:"手机号码",type:"input",column:{minWidth:120},form:{rules:[{max:20,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}],component:{placeholder:"请输入手机号码"}}},email:{title:"邮箱",column:{width:260},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},gender:{title:"性别",type:"dict-select",dict:o({data:i("gender")}),form:{value:1,component:{span:12}},component:{props:{color:"auto"}}},user_type:{title:"用户类型",search:{show:!0},type:"dict-select",dict:o({data:i("user_type")}),column:{minWidth:100},form:{show:!1,value:0,component:{span:12}}},is_active:{title:"锁定",search:{show:!0},type:"dict-radio",column:{component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:p(r=>()=>{n(r.row).then(s=>{m(s.msg)})})}},dict:o({data:i("button_status_bool")})},avatar:{title:"头像",type:"avatar-uploader",form:{show:!1},column:{width:100,showOverflowTooltip:!0}}}}}},P=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:w},Symbol.toStringTag,{value:"Module"}));export{P as a,w as c,O as g,D as r}; diff --git a/web/dist/assets/crud.DdutpvhZ.js b/web/dist/assets/crud.DdutpvhZ.js new file mode 100644 index 0000000000..817ea45b75 --- /dev/null +++ b/web/dist/assets/crud.DdutpvhZ.js @@ -0,0 +1 @@ +import{r as s,m,E as v,t as D,X as u}from"./index.CkCcWuPb.js";import{a as d}from"./authFunction.Br9oRcVU.js";import{D as A,a7 as p,aA as h,P as B}from"./vue.Cw4Y52yh.js";const i="/api/system/menu_button/";function F(e){return s({url:i,method:"get",params:e})}function O(e){return s({url:i,method:"post",data:e})}function R(e){return s({url:i+e.id+"/",method:"put",data:e})}function q(e){return s({url:i+e+"/",method:"delete",data:{id:e}})}function x(e){return s({url:i+"batch_create/",method:"post",data:e})}function j(e){return s({url:i+"multiple_delete/",method:"delete",data:{keys:e}})}const C=function({crudExpose:e,context:c}){const f=async()=>{if(c.selectOptions.value.id)return await F({menu:c.selectOptions.value.id})},w=async({form:t,row:n})=>await R({...t,menu:n.menu}),b=async({row:t})=>await q(t.id),g=async({form:t})=>await O({...t,menu:c.selectOptions.value.id}),r=A([]),y=t=>{const o=e.getTableData().filter(a=>!t.includes(a));u.arrayEach(t,a=>{u.pluck(r.value,"id").includes(a.id)||(r.value=u.union(r.value,[a]))}),u.arrayEach(o,a=>{r.value=u.remove(r.value,l=>l.id!==a.id)})},E=()=>{const t=e.getBaseTableRef(),n=e.getTableData(),o=u.filter(n,a=>u.pluck(r.value,"id").includes(a.id));B(()=>{u.arrayEach(o,a=>{t.toggleRowSelection(a,!0)})})};return{selectedRows:r,crudOptions:{pagination:{show:!1},search:{container:{action:{col:{span:8}}}},actionbar:{buttons:{add:{show:d("btn:Create")},batchAdd:{show:!0,type:"primary",text:"批量生成",click:async()=>{if(c.selectOptions.value.id==null){v.error("请选择菜单");return}const t=await x({menu:c.selectOptions.value.id});t.code==2e3&&(D(t.msg),e.doRefresh())}}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{icon:"",type:"primary",show:d("btn:Update")},remove:{show:d("btn:Delete")}}},request:{pageRequest:f,addRequest:g,editRequest:w,delRequest:b},table:{rowKey:"id",onSelectionChange:y,onRefreshed:()=>E()},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{$checked:{title:"选择",form:{show:!1},column:{type:"selection",align:"center",width:"70px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},search:{title:"关键词",column:{show:!1},type:"text",search:{show:!0},form:{show:!1,component:{placeholder:"输入关键词搜索"}}},id:{title:"ID",type:"text",column:{show:!1},search:{show:!1},form:{show:!1}},name:{title:"权限名称",type:"text",search:{show:!0},column:{minWidth:120,sortable:!0},form:{rules:[{required:!0,message:"权限名称必填"}],component:{placeholder:"输入权限名称",props:{clearable:!0,allowCreate:!0,filterable:!0}},helper:{render(){return p(h("el-alert"),{title:"手动输入",type:"warning",description:"页面中按钮的名称或者自定义一个名称"},null)}}}},value:{title:"权限值",type:"text",search:{show:!1},column:{width:200,sortable:!0},form:{rules:[{required:!0,message:"权限标识必填"}],placeholder:"输入权限标识",helper:{render(){return p(h("el-alert"),{title:"唯一值",type:"warning",description:"用于判断前端按钮权限或接口权限"},null)}}}},method:{title:"请求方式",search:{show:!1},type:"dict-select",column:{width:120,sortable:!0},dict:m({data:[{label:"GET",value:0},{label:"POST",value:1,color:"success"},{label:"PUT",value:2,color:"warning"},{label:"DELETE",value:3,color:"danger"}]}),form:{rules:[{required:!0,message:"必填项"}]}},api:{title:"接口地址",search:{show:!1},type:"dict-select",dict:m({getData(){return s({url:"/swagger.json"}).then(t=>{const n=Object.keys(t.paths),o=[];for(const a of n){const l={};l.label=a,l.value=a,o.push(l)}return o})}}),column:{minWidth:250,sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{props:{allowCreate:!0,filterable:!0,clearable:!0}},helper:{render(){return p(h("el-alert"),{title:"请正确填写,以免请求时被拦截。匹配单例使用正则,例如:/api/xx/.*?/",type:"warning"},null)}}}}}}}},k=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:C},Symbol.toStringTag,{value:"Module"}));export{j as B,k as a,C as c}; diff --git a/web/dist/assets/crud.Dl7qlUZf.js b/web/dist/assets/crud.Dl7qlUZf.js new file mode 100644 index 0000000000..b55cb1bb2e --- /dev/null +++ b/web/dist/assets/crud.Dl7qlUZf.js @@ -0,0 +1 @@ +import{r as a,m as n,f as s}from"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";const l="/api/system/file/";function u(t){return a({url:l,method:"get",params:t})}function d(t){return a({url:l,method:"post",data:t})}function c(t){return a({url:l+t.id+"/",method:"put",data:t})}function m(t){return a({url:l+t+"/",method:"delete",data:{id:t}})}const g=function({crudExpose:t,context:r}){return{crudOptions:{actionbar:{buttons:{add:{show:!0,click:()=>{var e;return(e=r.openAddHandle)==null?void 0:e.call(r)}}}},request:{pageRequest:async e=>await u(e),addRequest:async({form:e})=>await d(e),editRequest:async({form:e,row:i})=>(e.id=i.id,await c(e)),delRequest:async({row:e})=>await m(e.id)},tabs:{show:!0,name:"file_type",type:"",options:[{value:0,label:"图片"},{value:1,label:"视频"},{value:2,label:"音频"},{value:3,label:"其他"}]},rowHandle:{fixed:"right",width:200,show:!1,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text"},remove:{iconRight:"Delete",type:"text"}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let i=e.index??1,o=t.crudBinding.value.pagination;return((o.currentPage??1)-1)*o.pageSize+i+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},name:{title:"文件名称",search:{show:!0},type:"input",column:{minWidth:200},form:{component:{placeholder:"请输入文件名称",clearable:!0}}},preview:{title:"预览",column:{minWidth:120,align:"center"},form:{show:!1}},url:{title:"文件地址",type:"file-uploader",search:{disabled:!0},column:{minWidth:360,component:{async buildUrl(e){return s(e)}}}},md5sum:{title:"文件MD5",search:{disabled:!0},column:{minWidth:300},form:{disabled:!1}},mime_type:{title:"文件类型",type:"input",form:{show:!1},column:{minWidth:160}},file_type:{title:"文件类型",type:"dict-select",dict:n({data:[{label:"图片",value:0,color:"success"},{label:"视频",value:1,color:"warning"},{label:"音频",value:2,color:"danger"},{label:"其他",value:3,color:"primary"}]}),column:{show:!1},search:{show:!0},form:{show:!1,component:{placeholder:"请选择文件类型"}}},size:{title:"文件大小",column:{minWidth:120},form:{show:!1}},upload_method:{title:"上传方式",type:"dict-select",dict:n({data:[{label:"默认上传",value:0,color:"primary"},{label:"文件选择器上传",value:1,color:"warning"}]}),column:{minWidth:140},search:{show:!0}},create_datetime:{title:"创建时间",column:{minWidth:160},form:{show:!1}}}}}};export{g as createCrudOptions}; diff --git a/web/dist/assets/crud.DqhsfUWs.js b/web/dist/assets/crud.DqhsfUWs.js new file mode 100644 index 0000000000..10708898d6 --- /dev/null +++ b/web/dist/assets/crud.DqhsfUWs.js @@ -0,0 +1 @@ +import{r,m as f,n as l,s as w}from"./index.CkCcWuPb.js";import{d as y}from"./dictionary.CH8ZDdyo.js";import{a as n}from"./authFunction.Br9oRcVU.js";import{t as b}from"./index.CvWHgkGx.js";import{I as g}from"./vue.Cw4Y52yh.js";const o="/api/system/area/";function x(t){return r({url:o,method:"get",params:t})}function C(t){return r({url:o,method:"post",data:t})}function d(t){return r({url:o+t.id+"/",method:"put",data:t})}function _(t){return r({url:o+t+"/",method:"delete",data:{id:t}})}function j(){return r({url:o+"field_permission/",method:"get"})}const q=function({crudExpose:t}){const i=async e=>await x(e),u=async({form:e,row:a})=>(e.id=a.id,await d(e)),c=async({row:e})=>await _(e.id),h=async({form:e})=>await C(e),s=(e,a,m)=>{i({pcode:e.code}).then(p=>{m(p.data)})};return{crudOptions:{request:{pageRequest:i,addRequest:h,editRequest:u,delRequest:c},actionbar:{buttons:{add:{show:n("area:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:n("area:Update")},remove:{iconRight:"Delete",type:"text",show:n("area:Delete")}}},pagination:{show:!1},table:{rowKey:"id",lazy:!0,load:s,treeProps:{children:"children",hasChildren:"hasChild"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},name:{title:"名称",search:{show:!0},treeNode:!0,type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"名称必填项"}],component:{placeholder:"请输入名称"}}},pcode:{title:"父级地区",search:{disabled:!0},width:130,type:"table-selector",form:{component:{name:g(b),vModel:"modelValue",displayLabel:l(({row:e})=>e?e.pcode_info:null),tableConfig:{url:"/api/system/area/",label:"name",value:"id",isTree:!0,isMultiple:!1,lazy:!0,load:s,treeProps:{children:"children",hasChildren:"hasChild"},columns:[{prop:"name",label:"地区",width:150},{prop:"code",label:"地区编码"}]}}},column:{show:!1}},code:{title:"地区编码",search:{show:!0},type:"input",column:{minWidth:90},form:{rules:[{required:!0,message:"地区编码必填项"}],component:{placeholder:"请输入地区编码"}}},enable:{title:"是否启用",search:{show:!0},type:"dict-radio",column:{minWidth:90,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(e=>()=>{d(e.row).then(a=>{w(a.msg)})})}},dict:f({data:y("button_status_bool")})}}}}},D=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:q},Symbol.toStringTag,{value:"Module"}));export{j as G,D as a,q as c}; diff --git a/web/dist/assets/crud.DzuWahSU.css b/web/dist/assets/crud.DzuWahSU.css new file mode 100644 index 0000000000..05fa2045c3 --- /dev/null +++ b/web/dist/assets/crud.DzuWahSU.css @@ -0,0 +1 @@ +.el-select .el-input__wrapper .el-input__inner[data-v-d3d07a23]::-moz-placeholder{color:#0d84ff}.el-select .el-input__wrapper .el-input__inner[data-v-d3d07a23]::placeholder{color:#0d84ff}.el-select-v2 .el-select-v2__wrapper .el-select-v2__placeholder.is-transparent[data-v-d3d07a23]{color:#0d84ff} diff --git a/web/dist/assets/crud.FaW-C1Tj.js b/web/dist/assets/crud.FaW-C1Tj.js new file mode 100644 index 0000000000..9749480f61 --- /dev/null +++ b/web/dist/assets/crud.FaW-C1Tj.js @@ -0,0 +1 @@ +import{r as d,m as b,X as a}from"./index.CkCcWuPb.js";import{a as u}from"./authFunction.Br9oRcVU.js";import{D as v,P as c}from"./vue.Cw4Y52yh.js";function R(t){return t.authorized=1,d({url:"/api/system/role/get_role_users/",method:"get",params:t})}function y(t,n){return d({url:`/api/system/role/${t}/remove_role_user/`,method:"delete",data:{user_id:n}})}const _=function({crudExpose:t,context:n}){const f=async e=>await R(e),m=async({form:e,row:l})=>{},h=async({row:e})=>await y(t.crudRef.value.getSearchFormData().role_id,[e.id]),p=async({form:e})=>{},o=v([]),g=e=>{const s=t.getTableData().filter(r=>!e.includes(r));a.arrayEach(e,r=>{a.pluck(o.value,"id").includes(r.id)||(o.value=a.union(o.value,[r]))}),a.arrayEach(s,r=>{o.value=a.remove(o.value,i=>i.id!==r.id)})},w=()=>{const e=t.getBaseTableRef(),l=t.getTableData(),s=a.filter(l,r=>a.pluck(o.value,"id").includes(r.id));c(()=>{a.arrayEach(s,r=>{e.toggleRowSelection(r,!0)})})};return{selectedRows:o,crudOptions:{request:{pageRequest:f,addRequest:p,editRequest:m,delRequest:h},actionbar:{buttons:{add:{show:u("role:AuthorizedAdd"),click:e=>{n.subUserRef.value.dialog=!0,c(()=>{n.subUserRef.value.setSearchFormData({form:{role_id:t.crudRef.value.getSearchFormData().role_id}}),n.subUserRef.value.doRefresh()})}}}},rowHandle:{fixed:"left",width:120,show:u("role:AuthorizedDel"),buttons:{view:{show:!1},edit:{show:!1},remove:{iconRight:"Delete",show:!0}}},table:{rowKey:"id",onSelectionChange:g,onRefreshed:()=>w()},columns:{$checked:{title:"选择",form:{show:!1},column:{show:u("role:AuthorizedDel"),type:"selection",align:"center",width:"55px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let l=e.index??1,s=t.crudBinding.value.pagination;return((s.currentPage??1)-1)*s.pageSize+l+1}}},name:{title:"用户名",search:{show:!0,component:{props:{clearable:!0}}},type:"text",form:{show:!1}},dept:{title:"部门",show:!0,type:"dict-tree",column:{name:"text",formatter({value:e,row:l,index:s}){return l.dept__name}},search:{show:!0,disabled:!0,col:{span:6},component:{multiple:!1,props:{checkStrictly:!0,clearable:!0,filterable:!0}}},form:{show:!1},dict:b({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"})}}}}},k=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:_},Symbol.toStringTag,{value:"Module"}));export{k as a,_ as c,y as r}; diff --git a/web/dist/assets/crud.QVkmZ2MD.js b/web/dist/assets/crud.QVkmZ2MD.js new file mode 100644 index 0000000000..48311e7e65 --- /dev/null +++ b/web/dist/assets/crud.QVkmZ2MD.js @@ -0,0 +1 @@ +import{r as o,Y as V,m as w}from"./index.CkCcWuPb.js";import{t as b}from"./index.CvWHgkGx.js";import{w as q,D as x,H as C,aA as M,x as _,y as h,a6 as R,aq as L,$ as O,a0 as k,a4 as A,a5 as D,F as v,I as n}from"./vue.Cw4Y52yh.js";import{_ as S}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{a as g}from"./authFunction.Br9oRcVU.js";const s="/api/system/message_center/";function T(t){return o({url:s,method:"get",params:t})}function j(t){return o({url:s+t+"/",method:"get"})}function B(t){return o({url:s+"get_self_receive/",method:"get",params:t})}function F(t){return o({url:s,method:"post",data:t})}function G(t){return o({url:s+t.id+"/",method:"put",data:t})}function I(t){return o({url:s+t+"/",method:"delete",data:{id:t}})}const H=q({__name:"index",props:{modelValue:Array,bindValue:Array,displayLabel:{type:String,default:""}},setup(t){const c=t,r=x();C(()=>c.bindValue,u=>{const{displayLabel:p}=c,i=u?u.map(d=>d[p]):null;r.value=i},{immediate:!0});const m=["success","info","warning","danger"],f=()=>m[Math.floor(Math.random()*m.length)];return(u,p)=>{const i=M("el-tag");return h(),_("div",null,[(h(!0),_(R,null,L(r.value,(d,e)=>(h(),O(i,{class:"many-to-many-tag",type:f,key:e},{default:k(()=>[A(D(d),1)]),_:2},1024))),128))])}}}),y=S(H,[["__scopeId","data-v-0838bf04"]]),{compute:a}=V();function $({crudExpose:t,context:c}){const{tabActivted:r}=c,m=async e=>r.value==="receive"?await B(e):await T(e),f=async({form:e,row:l})=>(e.id=l.id,await G(e)),u=async({row:e})=>await I(e.id),p=async({form:e})=>await F(e),i=async({row:e})=>await j(e.id),d=v(()=>r.value==="receive");return{crudOptions:{request:{pageRequest:m,addRequest:p,editRequest:f,delRequest:u},actionbar:{buttons:{add:{show:v(()=>r.value!=="receive"&&g("messageCenter:Create"))}}},rowHandle:{fixed:"right",width:150,buttons:{edit:{show:!1},view:{text:"查看",type:"text",iconRight:"View",show:g("messageCenter:Search"),click({index:e,row:l}){t.openView({index:e,row:l}),r.value==="receive"&&(i({row:l}),t.doRefresh())}},remove:{iconRight:"Delete",type:"text",show:g("messageCenter:Delete")}}},columns:{id:{title:"id",form:{show:!1}},title:{title:"标题",search:{show:!0},type:["text","colspan"],column:{minWidth:120},form:{rules:[{required:!0,message:"必填项"}],component:{span:24,placeholder:"请输入标题"}}},is_read:{title:"是否已读",type:"dict-select",column:{show:d.value},dict:w({data:[{label:"已读",value:!0,color:"success"},{label:"未读",value:!1,color:"danger"}]}),form:{show:!1}},target_type:{title:"目标类型",type:["dict-radio","colspan"],column:{minWidth:120},dict:w({data:[{value:0,label:"按用户"},{value:1,label:"按角色"},{value:2,label:"按部门"},{value:3,label:"通知公告"}]}),form:{component:{optionName:"el-radio-button"},rules:[{required:!0,message:"必选项",trigger:["blur","change"]}]}},target_user:{title:"目标用户",search:{disabled:!0},form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({row:e})=>e?e.user_info:null),tableConfig:{url:"/api/system/user/",label:"name",value:"id",isMultiple:!0,columns:[{prop:"name",label:"用户名称",width:120},{prop:"phone",label:"用户电话",width:120}]}},show:a(({form:e})=>e.target_type===0),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.user_info),displayLabel:"name"}}},target_role:{title:"目标角色",search:{disabled:!0},width:130,form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({row:e})=>e?e.role_info:null),tableConfig:{url:"/api/system/role/",label:"name",value:"id",isMultiple:!0,columns:[{prop:"name",label:"角色名称"},{prop:"key",label:"权限标识"}]}},show:a(({form:e})=>e.target_type===1),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.role_info),displayLabel:"name"}}},target_dept:{title:"目标部门",search:{disabled:!0},width:130,type:"table-selector",form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({form:e})=>e.dept_info),tableConfig:{url:"/api/system/dept/all_dept/",label:"name",value:"id",isTree:!0,isMultiple:!0,columns:[{prop:"name",label:"部门名称",width:150},{prop:"status_label",label:"状态"},{prop:"parent_name",label:"父级部门"}]}},show:a(({form:e})=>e.target_type===2),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.dept_info),displayLabel:"name"}}},content:{title:"内容",column:{width:300,show:!1},type:["editor-wang5","colspan"],form:{rules:[{required:!0,message:"必填项"}],component:{disabled:!1,id:"1",editorConfig:{readOnly:a(e=>{const{mode:l}=e;return l!=="add"})},uploader:{type:"form",buildUrl(e){return e.url}}}}}}}}}export{$ as default}; diff --git a/web/dist/assets/crud.X4Uyb4ud.js b/web/dist/assets/crud.X4Uyb4ud.js new file mode 100644 index 0000000000..fa0055f735 --- /dev/null +++ b/web/dist/assets/crud.X4Uyb4ud.js @@ -0,0 +1 @@ +import{r as a,m as u,n as d,s as c}from"./index.CkCcWuPb.js";import{d as m}from"./dictionary.CH8ZDdyo.js";import{a as o}from"./authFunction.Br9oRcVU.js";import{F as h,P as p}from"./vue.Cw4Y52yh.js";const i="/api/system/role/";function w(t){return a({url:i,method:"get",params:t})}function f(t){return a({url:i,method:"post",data:t})}function l(t){return a({url:i+t.id+"/",method:"put",data:t})}function y(t){return a({url:i+t+"/",method:"delete",data:{id:t}})}const O=function({crudExpose:t,context:s}){return{crudOptions:{request:{pageRequest:async e=>await w(e),addRequest:async({form:e})=>await f(e),editRequest:async({form:e,row:r})=>(e.id=r.id,await l(e)),delRequest:async({row:e})=>await y(e.id)},pagination:{show:!0},actionbar:{buttons:{add:{show:o("role:Create")}}},rowHandle:{fixed:"right",width:h(()=>o("role:AuthorizedAdd")||o("role:AuthorizedSearch")?420:320),buttons:{view:{show:!0},edit:{show:o("role:Update")},remove:{show:o("role:Delete")},assignment:{type:"primary",text:"授权用户",show:o("role:AuthorizedAdd")||o("role:AuthorizedSearch"),click:e=>{const{row:r}=e;s.RoleUserDrawer.handleDrawerOpen(r),p(()=>{s.RoleUserRef.value.setSearchFormData({form:{role_id:r.id}}),s.RoleUserRef.value.doRefresh()})}},permission:{type:"primary",text:"权限配置",show:o("role:Permission"),click:e=>{const{row:r}=e;s.RoleDrawer.handleDrawerOpen(r),s.RoleMenuBtn.setState([]),s.RoleMenuField.setState([])}}}},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},id:{title:"ID",column:{show:!1},search:{show:!1},form:{show:!1}},name:{title:"角色名称",search:{show:!0},column:{minWidth:120,sortable:"custom"},form:{rules:[{required:!0,message:"角色名称必填"}],component:{placeholder:"请输入角色名称"}}},key:{title:"权限标识",search:{show:!1},column:{minWidth:120,sortable:"custom",columnSetDisabled:!0},form:{rules:[{required:!0,message:"权限标识必填"}],component:{placeholder:"输入权限标识"}},valueBuilder(e){const{row:r,key:n}=e;return r[n]}},sort:{title:"排序",search:{show:!1},type:"number",column:{minWidth:90,sortable:"custom"},form:{rules:[{required:!0,message:"排序必填"}],value:1}},status:{title:"状态",search:{show:!0},type:"dict-radio",column:{width:100,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:d(e=>()=>{l(e.row).then(r=>{c(r.msg)})})}},dict:u({value:m("button_status_bool")})}}}}};export{O as createCrudOptions}; diff --git a/web/dist/assets/crud.aEhwQ47D.js b/web/dist/assets/crud.aEhwQ47D.js new file mode 100644 index 0000000000..8c935813e1 --- /dev/null +++ b/web/dist/assets/crud.aEhwQ47D.js @@ -0,0 +1 @@ +import{r as a,m as i,n as l,f as o}from"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";const s="/api/system/download_center/";function r(e){return a({url:s,method:"get",params:e})}function u(e){return a({url:s,method:"post",data:e})}function d(e){return a({url:s+e.id+"/",method:"put",data:e})}function c(e){return a({url:s+e+"/",method:"delete",data:{id:e}})}const x=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await r(t),addRequest:async({form:t})=>await u(t),editRequest:async({form:t,row:n})=>(t.id=n.id,await d(t)),delRequest:async({row:t})=>await c(t.id)},pagination:{show:!0},actionbar:{buttons:{add:{show:!1}}},toolbar:{buttons:{export:{show:!1}}},rowHandle:{fixed:"right",width:120,buttons:{view:{show:!1},edit:{show:!1},remove:{show:!1},download:{show:l(t=>t.row.task_status===2),text:"下载文件",type:"warning",click:t=>window.open(o(t.row.url),"_blank")}}},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},task_name:{title:"任务名",type:"text",column:{minWidth:160,align:"left"},search:{show:!0}},file_name:{title:"文件名",type:"text",column:{minWidth:160,align:"left"},search:{show:!0}},size:{title:"文件大小(b)",type:"number",column:{width:100}},task_status:{title:"任务状态",type:"dict-select",dict:i({data:[{label:"任务已创建",value:0},{label:"任务进行中",value:1},{label:"任务完成",value:2},{label:"任务失败",value:3}]}),column:{width:120},search:{show:!0}},create_datetime:{title:"创建时间",column:{width:160}},update_datetime:{title:"创建时间",column:{width:160}}}}}};export{x as createCrudOptions}; diff --git a/web/dist/assets/crud.aa8KfaOa.js b/web/dist/assets/crud.aa8KfaOa.js new file mode 100644 index 0000000000..d03ffe5f38 --- /dev/null +++ b/web/dist/assets/crud.aa8KfaOa.js @@ -0,0 +1 @@ +import{r as u,m as w,X as r}from"./index.CkCcWuPb.js";import{D as b,P as g}from"./vue.Cw4Y52yh.js";function y(a){return a.authorized=0,u({url:"/api/system/role/get_role_users/",method:"get",params:a})}function x(a,i){return u({url:`/api/system/role/${a}/add_role_users/`,method:"post",data:{users_id:i}})}const v=function({crudExpose:a,context:i}){const c=async e=>await y(e),d=async({form:e,row:o})=>{},f=async({row:e})=>{},m=async({form:e})=>{},s=b([]),p=e=>{const n=a.getTableData().filter(t=>!e.includes(t));r.arrayEach(e,t=>{r.pluck(s.value,"id").includes(t.id)||(s.value=r.union(s.value,[t]))}),r.arrayEach(n,t=>{s.value=r.remove(s.value,l=>l.id!==t.id)})},h=()=>{const e=a.getBaseTableRef(),o=a.getTableData(),n=r.filter(o,t=>r.pluck(s.value,"id").includes(t.id));g(()=>{r.arrayEach(n,t=>{e.toggleRowSelection(t,!0)})})};return{selectedRows:s,crudOptions:{request:{pageRequest:c,addRequest:m,editRequest:d,delRequest:f},actionbar:{show:!1,buttons:{add:{show:!1}}},rowHandle:{show:!1,fixed:"left",width:150,buttons:{view:{show:!1},edit:{show:!1},remove:{show:!1}}},table:{rowKey:"id",onSelectionChange:p,onRefreshed:()=>h()},columns:{$checked:{title:"选择",form:{show:!1},column:{show:!0,type:"selection",align:"center",width:"55px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let o=e.index??1,n=a.crudBinding.value.pagination;return((n.currentPage??1)-1)*n.pageSize+o+1}}},name:{title:"用户名",search:{show:!0,component:{props:{clearable:!0}}},type:"text",form:{show:!1}},dept:{title:"部门",show:!0,type:"dict-tree",column:{name:"text",formatter({value:e,row:o,index:n}){return o.dept__name}},search:{show:!0,disabled:!0,col:{span:6},component:{multiple:!1,props:{checkStrictly:!0,clearable:!0,filterable:!0}}},form:{show:!1},dict:w({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"})}}}}},S=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:v},Symbol.toStringTag,{value:"Module"}));export{x as a,S as b,v as c}; diff --git a/web/dist/assets/crud.hXHWdc3w.js b/web/dist/assets/crud.hXHWdc3w.js new file mode 100644 index 0000000000..66137965e4 --- /dev/null +++ b/web/dist/assets/crud.hXHWdc3w.js @@ -0,0 +1 @@ +import{r as o,k as p}from"./index.CkCcWuPb.js";import{a as r}from"./authFunction.Br9oRcVU.js";import"./vue.Cw4Y52yh.js";const a="/api/VIEWSETNAME/";function E(t){return o({url:a,method:"get",params:t})}function l(t){return o({url:a,method:"post",data:t})}function h(t){return o({url:a+t.id+"/",method:"put",data:t})}function w(t){return o({url:a+t+"/",method:"delete",data:{id:t}})}function m(t){return p({url:a+"export_data/",params:t,method:"get"})}function A({crudExpose:t}){const u=async e=>await E(e),d=async({form:e,row:n})=>(n.id&&(e.id=n.id),await h(e)),i=async({row:e})=>await w(e.id),s=async({form:e})=>await l(e),c=async e=>await m(e);return{crudOptions:{request:{pageRequest:u,addRequest:s,editRequest:d,delRequest:i},actionbar:{buttons:{export:{show:r("VIEWSETNAME:Export"),text:"导出",title:"导出",click(){return c(t.getSearchFormData())}},add:{show:r("VIEWSETNAME:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:r("VIEWSETNAME:Retrieve")},edit:{type:"text",order:2,show:r("VIEWSETNAME:Update")},copy:{type:"text",order:3,show:r("VIEWSETNAME:Copy")},remove:{type:"text",order:4,show:r("VIEWSETNAME:Delete")}}},columns:{}}}}export{A as default}; diff --git a/web/dist/assets/crudTable.DrJHJ0aT.js b/web/dist/assets/crudTable.DrJHJ0aT.js new file mode 100644 index 0000000000..4fdb3bd28e --- /dev/null +++ b/web/dist/assets/crudTable.DrJHJ0aT.js @@ -0,0 +1 @@ +import{_ as o}from"./crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js";import"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";export{o as default}; diff --git a/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js b/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js new file mode 100644 index 0000000000..e0045463f9 --- /dev/null +++ b/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js @@ -0,0 +1 @@ +import{h as c}from"./index.CkCcWuPb.js";import{w as m,H as p,aA as i,x as f,y as h,a7 as w,Z as _,G as b}from"./vue.Cw4Y52yh.js";const y=m({__name:"crudTable",props:{modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(o,{emit:a}){const s=function({crudExpose:r,context:l}){return{crudOptions:{mode:{name:"local",isMergeWhenUpdate:!0,isAppendWhenAdd:!0},actionbar:{buttons:{add:{show:!0},addRow:{show:!1}}},editable:{enabled:!0,mode:"row",activeDefault:!0},form:{wrapper:{width:"500px"},col:{span:24},afterSubmit({mode:t}){d("update:modelValue",e.value.data)}},toolbar:{show:!1},search:{disabled:!0,show:!1},pagination:{show:!1},columns:{title:{title:"标题",form:{component:{placeholder:"请输入标题"},rules:[{required:!0,message:"必须填写"}]}},key:{title:"键名",form:{component:{placeholder:"请输入键名"},rules:[{required:!0,message:"必须填写"}]}},value:{title:"键值",form:{component:{placeholder:"请输入键值"},rules:[{required:!0,message:"必须填写"}]}}}}}},{crudBinding:e,crudRef:u,crudExpose:x}=c({createCrudOptions:s}),n=o,d=a;return p(()=>n.modelValue,(r=[])=>{e.value.data=r},{immediate:!0}),(r,l)=>{const t=i("fs-crud");return h(),f("div",null,[w(t,_({ref_key:"crudRef",ref:u},b(e)),null,16)])}}});export{y as _}; diff --git a/web/dist/assets/defaults.Bat_bZMk.js b/web/dist/assets/defaults.Bat_bZMk.js new file mode 100644 index 0000000000..ca93442702 --- /dev/null +++ b/web/dist/assets/defaults.Bat_bZMk.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.CcbNtRz7.js","assets/index.CkCcWuPb.js","assets/vue.Cw4Y52yh.js","assets/index.DvQZPXXd.css","assets/header.D3A4TWO0.js","assets/main.B3b7-7PA.js"])))=>i.map(i=>d[i]); +import{u as b,N as C,_ as t}from"./index.CkCcWuPb.js";import{w as p,D as _,aQ as L,aR as k,O as w,H as i,aA as f,$ as A,y as E,a0 as n,a7 as e,G as s,aP as r,P as M}from"./vue.Cw4Y52yh.js";const P=p({name:"layoutDefaults"}),V=p({...P,setup(S){const d=r(()=>t(()=>import("./aside.CcbNtRz7.js"),__vite__mapDeps([0,1,2,3]))),m=r(()=>t(()=>import("./header.D3A4TWO0.js"),__vite__mapDeps([4,1,2,3]))),y=r(()=>t(()=>import("./main.B3b7-7PA.js"),__vite__mapDeps([5,1,2,3]))),o=_(""),a=_(),R=L(),v=b(),{themeConfig:T}=k(v),l=()=>{o.value.update(),a.value.layoutMainScrollbarRef.update()},c=()=>{M(()=>{setTimeout(()=>{l(),o.value.wrapRef.scrollTop=0,a.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return w(()=>{c(),C.done(600)}),i(()=>R.path,()=>{c()}),i(T,()=>{l()},{deep:!0}),(g,x)=>{const h=f("el-scrollbar"),u=f("el-container");return E(),A(u,{class:"layout-container"},{default:n(()=>[e(s(d)),e(u,{class:"layout-container-view h100"},{default:n(()=>[e(h,{ref_key:"layoutScrollbarRef",ref:o,class:"layout-backtop"},{default:n(()=>[e(s(m)),e(s(y),{ref_key:"layoutMainRef",ref:a},null,512)]),_:1},512)]),_:1})]),_:1})}}});export{V as default}; diff --git a/web/dist/assets/dictionary.CH8ZDdyo.js b/web/dist/assets/dictionary.CH8ZDdyo.js new file mode 100644 index 0000000000..fcf2a7d952 --- /dev/null +++ b/web/dist/assets/dictionary.CH8ZDdyo.js @@ -0,0 +1 @@ +import{F as c}from"./index.CkCcWuPb.js";import{av as s}from"./vue.Cw4Y52yh.js";const f=(o,t)=>{const a=c(),r=s(a.data);if(t!=null){const i=r[o].find(n=>n.value===t);return i?i.label:""}else return r[o]};export{f as d}; diff --git a/web/dist/assets/echarts.8mhZIf8A.js b/web/dist/assets/echarts.8mhZIf8A.js new file mode 100644 index 0000000000..aafdcaa5bb --- /dev/null +++ b/web/dist/assets/echarts.8mhZIf8A.js @@ -0,0 +1,74 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var xp=function(r,e){return xp=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,a){t.__proto__=a}||function(t,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])},xp(r,e)};function N(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");xp(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var mL=function(){function r(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1}return r}(),_L=function(){function r(){this.browser=new mL,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow=typeof window<"u"}return r}(),yt=new _L;typeof wx=="object"&&typeof wx.getSystemInfoSync=="function"?(yt.wxa=!0,yt.touchEventsSupported=!0):typeof document>"u"&&typeof self<"u"?yt.worker=!0:!yt.hasGlobalWindow||"Deno"in window?(yt.node=!0,yt.svgSupported=!0):SL(navigator.userAgent,yt);function SL(r,e){var t=e.browser,a=r.match(/Firefox\/([\d.]+)/),n=r.match(/MSIE\s([\d.]+)/)||r.match(/Trident\/.+?rv:(([\d.]+))/),i=r.match(/Edge?\/([\d.]+)/),o=/micromessenger/i.test(r);a&&(t.firefox=!0,t.version=a[1]),n&&(t.ie=!0,t.version=n[1]),i&&(t.edge=!0,t.version=i[1],t.newEdge=+i[1].split(".")[0]>18),o&&(t.weChat=!0),e.svgSupported=typeof SVGRect<"u",e.touchEventsSupported="ontouchstart"in window&&!t.ie&&!t.edge,e.pointerEventsSupported="onpointerdown"in window&&(t.edge||t.ie&&+t.version>=11),e.domSupported=typeof document<"u";var s=document.documentElement.style;e.transform3dSupported=(t.ie&&"transition"in s||t.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||t.ie&&+t.version>=9}var hg=12,Mw="sans-serif",ja=hg+"px "+Mw,xL=20,bL=100,wL="007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";function TL(r){var e={};if(typeof JSON>"u")return e;for(var t=0;t=0)s=o*t.length;else for(var l=0;l>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",a[l]+":0",n[u]+":0",a[1-l]+":auto",n[1-u]+":auto",""].join("!important;"),r.appendChild(o),t.push(o)}return t}function XL(r,e,t){for(var a=t?"invTrans":"trans",n=e[a],i=e.srcCoords,o=[],s=[],l=!0,u=0;u<4;u++){var f=r[u].getBoundingClientRect(),h=2*u,v=f.left,c=f.top;o.push(v,c),l=l&&i&&v===i[h]&&c===i[h+1],s.push(r[u].offsetLeft,r[u].offsetTop)}return l&&n?n:(e.srcCoords=o,e[a]=t?km(s,o):km(o,s))}function Gw(r){return r.nodeName.toUpperCase()==="CANVAS"}var $L=/([&<>"'])/g,ZL={"&":"&","<":"<",">":">",'"':""","'":"'"};function Se(r){return r==null?"":(r+"").replace($L,function(e,t){return ZL[t]})}var qL=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ev=[],KL=yt.browser.firefox&&+yt.browser.version.split(".")[0]<39;function Dp(r,e,t,a){return t=t||{},a?Nm(r,e,t):KL&&e.layerX!=null&&e.layerX!==e.offsetX?(t.zrX=e.layerX,t.zrY=e.layerY):e.offsetX!=null?(t.zrX=e.offsetX,t.zrY=e.offsetY):Nm(r,e,t),t}function Nm(r,e,t){if(yt.domSupported&&r.getBoundingClientRect){var a=e.clientX,n=e.clientY;if(Gw(r)){var i=r.getBoundingClientRect();t.zrX=a-i.left,t.zrY=n-i.top;return}else if(Cp(ev,r,a,n)){t.zrX=ev[0],t.zrY=ev[1];return}}t.zrX=t.zrY=0}function mg(r){return r||window.event}function tr(r,e,t){if(e=mg(e),e.zrX!=null)return e;var a=e.type,n=a&&a.indexOf("touch")>=0;if(n){var o=a!=="touchend"?e.targetTouches[0]:e.changedTouches[0];o&&Dp(r,o,e,t)}else{Dp(r,e,e,t);var i=jL(e);e.zrDelta=i?i/120:-(e.detail||0)/3}var s=e.button;return e.which==null&&s!==void 0&&qL.test(e.type)&&(e.which=s&1?1:s&2?3:s&4?2:0),e}function jL(r){var e=r.wheelDelta;if(e)return e;var t=r.deltaX,a=r.deltaY;if(t==null||a==null)return e;var n=Math.abs(a!==0?a:t),i=a>0?-1:a<0?1:t>0?-1:1;return 3*n*i}function Mp(r,e,t,a){r.addEventListener(e,t,a)}function JL(r,e,t,a){r.removeEventListener(e,t,a)}var da=function(r){r.preventDefault(),r.stopPropagation(),r.cancelBubble=!0};function Bm(r){return r.which===2||r.which===3}var QL=function(){function r(){this._track=[]}return r.prototype.recognize=function(e,t,a){return this._doTrack(e,t,a),this._recognize(e)},r.prototype.clear=function(){return this._track.length=0,this},r.prototype._doTrack=function(e,t,a){var n=e.touches;if(n){for(var i={points:[],touches:[],target:t,event:e},o=0,s=n.length;o1&&a&&a.length>1){var i=Vm(a)/Vm(n);!isFinite(i)&&(i=1),e.pinchScale=i;var o=t2(a);return e.pinchX=o[0],e.pinchY=o[1],{type:"pinch",target:r[0].target,event:e}}}}};function Fe(){return[1,0,0,1,0,0]}function bl(r){return r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r}function ph(r,e){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r}function $r(r,e,t){var a=e[0]*t[0]+e[2]*t[1],n=e[1]*t[0]+e[3]*t[1],i=e[0]*t[2]+e[2]*t[3],o=e[1]*t[2]+e[3]*t[3],s=e[0]*t[4]+e[2]*t[5]+e[4],l=e[1]*t[4]+e[3]*t[5]+e[5];return r[0]=a,r[1]=n,r[2]=i,r[3]=o,r[4]=s,r[5]=l,r}function Ir(r,e,t){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4]+t[0],r[5]=e[5]+t[1],r}function nn(r,e,t,a){a===void 0&&(a=[0,0]);var n=e[0],i=e[2],o=e[4],s=e[1],l=e[3],u=e[5],f=Math.sin(t),h=Math.cos(t);return r[0]=n*h+s*f,r[1]=-n*f+s*h,r[2]=i*h+l*f,r[3]=-i*f+h*l,r[4]=h*(o-a[0])+f*(u-a[1])+a[0],r[5]=h*(u-a[1])-f*(o-a[0])+a[1],r}function dh(r,e,t){var a=t[0],n=t[1];return r[0]=e[0]*a,r[1]=e[1]*n,r[2]=e[2]*a,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*n,r}function di(r,e){var t=e[0],a=e[2],n=e[4],i=e[1],o=e[3],s=e[5],l=t*o-i*a;return l?(l=1/l,r[0]=o*l,r[1]=-i*l,r[2]=-a*l,r[3]=t*l,r[4]=(a*s-o*n)*l,r[5]=(i*n-t*s)*l,r):null}function Fw(r){var e=Fe();return ph(e,r),e}const e2=Object.freeze(Object.defineProperty({__proto__:null,clone:Fw,copy:ph,create:Fe,identity:bl,invert:di,mul:$r,rotate:nn,scale:dh,translate:Ir},Symbol.toStringTag,{value:"Module"}));var ft=function(){function r(e,t){this.x=e||0,this.y=t||0}return r.prototype.copy=function(e){return this.x=e.x,this.y=e.y,this},r.prototype.clone=function(){return new r(this.x,this.y)},r.prototype.set=function(e,t){return this.x=e,this.y=t,this},r.prototype.equal=function(e){return e.x===this.x&&e.y===this.y},r.prototype.add=function(e){return this.x+=e.x,this.y+=e.y,this},r.prototype.scale=function(e){this.x*=e,this.y*=e},r.prototype.scaleAndAdd=function(e,t){this.x+=e.x*t,this.y+=e.y*t},r.prototype.sub=function(e){return this.x-=e.x,this.y-=e.y,this},r.prototype.dot=function(e){return this.x*e.x+this.y*e.y},r.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},r.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},r.prototype.normalize=function(){var e=this.len();return this.x/=e,this.y/=e,this},r.prototype.distance=function(e){var t=this.x-e.x,a=this.y-e.y;return Math.sqrt(t*t+a*a)},r.prototype.distanceSquare=function(e){var t=this.x-e.x,a=this.y-e.y;return t*t+a*a},r.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},r.prototype.transform=function(e){if(e){var t=this.x,a=this.y;return this.x=e[0]*t+e[2]*a+e[4],this.y=e[1]*t+e[3]*a+e[5],this}},r.prototype.toArray=function(e){return e[0]=this.x,e[1]=this.y,e},r.prototype.fromArray=function(e){this.x=e[0],this.y=e[1]},r.set=function(e,t,a){e.x=t,e.y=a},r.copy=function(e,t){e.x=t.x,e.y=t.y},r.len=function(e){return Math.sqrt(e.x*e.x+e.y*e.y)},r.lenSquare=function(e){return e.x*e.x+e.y*e.y},r.dot=function(e,t){return e.x*t.x+e.y*t.y},r.add=function(e,t,a){e.x=t.x+a.x,e.y=t.y+a.y},r.sub=function(e,t,a){e.x=t.x-a.x,e.y=t.y-a.y},r.scale=function(e,t,a){e.x=t.x*a,e.y=t.y*a},r.scaleAndAdd=function(e,t,a,n){e.x=t.x+a.x*n,e.y=t.y+a.y*n},r.lerp=function(e,t,a,n){var i=1-n;e.x=i*t.x+n*a.x,e.y=i*t.y+n*a.y},r}(),Ul=Math.min,Yl=Math.max,fn=new ft,hn=new ft,vn=new ft,cn=new ft,Go=new ft,Fo=new ft,ht=function(){function r(e,t,a,n){a<0&&(e=e+a,a=-a),n<0&&(t=t+n,n=-n),this.x=e,this.y=t,this.width=a,this.height=n}return r.prototype.union=function(e){var t=Ul(e.x,this.x),a=Ul(e.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=Yl(e.x+e.width,this.x+this.width)-t:this.width=e.width,isFinite(this.y)&&isFinite(this.height)?this.height=Yl(e.y+e.height,this.y+this.height)-a:this.height=e.height,this.x=t,this.y=a},r.prototype.applyTransform=function(e){r.applyTransform(this,this,e)},r.prototype.calculateTransform=function(e){var t=this,a=e.width/t.width,n=e.height/t.height,i=Fe();return Ir(i,i,[-t.x,-t.y]),dh(i,i,[a,n]),Ir(i,i,[e.x,e.y]),i},r.prototype.intersect=function(e,t){if(!e)return!1;e instanceof r||(e=r.create(e));var a=this,n=a.x,i=a.x+a.width,o=a.y,s=a.y+a.height,l=e.x,u=e.x+e.width,f=e.y,h=e.y+e.height,v=!(ip&&(p=_,dp&&(p=S,y=a.x&&e<=a.x+a.width&&t>=a.y&&t<=a.y+a.height},r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height)},r.prototype.copy=function(e){r.copy(this,e)},r.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},r.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},r.prototype.isZero=function(){return this.width===0||this.height===0},r.create=function(e){return new r(e.x,e.y,e.width,e.height)},r.copy=function(e,t){e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height},r.applyTransform=function(e,t,a){if(!a){e!==t&&r.copy(e,t);return}if(a[1]<1e-5&&a[1]>-1e-5&&a[2]<1e-5&&a[2]>-1e-5){var n=a[0],i=a[3],o=a[4],s=a[5];e.x=t.x*n+o,e.y=t.y*i+s,e.width=t.width*n,e.height=t.height*i,e.width<0&&(e.x+=e.width,e.width=-e.width),e.height<0&&(e.y+=e.height,e.height=-e.height);return}fn.x=vn.x=t.x,fn.y=cn.y=t.y,hn.x=cn.x=t.x+t.width,hn.y=vn.y=t.y+t.height,fn.transform(a),cn.transform(a),hn.transform(a),vn.transform(a),e.x=Ul(fn.x,hn.x,vn.x,cn.x),e.y=Ul(fn.y,hn.y,vn.y,cn.y);var l=Yl(fn.x,hn.x,vn.x,cn.x),u=Yl(fn.y,hn.y,vn.y,cn.y);e.width=l-e.x,e.height=u-e.y},r}(),Hw="silent";function r2(r,e,t){return{type:r,event:t,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:t.zrX,offsetY:t.zrY,gestureEvent:t.gestureEvent,pinchX:t.pinchX,pinchY:t.pinchY,pinchScale:t.pinchScale,wheelDelta:t.zrDelta,zrByTouch:t.zrByTouch,which:t.which,stop:a2}}function a2(){da(this.event)}var n2=function(r){Ft(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.handler=null,t}return e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(hr),Ho=function(){function r(e,t){this.x=e,this.y=t}return r}(),i2=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],av=new ht(0,0,0,0),Ww=function(r){Ft(e,r);function e(t,a,n,i,o){var s=r.call(this)||this;return s._hovered=new Ho(0,0),s.storage=t,s.painter=a,s.painterRoot=i,s._pointerSize=o,n=n||new n2,s.proxy=null,s.setHandlerProxy(n),s._draggingMgr=new HL(s),s}return e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(D(i2,function(a){t.on&&t.on(a,this[a],this)},this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var a=t.zrX,n=t.zrY,i=Uw(this,a,n),o=this._hovered,s=o.target;s&&!s.__zr&&(o=this.findHover(o.x,o.y),s=o.target);var l=this._hovered=i?new Ho(a,n):this.findHover(a,n),u=l.target,f=this.proxy;f.setCursor&&f.setCursor(u?u.cursor:"default"),s&&u!==s&&this.dispatchToElement(o,"mouseout",t),this.dispatchToElement(l,"mousemove",t),u&&u!==s&&this.dispatchToElement(l,"mouseover",t)},e.prototype.mouseout=function(t){var a=t.zrEventControl;a!=="only_globalout"&&this.dispatchToElement(this._hovered,"mouseout",t),a!=="no_globalout"&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new Ho(0,0)},e.prototype.dispatch=function(t,a){var n=this[t];n&&n.call(this,a)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var a=this.proxy;a.setCursor&&a.setCursor(t)},e.prototype.dispatchToElement=function(t,a,n){t=t||{};var i=t.target;if(!(i&&i.silent)){for(var o="on"+a,s=r2(a,t,n);i&&(i[o]&&(s.cancelBubble=!!i[o].call(i,s)),i.trigger(a,s),i=i.__hostTarget?i.__hostTarget:i.parent,!s.cancelBubble););s.cancelBubble||(this.trigger(a,s),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(l){typeof l[o]=="function"&&l[o].call(l,s),l.trigger&&l.trigger(a,s)}))}},e.prototype.findHover=function(t,a,n){var i=this.storage.getDisplayList(),o=new Ho(t,a);if(zm(i,o,t,a,n),this._pointerSize&&!o.target){for(var s=[],l=this._pointerSize,u=l/2,f=new ht(t-u,a-u,l,l),h=i.length-1;h>=0;h--){var v=i[h];v!==n&&!v.ignore&&!v.ignoreCoarsePointer&&(!v.parent||!v.parent.ignoreCoarsePointer)&&(av.copy(v.getBoundingRect()),v.transform&&av.applyTransform(v.transform),av.intersect(f)&&s.push(v))}if(s.length)for(var c=4,p=Math.PI/12,d=Math.PI*2,g=0;g4)return;this._downPoint=null}this.dispatchToElement(i,r,e)}});function o2(r,e,t){if(r[r.rectHover?"rectContain":"contain"](e,t)){for(var a=r,n=void 0,i=!1;a;){if(a.ignoreClip&&(i=!0),!i){var o=a.getClipPath();if(o&&!o.contain(e,t))return!1}a.silent&&(n=!0);var s=a.__hostTarget;a=s||a.parent}return n?Hw:!0}return!1}function zm(r,e,t,a,n){for(var i=r.length-1;i>=0;i--){var o=r[i],s=void 0;if(o!==n&&!o.ignore&&(s=o2(o,t,a))&&(!e.topTarget&&(e.topTarget=o),s!==Hw)){e.target=o;break}}}function Uw(r,e,t){var a=r.painter;return e<0||e>a.getWidth()||t<0||t>a.getHeight()}var Yw=32,Wo=7;function s2(r){for(var e=0;r>=Yw;)e|=r&1,r>>=1;return r+e}function Gm(r,e,t,a){var n=e+1;if(n===t)return 1;if(a(r[n++],r[e])<0){for(;n=0;)n++;return n-e}function l2(r,e,t){for(t--;e>>1,n(i,r[l])<0?s=l:o=l+1;var u=a-o;switch(u){case 3:r[o+3]=r[o+2];case 2:r[o+2]=r[o+1];case 1:r[o+1]=r[o];break;default:for(;u>0;)r[o+u]=r[o+u-1],u--}r[o]=i}}function nv(r,e,t,a,n,i){var o=0,s=0,l=1;if(i(r,e[t+n])>0){for(s=a-n;l0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=n,l+=n}else{for(s=n+1;ls&&(l=s);var u=o;o=n-l,l=n-u}for(o++;o>>1);i(r,e[t+f])>0?o=f+1:l=f}return l}function iv(r,e,t,a,n,i){var o=0,s=0,l=1;if(i(r,e[t+n])<0){for(s=n+1;ls&&(l=s);var u=o;o=n-l,l=n-u}else{for(s=a-n;l=0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=n,l+=n}for(o++;o>>1);i(r,e[t+f])<0?l=f:o=f+1}return l}function u2(r,e){var t=Wo,a,n,i=0,o=[];a=[],n=[];function s(c,p){a[i]=c,n[i]=p,i+=1}function l(){for(;i>1;){var c=i-2;if(c>=1&&n[c-1]<=n[c]+n[c+1]||c>=2&&n[c-2]<=n[c]+n[c-1])n[c-1]n[c+1])break;f(c)}}function u(){for(;i>1;){var c=i-2;c>0&&n[c-1]=Wo||w>=Wo);if(T)break;b<0&&(b=0),b+=2}if(t=b,t<1&&(t=1),p===1){for(y=0;y=0;y--)r[x+y]=r[b+y];r[S]=o[_];return}for(var w=t;;){var T=0,A=0,C=!1;do if(e(o[_],r[m])<0){if(r[S--]=r[m--],T++,A=0,--p===0){C=!0;break}}else if(r[S--]=o[_--],A++,T=0,--g===1){C=!0;break}while((T|A)=0;y--)r[x+y]=r[b+y];if(p===0){C=!0;break}}if(r[S--]=o[_--],--g===1){C=!0;break}if(A=g-nv(r[m],o,0,g,g-1,e),A!==0){for(S-=A,_-=A,g-=A,x=S+1,b=_+1,y=0;y=Wo||A>=Wo);if(C)break;w<0&&(w=0),w+=2}if(t=w,t<1&&(t=1),g===1){for(S-=p,m-=p,x=S+1,b=m+1,y=p-1;y>=0;y--)r[x+y]=r[b+y];r[S]=o[_]}else{if(g===0)throw new Error;for(b=S-(g-1),y=0;ys&&(l=s),Fm(r,t,t+l,t+i,e),i=l}o.pushRun(t,i),o.mergeRuns(),n-=i,t+=i}while(n!==0);o.forceMergeRuns()}}var Zr=1,Xu=2,ds=4,Hm=!1;function ov(){Hm||(Hm=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function Wm(r,e){return r.zlevel===e.zlevel?r.z===e.z?r.z2-e.z2:r.z-e.z:r.zlevel-e.zlevel}var f2=function(){function r(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=Wm}return r.prototype.traverse=function(e,t){for(var a=0;a0&&(f.__clipPaths=[]),isNaN(f.z)&&(ov(),f.z=0),isNaN(f.z2)&&(ov(),f.z2=0),isNaN(f.zlevel)&&(ov(),f.zlevel=0),this._displayList[this._displayListLen++]=f}var h=e.getDecalElement&&e.getDecalElement();h&&this._updateAndAddDisplayable(h,t,a);var v=e.getTextGuideLine();v&&this._updateAndAddDisplayable(v,t,a);var c=e.getTextContent();c&&this._updateAndAddDisplayable(c,t,a)}},r.prototype.addRoot=function(e){e.__zr&&e.__zr.storage===this||this._roots.push(e)},r.prototype.delRoot=function(e){if(e instanceof Array){for(var t=0,a=e.length;t=0&&this._roots.splice(n,1)},r.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},r.prototype.getRoots=function(){return this._roots},r.prototype.dispose=function(){this._displayList=null,this._roots=null},r}(),df;df=yt.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(r){return setTimeout(r,16)};var Ls={linear:function(r){return r},quadraticIn:function(r){return r*r},quadraticOut:function(r){return r*(2-r)},quadraticInOut:function(r){return(r*=2)<1?.5*r*r:-.5*(--r*(r-2)-1)},cubicIn:function(r){return r*r*r},cubicOut:function(r){return--r*r*r+1},cubicInOut:function(r){return(r*=2)<1?.5*r*r*r:.5*((r-=2)*r*r+2)},quarticIn:function(r){return r*r*r*r},quarticOut:function(r){return 1- --r*r*r*r},quarticInOut:function(r){return(r*=2)<1?.5*r*r*r*r:-.5*((r-=2)*r*r*r-2)},quinticIn:function(r){return r*r*r*r*r},quinticOut:function(r){return--r*r*r*r*r+1},quinticInOut:function(r){return(r*=2)<1?.5*r*r*r*r*r:.5*((r-=2)*r*r*r*r+2)},sinusoidalIn:function(r){return 1-Math.cos(r*Math.PI/2)},sinusoidalOut:function(r){return Math.sin(r*Math.PI/2)},sinusoidalInOut:function(r){return .5*(1-Math.cos(Math.PI*r))},exponentialIn:function(r){return r===0?0:Math.pow(1024,r-1)},exponentialOut:function(r){return r===1?1:1-Math.pow(2,-10*r)},exponentialInOut:function(r){return r===0?0:r===1?1:(r*=2)<1?.5*Math.pow(1024,r-1):.5*(-Math.pow(2,-10*(r-1))+2)},circularIn:function(r){return 1-Math.sqrt(1-r*r)},circularOut:function(r){return Math.sqrt(1- --r*r)},circularInOut:function(r){return(r*=2)<1?-.5*(Math.sqrt(1-r*r)-1):.5*(Math.sqrt(1-(r-=2)*r)+1)},elasticIn:function(r){var e,t=.1,a=.4;return r===0?0:r===1?1:(!t||t<1?(t=1,e=a/4):e=a*Math.asin(1/t)/(2*Math.PI),-(t*Math.pow(2,10*(r-=1))*Math.sin((r-e)*(2*Math.PI)/a)))},elasticOut:function(r){var e,t=.1,a=.4;return r===0?0:r===1?1:(!t||t<1?(t=1,e=a/4):e=a*Math.asin(1/t)/(2*Math.PI),t*Math.pow(2,-10*r)*Math.sin((r-e)*(2*Math.PI)/a)+1)},elasticInOut:function(r){var e,t=.1,a=.4;return r===0?0:r===1?1:(!t||t<1?(t=1,e=a/4):e=a*Math.asin(1/t)/(2*Math.PI),(r*=2)<1?-.5*(t*Math.pow(2,10*(r-=1))*Math.sin((r-e)*(2*Math.PI)/a)):t*Math.pow(2,-10*(r-=1))*Math.sin((r-e)*(2*Math.PI)/a)*.5+1)},backIn:function(r){var e=1.70158;return r*r*((e+1)*r-e)},backOut:function(r){var e=1.70158;return--r*r*((e+1)*r+e)+1},backInOut:function(r){var e=2.5949095;return(r*=2)<1?.5*(r*r*((e+1)*r-e)):.5*((r-=2)*r*((e+1)*r+e)+2)},bounceIn:function(r){return 1-Ls.bounceOut(1-r)},bounceOut:function(r){return r<1/2.75?7.5625*r*r:r<2/2.75?7.5625*(r-=1.5/2.75)*r+.75:r<2.5/2.75?7.5625*(r-=2.25/2.75)*r+.9375:7.5625*(r-=2.625/2.75)*r+.984375},bounceInOut:function(r){return r<.5?Ls.bounceIn(r*2)*.5:Ls.bounceOut(r*2-1)*.5+.5}},Xl=Math.pow,Ya=Math.sqrt,Xw=1e-8,$w=1e-4,Um=Ya(3),$l=1/3,Fr=an(),nr=an(),to=an();function Va(r){return r>-1e-8&&rXw||r<-1e-8}function re(r,e,t,a,n){var i=1-n;return i*i*(i*r+3*n*e)+n*n*(n*a+3*i*t)}function Ym(r,e,t,a,n){var i=1-n;return 3*(((e-r)*i+2*(t-e)*n)*i+(a-t)*n*n)}function gf(r,e,t,a,n,i){var o=a+3*(e-t)-r,s=3*(t-e*2+r),l=3*(e-r),u=r-n,f=s*s-3*o*l,h=s*l-9*o*u,v=l*l-3*s*u,c=0;if(Va(f)&&Va(h))if(Va(s))i[0]=0;else{var p=-l/s;p>=0&&p<=1&&(i[c++]=p)}else{var d=h*h-4*f*v;if(Va(d)){var g=h/f,p=-s/o+g,y=-g/2;p>=0&&p<=1&&(i[c++]=p),y>=0&&y<=1&&(i[c++]=y)}else if(d>0){var m=Ya(d),_=f*s+1.5*o*(-h+m),S=f*s+1.5*o*(-h-m);_<0?_=-Xl(-_,$l):_=Xl(_,$l),S<0?S=-Xl(-S,$l):S=Xl(S,$l);var p=(-s-(_+S))/(3*o);p>=0&&p<=1&&(i[c++]=p)}else{var b=(2*f*s-3*o*h)/(2*Ya(f*f*f)),x=Math.acos(b)/3,w=Ya(f),T=Math.cos(x),p=(-s-2*w*T)/(3*o),y=(-s+w*(T+Um*Math.sin(x)))/(3*o),A=(-s+w*(T-Um*Math.sin(x)))/(3*o);p>=0&&p<=1&&(i[c++]=p),y>=0&&y<=1&&(i[c++]=y),A>=0&&A<=1&&(i[c++]=A)}}return c}function qw(r,e,t,a,n){var i=6*t-12*e+6*r,o=9*e+3*a-3*r-9*t,s=3*e-3*r,l=0;if(Va(o)){if(Zw(i)){var u=-s/i;u>=0&&u<=1&&(n[l++]=u)}}else{var f=i*i-4*o*s;if(Va(f))n[0]=-i/(2*o);else if(f>0){var h=Ya(f),u=(-i+h)/(2*o),v=(-i-h)/(2*o);u>=0&&u<=1&&(n[l++]=u),v>=0&&v<=1&&(n[l++]=v)}}return l}function Ja(r,e,t,a,n,i){var o=(e-r)*n+r,s=(t-e)*n+e,l=(a-t)*n+t,u=(s-o)*n+o,f=(l-s)*n+s,h=(f-u)*n+u;i[0]=r,i[1]=o,i[2]=u,i[3]=h,i[4]=h,i[5]=f,i[6]=l,i[7]=a}function Kw(r,e,t,a,n,i,o,s,l,u,f){var h,v=.005,c=1/0,p,d,g,y;Fr[0]=l,Fr[1]=u;for(var m=0;m<1;m+=.05)nr[0]=re(r,t,n,o,m),nr[1]=re(e,a,i,s,m),g=Ua(Fr,nr),g=0&&g=0&&u<=1&&(n[l++]=u)}}else{var f=o*o-4*i*s;if(Va(f)){var u=-o/(2*i);u>=0&&u<=1&&(n[l++]=u)}else if(f>0){var h=Ya(f),u=(-o+h)/(2*i),v=(-o-h)/(2*i);u>=0&&u<=1&&(n[l++]=u),v>=0&&v<=1&&(n[l++]=v)}}return l}function jw(r,e,t){var a=r+t-2*e;return a===0?.5:(r-e)/a}function Xs(r,e,t,a,n){var i=(e-r)*a+r,o=(t-e)*a+e,s=(o-i)*a+i;n[0]=r,n[1]=i,n[2]=s,n[3]=s,n[4]=o,n[5]=t}function Jw(r,e,t,a,n,i,o,s,l){var u,f=.005,h=1/0;Fr[0]=o,Fr[1]=s;for(var v=0;v<1;v+=.05){nr[0]=ue(r,t,n,v),nr[1]=ue(e,a,i,v);var c=Ua(Fr,nr);c=0&&c=1?1:gf(0,a,i,1,l,s)&&re(0,n,o,1,s[0])}}}var d2=function(){function r(e){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=e.life||1e3,this._delay=e.delay||0,this.loop=e.loop||!1,this.onframe=e.onframe||Xt,this.ondestroy=e.ondestroy||Xt,this.onrestart=e.onrestart||Xt,e.easing&&this.setEasing(e.easing)}return r.prototype.step=function(e,t){if(this._inited||(this._startTime=e+this._delay,this._inited=!0),this._paused){this._pausedTime+=t;return}var a=this._life,n=e-this._startTime-this._pausedTime,i=n/a;i<0&&(i=0),i=Math.min(i,1);var o=this.easingFunc,s=o?o(i):i;if(this.onframe(s),i===1)if(this.loop){var l=n%a;this._startTime=e-l,this._pausedTime=0,this.onrestart()}else return!0;return!1},r.prototype.pause=function(){this._paused=!0},r.prototype.resume=function(){this._paused=!1},r.prototype.setEasing=function(e){this.easing=e,this.easingFunc=K(e)?e:Ls[e]||_g(e)},r}(),Qw=function(){function r(e){this.value=e}return r}(),g2=function(){function r(){this._len=0}return r.prototype.insert=function(e){var t=new Qw(e);return this.insertEntry(t),t},r.prototype.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,e.next=null,this.tail=e):this.head=this.tail=e,this._len++},r.prototype.remove=function(e){var t=e.prev,a=e.next;t?t.next=a:this.head=a,a?a.prev=t:this.tail=t,e.next=e.prev=null,this._len--},r.prototype.len=function(){return this._len},r.prototype.clear=function(){this.head=this.tail=null,this._len=0},r}(),wl=function(){function r(e){this._list=new g2,this._maxSize=10,this._map={},this._maxSize=e}return r.prototype.put=function(e,t){var a=this._list,n=this._map,i=null;if(n[e]==null){var o=a.len(),s=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var l=a.head;a.remove(l),delete n[l.key],i=l.value,this._lastRemovedEntry=l}s?s.value=t:s=new Qw(t),s.key=e,a.insertEntry(s),n[e]=s}return i},r.prototype.get=function(e){var t=this._map[e],a=this._list;if(t!=null)return t!==a.tail&&(a.remove(t),a.insertEntry(t)),t.value},r.prototype.clear=function(){this._list.clear(),this._map={}},r.prototype.len=function(){return this._list.len()},r}(),Xm={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Ar(r){return r=Math.round(r),r<0?0:r>255?255:r}function y2(r){return r=Math.round(r),r<0?0:r>360?360:r}function $s(r){return r<0?0:r>1?1:r}function sv(r){var e=r;return e.length&&e.charAt(e.length-1)==="%"?Ar(parseFloat(e)/100*255):Ar(parseInt(e,10))}function Jn(r){var e=r;return e.length&&e.charAt(e.length-1)==="%"?$s(parseFloat(e)/100):$s(parseFloat(e))}function lv(r,e,t){return t<0?t+=1:t>1&&(t-=1),t*6<1?r+(e-r)*t*6:t*2<1?e:t*3<2?r+(e-r)*(2/3-t)*6:r}function za(r,e,t){return r+(e-r)*t}function Qe(r,e,t,a,n){return r[0]=e,r[1]=t,r[2]=a,r[3]=n,r}function Lp(r,e){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r}var tT=new wl(20),Zl=null;function Ti(r,e){Zl&&Lp(Zl,e),Zl=tT.put(r,Zl||e.slice())}function Pe(r,e){if(r){e=e||[];var t=tT.get(r);if(t)return Lp(e,t);r=r+"";var a=r.replace(/ /g,"").toLowerCase();if(a in Xm)return Lp(e,Xm[a]),Ti(r,e),e;var n=a.length;if(a.charAt(0)==="#"){if(n===4||n===5){var i=parseInt(a.slice(1,4),16);if(!(i>=0&&i<=4095)){Qe(e,0,0,0,1);return}return Qe(e,(i&3840)>>4|(i&3840)>>8,i&240|(i&240)>>4,i&15|(i&15)<<4,n===5?parseInt(a.slice(4),16)/15:1),Ti(r,e),e}else if(n===7||n===9){var i=parseInt(a.slice(1,7),16);if(!(i>=0&&i<=16777215)){Qe(e,0,0,0,1);return}return Qe(e,(i&16711680)>>16,(i&65280)>>8,i&255,n===9?parseInt(a.slice(7),16)/255:1),Ti(r,e),e}return}var o=a.indexOf("("),s=a.indexOf(")");if(o!==-1&&s+1===n){var l=a.substr(0,o),u=a.substr(o+1,s-(o+1)).split(","),f=1;switch(l){case"rgba":if(u.length!==4)return u.length===3?Qe(e,+u[0],+u[1],+u[2],1):Qe(e,0,0,0,1);f=Jn(u.pop());case"rgb":if(u.length>=3)return Qe(e,sv(u[0]),sv(u[1]),sv(u[2]),u.length===3?f:Jn(u[3])),Ti(r,e),e;Qe(e,0,0,0,1);return;case"hsla":if(u.length!==4){Qe(e,0,0,0,1);return}return u[3]=Jn(u[3]),Pp(u,e),Ti(r,e),e;case"hsl":if(u.length!==3){Qe(e,0,0,0,1);return}return Pp(u,e),Ti(r,e),e;default:return}}Qe(e,0,0,0,1)}}function Pp(r,e){var t=(parseFloat(r[0])%360+360)%360/360,a=Jn(r[1]),n=Jn(r[2]),i=n<=.5?n*(a+1):n+a-n*a,o=n*2-i;return e=e||[],Qe(e,Ar(lv(o,i,t+1/3)*255),Ar(lv(o,i,t)*255),Ar(lv(o,i,t-1/3)*255),1),r.length===4&&(e[3]=r[3]),e}function m2(r){if(r){var e=r[0]/255,t=r[1]/255,a=r[2]/255,n=Math.min(e,t,a),i=Math.max(e,t,a),o=i-n,s=(i+n)/2,l,u;if(o===0)l=0,u=0;else{s<.5?u=o/(i+n):u=o/(2-i-n);var f=((i-e)/6+o/2)/o,h=((i-t)/6+o/2)/o,v=((i-a)/6+o/2)/o;e===i?l=v-h:t===i?l=1/3+f-v:a===i&&(l=2/3+h-f),l<0&&(l+=1),l>1&&(l-=1)}var c=[l*360,u,s];return r[3]!=null&&c.push(r[3]),c}}function yf(r,e){var t=Pe(r);if(t){for(var a=0;a<3;a++)e<0?t[a]=t[a]*(1-e)|0:t[a]=(255-t[a])*e+t[a]|0,t[a]>255?t[a]=255:t[a]<0&&(t[a]=0);return Cr(t,t.length===4?"rgba":"rgb")}}function _2(r){var e=Pe(r);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ps(r,e,t){if(!(!(e&&e.length)||!(r>=0&&r<=1))){t=t||[];var a=r*(e.length-1),n=Math.floor(a),i=Math.ceil(a),o=e[n],s=e[i],l=a-n;return t[0]=Ar(za(o[0],s[0],l)),t[1]=Ar(za(o[1],s[1],l)),t[2]=Ar(za(o[2],s[2],l)),t[3]=$s(za(o[3],s[3],l)),t}}var S2=Ps;function Sg(r,e,t){if(!(!(e&&e.length)||!(r>=0&&r<=1))){var a=r*(e.length-1),n=Math.floor(a),i=Math.ceil(a),o=Pe(e[n]),s=Pe(e[i]),l=a-n,u=Cr([Ar(za(o[0],s[0],l)),Ar(za(o[1],s[1],l)),Ar(za(o[2],s[2],l)),$s(za(o[3],s[3],l))],"rgba");return t?{color:u,leftIndex:n,rightIndex:i,value:a}:u}}var x2=Sg;function eo(r,e,t,a){var n=Pe(r);if(r)return n=m2(n),e!=null&&(n[0]=y2(e)),t!=null&&(n[1]=Jn(t)),a!=null&&(n[2]=Jn(a)),Cr(Pp(n),"rgba")}function Zs(r,e){var t=Pe(r);if(t&&e!=null)return t[3]=$s(e),Cr(t,"rgba")}function Cr(r,e){if(!(!r||!r.length)){var t=r[0]+","+r[1]+","+r[2];return(e==="rgba"||e==="hsva"||e==="hsla")&&(t+=","+r[3]),e+"("+t+")"}}function qs(r,e){var t=Pe(r);return t?(.299*t[0]+.587*t[1]+.114*t[2])*t[3]/255+(1-t[3])*e:0}function b2(){return Cr([Math.round(Math.random()*255),Math.round(Math.random()*255),Math.round(Math.random()*255)],"rgb")}var $m=new wl(100);function mf(r){if(Y(r)){var e=$m.get(r);return e||(e=yf(r,-.1),$m.put(r,e)),e}else if(Sl(r)){var t=V({},r);return t.colorStops=G(r.colorStops,function(a){return{offset:a.offset,color:yf(a.color,-.1)}}),t}return r}const w2=Object.freeze(Object.defineProperty({__proto__:null,fastLerp:Ps,fastMapToColor:S2,lerp:Sg,lift:yf,liftColor:mf,lum:qs,mapToColor:x2,modifyAlpha:Zs,modifyHSL:eo,parse:Pe,random:b2,stringify:Cr,toHex:_2},Symbol.toStringTag,{value:"Module"}));var _f=Math.round;function Ks(r){var e;if(!r||r==="transparent")r="none";else if(typeof r=="string"&&r.indexOf("rgba")>-1){var t=Pe(r);t&&(r="rgb("+t[0]+","+t[1]+","+t[2]+")",e=t[3])}return{color:r,opacity:e??1}}var T2=1e-4;function Ga(r){return r-1e-4}function ql(r){return _f(r*1e3)/1e3}function Rp(r){return _f(r*1e4)/1e4}function A2(r){return"matrix("+ql(r[0])+","+ql(r[1])+","+ql(r[2])+","+ql(r[3])+","+Rp(r[4])+","+Rp(r[5])+")"}var C2={left:"start",right:"end",center:"middle",middle:"middle"};function D2(r,e,t){return t==="top"?r+=e/2:t==="bottom"&&(r-=e/2),r}function M2(r){return r&&(r.shadowBlur||r.shadowOffsetX||r.shadowOffsetY)}function I2(r){var e=r.style,t=r.getGlobalScale();return[e.shadowColor,(e.shadowBlur||0).toFixed(2),(e.shadowOffsetX||0).toFixed(2),(e.shadowOffsetY||0).toFixed(2),t[0],t[1]].join(",")}function eT(r){return r&&!!r.image}function L2(r){return r&&!!r.svgElement}function xg(r){return eT(r)||L2(r)}function rT(r){return r.type==="linear"}function aT(r){return r.type==="radial"}function nT(r){return r&&(r.type==="linear"||r.type==="radial")}function gh(r){return"url(#"+r+")"}function iT(r){var e=r.getGlobalScale(),t=Math.max(e[0],e[1]);return Math.max(Math.ceil(Math.log(t)/Math.log(10)),1)}function oT(r){var e=r.x||0,t=r.y||0,a=(r.rotation||0)*Ds,n=st(r.scaleX,1),i=st(r.scaleY,1),o=r.skewX||0,s=r.skewY||0,l=[];return(e||t)&&l.push("translate("+e+"px,"+t+"px)"),a&&l.push("rotate("+a+")"),(n!==1||i!==1)&&l.push("scale("+n+","+i+")"),(o||s)&&l.push("skew("+_f(o*Ds)+"deg, "+_f(s*Ds)+"deg)"),l.join(" ")}var P2=function(){return yt.hasGlobalWindow&&K(window.btoa)?function(r){return window.btoa(unescape(encodeURIComponent(r)))}:typeof Buffer<"u"?function(r){return Buffer.from(r).toString("base64")}:function(r){return null}}(),Ep=Array.prototype.slice;function oa(r,e,t){return(e-r)*t+r}function uv(r,e,t,a){for(var n=e.length,i=0;ia?e:r,i=Math.min(t,a),o=n[i-1]||{color:[0,0,0,0],offset:0},s=i;so;if(s)a.length=o;else for(var l=i;l=1},r.prototype.getAdditiveTrack=function(){return this._additiveTrack},r.prototype.addKeyframe=function(e,t,a){this._needsSort=!0;var n=this.keyframes,i=n.length,o=!1,s=qm,l=t;if(ve(t)){var u=O2(t);s=u,(u===1&&!wt(t[0])||u===2&&!wt(t[0][0]))&&(o=!0)}else if(wt(t)&&!so(t))s=jl;else if(Y(t))if(!isNaN(+t))s=jl;else{var f=Pe(t);f&&(l=f,s=gs)}else if(Sl(t)){var h=V({},l);h.colorStops=G(t.colorStops,function(c){return{offset:c.offset,color:Pe(c.color)}}),rT(t)?s=kp:aT(t)&&(s=Op),l=h}i===0?this.valType=s:(s!==this.valType||s===qm)&&(o=!0),this.discrete=this.discrete||o;var v={time:e,value:l,rawValue:t,percent:0};return a&&(v.easing=a,v.easingFunc=K(a)?a:Ls[a]||_g(a)),n.push(v),v},r.prototype.prepare=function(e,t){var a=this.keyframes;this._needsSort&&a.sort(function(d,g){return d.time-g.time});for(var n=this.valType,i=a.length,o=a[i-1],s=this.discrete,l=Jl(n),u=Km(n),f=0;f=0&&!(o[f].percent<=t);f--);f=v(f,s-2)}else{for(f=h;ft);f++);f=v(f-1,s-2)}p=o[f+1],c=o[f]}if(c&&p){this._lastFr=f,this._lastFrP=t;var g=p.percent-c.percent,y=g===0?1:v((t-c.percent)/g,1);p.easingFunc&&(y=p.easingFunc(y));var m=a?this._additiveValue:u?Uo:e[l];if((Jl(i)||u)&&!m&&(m=this._additiveValue=[]),this.discrete)e[l]=y<1?c.rawValue:p.rawValue;else if(Jl(i))i===Zu?uv(m,c[n],p[n],y):R2(m,c[n],p[n],y);else if(Km(i)){var _=c[n],S=p[n],b=i===kp;e[l]={type:b?"linear":"radial",x:oa(_.x,S.x,y),y:oa(_.y,S.y,y),colorStops:G(_.colorStops,function(w,T){var A=S.colorStops[T];return{offset:oa(w.offset,A.offset,y),color:$u(uv([],w.color,A.color,y))}}),global:S.global},b?(e[l].x2=oa(_.x2,S.x2,y),e[l].y2=oa(_.y2,S.y2,y)):e[l].r=oa(_.r,S.r,y)}else if(u)uv(m,c[n],p[n],y),a||(e[l]=$u(m));else{var x=oa(c[n],p[n],y);a?this._additiveValue=x:e[l]=x}a&&this._addToTarget(e)}}},r.prototype._addToTarget=function(e){var t=this.valType,a=this.propName,n=this._additiveValue;t===jl?e[a]=e[a]+n:t===gs?(Pe(e[a],Uo),Kl(Uo,Uo,n,1),e[a]=$u(Uo)):t===Zu?Kl(e[a],e[a],n,1):t===sT&&Zm(e[a],e[a],n,1)},r}(),bg=function(){function r(e,t,a,n){if(this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=e,this._loop=t,t&&n){fh("Can' use additive animation on looped animation.");return}this._additiveAnimators=n,this._allowDiscrete=a}return r.prototype.getMaxTime=function(){return this._maxTime},r.prototype.getDelay=function(){return this._delay},r.prototype.getLoop=function(){return this._loop},r.prototype.getTarget=function(){return this._target},r.prototype.changeTarget=function(e){this._target=e},r.prototype.when=function(e,t,a){return this.whenWithKeys(e,t,_t(t),a)},r.prototype.whenWithKeys=function(e,t,a,n){for(var i=this._tracks,o=0;o0&&l.addKeyframe(0,Rs(u),n),this._trackKeys.push(s)}l.addKeyframe(e,Rs(t[s]),n)}return this._maxTime=Math.max(this._maxTime,e),this},r.prototype.pause=function(){this._clip.pause(),this._paused=!0},r.prototype.resume=function(){this._clip.resume(),this._paused=!1},r.prototype.isPaused=function(){return!!this._paused},r.prototype.duration=function(e){return this._maxTime=e,this._force=!0,this},r.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var e=this._doneCbs;if(e)for(var t=e.length,a=0;a0)){this._started=1;for(var t=this,a=[],n=this._maxTime||0,i=0;i1){var s=o.pop();i.addKeyframe(s.time,e[n]),i.prepare(this._maxTime,i.getAdditiveTrack())}}}},r}();function qi(){return new Date().getTime()}var B2=function(r){Ft(e,r);function e(t){var a=r.call(this)||this;return a._running=!1,a._time=0,a._pausedTime=0,a._pauseStart=0,a._paused=!1,t=t||{},a.stage=t.stage||{},a}return e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var a=t.getClip();a&&this.addClip(a)},e.prototype.removeClip=function(t){if(t.animation){var a=t.prev,n=t.next;a?a.next=n:this._head=n,n?n.prev=a:this._tail=a,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var a=t.getClip();a&&this.removeClip(a),t.animation=null},e.prototype.update=function(t){for(var a=qi()-this._pausedTime,n=a-this._time,i=this._head;i;){var o=i.next,s=i.step(a,n);s&&(i.ondestroy(),this.removeClip(i)),i=o}this._time=a,t||(this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;this._running=!0;function a(){t._running&&(df(a),!t._paused&&t.update())}df(a)},e.prototype.start=function(){this._running||(this._time=qi(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=qi(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=qi()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){for(var t=this._head;t;){var a=t.next;t.prev=t.next=t.animation=null,t=a}this._head=this._tail=null},e.prototype.isFinished=function(){return this._head==null},e.prototype.animate=function(t,a){a=a||{},this.start();var n=new bg(t,a.loop);return this.addAnimator(n),n},e}(hr),V2=300,fv=yt.domSupported,hv=function(){var r=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],e=["touchstart","touchend","touchmove"],t={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},a=G(r,function(n){var i=n.replace("mouse","pointer");return t.hasOwnProperty(i)?i:n});return{mouse:r,touch:e,pointer:a}}(),jm={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]},Jm=!1;function Np(r){var e=r.pointerType;return e==="pen"||e==="touch"}function z2(r){r.touching=!0,r.touchTimer!=null&&(clearTimeout(r.touchTimer),r.touchTimer=null),r.touchTimer=setTimeout(function(){r.touching=!1,r.touchTimer=null},700)}function vv(r){r&&(r.zrByTouch=!0)}function G2(r,e){return tr(r.dom,new F2(r,e),!0)}function lT(r,e){for(var t=e,a=!1;t&&t.nodeType!==9&&!(a=t.domBelongToZr||t!==e&&t===r.painterRoot);)t=t.parentNode;return a}var F2=function(){function r(e,t){this.stopPropagation=Xt,this.stopImmediatePropagation=Xt,this.preventDefault=Xt,this.type=t.type,this.target=this.currentTarget=e.dom,this.pointerType=t.pointerType,this.clientX=t.clientX,this.clientY=t.clientY}return r}(),_r={mousedown:function(r){r=tr(this.dom,r),this.__mayPointerCapture=[r.zrX,r.zrY],this.trigger("mousedown",r)},mousemove:function(r){r=tr(this.dom,r);var e=this.__mayPointerCapture;e&&(r.zrX!==e[0]||r.zrY!==e[1])&&this.__togglePointerCapture(!0),this.trigger("mousemove",r)},mouseup:function(r){r=tr(this.dom,r),this.__togglePointerCapture(!1),this.trigger("mouseup",r)},mouseout:function(r){r=tr(this.dom,r);var e=r.toElement||r.relatedTarget;lT(this,e)||(this.__pointerCapturing&&(r.zrEventControl="no_globalout"),this.trigger("mouseout",r))},wheel:function(r){Jm=!0,r=tr(this.dom,r),this.trigger("mousewheel",r)},mousewheel:function(r){Jm||(r=tr(this.dom,r),this.trigger("mousewheel",r))},touchstart:function(r){r=tr(this.dom,r),vv(r),this.__lastTouchMoment=new Date,this.handler.processGesture(r,"start"),_r.mousemove.call(this,r),_r.mousedown.call(this,r)},touchmove:function(r){r=tr(this.dom,r),vv(r),this.handler.processGesture(r,"change"),_r.mousemove.call(this,r)},touchend:function(r){r=tr(this.dom,r),vv(r),this.handler.processGesture(r,"end"),_r.mouseup.call(this,r),+new Date-+this.__lastTouchMomentX2||r<-5e-5}var dn=[],Ai=[],pv=Fe(),dv=Math.abs,ha=function(){function r(){}return r.prototype.getLocalTransform=function(e){return r.getLocalTransform(this,e)},r.prototype.setPosition=function(e){this.x=e[0],this.y=e[1]},r.prototype.setScale=function(e){this.scaleX=e[0],this.scaleY=e[1]},r.prototype.setSkew=function(e){this.skewX=e[0],this.skewY=e[1]},r.prototype.setOrigin=function(e){this.originX=e[0],this.originY=e[1]},r.prototype.needLocalTransform=function(){return pn(this.rotation)||pn(this.x)||pn(this.y)||pn(this.scaleX-1)||pn(this.scaleY-1)||pn(this.skewX)||pn(this.skewY)},r.prototype.updateTransform=function(){var e=this.parent&&this.parent.transform,t=this.needLocalTransform(),a=this.transform;if(!(t||e)){a&&(t0(a),this.invTransform=null);return}a=a||Fe(),t?this.getLocalTransform(a):t0(a),e&&(t?$r(a,e,a):ph(a,e)),this.transform=a,this._resolveGlobalScaleRatio(a)},r.prototype._resolveGlobalScaleRatio=function(e){var t=this.globalScaleRatio;if(t!=null&&t!==1){this.getGlobalScale(dn);var a=dn[0]<0?-1:1,n=dn[1]<0?-1:1,i=((dn[0]-a)*t+a)/dn[0]||0,o=((dn[1]-n)*t+n)/dn[1]||0;e[0]*=i,e[1]*=i,e[2]*=o,e[3]*=o}this.invTransform=this.invTransform||Fe(),di(this.invTransform,e)},r.prototype.getComputedTransform=function(){for(var e=this,t=[];e;)t.push(e),e=e.parent;for(;e=t.pop();)e.updateTransform();return this.transform},r.prototype.setLocalTransform=function(e){if(e){var t=e[0]*e[0]+e[1]*e[1],a=e[2]*e[2]+e[3]*e[3],n=Math.atan2(e[1],e[0]),i=Math.PI/2+n-Math.atan2(e[3],e[2]);a=Math.sqrt(a)*Math.cos(i),t=Math.sqrt(t),this.skewX=i,this.skewY=0,this.rotation=-n,this.x=+e[4],this.y=+e[5],this.scaleX=t,this.scaleY=a,this.originX=0,this.originY=0}},r.prototype.decomposeTransform=function(){if(this.transform){var e=this.parent,t=this.transform;e&&e.transform&&(e.invTransform=e.invTransform||Fe(),$r(Ai,e.invTransform,t),t=Ai);var a=this.originX,n=this.originY;(a||n)&&(pv[4]=a,pv[5]=n,$r(Ai,t,pv),Ai[4]-=a,Ai[5]-=n,t=Ai),this.setLocalTransform(t)}},r.prototype.getGlobalScale=function(e){var t=this.transform;return e=e||[],t?(e[0]=Math.sqrt(t[0]*t[0]+t[1]*t[1]),e[1]=Math.sqrt(t[2]*t[2]+t[3]*t[3]),t[0]<0&&(e[0]=-e[0]),t[3]<0&&(e[1]=-e[1]),e):(e[0]=1,e[1]=1,e)},r.prototype.transformCoordToLocal=function(e,t){var a=[e,t],n=this.invTransform;return n&&fe(a,a,n),a},r.prototype.transformCoordToGlobal=function(e,t){var a=[e,t],n=this.transform;return n&&fe(a,a,n),a},r.prototype.getLineScale=function(){var e=this.transform;return e&&dv(e[0]-1)>1e-10&&dv(e[3]-1)>1e-10?Math.sqrt(dv(e[0]*e[3]-e[2]*e[1])):1},r.prototype.copyTransform=function(e){fT(this,e)},r.getLocalTransform=function(e,t){t=t||[];var a=e.originX||0,n=e.originY||0,i=e.scaleX,o=e.scaleY,s=e.anchorX,l=e.anchorY,u=e.rotation||0,f=e.x,h=e.y,v=e.skewX?Math.tan(e.skewX):0,c=e.skewY?Math.tan(-e.skewY):0;if(a||n||s||l){var p=a+s,d=n+l;t[4]=-p*i-v*d*o,t[5]=-d*o-c*p*i}else t[4]=t[5]=0;return t[0]=i,t[3]=o,t[1]=c*i,t[2]=v*o,u&&nn(t,t,u),t[4]+=a+f,t[5]+=n+h,t},r.initDefaultProps=function(){var e=r.prototype;e.scaleX=e.scaleY=e.globalScaleRatio=1,e.x=e.y=e.originX=e.originY=e.skewX=e.skewY=e.rotation=e.anchorX=e.anchorY=0}(),r}(),Kr=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function fT(r,e){for(var t=0;t=0?parseFloat(r)/100*e:parseFloat(r):r}function xf(r,e,t){var a=e.position||"inside",n=e.distance!=null?e.distance:5,i=t.height,o=t.width,s=i/2,l=t.x,u=t.y,f="left",h="top";if(a instanceof Array)l+=Lr(a[0],t.width),u+=Lr(a[1],t.height),f=null,h=null;else switch(a){case"left":l-=n,u+=s,f="right",h="middle";break;case"right":l+=n+o,u+=s,h="middle";break;case"top":l+=o/2,u-=n,f="center",h="bottom";break;case"bottom":l+=o/2,u+=i+n,f="center";break;case"inside":l+=o/2,u+=s,f="center",h="middle";break;case"insideLeft":l+=n,u+=s,h="middle";break;case"insideRight":l+=o-n,u+=s,f="right",h="middle";break;case"insideTop":l+=o/2,u+=n,f="center";break;case"insideBottom":l+=o/2,u+=i-n,f="center",h="bottom";break;case"insideTopLeft":l+=n,u+=n;break;case"insideTopRight":l+=o-n,u+=n,f="right";break;case"insideBottomLeft":l+=n,u+=i-n,h="bottom";break;case"insideBottomRight":l+=o-n,u+=i-n,f="right",h="bottom";break}return r=r||{},r.x=l,r.y=u,r.align=f,r.verticalAlign=h,r}var gv="__zr_normal__",yv=Kr.concat(["ignore"]),$2=ur(Kr,function(r,e){return r[e]=!0,r},{ignore:!1}),Ci={},Z2=new ht(0,0,0,0),mh=function(){function r(e){this.id=pg(),this.animators=[],this.currentStates=[],this.states={},this._init(e)}return r.prototype._init=function(e){this.attr(e)},r.prototype.drift=function(e,t,a){switch(this.draggable){case"horizontal":t=0;break;case"vertical":e=0;break}var n=this.transform;n||(n=this.transform=[1,0,0,1,0,0]),n[4]+=e,n[5]+=t,this.decomposeTransform(),this.markRedraw()},r.prototype.beforeUpdate=function(){},r.prototype.afterUpdate=function(){},r.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},r.prototype.updateInnerText=function(e){var t=this._textContent;if(t&&(!t.ignore||e)){this.textConfig||(this.textConfig={});var a=this.textConfig,n=a.local,i=t.innerTransformable,o=void 0,s=void 0,l=!1;i.parent=n?this:null;var u=!1;if(i.copyTransform(t),a.position!=null){var f=Z2;a.layoutRect?f.copy(a.layoutRect):f.copy(this.getBoundingRect()),n||f.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(Ci,a,f):xf(Ci,a,f),i.x=Ci.x,i.y=Ci.y,o=Ci.align,s=Ci.verticalAlign;var h=a.origin;if(h&&a.rotation!=null){var v=void 0,c=void 0;h==="center"?(v=f.width*.5,c=f.height*.5):(v=Lr(h[0],f.width),c=Lr(h[1],f.height)),u=!0,i.originX=-i.x+v+(n?0:f.x),i.originY=-i.y+c+(n?0:f.y)}}a.rotation!=null&&(i.rotation=a.rotation);var p=a.offset;p&&(i.x+=p[0],i.y+=p[1],u||(i.originX=-p[0],i.originY=-p[1]));var d=a.inside==null?typeof a.position=="string"&&a.position.indexOf("inside")>=0:a.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),y=void 0,m=void 0,_=void 0;d&&this.canBeInsideText()?(y=a.insideFill,m=a.insideStroke,(y==null||y==="auto")&&(y=this.getInsideTextFill()),(m==null||m==="auto")&&(m=this.getInsideTextStroke(y),_=!0)):(y=a.outsideFill,m=a.outsideStroke,(y==null||y==="auto")&&(y=this.getOutsideFill()),(m==null||m==="auto")&&(m=this.getOutsideStroke(y),_=!0)),y=y||"#000",(y!==g.fill||m!==g.stroke||_!==g.autoStroke||o!==g.align||s!==g.verticalAlign)&&(l=!0,g.fill=y,g.stroke=m,g.autoStroke=_,g.align=o,g.verticalAlign=s,t.setDefaultTextStyle(g)),t.__dirty|=Zr,l&&t.dirtyStyle(!0)}},r.prototype.canBeInsideText=function(){return!0},r.prototype.getInsideTextFill=function(){return"#fff"},r.prototype.getInsideTextStroke=function(e){return"#000"},r.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Gp:zp},r.prototype.getOutsideStroke=function(e){var t=this.__zr&&this.__zr.getBackgroundColor(),a=typeof t=="string"&&Pe(t);a||(a=[255,255,255,1]);for(var n=a[3],i=this.__zr.isDarkMode(),o=0;o<3;o++)a[o]=a[o]*n+(i?0:255)*(1-n);return a[3]=1,Cr(a,"rgba")},r.prototype.traverse=function(e,t){},r.prototype.attrKV=function(e,t){e==="textConfig"?this.setTextConfig(t):e==="textContent"?this.setTextContent(t):e==="clipPath"?this.setClipPath(t):e==="extra"?(this.extra=this.extra||{},V(this.extra,t)):this[e]=t},r.prototype.hide=function(){this.ignore=!0,this.markRedraw()},r.prototype.show=function(){this.ignore=!1,this.markRedraw()},r.prototype.attr=function(e,t){if(typeof e=="string")this.attrKV(e,t);else if(tt(e))for(var a=e,n=_t(a),i=0;i0},r.prototype.getState=function(e){return this.states[e]},r.prototype.ensureState=function(e){var t=this.states;return t[e]||(t[e]={}),t[e]},r.prototype.clearStates=function(e){this.useState(gv,!1,e)},r.prototype.useState=function(e,t,a,n){var i=e===gv,o=this.hasState();if(!(!o&&i)){var s=this.currentStates,l=this.stateTransition;if(!(vt(s,e)>=0&&(t||s.length===1))){var u;if(this.stateProxy&&!i&&(u=this.stateProxy(e)),u||(u=this.states&&this.states[e]),!u&&!i){fh("State "+e+" not exists.");return}i||this.saveCurrentToNormalState(u);var f=!!(u&&u.hoverLayer||n);f&&this._toggleHoverLayerFlag(!0),this._applyStateObj(e,u,this._normalState,t,!a&&!this.__inHover&&l&&l.duration>0,l);var h=this._textContent,v=this._textGuide;return h&&h.useState(e,t,a,f),v&&v.useState(e,t,a,f),i?(this.currentStates=[],this._normalState={}):t?this.currentStates.push(e):this.currentStates=[e],this._updateAnimationTargets(),this.markRedraw(),!f&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2),u}}},r.prototype.useStates=function(e,t,a){if(!e.length)this.clearStates();else{var n=[],i=this.currentStates,o=e.length,s=o===i.length;if(s){for(var l=0;l0,p);var d=this._textContent,g=this._textGuide;d&&d.useStates(e,t,v),g&&g.useStates(e,t,v),this._updateAnimationTargets(),this.currentStates=e.slice(),this.markRedraw(),!v&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2)}},r.prototype.isSilent=function(){for(var e=this.silent,t=this.parent;!e&&t;){if(t.silent){e=!0;break}t=t.parent}return e},r.prototype._updateAnimationTargets=function(){for(var e=0;e=0){var a=this.currentStates.slice();a.splice(t,1),this.useStates(a)}},r.prototype.replaceState=function(e,t,a){var n=this.currentStates.slice(),i=vt(n,e),o=vt(n,t)>=0;i>=0?o?n.splice(i,1):n[i]=t:a&&!o&&n.push(t),this.useStates(n)},r.prototype.toggleState=function(e,t){t?this.useState(e,!0):this.removeState(e)},r.prototype._mergeStates=function(e){for(var t={},a,n=0;n=0&&i.splice(o,1)}),this.animators.push(e),a&&a.animation.addAnimator(e),a&&a.wakeUp()},r.prototype.updateDuringAnimation=function(e){this.markRedraw()},r.prototype.stopAnimation=function(e,t){for(var a=this.animators,n=a.length,i=[],o=0;o0&&t.during&&i[0].during(function(p,d){t.during(d)});for(var v=0;v0||n.force&&!o.length){var T=void 0,A=void 0,C=void 0;if(s){A={},v&&(T={});for(var S=0;S<_;S++){var y=d[S];A[y]=t[y],v?T[y]=a[y]:t[y]=a[y]}}else if(v){C={};for(var S=0;S<_;S++){var y=d[S];C[y]=Rs(t[y]),K2(t,a,y)}}var b=new bg(t,!1,!1,h?At(p,function(I){return I.targetName===e}):null);b.targetName=e,n.scope&&(b.scope=n.scope),v&&T&&b.whenWithKeys(0,T,d),C&&b.whenWithKeys(0,C,d),b.whenWithKeys(u??500,s?A:a,d).delay(f||0),r.addAnimator(b,e),o.push(b)}}var at=function(r){Ft(e,r);function e(t){var a=r.call(this)||this;return a.isGroup=!0,a._children=[],a.attr(t),a}return e.prototype.childrenRef=function(){return this._children},e.prototype.children=function(){return this._children.slice()},e.prototype.childAt=function(t){return this._children[t]},e.prototype.childOfName=function(t){for(var a=this._children,n=0;n=0&&(n.splice(i,0,t),this._doAdd(t))}return this},e.prototype.replace=function(t,a){var n=vt(this._children,t);return n>=0&&this.replaceAt(a,n),this},e.prototype.replaceAt=function(t,a){var n=this._children,i=n[a];if(t&&t!==this&&t.parent!==this&&t!==i){n[a]=t,i.parent=null;var o=this.__zr;o&&i.removeSelfFromZr(o),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var a=this.__zr;a&&a!==t.__zr&&t.addSelfToZr(a),a&&a.refresh()},e.prototype.remove=function(t){var a=this.__zr,n=this._children,i=vt(n,t);return i<0?this:(n.splice(i,1),t.parent=null,a&&t.removeSelfFromZr(a),a&&a.refresh(),this)},e.prototype.removeAll=function(){for(var t=this._children,a=this.__zr,n=0;n0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},r.prototype.setSleepAfterStill=function(e){this._sleepAfterStill=e},r.prototype.wakeUp=function(){this._disposed||(this.animation.start(),this._stillFrameAccum=0)},r.prototype.refreshHover=function(){this._needsRefreshHover=!0},r.prototype.refreshHoverImmediately=function(){this._disposed||(this._needsRefreshHover=!1,this.painter.refreshHover&&this.painter.getType()==="canvas"&&this.painter.refreshHover())},r.prototype.resize=function(e){this._disposed||(e=e||{},this.painter.resize(e.width,e.height),this.handler.resize())},r.prototype.clearAnimation=function(){this._disposed||this.animation.clear()},r.prototype.getWidth=function(){if(!this._disposed)return this.painter.getWidth()},r.prototype.getHeight=function(){if(!this._disposed)return this.painter.getHeight()},r.prototype.setCursorStyle=function(e){this._disposed||this.handler.setCursorStyle(e)},r.prototype.findHover=function(e,t){if(!this._disposed)return this.handler.findHover(e,t)},r.prototype.on=function(e,t,a){return this._disposed||this.handler.on(e,t,a),this},r.prototype.off=function(e,t){this._disposed||this.handler.off(e,t)},r.prototype.trigger=function(e,t){this._disposed||this.handler.trigger(e,t)},r.prototype.clear=function(){if(!this._disposed){for(var e=this.storage.getRoots(),t=0;t0){if(r<=n)return o;if(r>=i)return s}else{if(r>=n)return o;if(r<=i)return s}else{if(r===n)return o;if(r===i)return s}return(r-n)/l*u+o}function W(r,e){switch(r){case"center":case"middle":r="50%";break;case"left":case"top":r="0%";break;case"right":case"bottom":r="100%";break}return Y(r)?lP(r).match(/%$/)?parseFloat(r)/100*e:parseFloat(r):r==null?NaN:+r}function Ut(r,e,t){return e==null&&(e=10),e=Math.min(Math.max(0,e),dT),r=(+r).toFixed(e),t?r:+r}function Ye(r){return r.sort(function(e,t){return e-t}),r}function br(r){if(r=+r,isNaN(r))return 0;if(r>1e-14){for(var e=1,t=0;t<15;t++,e*=10)if(Math.round(r*e)/e===r)return t}return gT(r)}function gT(r){var e=r.toString().toLowerCase(),t=e.indexOf("e"),a=t>0?+e.slice(t+1):0,n=t>0?t:e.length,i=e.indexOf("."),o=i<0?0:n-1-i;return Math.max(0,o-a)}function wg(r,e){var t=Math.log,a=Math.LN10,n=Math.floor(t(r[1]-r[0])/a),i=Math.round(t(Math.abs(e[1]-e[0]))/a),o=Math.min(Math.max(-n+i,0),20);return isFinite(o)?o:20}function uP(r,e,t){if(!r[e])return 0;var a=yT(r,t);return a[e]||0}function yT(r,e){var t=ur(r,function(c,p){return c+(isNaN(p)?0:p)},0);if(t===0)return[];for(var a=Math.pow(10,e),n=G(r,function(c){return(isNaN(c)?0:c)/t*a*100}),i=a*100,o=G(n,function(c){return Math.floor(c)}),s=ur(o,function(c,p){return c+p},0),l=G(n,function(c,p){return c-o[p]});su&&(u=l[h],f=h);++o[f],l[f]=0,++s}return G(o,function(c){return c/a})}function fP(r,e){var t=Math.max(br(r),br(e)),a=r+e;return t>dT?a:Ut(a,t)}var Wp=9007199254740991;function Tg(r){var e=Math.PI*2;return(r%e+e)%e}function uo(r){return r>-1e-4&&r=10&&e++,e}function Ag(r,e){var t=_h(r),a=Math.pow(10,t),n=r/a,i;return e?n<1.5?i=1:n<2.5?i=2:n<4?i=3:n<7?i=5:i=10:n<1?i=1:n<2?i=2:n<3?i=3:n<5?i=5:i=10,r=i*a,t>=-20?+r.toFixed(t<0?-t:0):r}function ju(r,e){var t=(r.length-1)*e+1,a=Math.floor(t),n=+r[a-1],i=t-a;return i?n+i*(r[a]-n):n}function Up(r){r.sort(function(l,u){return s(l,u,0)?-1:1});for(var e=-1/0,t=1,a=0;a=0||i&&vt(i,l)<0)){var u=a.getShallow(l,e);u!=null&&(o[r[s][0]]=u)}}return o}}var OP=[["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]],NP=li(OP),BP=function(){function r(){}return r.prototype.getAreaStyle=function(e,t){return NP(this,e,t)},r}(),Xp=new wl(50);function VP(r){if(typeof r=="string"){var e=Xp.get(r);return e&&e.image}else return r}function Lg(r,e,t,a,n){if(r)if(typeof r=="string"){if(e&&e.__zrImageSrc===r||!t)return e;var i=Xp.get(r),o={hostEl:t,cb:a,cbPayload:n};return i?(e=i.image,!xh(e)&&i.pending.push(o)):(e=Mr.loadImage(r,o0,o0),e.__zrImageSrc=r,Xp.put(r,e.__cachedImgObj={image:e,pending:[o]})),e}else return r;else return e}function o0(){var r=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e=o;l++)s-=o;var u=$e(t,e);return u>s&&(t="",u=0),s=r-u,n.ellipsis=t,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=r,n}function PT(r,e,t){var a=t.containerWidth,n=t.font,i=t.contentWidth;if(!a){r.textLine="",r.isTruncated=!1;return}var o=$e(e,n);if(o<=a){r.textLine=e,r.isTruncated=!1;return}for(var s=0;;s++){if(o<=i||s>=t.maxIterations){e+=t.ellipsis;break}var l=s===0?GP(e,i,t.ascCharWidth,t.cnCharWidth):o>0?Math.floor(e.length*i/o):0;e=e.substr(0,l),o=$e(e,n)}e===""&&(e=t.placeholder),r.textLine=e,r.isTruncated=!0}function GP(r,e,t,a){for(var n=0,i=0,o=r.length;ip&&u){var d=Math.floor(p/s);f=f||v.length>d,v=v.slice(0,d)}if(r&&i&&h!=null)for(var g=LT(h,n,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),y={},m=0;ms&&xv(t,r.substring(s,u),e,o),xv(t,l[2],e,o,l[1]),s=Sv.lastIndex}sn){var L=t.lines.length;x>0?(_.tokens=_.tokens.slice(0,x),y(_,b,S),t.lines=t.lines.slice(0,m+1)):t.lines=t.lines.slice(0,m),t.isTruncated=t.isTruncated||t.lines.length0&&p+a.accumWidth>a.width&&(f=e.split(` +`),u=!0),a.accumWidth=p}else{var d=RT(e,l,a.width,a.breakAll,a.accumWidth);a.accumWidth=d.accumWidth+c,h=d.linesWidths,f=d.lines}}else f=e.split(` +`);for(var g=0;g=32&&e<=591||e>=880&&e<=4351||e>=4608&&e<=5119||e>=7680&&e<=8303}var XP=ur(",&?/;] ".split(""),function(r,e){return r[e]=!0,r},{});function $P(r){return YP(r)?!!XP[r]:!0}function RT(r,e,t,a,n){for(var i=[],o=[],s="",l="",u=0,f=0,h=0;ht:n+f+c>t){f?(s||l)&&(p?(s||(s=l,l="",u=0,f=u),i.push(s),o.push(f-u),l+=v,u+=c,s="",f=u):(l&&(s+=l,l="",u=0),i.push(s),o.push(f),s=v,f=c)):p?(i.push(l),o.push(u),l=v,u=c):(i.push(v),o.push(c));continue}f+=c,p?(l+=v,u+=c):(l&&(s+=l,l="",u=0),s+=v)}return!i.length&&!s&&(s=r,l="",u=0),l&&(s+=l),s&&(i.push(s),o.push(f)),i.length===1&&(f+=n),{accumWidth:f,lines:i,linesWidths:o}}var $p="__zr_style_"+Math.round(Math.random()*10),Qn={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},bh={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};Qn[$p]=!0;var l0=["z","z2","invisible"],ZP=["invisible"],fr=function(r){Ft(e,r);function e(t){return r.call(this,t)||this}return e.prototype._init=function(t){for(var a=_t(t),n=0;n1e-4){s[0]=r-t,s[1]=e-a,l[0]=r+t,l[1]=e+a;return}if(Ql[0]=Av(n)*t+r,Ql[1]=Tv(n)*a+e,tu[0]=Av(i)*t+r,tu[1]=Tv(i)*a+e,u(s,Ql,tu),f(l,Ql,tu),n=n%yn,n<0&&(n=n+yn),i=i%yn,i<0&&(i=i+yn),n>i&&!o?i+=yn:nn&&(eu[0]=Av(c)*t+r,eu[1]=Tv(c)*a+e,u(s,eu,s),f(l,eu,l))}var Ot={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},mn=[],_n=[],Er=[],Aa=[],kr=[],Or=[],Cv=Math.min,Dv=Math.max,Sn=Math.cos,xn=Math.sin,aa=Math.abs,Zp=Math.PI,Ea=Zp*2,Mv=typeof Float32Array<"u",Yo=[];function Iv(r){var e=Math.round(r/Zp*1e8)/1e8;return e%2*Zp}function Pg(r,e){var t=Iv(r[0]);t<0&&(t+=Ea);var a=t-r[0],n=r[1];n+=a,!e&&n-t>=Ea?n=t+Ea:e&&t-n>=Ea?n=t-Ea:!e&&t>n?n=t+(Ea-Iv(t-n)):e&&t0&&(this._ux=aa(a/Sf/e)||0,this._uy=aa(a/Sf/t)||0)},r.prototype.setDPR=function(e){this.dpr=e},r.prototype.setContext=function(e){this._ctx=e},r.prototype.getContext=function(){return this._ctx},r.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},r.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},r.prototype.moveTo=function(e,t){return this._drawPendingPt(),this.addData(Ot.M,e,t),this._ctx&&this._ctx.moveTo(e,t),this._x0=e,this._y0=t,this._xi=e,this._yi=t,this},r.prototype.lineTo=function(e,t){var a=aa(e-this._xi),n=aa(t-this._yi),i=a>this._ux||n>this._uy;if(this.addData(Ot.L,e,t),this._ctx&&i&&this._ctx.lineTo(e,t),i)this._xi=e,this._yi=t,this._pendingPtDist=0;else{var o=a*a+n*n;o>this._pendingPtDist&&(this._pendingPtX=e,this._pendingPtY=t,this._pendingPtDist=o)}return this},r.prototype.bezierCurveTo=function(e,t,a,n,i,o){return this._drawPendingPt(),this.addData(Ot.C,e,t,a,n,i,o),this._ctx&&this._ctx.bezierCurveTo(e,t,a,n,i,o),this._xi=i,this._yi=o,this},r.prototype.quadraticCurveTo=function(e,t,a,n){return this._drawPendingPt(),this.addData(Ot.Q,e,t,a,n),this._ctx&&this._ctx.quadraticCurveTo(e,t,a,n),this._xi=a,this._yi=n,this},r.prototype.arc=function(e,t,a,n,i,o){this._drawPendingPt(),Yo[0]=n,Yo[1]=i,Pg(Yo,o),n=Yo[0],i=Yo[1];var s=i-n;return this.addData(Ot.A,e,t,a,a,n,s,0,o?0:1),this._ctx&&this._ctx.arc(e,t,a,n,i,o),this._xi=Sn(i)*a+e,this._yi=xn(i)*a+t,this},r.prototype.arcTo=function(e,t,a,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(e,t,a,n,i),this},r.prototype.rect=function(e,t,a,n){return this._drawPendingPt(),this._ctx&&this._ctx.rect(e,t,a,n),this.addData(Ot.R,e,t,a,n),this},r.prototype.closePath=function(){this._drawPendingPt(),this.addData(Ot.Z);var e=this._ctx,t=this._x0,a=this._y0;return e&&e.closePath(),this._xi=t,this._yi=a,this},r.prototype.fill=function(e){e&&e.fill(),this.toStatic()},r.prototype.stroke=function(e){e&&e.stroke(),this.toStatic()},r.prototype.len=function(){return this._len},r.prototype.setData=function(e){var t=e.length;!(this.data&&this.data.length===t)&&Mv&&(this.data=new Float32Array(t));for(var a=0;af.length&&(this._expandData(),f=this.data);for(var h=0;h0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},r.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var e=[],t=0;t11&&(this.data=new Float32Array(e)))}},r.prototype.getBoundingRect=function(){Er[0]=Er[1]=kr[0]=kr[1]=Number.MAX_VALUE,Aa[0]=Aa[1]=Or[0]=Or[1]=-Number.MAX_VALUE;var e=this.data,t=0,a=0,n=0,i=0,o;for(o=0;oa||aa(_)>n||v===t-1)&&(d=Math.sqrt(m*m+_*_),i=g,o=y);break}case Ot.C:{var S=e[v++],b=e[v++],g=e[v++],y=e[v++],x=e[v++],w=e[v++];d=h2(i,o,S,b,g,y,x,w,10),i=x,o=w;break}case Ot.Q:{var S=e[v++],b=e[v++],g=e[v++],y=e[v++];d=c2(i,o,S,b,g,y,10),i=g,o=y;break}case Ot.A:var T=e[v++],A=e[v++],C=e[v++],M=e[v++],I=e[v++],L=e[v++],P=L+I;v+=1,p&&(s=Sn(I)*C+T,l=xn(I)*M+A),d=Dv(C,M)*Cv(Ea,Math.abs(L)),i=Sn(P)*C+T,o=xn(P)*M+A;break;case Ot.R:{s=i=e[v++],l=o=e[v++];var R=e[v++],E=e[v++];d=R*2+E*2;break}case Ot.Z:{var m=s-i,_=l-o;d=Math.sqrt(m*m+_*_),i=s,o=l;break}}d>=0&&(u[h++]=d,f+=d)}return this._pathLen=f,f},r.prototype.rebuildPath=function(e,t){var a=this.data,n=this._ux,i=this._uy,o=this._len,s,l,u,f,h,v,c=t<1,p,d,g=0,y=0,m,_=0,S,b;if(!(c&&(this._pathSegLen||this._calculateLength(),p=this._pathSegLen,d=this._pathLen,m=t*d,!m)))t:for(var x=0;x0&&(e.lineTo(S,b),_=0),w){case Ot.M:s=u=a[x++],l=f=a[x++],e.moveTo(u,f);break;case Ot.L:{h=a[x++],v=a[x++];var A=aa(h-u),C=aa(v-f);if(A>n||C>i){if(c){var M=p[y++];if(g+M>m){var I=(m-g)/M;e.lineTo(u*(1-I)+h*I,f*(1-I)+v*I);break t}g+=M}e.lineTo(h,v),u=h,f=v,_=0}else{var L=A*A+C*C;L>_&&(S=h,b=v,_=L)}break}case Ot.C:{var P=a[x++],R=a[x++],E=a[x++],O=a[x++],k=a[x++],B=a[x++];if(c){var M=p[y++];if(g+M>m){var I=(m-g)/M;Ja(u,P,E,k,I,mn),Ja(f,R,O,B,I,_n),e.bezierCurveTo(mn[1],_n[1],mn[2],_n[2],mn[3],_n[3]);break t}g+=M}e.bezierCurveTo(P,R,E,O,k,B),u=k,f=B;break}case Ot.Q:{var P=a[x++],R=a[x++],E=a[x++],O=a[x++];if(c){var M=p[y++];if(g+M>m){var I=(m-g)/M;Xs(u,P,E,I,mn),Xs(f,R,O,I,_n),e.quadraticCurveTo(mn[1],_n[1],mn[2],_n[2]);break t}g+=M}e.quadraticCurveTo(P,R,E,O),u=E,f=O;break}case Ot.A:var F=a[x++],H=a[x++],U=a[x++],j=a[x++],Q=a[x++],it=a[x++],Pt=a[x++],Yt=!a[x++],ct=U>j?U:j,et=aa(U-j)>.001,dt=Q+it,q=!1;if(c){var M=p[y++];g+M>m&&(dt=Q+it*(m-g)/M,q=!0),g+=M}if(et&&e.ellipse?e.ellipse(F,H,U,j,Pt,Q,dt,Yt):e.arc(F,H,ct,Q,dt,Yt),q)break t;T&&(s=Sn(Q)*U+F,l=xn(Q)*j+H),u=Sn(dt)*U+F,f=xn(dt)*j+H;break;case Ot.R:s=u=a[x],l=f=a[x+1],h=a[x++],v=a[x++];var ot=a[x++],Bt=a[x++];if(c){var M=p[y++];if(g+M>m){var It=m-g;e.moveTo(h,v),e.lineTo(h+Cv(It,ot),v),It-=ot,It>0&&e.lineTo(h+ot,v+Cv(It,Bt)),It-=Bt,It>0&&e.lineTo(h+Dv(ot-It,0),v+Bt),It-=ot,It>0&&e.lineTo(h,v+Dv(Bt-It,0));break t}g+=M}e.rect(h,v,ot,Bt);break;case Ot.Z:if(c){var M=p[y++];if(g+M>m){var I=(m-g)/M;e.lineTo(u*(1-I)+s*I,f*(1-I)+l*I);break t}g+=M}e.closePath(),u=s,f=l}}},r.prototype.clone=function(){var e=new r,t=this.data;return e.data=t.slice?t.slice():Array.prototype.slice.call(t),e._len=this._len,e},r.CMD=Ot,r.initDefaultProps=function(){var e=r.prototype;e._saveData=!0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),r}();function Oa(r,e,t,a,n,i,o){if(n===0)return!1;var s=n,l=0,u=r;if(o>e+s&&o>a+s||or+s&&i>t+s||ie+h&&f>a+h&&f>i+h&&f>s+h||fr+h&&u>t+h&&u>n+h&&u>o+h||ue+u&&l>a+u&&l>i+u||lr+u&&s>t+u&&s>n+u||st||f+un&&(n+=Xo);var v=Math.atan2(l,s);return v<0&&(v+=Xo),v>=a&&v<=n||v+Xo>=a&&v+Xo<=n}function sa(r,e,t,a,n,i){if(i>e&&i>a||in?s:0}var Ca=Jr.CMD,bn=Math.PI*2,eR=1e-4;function rR(r,e){return Math.abs(r-e)e&&u>a&&u>i&&u>s||u1&&aR(),c=re(e,a,i,s,rr[0]),v>1&&(p=re(e,a,i,s,rr[1]))),v===2?ge&&s>a&&s>i||s=0&&u<=1){for(var f=0,h=ue(e,a,i,u),v=0;vt||s<-t)return 0;var l=Math.sqrt(t*t-s*s);Me[0]=-l,Me[1]=l;var u=Math.abs(a-n);if(u<1e-4)return 0;if(u>=bn-1e-4){a=0,n=bn;var f=i?1:-1;return o>=Me[0]+r&&o<=Me[1]+r?f:0}if(a>n){var h=a;a=n,n=h}a<0&&(a+=bn,n+=bn);for(var v=0,c=0;c<2;c++){var p=Me[c];if(p+r>o){var d=Math.atan2(s,p),f=i?1:-1;d<0&&(d=bn+d),(d>=a&&d<=n||d+bn>=a&&d+bn<=n)&&(d>Math.PI/2&&d1&&(t||(s+=sa(l,u,f,h,a,n))),g&&(l=i[p],u=i[p+1],f=l,h=u),d){case Ca.M:f=i[p++],h=i[p++],l=f,u=h;break;case Ca.L:if(t){if(Oa(l,u,i[p],i[p+1],e,a,n))return!0}else s+=sa(l,u,i[p],i[p+1],a,n)||0;l=i[p++],u=i[p++];break;case Ca.C:if(t){if(QP(l,u,i[p++],i[p++],i[p++],i[p++],i[p],i[p+1],e,a,n))return!0}else s+=nR(l,u,i[p++],i[p++],i[p++],i[p++],i[p],i[p+1],a,n)||0;l=i[p++],u=i[p++];break;case Ca.Q:if(t){if(ET(l,u,i[p++],i[p++],i[p],i[p+1],e,a,n))return!0}else s+=iR(l,u,i[p++],i[p++],i[p],i[p+1],a,n)||0;l=i[p++],u=i[p++];break;case Ca.A:var y=i[p++],m=i[p++],_=i[p++],S=i[p++],b=i[p++],x=i[p++];p+=1;var w=!!(1-i[p++]);v=Math.cos(b)*_+y,c=Math.sin(b)*S+m,g?(f=v,h=c):s+=sa(l,u,v,c,a,n);var T=(a-y)*S/_+y;if(t){if(tR(y,m,S,b,b+x,w,e,T,n))return!0}else s+=oR(y,m,S,b,b+x,w,T,n);l=Math.cos(b+x)*_+y,u=Math.sin(b+x)*S+m;break;case Ca.R:f=l=i[p++],h=u=i[p++];var A=i[p++],C=i[p++];if(v=f+A,c=h+C,t){if(Oa(f,h,v,h,e,a,n)||Oa(v,h,v,c,e,a,n)||Oa(v,c,f,c,e,a,n)||Oa(f,c,f,h,e,a,n))return!0}else s+=sa(v,h,v,c,a,n),s+=sa(f,c,f,h,a,n);break;case Ca.Z:if(t){if(Oa(l,u,f,h,e,a,n))return!0}else s+=sa(l,u,f,h,a,n);l=f,u=h;break}}return!t&&!rR(u,h)&&(s+=sa(l,u,f,h,a,n)||0),s!==0}function sR(r,e,t){return kT(r,0,!1,e,t)}function lR(r,e,t,a){return kT(r,e,!0,t,a)}var bf=J({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},Qn),uR={style:J({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},bh.style)},Lv=Kr.concat(["invisible","culling","z","z2","zlevel","parent"]),mt=function(r){Ft(e,r);function e(t){return r.call(this,t)||this}return e.prototype.update=function(){var t=this;r.prototype.update.call(this);var a=this.style;if(a.decal){var n=this._decalEl=this._decalEl||new e;n.buildPath===e.prototype.buildPath&&(n.buildPath=function(l){t.buildPath(l,t.shape)}),n.silent=!0;var i=n.style;for(var o in a)i[o]!==a[o]&&(i[o]=a[o]);i.fill=a.fill?a.decal:null,i.decal=null,i.shadowColor=null,a.strokeFirst&&(i.stroke=null);for(var s=0;s.5?zp:a>.2?Y2:Gp}else if(t)return Gp}return zp},e.prototype.getInsideTextStroke=function(t){var a=this.style.fill;if(Y(a)){var n=this.__zr,i=!!(n&&n.isDarkMode()),o=qs(t,0)0))},e.prototype.hasFill=function(){var t=this.style,a=t.fill;return a!=null&&a!=="none"},e.prototype.getBoundingRect=function(){var t=this._rect,a=this.style,n=!t;if(n){var i=!1;this.path||(i=!0,this.createPathProxy());var o=this.path;(i||this.__dirty&ds)&&(o.beginPath(),this.buildPath(o,this.shape,!1),this.pathUpdated()),t=o.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var s=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||n){s.copy(t);var l=a.strokeNoScale?this.getLineScale():1,u=a.lineWidth;if(!this.hasFill()){var f=this.strokeContainThreshold;u=Math.max(u,f??4)}l>1e-10&&(s.width+=u/l,s.height+=u/l,s.x-=u/l/2,s.y-=u/l/2)}return s}return t},e.prototype.contain=function(t,a){var n=this.transformCoordToLocal(t,a),i=this.getBoundingRect(),o=this.style;if(t=n[0],a=n[1],i.contain(t,a)){var s=this.path;if(this.hasStroke()){var l=o.lineWidth,u=o.strokeNoScale?this.getLineScale():1;if(u>1e-10&&(this.hasFill()||(l=Math.max(l,this.strokeContainThreshold)),lR(s,l/u,t,a)))return!0}if(this.hasFill())return sR(s,t,a)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=ds,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){t==="style"?this.dirtyStyle():t==="shape"?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(t,a){t==="shape"?this.setShape(a):r.prototype.attrKV.call(this,t,a)},e.prototype.setShape=function(t,a){var n=this.shape;return n||(n=this.shape={}),typeof t=="string"?n[t]=a:V(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(this.__dirty&ds)},e.prototype.createStyle=function(t){return xl(bf,t)},e.prototype._innerSaveToNormal=function(t){r.prototype._innerSaveToNormal.call(this,t);var a=this._normalState;t.shape&&!a.shape&&(a.shape=V({},this.shape))},e.prototype._applyStateObj=function(t,a,n,i,o,s){r.prototype._applyStateObj.call(this,t,a,n,i,o,s);var l=!(a&&i),u;if(a&&a.shape?o?i?u=a.shape:(u=V({},n.shape),V(u,a.shape)):(u=V({},i?this.shape:n.shape),V(u,a.shape)):l&&(u=n.shape),u)if(o){this.shape=V({},this.shape);for(var f={},h=_t(u),v=0;v0},e.prototype.hasFill=function(){var t=this.style,a=t.fill;return a!=null&&a!=="none"},e.prototype.createStyle=function(t){return xl(fR,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var a=t.text;a!=null?a+="":a="";var n=Tl(a,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},e.initDefaultProps=function(){var t=e.prototype;t.dirtyRectTolerance=10}(),e}(fr);fo.prototype.type="tspan";var hR=J({x:0,y:0},Qn),vR={style:J({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},bh.style)};function cR(r){return!!(r&&typeof r!="string"&&r.width&&r.height)}var le=function(r){Ft(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.createStyle=function(t){return xl(hR,t)},e.prototype._getSize=function(t){var a=this.style,n=a[t];if(n!=null)return n;var i=cR(a.image)?a.image:this.__image;if(!i)return 0;var o=t==="width"?"height":"width",s=a[o];return s==null?i[t]:i[t]/i[o]*s},e.prototype.getWidth=function(){return this._getSize("width")},e.prototype.getHeight=function(){return this._getSize("height")},e.prototype.getAnimationStyleProps=function(){return vR},e.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new ht(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},e}(fr);le.prototype.type="image";function pR(r,e){var t=e.x,a=e.y,n=e.width,i=e.height,o=e.r,s,l,u,f;n<0&&(t=t+n,n=-n),i<0&&(a=a+i,i=-i),typeof o=="number"?s=l=u=f=o:o instanceof Array?o.length===1?s=l=u=f=o[0]:o.length===2?(s=u=o[0],l=f=o[1]):o.length===3?(s=o[0],l=f=o[1],u=o[2]):(s=o[0],l=o[1],u=o[2],f=o[3]):s=l=u=f=0;var h;s+l>n&&(h=s+l,s*=n/h,l*=n/h),u+f>n&&(h=u+f,u*=n/h,f*=n/h),l+u>i&&(h=l+u,l*=i/h,u*=i/h),s+f>i&&(h=s+f,s*=i/h,f*=i/h),r.moveTo(t+s,a),r.lineTo(t+n-l,a),l!==0&&r.arc(t+n-l,a+l,l,-Math.PI/2,0),r.lineTo(t+n,a+i-u),u!==0&&r.arc(t+n-u,a+i-u,u,0,Math.PI/2),r.lineTo(t+f,a+i),f!==0&&r.arc(t+f,a+i-f,f,Math.PI/2,Math.PI),r.lineTo(t,a+s),s!==0&&r.arc(t+s,a+s,s,Math.PI,Math.PI*1.5)}var Ki=Math.round;function OT(r,e,t){if(e){var a=e.x1,n=e.x2,i=e.y1,o=e.y2;r.x1=a,r.x2=n,r.y1=i,r.y2=o;var s=t&&t.lineWidth;return s&&(Ki(a*2)===Ki(n*2)&&(r.x1=r.x2=Yn(a,s,!0)),Ki(i*2)===Ki(o*2)&&(r.y1=r.y2=Yn(i,s,!0))),r}}function NT(r,e,t){if(e){var a=e.x,n=e.y,i=e.width,o=e.height;r.x=a,r.y=n,r.width=i,r.height=o;var s=t&&t.lineWidth;return s&&(r.x=Yn(a,s,!0),r.y=Yn(n,s,!0),r.width=Math.max(Yn(a+i,s,!1)-r.x,i===0?0:1),r.height=Math.max(Yn(n+o,s,!1)-r.y,o===0?0:1)),r}}function Yn(r,e,t){if(!e)return r;var a=Ki(r*2);return(a+Ki(e))%2===0?a/2:(a+(t?1:-1))/2}var dR=function(){function r(){this.x=0,this.y=0,this.width=0,this.height=0}return r}(),gR={},xt=function(r){Ft(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultShape=function(){return new dR},e.prototype.buildPath=function(t,a){var n,i,o,s;if(this.subPixelOptimize){var l=NT(gR,a,this.style);n=l.x,i=l.y,o=l.width,s=l.height,l.r=a.r,a=l}else n=a.x,i=a.y,o=a.width,s=a.height;a.r?pR(t,a):t.rect(n,i,o,s)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(mt);xt.prototype.type="rect";var c0={fill:"#000"},p0=2,yR={style:J({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},bh.style)},St=function(r){Ft(e,r);function e(t){var a=r.call(this)||this;return a.type="text",a._children=[],a._defaultStyle=c0,a.attr(t),a}return e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){r.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var t=0;t0,I=t.width!=null&&(t.overflow==="truncate"||t.overflow==="break"||t.overflow==="breakAll"),L=o.calculatedLineHeight,P=0;P=0&&(P=x[L],P.align==="right");)this._placeToken(P,t,T,y,I,"right",_),A-=P.width,I-=P.width,L--;for(M+=(i-(M-g)-(m-I)-A)/2;C<=L;)P=x[C],this._placeToken(P,t,T,y,M+P.width/2,"center",_),M+=P.width,C++;y+=T}},e.prototype._placeToken=function(t,a,n,i,o,s,l){var u=a.rich[t.styleName]||{};u.text=t.text;var f=t.verticalAlign,h=i+n/2;f==="top"?h=i+t.height/2:f==="bottom"&&(h=i+n-t.height/2);var v=!t.isLineHolder&&Pv(u);v&&this._renderBackground(u,a,s==="right"?o-t.width:s==="center"?o-t.width/2:o,h-t.height/2,t.width,t.height);var c=!!u.backgroundColor,p=t.textPadding;p&&(o=S0(o,s,p),h-=t.height/2-p[0]-t.innerHeight/2);var d=this._getOrCreateChild(fo),g=d.createStyle();d.useStyle(g);var y=this._defaultStyle,m=!1,_=0,S=_0("fill"in u?u.fill:"fill"in a?a.fill:(m=!0,y.fill)),b=m0("stroke"in u?u.stroke:"stroke"in a?a.stroke:!c&&!l&&(!y.autoStroke||m)?(_=p0,y.stroke):null),x=u.textShadowBlur>0||a.textShadowBlur>0;g.text=t.text,g.x=o,g.y=h,x&&(g.shadowBlur=u.textShadowBlur||a.textShadowBlur||0,g.shadowColor=u.textShadowColor||a.textShadowColor||"transparent",g.shadowOffsetX=u.textShadowOffsetX||a.textShadowOffsetX||0,g.shadowOffsetY=u.textShadowOffsetY||a.textShadowOffsetY||0),g.textAlign=s,g.textBaseline="middle",g.font=t.font||ja,g.opacity=Tr(u.opacity,a.opacity,1),g0(g,u),b&&(g.lineWidth=Tr(u.lineWidth,a.lineWidth,_),g.lineDash=st(u.lineDash,a.lineDash),g.lineDashOffset=a.lineDashOffset||0,g.stroke=b),S&&(g.fill=S);var w=t.contentWidth,T=t.contentHeight;d.setBoundingRect(new ht(ys(g.x,w,g.textAlign),Yi(g.y,T,g.textBaseline),w,T))},e.prototype._renderBackground=function(t,a,n,i,o,s){var l=t.backgroundColor,u=t.borderWidth,f=t.borderColor,h=l&&l.image,v=l&&!h,c=t.borderRadius,p=this,d,g;if(v||t.lineHeight||u&&f){d=this._getOrCreateChild(xt),d.useStyle(d.createStyle()),d.style.fill=null;var y=d.shape;y.x=n,y.y=i,y.width=o,y.height=s,y.r=c,d.dirtyShape()}if(v){var m=d.style;m.fill=l||null,m.fillOpacity=st(t.fillOpacity,1)}else if(h){g=this._getOrCreateChild(le),g.onload=function(){p.dirtyStyle()};var _=g.style;_.image=l.image,_.x=n,_.y=i,_.width=o,_.height=s}if(u&&f){var m=d.style;m.lineWidth=u,m.stroke=f,m.strokeOpacity=st(t.strokeOpacity,1),m.lineDash=t.borderDash,m.lineDashOffset=t.borderDashOffset||0,d.strokeContainThreshold=0,d.hasFill()&&d.hasStroke()&&(m.strokeFirst=!0,m.lineWidth*=2)}var S=(d||g).style;S.shadowBlur=t.shadowBlur||0,S.shadowColor=t.shadowColor||"transparent",S.shadowOffsetX=t.shadowOffsetX||0,S.shadowOffsetY=t.shadowOffsetY||0,S.opacity=Tr(t.opacity,a.opacity,1)},e.makeFont=function(t){var a="";return VT(t)&&(a=[t.fontStyle,t.fontWeight,BT(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),a&&sr(a)||t.textFont||t.font},e}(fr),mR={left:!0,right:1,center:1},_R={top:1,bottom:1,middle:1},d0=["fontStyle","fontWeight","fontSize","fontFamily"];function BT(r){return typeof r=="string"&&(r.indexOf("px")!==-1||r.indexOf("rem")!==-1||r.indexOf("em")!==-1)?r:isNaN(+r)?hg+"px":r+"px"}function g0(r,e){for(var t=0;t=0,i=!1;if(r instanceof mt){var o=zT(r),s=n&&o.selectFill||o.normalFill,l=n&&o.selectStroke||o.normalStroke;if(Di(s)||Di(l)){a=a||{};var u=a.style||{};u.fill==="inherit"?(i=!0,a=V({},a),u=V({},u),u.fill=s):!Di(u.fill)&&Di(s)?(i=!0,a=V({},a),u=V({},u),u.fill=mf(s)):!Di(u.stroke)&&Di(l)&&(i||(a=V({},a),u=V({},u)),u.stroke=mf(l)),a.style=u}}if(a&&a.z2==null){i||(a=V({},a));var f=r.z2EmphasisLift;a.z2=r.z2+(f??bo)}return a}function CR(r,e,t){if(t&&t.z2==null){t=V({},t);var a=r.z2SelectLift;t.z2=r.z2+(a??xR)}return t}function DR(r,e,t){var a=vt(r.currentStates,e)>=0,n=r.style.opacity,i=a?null:TR(r,["opacity"],e,{opacity:1});t=t||{};var o=t.style||{};return o.opacity==null&&(t=V({},t),o=V({opacity:a?n:i.opacity*.1},o),t.style=o),t}function Rv(r,e){var t=this.states[r];if(this.style){if(r==="emphasis")return AR(this,r,e,t);if(r==="blur")return DR(this,r,t);if(r==="select")return CR(this,r,t)}return t}function ui(r){r.stateProxy=Rv;var e=r.getTextContent(),t=r.getTextGuideLine();e&&(e.stateProxy=Rv),t&&(t.stateProxy=Rv)}function A0(r,e){!XT(r,e)&&!r.__highByOuter&&wa(r,GT)}function C0(r,e){!XT(r,e)&&!r.__highByOuter&&wa(r,FT)}function ga(r,e){r.__highByOuter|=1<<(e||0),wa(r,GT)}function ya(r,e){!(r.__highByOuter&=~(1<<(e||0)))&&wa(r,FT)}function WT(r){wa(r,kg)}function Og(r){wa(r,HT)}function UT(r){wa(r,bR)}function YT(r){wa(r,wR)}function XT(r,e){return r.__highDownSilentOnTouch&&e.zrByTouch}function $T(r){var e=r.getModel(),t=[],a=[];e.eachComponent(function(n,i){var o=Rg(i),s=n==="series",l=s?r.getViewOfSeriesModel(i):r.getViewOfComponentModel(i);!s&&a.push(l),o.isBlured&&(l.group.traverse(function(u){HT(u)}),s&&t.push(i)),o.isBlured=!1}),D(a,function(n){n&&n.toggleBlurSeries&&n.toggleBlurSeries(t,!1,e)})}function Kp(r,e,t,a){var n=a.getModel();t=t||"coordinateSystem";function i(u,f){for(var h=0;h0){var s={dataIndex:o,seriesIndex:t.seriesIndex};i!=null&&(s.dataType=i),e.push(s)}})}),e}function Xa(r,e,t){Xn(r,!0),wa(r,ui),Jp(r,e,t)}function ER(r){Xn(r,!1)}function Wt(r,e,t,a){a?ER(r):Xa(r,e,t)}function Jp(r,e,t){var a=nt(r);e!=null?(a.focus=e,a.blurScope=t):a.focus&&(a.focus=null)}var M0=["emphasis","blur","select"],kR={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function ce(r,e,t,a){t=t||"itemStyle";for(var n=0;n1&&(o*=Ev(p),s*=Ev(p));var d=(n===i?-1:1)*Ev((o*o*(s*s)-o*o*(c*c)-s*s*(v*v))/(o*o*(c*c)+s*s*(v*v)))||0,g=d*o*c/s,y=d*-s*v/o,m=(r+t)/2+au(h)*g-ru(h)*y,_=(e+a)/2+ru(h)*g+au(h)*y,S=R0([1,0],[(v-g)/o,(c-y)/s]),b=[(v-g)/o,(c-y)/s],x=[(-1*v-g)/o,(-1*c-y)/s],w=R0(b,x);if(td(b,x)<=-1&&(w=$o),td(b,x)>=1&&(w=0),w<0){var T=Math.round(w/$o*1e6)/1e6;w=$o*2+T%2*$o}f.addData(u,m,_,o,s,S,w,h,i)}var GR=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig,FR=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function HR(r){var e=new Jr;if(!r)return e;var t=0,a=0,n=t,i=a,o,s=Jr.CMD,l=r.match(GR);if(!l)return e;for(var u=0;uP*P+R*R&&(T=C,A=M),{cx:T,cy:A,x0:-f,y0:-h,x1:T*(n/b-1),y1:A*(n/b-1)}}function qR(r){var e;if(z(r)){var t=r.length;if(!t)return r;t===1?e=[r[0],r[0],0,0]:t===2?e=[r[0],r[0],r[1],r[1]]:t===3?e=r.concat(r[2]):e=r}else e=[r,r,r,r];return e}function KR(r,e){var t,a=ms(e.r,0),n=ms(e.r0||0,0),i=a>0,o=n>0;if(!(!i&&!o)){if(i||(a=n,n=0),n>a){var s=a;a=n,n=s}var l=e.startAngle,u=e.endAngle;if(!(isNaN(l)||isNaN(u))){var f=e.cx,h=e.cy,v=!!e.clockwise,c=k0(u-l),p=c>kv&&c%kv;if(p>mr&&(c=p),!(a>mr))r.moveTo(f,h);else if(c>kv-mr)r.moveTo(f+a*Ii(l),h+a*wn(l)),r.arc(f,h,a,l,u,!v),n>mr&&(r.moveTo(f+n*Ii(u),h+n*wn(u)),r.arc(f,h,n,u,l,v));else{var d=void 0,g=void 0,y=void 0,m=void 0,_=void 0,S=void 0,b=void 0,x=void 0,w=void 0,T=void 0,A=void 0,C=void 0,M=void 0,I=void 0,L=void 0,P=void 0,R=a*Ii(l),E=a*wn(l),O=n*Ii(u),k=n*wn(u),B=c>mr;if(B){var F=e.cornerRadius;F&&(t=qR(F),d=t[0],g=t[1],y=t[2],m=t[3]);var H=k0(a-n)/2;if(_=Nr(H,y),S=Nr(H,m),b=Nr(H,d),x=Nr(H,g),A=w=ms(_,S),C=T=ms(b,x),(w>mr||T>mr)&&(M=a*Ii(u),I=a*wn(u),L=n*Ii(l),P=n*wn(l),cmr){var et=Nr(y,A),dt=Nr(m,A),q=nu(L,P,R,E,a,et,v),ot=nu(M,I,O,k,a,dt,v);r.moveTo(f+q.cx+q.x0,h+q.cy+q.y0),A0&&r.arc(f+q.cx,h+q.cy,et,de(q.y0,q.x0),de(q.y1,q.x1),!v),r.arc(f,h,a,de(q.cy+q.y1,q.cx+q.x1),de(ot.cy+ot.y1,ot.cx+ot.x1),!v),dt>0&&r.arc(f+ot.cx,h+ot.cy,dt,de(ot.y1,ot.x1),de(ot.y0,ot.x0),!v))}else r.moveTo(f+R,h+E),r.arc(f,h,a,l,u,!v);if(!(n>mr)||!B)r.lineTo(f+O,h+k);else if(C>mr){var et=Nr(d,C),dt=Nr(g,C),q=nu(O,k,M,I,n,-dt,v),ot=nu(R,E,L,P,n,-et,v);r.lineTo(f+q.cx+q.x0,h+q.cy+q.y0),C0&&r.arc(f+q.cx,h+q.cy,dt,de(q.y0,q.x0),de(q.y1,q.x1),!v),r.arc(f,h,n,de(q.cy+q.y1,q.cx+q.x1),de(ot.cy+ot.y1,ot.cx+ot.x1),v),et>0&&r.arc(f+ot.cx,h+ot.cy,et,de(ot.y1,ot.x1),de(ot.y0,ot.x0),!v))}else r.lineTo(f+O,h+k),r.arc(f,h,n,u,l,v)}r.closePath()}}}var jR=function(){function r(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0,this.cornerRadius=0}return r}(),we=function(r){Ft(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultShape=function(){return new jR},e.prototype.buildPath=function(t,a){KR(t,a)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(mt);we.prototype.type="sector";var JR=function(){function r(){this.cx=0,this.cy=0,this.r=0,this.r0=0}return r}(),wo=function(r){Ft(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultShape=function(){return new JR},e.prototype.buildPath=function(t,a){var n=a.cx,i=a.cy,o=Math.PI*2;t.moveTo(n+a.r,i),t.arc(n,i,a.r,0,o,!1),t.moveTo(n+a.r0,i),t.arc(n,i,a.r0,0,o,!0)},e}(mt);wo.prototype.type="ring";function QR(r,e,t,a){var n=[],i=[],o=[],s=[],l,u,f,h;if(a){f=[1/0,1/0],h=[-1/0,-1/0];for(var v=0,c=r.length;v=2){if(a){var i=QR(n,a,t,e.smoothConstraint);r.moveTo(n[0][0],n[0][1]);for(var o=n.length,s=0;s<(t?o:o-1);s++){var l=i[s*2],u=i[s*2+1],f=n[(s+1)%o];r.bezierCurveTo(l[0],l[1],u[0],u[1],f[0],f[1])}}else{r.moveTo(n[0][0],n[0][1]);for(var s=1,h=n.length;sAn[1]){if(s=!1,i)return s;var f=Math.abs(An[0]-Tn[1]),h=Math.abs(Tn[0]-An[1]);Math.min(f,h)>n.len()&&(f0){var h=f.duration,v=f.delay,c=f.easing,p={duration:h,delay:v||0,easing:c,done:i,force:!!i||!!o,setToFinal:!u,scope:r,during:o};s?e.animateFrom(t,p):e.animateTo(t,p)}else e.stopAnimation(),!s&&e.attr(t),o&&o(1),i&&i()}function Tt(r,e,t,a,n,i){zg("update",r,e,t,a,n,i)}function Gt(r,e,t,a,n,i){zg("enter",r,e,t,a,n,i)}function ro(r){if(!r.__zr)return!0;for(var e=0;eMath.abs(i[1])?i[0]>0?"right":"left":i[1]>0?"bottom":"top"}function B0(r){return!r.isGroup}function fE(r){return r.shape!=null}function Ll(r,e,t){if(!r||!e)return;function a(o){var s={};return o.traverse(function(l){B0(l)&&l.anid&&(s[l.anid]=l)}),s}function n(o){var s={x:o.x,y:o.y,rotation:o.rotation};return fE(o)&&(s.shape=V({},o.shape)),s}var i=a(r);e.traverse(function(o){if(B0(o)&&o.anid){var s=i[o.anid];if(s){var l=n(o);o.attr(n(s)),Tt(o,l,t,nt(o).dataIndex)}}})}function Hg(r,e){return G(r,function(t){var a=t[0];a=Af(a,e.x),a=Cf(a,e.x+e.width);var n=t[1];return n=Af(n,e.y),n=Cf(n,e.y+e.height),[a,n]})}function sA(r,e){var t=Af(r.x,e.x),a=Cf(r.x+r.width,e.x+e.width),n=Af(r.y,e.y),i=Cf(r.y+r.height,e.y+e.height);if(a>=t&&i>=n)return{x:t,y:n,width:a-t,height:i-n}}function Do(r,e,t){var a=V({rectHover:!0},e),n=a.style={strokeNoScale:!0};if(t=t||{x:-1,y:-1,width:2,height:2},r)return r.indexOf("image://")===0?(n.image=r.slice(8),J(n,t),new le(a)):Il(r.replace("path://",""),a,t,"center")}function _s(r,e,t,a,n){for(var i=0,o=n[n.length-1];i1)return!1;var g=Ov(c,p,f,h)/v;return!(g<0||g>1)}function Ov(r,e,t,a){return r*a-t*e}function hE(r){return r<=1e-6&&r>=-1e-6}function gi(r){var e=r.itemTooltipOption,t=r.componentModel,a=r.itemName,n=Y(e)?{formatter:e}:e,i=t.mainType,o=t.componentIndex,s={componentType:i,name:a,$vars:["name"]};s[i+"Index"]=o;var l=r.formatterParamsExtra;l&&D(_t(l),function(f){$(s,f)||(s[f]=l[f],s.$vars.push(f))});var u=nt(r.el);u.componentMainType=i,u.componentIndex=o,u.tooltipConfig={name:a,option:J({content:a,encodeHTMLContent:!0,formatterParams:s},n)}}function V0(r,e){var t;r.isGroup&&(t=e(r)),t||r.traverse(e)}function on(r,e){if(r)if(z(r))for(var t=0;t=0&&s.push(l)}),s}}function sn(r,e){return ut(ut({},r,!0),e,!0)}const wE={time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst",custom:"Custom chart",chart:"Chart"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}},TE={time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图",custom:"自定义图表",chart:"图表"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}};var Mf="ZH",Ug="EN",ao=Ug,ef={},Yg={},pA=yt.domSupported?function(){var r=(document.documentElement.lang||navigator.language||navigator.browserLanguage||ao).toUpperCase();return r.indexOf(Mf)>-1?Mf:ao}():ao;function Xg(r,e){r=r.toUpperCase(),Yg[r]=new Ct(e),ef[r]=e}function AE(r){if(Y(r)){var e=ef[r.toUpperCase()]||{};return r===Mf||r===Ug?rt(e):ut(rt(e),rt(ef[ao]),!1)}else return ut(rt(r),rt(ef[ao]),!1)}function ad(r){return Yg[r]}function CE(){return Yg[ao]}Xg(Ug,wE);Xg(Mf,TE);var $g=1e3,Zg=$g*60,Vs=Zg*60,or=Vs*24,W0=or*365,Ss={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},su="{yyyy}-{MM}-{dd}",U0={year:"{yyyy}",month:"{yyyy}-{MM}",day:su,hour:su+" "+Ss.hour,minute:su+" "+Ss.minute,second:su+" "+Ss.second,millisecond:Ss.none},Vv=["year","month","day","hour","minute","second","millisecond"],dA=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Ie(r,e){return r+="","0000".substr(0,e-r.length)+r}function no(r){switch(r){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return r}}function DE(r){return r===no(r)}function ME(r){switch(r){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}function Pl(r,e,t,a){var n=Ze(r),i=n[qg(t)](),o=n[io(t)]()+1,s=Math.floor((o-1)/3)+1,l=n[Lh(t)](),u=n["get"+(t?"UTC":"")+"Day"](),f=n[el(t)](),h=(f-1)%12+1,v=n[Ph(t)](),c=n[Rh(t)](),p=n[Eh(t)](),d=f>=12?"pm":"am",g=d.toUpperCase(),y=a instanceof Ct?a:ad(a||pA)||CE(),m=y.getModel("time"),_=m.get("month"),S=m.get("monthAbbr"),b=m.get("dayOfWeek"),x=m.get("dayOfWeekAbbr");return(e||"").replace(/{a}/g,d+"").replace(/{A}/g,g+"").replace(/{yyyy}/g,i+"").replace(/{yy}/g,Ie(i%100+"",2)).replace(/{Q}/g,s+"").replace(/{MMMM}/g,_[o-1]).replace(/{MMM}/g,S[o-1]).replace(/{MM}/g,Ie(o,2)).replace(/{M}/g,o+"").replace(/{dd}/g,Ie(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,b[u]).replace(/{ee}/g,x[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Ie(f,2)).replace(/{H}/g,f+"").replace(/{hh}/g,Ie(h+"",2)).replace(/{h}/g,h+"").replace(/{mm}/g,Ie(v,2)).replace(/{m}/g,v+"").replace(/{ss}/g,Ie(c,2)).replace(/{s}/g,c+"").replace(/{SSS}/g,Ie(p,3)).replace(/{S}/g,p+"")}function IE(r,e,t,a,n){var i=null;if(Y(t))i=t;else if(K(t))i=t(r.value,e,{level:r.level});else{var o=V({},Ss);if(r.level>0)for(var s=0;s=0;--s)if(l[u]){i=l[u];break}i=i||o.none}if(z(i)){var h=r.level==null?0:r.level>=0?r.level:i.length+r.level;h=Math.min(h,i.length-1),i=i[h]}}return Pl(new Date(r.value),i,n,a)}function gA(r,e){var t=Ze(r),a=t[io(e)]()+1,n=t[Lh(e)](),i=t[el(e)](),o=t[Ph(e)](),s=t[Rh(e)](),l=t[Eh(e)](),u=l===0,f=u&&s===0,h=f&&o===0,v=h&&i===0,c=v&&n===1,p=c&&a===1;return p?"year":c?"month":v?"day":h?"hour":f?"minute":u?"second":"millisecond"}function Y0(r,e,t){var a=wt(r)?Ze(r):r;switch(e=e||gA(r,t),e){case"year":return a[qg(t)]();case"half-year":return a[io(t)]()>=6?1:0;case"quarter":return Math.floor((a[io(t)]()+1)/4);case"month":return a[io(t)]();case"day":return a[Lh(t)]();case"half-day":return a[el(t)]()/24;case"hour":return a[el(t)]();case"minute":return a[Ph(t)]();case"second":return a[Rh(t)]();case"millisecond":return a[Eh(t)]()}}function qg(r){return r?"getUTCFullYear":"getFullYear"}function io(r){return r?"getUTCMonth":"getMonth"}function Lh(r){return r?"getUTCDate":"getDate"}function el(r){return r?"getUTCHours":"getHours"}function Ph(r){return r?"getUTCMinutes":"getMinutes"}function Rh(r){return r?"getUTCSeconds":"getSeconds"}function Eh(r){return r?"getUTCMilliseconds":"getMilliseconds"}function LE(r){return r?"setUTCFullYear":"setFullYear"}function yA(r){return r?"setUTCMonth":"setMonth"}function mA(r){return r?"setUTCDate":"setDate"}function _A(r){return r?"setUTCHours":"setHours"}function SA(r){return r?"setUTCMinutes":"setMinutes"}function xA(r){return r?"setUTCSeconds":"setSeconds"}function bA(r){return r?"setUTCMilliseconds":"setMilliseconds"}function PE(r,e,t,a,n,i,o,s){var l=new St({style:{text:r,font:e,align:t,verticalAlign:a,padding:n,rich:i,overflow:o?"truncate":null,lineHeight:s}});return l.getBoundingRect()}function Kg(r){if(!Cg(r))return Y(r)?r:"-";var e=(r+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function jg(r,e){return r=(r||"").toLowerCase().replace(/-(.)/g,function(t,a){return a.toUpperCase()}),e&&r&&(r=r.charAt(0).toUpperCase()+r.slice(1)),r}var mi=ch;function nd(r,e,t){var a="{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}";function n(f){return f&&sr(f)?f:"-"}function i(f){return!!(f!=null&&!isNaN(f)&&isFinite(f))}var o=e==="time",s=r instanceof Date;if(o||s){var l=o?Ze(r):r;if(isNaN(+l)){if(s)return"-"}else return Pl(l,a,t)}if(e==="ordinal")return vf(r)?n(r):wt(r)&&i(r)?r+"":"-";var u=jr(r);return i(u)?Kg(u):vf(r)?n(r):typeof r=="boolean"?r+"":"-"}var X0=["a","b","c","d","e","f","g"],zv=function(r,e){return"{"+r+(e??"")+"}"};function Jg(r,e,t){z(e)||(e=[e]);var a=e.length;if(!a)return"";for(var n=e[0].$vars||[],i=0;i':'';var o=t.markerId||"markerX";return{renderMode:i,content:"{"+o+"|} ",style:n==="subItem"?{width:4,height:4,borderRadius:2,backgroundColor:a}:{width:10,height:10,borderRadius:5,backgroundColor:a}}}function EE(r,e,t){(r==="week"||r==="month"||r==="quarter"||r==="half-year"||r==="year")&&(r=`MM-dd +yyyy`);var a=Ze(e),n=t?"getUTC":"get",i=a[n+"FullYear"](),o=a[n+"Month"]()+1,s=a[n+"Date"](),l=a[n+"Hours"](),u=a[n+"Minutes"](),f=a[n+"Seconds"](),h=a[n+"Milliseconds"]();return r=r.replace("MM",Ie(o,2)).replace("M",o).replace("yyyy",i).replace("yy",Ie(i%100+"",2)).replace("dd",Ie(s,2)).replace("d",s).replace("hh",Ie(l,2)).replace("h",l).replace("mm",Ie(u,2)).replace("m",u).replace("ss",Ie(f,2)).replace("s",f).replace("SSS",Ie(h,3)),r}function kE(r){return r&&r.charAt(0).toUpperCase()+r.substr(1)}function fi(r,e){return e=e||"transparent",Y(r)?r:tt(r)&&r.colorStops&&(r.colorStops[0]||{}).color||e}function If(r,e){if(e==="_blank"||e==="blank"){var t=window.open();t.opener=null,t.location.href=r}else window.open(r,e)}var rf=D,TA=["left","right","top","bottom","width","height"],$n=[["width","left","right"],["height","top","bottom"]];function Qg(r,e,t,a,n){var i=0,o=0;a==null&&(a=1/0),n==null&&(n=1/0);var s=0;e.eachChild(function(l,u){var f=l.getBoundingRect(),h=e.childAt(u+1),v=h&&h.getBoundingRect(),c,p;if(r==="horizontal"){var d=f.width+(v?-v.x+f.x:0);c=i+d,c>a||l.newline?(i=0,c=d,o+=s+t,s=f.height):s=Math.max(s,f.height)}else{var g=f.height+(v?-v.y+f.y:0);p=o+g,p>n||l.newline?(i+=s+t,o=0,p=g,s=f.width):s=Math.max(s,f.width)}l.newline||(l.x=i,l.y=o,l.markRedraw(),r==="horizontal"?i=c+t:o=p+t)})}var ei=Qg;lt(Qg,"vertical");lt(Qg,"horizontal");function OE(r,e,t){var a=e.width,n=e.height,i=W(r.left,a),o=W(r.top,n),s=W(r.right,a),l=W(r.bottom,n);return(isNaN(i)||isNaN(parseFloat(r.left)))&&(i=0),(isNaN(s)||isNaN(parseFloat(r.right)))&&(s=a),(isNaN(o)||isNaN(parseFloat(r.top)))&&(o=0),(isNaN(l)||isNaN(parseFloat(r.bottom)))&&(l=n),t=mi(t||0),{width:Math.max(s-i-t[1]-t[3],0),height:Math.max(l-o-t[0]-t[2],0)}}function Jt(r,e,t){t=mi(t||0);var a=e.width,n=e.height,i=W(r.left,a),o=W(r.top,n),s=W(r.right,a),l=W(r.bottom,n),u=W(r.width,a),f=W(r.height,n),h=t[2]+t[0],v=t[1]+t[3],c=r.aspect;switch(isNaN(u)&&(u=a-s-v-i),isNaN(f)&&(f=n-l-h-o),c!=null&&(isNaN(u)&&isNaN(f)&&(c>a/n?u=a*.8:f=n*.8),isNaN(u)&&(u=c*f),isNaN(f)&&(f=u/c)),isNaN(i)&&(i=a-s-u-v),isNaN(o)&&(o=n-l-f-h),r.left||r.right){case"center":i=a/2-u/2-t[3];break;case"right":i=a-u-v;break}switch(r.top||r.bottom){case"middle":case"center":o=n/2-f/2-t[0];break;case"bottom":o=n-f-h;break}i=i||0,o=o||0,isNaN(u)&&(u=a-v-i-(s||0)),isNaN(f)&&(f=n-h-o-(l||0));var p=new ht(i+t[3],o+t[0],u,f);return p.margin=t,p}function kh(r,e,t,a,n,i){var o=!n||!n.hv||n.hv[0],s=!n||!n.hv||n.hv[1],l=n&&n.boundingMode||"all";if(i=i||r,i.x=r.x,i.y=r.y,!o&&!s)return!1;var u;if(l==="raw")u=r.type==="group"?new ht(0,0,+e.width||0,+e.height||0):r.getBoundingRect();else if(u=r.getBoundingRect(),r.needLocalTransform()){var f=r.getLocalTransform();u=u.clone(),u.applyTransform(f)}var h=Jt(J({width:u.width,height:u.height},e),t,a),v=o?h.x-u.x:0,c=s?h.y-u.y:0;return l==="raw"?(i.x=v,i.y=c):(i.x+=v,i.y+=c),i===r&&r.markRedraw(),!0}function NE(r,e){return r[$n[e][0]]!=null||r[$n[e][1]]!=null&&r[$n[e][2]]!=null}function rl(r){var e=r.layoutMode||r.constructor.layoutMode;return tt(e)?e:e?{type:e}:null}function tn(r,e,t){var a=t&&t.ignoreSize;!z(a)&&(a=[a,a]);var n=o($n[0],0),i=o($n[1],1);u($n[0],r,n),u($n[1],r,i);function o(f,h){var v={},c=0,p={},d=0,g=2;if(rf(f,function(_){p[_]=r[_]}),rf(f,function(_){s(e,_)&&(v[_]=p[_]=e[_]),l(v,_)&&c++,l(p,_)&&d++}),a[h])return l(e,f[1])?p[f[2]]=null:l(e,f[2])&&(p[f[1]]=null),p;if(d===g||!c)return p;if(c>=g)return v;for(var y=0;y=0;l--)s=ut(s,n[l],!0);a.defaultOption=s}return a.defaultOption},e.prototype.getReferringComponents=function(t,a){var n=t+"Index",i=t+"Id";return Al(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},a)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.prototype.getZLevelKey=function(){return""},e.prototype.setZLevel=function(t){this.option.zlevel=t},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(Ct);MT(gt,Ct);Sh(gt);xE(gt);bE(gt,VE);function VE(r){var e=[];return D(gt.getClassesByMainType(r),function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])}),e=G(e,function(t){return Wr(t).main}),r!=="dataset"&&vt(e,"dataset")<=0&&e.unshift("dataset"),e}var CA="";typeof navigator<"u"&&(CA=navigator.platform||"");var Li="rgba(0, 0, 0, 0.2)";const zE={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Li,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Li,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Li,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Li,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Li,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Li,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:CA.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};var DA=Z(["tooltip","label","itemName","itemId","itemGroupId","itemChildGroupId","seriesName"]),cr="original",Ae="arrayRows",pr="objectRows",ta="keyedColumns",Za="typedArray",MA="unknown",qr="column",Po="row",he={Must:1,Might:2,Not:3},IA=bt();function GE(r){IA(r).datasetMap=Z()}function LA(r,e,t){var a={},n=ey(e);if(!n||!r)return a;var i=[],o=[],s=e.ecModel,l=IA(s).datasetMap,u=n.uid+"_"+t.seriesLayoutBy,f,h;r=r.slice(),D(r,function(d,g){var y=tt(d)?d:r[g]={name:d};y.type==="ordinal"&&f==null&&(f=g,h=p(y)),a[y.name]=[]});var v=l.get(u)||l.set(u,{categoryWayDim:h,valueWayDim:0});D(r,function(d,g){var y=d.name,m=p(d);if(f==null){var _=v.valueWayDim;c(a[y],_,m),c(o,_,m),v.valueWayDim+=m}else if(f===g)c(a[y],0,m),c(i,0,m);else{var _=v.categoryWayDim;c(a[y],_,m),c(o,_,m),v.categoryWayDim+=m}});function c(d,g,y){for(var m=0;me)return r[a];return r[t-1]}function EA(r,e,t,a,n,i,o){i=i||r;var s=e(i),l=s.paletteIdx||0,u=s.paletteNameMap=s.paletteNameMap||{};if(u.hasOwnProperty(n))return u[n];var f=o==null||!a?t:YE(a,o);if(f=f||t,!(!f||!f.length)){var h=f[l];return n&&(u[n]=h),s.paletteIdx=(l+1)%f.length,h}}function XE(r,e){e(r).paletteIdx=0,e(r).paletteNameMap={}}var lu,Zo,Z0,q0="\0_ec_inner",$E=1,ay=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.init=function(t,a,n,i,o,s){i=i||{},this.option=null,this._theme=new Ct(i),this._locale=new Ct(o),this._optionManager=s},e.prototype.setOption=function(t,a,n){var i=J0(a);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,a){return this._resetOption(t,J0(a))},e.prototype._resetOption=function(t,a){var n=!1,i=this._optionManager;if(!t||t==="recreate"){var o=i.mountOption(t==="recreate");!this.option||t==="recreate"?Z0(this,o):(this.restoreData(),this._mergeOption(o,a)),n=!0}if((t==="timeline"||t==="media")&&this.restoreData(),!t||t==="recreate"||t==="timeline"){var s=i.getTimelineOption(this);s&&(n=!0,this._mergeOption(s,a))}if(!t||t==="recreate"||t==="media"){var l=i.getMediaOption(this);l.length&&D(l,function(u){n=!0,this._mergeOption(u,a)},this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,a){var n=this.option,i=this._componentsMap,o=this._componentsCount,s=[],l=Z(),u=a&&a.replaceMergeMainTypeMap;GE(this),D(t,function(h,v){h!=null&&(gt.hasClass(v)?v&&(s.push(v),l.set(v,!0)):n[v]=n[v]==null?rt(h):ut(n[v],h,!0))}),u&&u.each(function(h,v){gt.hasClass(v)&&!l.get(v)&&(s.push(v),l.set(v,!0))}),gt.topologicalTravel(s,gt.getAllClassMainTypes(),f,this);function f(h){var v=WE(this,h,Rt(t[h])),c=i.get(h),p=c?u&&u.get(h)?"replaceMerge":"normalMerge":"replaceAll",d=wT(c,v,p);SP(d,h,gt),n[h]=null,i.set(h,null),o.set(h,0);var g=[],y=[],m=0,_;D(d,function(S,b){var x=S.existing,w=S.newOption;if(!w)x&&(x.mergeOption({},this),x.optionUpdated({},!1));else{var T=h==="series",A=gt.getClass(h,S.keyInfo.subType,!T);if(!A)return;if(h==="tooltip"){if(_)return;_=!0}if(x&&x.constructor===A)x.name=S.keyInfo.name,x.mergeOption(w,this),x.optionUpdated(w,!1);else{var C=V({componentIndex:b},S.keyInfo);x=new A(w,this,this,C),V(x,C),S.brandNew&&(x.__requireNewView=!0),x.init(w,this,this),x.optionUpdated(null,!0)}}x?(g.push(x.option),y.push(x),m++):(g.push(void 0),y.push(void 0))},this),n[h]=g,i.set(h,y),o.set(h,m),h==="series"&&lu(this)}this._seriesIndices||lu(this)},e.prototype.getOption=function(){var t=rt(this.option);return D(t,function(a,n){if(gt.hasClass(n)){for(var i=Rt(a),o=i.length,s=!1,l=o-1;l>=0;l--)i[l]&&!js(i[l])?s=!0:(i[l]=null,!s&&o--);i.length=o,t[n]=i}}),delete t[q0],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,a){var n=this._componentsMap.get(t);if(n){var i=n[a||0];if(i)return i;if(a==null){for(var o=0;o=e:t==="max"?r<=e:r===e}function rk(r,e){return r.join(",")===e.join(",")}var gr=D,al=tt,Q0=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function Fv(r){var e=r&&r.itemStyle;if(e)for(var t=0,a=Q0.length;t=0;g--){var y=r[g];if(s||(p=y.data.rawIndexOf(y.stackedByDimension,c)),p>=0){var m=y.data.getByRawIndex(y.stackResultDimension,p);if(l==="all"||l==="positive"&&m>0||l==="negative"&&m<0||l==="samesign"&&v>=0&&m>0||l==="samesign"&&v<=0&&m<0){v=fP(v,m),d=m;break}}}return a[0]=v,a[1]=d,a})})}var Oh=function(){function r(e){this.data=e.data||(e.sourceFormat===ta?{}:[]),this.sourceFormat=e.sourceFormat||MA,this.seriesLayoutBy=e.seriesLayoutBy||qr,this.startIndex=e.startIndex||0,this.dimensionsDetectedCount=e.dimensionsDetectedCount,this.metaRawOption=e.metaRawOption;var t=this.dimensionsDefine=e.dimensionsDefine;if(t)for(var a=0;ad&&(d=_)}c[0]=p,c[1]=d}},n=function(){return this._data?this._data.length/this._dimSize:0};o_=(e={},e[Ae+"_"+qr]={pure:!0,appendData:i},e[Ae+"_"+Po]={pure:!0,appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},e[pr]={pure:!0,appendData:i},e[ta]={pure:!0,appendData:function(o){var s=this._data;D(o,function(l,u){for(var f=s[u]||(s[u]=[]),h=0;h<(l||[]).length;h++)f.push(l[h])})}},e[cr]={appendData:i},e[Za]={persistent:!1,pure:!0,appendData:function(o){this._data=o},clean:function(){this._offset+=this.count(),this._data=null}},e);function i(o){for(var s=0;s=0&&(d=o.interpolatedValue[g])}return d!=null?d+"":""})}},r.prototype.getRawValue=function(e,t){return vo(this.getData(t),e)},r.prototype.formatTooltip=function(e,t,a){},r}();function f_(r){var e,t;return tt(r)?r.type&&(t=r):e=r,{text:e,frag:t}}function zs(r){return new _k(r)}var _k=function(){function r(e){e=e||{},this._reset=e.reset,this._plan=e.plan,this._count=e.count,this._onDirty=e.onDirty,this._dirty=!0}return r.prototype.perform=function(e){var t=this._upstream,a=e&&e.skip;if(this._dirty&&t){var n=this.context;n.data=n.outputData=t.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var i;this._plan&&!a&&(i=this._plan(this.context));var o=f(this._modBy),s=this._modDataCount||0,l=f(e&&e.modBy),u=e&&e.modDataCount||0;(o!==l||s!==u)&&(i="reset");function f(m){return!(m>=1)&&(m=1),m}var h;(this._dirty||i==="reset")&&(this._dirty=!1,h=this._doReset(a)),this._modBy=l,this._modDataCount=u;var v=e&&e.step;if(t?this._dueEnd=t._outputDueEnd:this._dueEnd=this._count?this._count(this.context):1/0,this._progress){var c=this._dueIndex,p=Math.min(v!=null?this._dueIndex+v:1/0,this._dueEnd);if(!a&&(h||c1&&a>0?s:o}};return i;function o(){return e=r?null:le},gte:function(r,e){return r>=e}},xk=function(){function r(e,t){if(!wt(t)){var a="";Mt(a)}this._opFn=UA[e],this._rvalFloat=jr(t)}return r.prototype.evaluate=function(e){return wt(e)?this._opFn(e,this._rvalFloat):this._opFn(jr(e),this._rvalFloat)},r}(),YA=function(){function r(e,t){var a=e==="desc";this._resultLT=a?1:-1,t==null&&(t=a?"min":"max"),this._incomparable=t==="min"?-1/0:1/0}return r.prototype.evaluate=function(e,t){var a=wt(e)?e:jr(e),n=wt(t)?t:jr(t),i=isNaN(a),o=isNaN(n);if(i&&(a=this._incomparable),o&&(n=this._incomparable),i&&o){var s=Y(e),l=Y(t);s&&(a=l?e:0),l&&(n=s?t:0)}return an?-this._resultLT:0},r}(),bk=function(){function r(e,t){this._rval=t,this._isEQ=e,this._rvalTypeof=typeof t,this._rvalFloat=jr(t)}return r.prototype.evaluate=function(e){var t=e===this._rval;if(!t){var a=typeof e;a!==this._rvalTypeof&&(a==="number"||this._rvalTypeof==="number")&&(t=jr(e)===this._rvalFloat)}return this._isEQ?t:!t},r}();function wk(r,e){return r==="eq"||r==="ne"?new bk(r==="eq",e):$(UA,r)?new xk(r,e):null}var Tk=function(){function r(){}return r.prototype.getRawData=function(){throw new Error("not supported")},r.prototype.getRawDataItem=function(e){throw new Error("not supported")},r.prototype.cloneRawData=function(){},r.prototype.getDimensionInfo=function(e){},r.prototype.cloneAllDimensionInfo=function(){},r.prototype.count=function(){},r.prototype.retrieveValue=function(e,t){},r.prototype.retrieveValueFromItem=function(e,t){},r.prototype.convertValue=function(e,t){return qa(e,t)},r}();function Ak(r,e){var t=new Tk,a=r.data,n=t.sourceFormat=r.sourceFormat,i=r.startIndex,o="";r.seriesLayoutBy!==qr&&Mt(o);var s=[],l={},u=r.dimensionsDefine;if(u)D(u,function(d,g){var y=d.name,m={index:g,name:y,displayName:d.displayName};if(s.push(m),y!=null){var _="";$(l,y)&&Mt(_),l[y]=m}});else for(var f=0;f65535?Ek:kk}function Ri(){return[1/0,-1/0]}function Ok(r){var e=r.constructor;return e===Array?r.slice():new e(r)}function c_(r,e,t,a,n){var i=ZA[t||"float"];if(n){var o=r[e],s=o&&o.length;if(s!==a){for(var l=new i(a),u=0;ug[1]&&(g[1]=d)}return this._rawCount=this._count=l,{start:s,end:l}},r.prototype._initDataFromProvider=function(e,t,a){for(var n=this._provider,i=this._chunks,o=this._dimensions,s=o.length,l=this._rawExtent,u=G(o,function(m){return m.property}),f=0;fy[1]&&(y[1]=g)}}!n.persistent&&n.clean&&n.clean(),this._rawCount=this._count=t,this._extent=[]},r.prototype.count=function(){return this._count},r.prototype.get=function(e,t){if(!(t>=0&&t=0&&t=this._rawCount||e<0)return-1;if(!this._indices)return e;var t=this._indices,a=t[e];if(a!=null&&ae)i=o-1;else return o}return-1},r.prototype.indicesOfNearest=function(e,t,a){var n=this._chunks,i=n[e],o=[];if(!i)return o;a==null&&(a=1/0);for(var s=1/0,l=-1,u=0,f=0,h=this.count();f=0&&l<0)&&(s=p,l=c,u=0),c===l&&(o[u++]=f))}return o.length=u,o},r.prototype.getIndices=function(){var e,t=this._indices;if(t){var a=t.constructor,n=this._count;if(a===Array){e=new a(n);for(var i=0;i=h&&m<=v||isNaN(m))&&(l[u++]=d),d++}p=!0}else if(i===2){for(var g=c[n[0]],_=c[n[1]],S=e[n[1]][0],b=e[n[1]][1],y=0;y=h&&m<=v||isNaN(m))&&(x>=S&&x<=b||isNaN(x))&&(l[u++]=d),d++}p=!0}}if(!p)if(i===1)for(var y=0;y=h&&m<=v||isNaN(m))&&(l[u++]=w)}else for(var y=0;ye[C][1])&&(T=!1)}T&&(l[u++]=t.getRawIndex(y))}return uy[1]&&(y[1]=g)}}}},r.prototype.lttbDownSample=function(e,t){var a=this.clone([e],!0),n=a._chunks,i=n[e],o=this.count(),s=0,l=Math.floor(1/t),u=this.getRawIndex(0),f,h,v,c=new(Pi(this._rawCount))(Math.min((Math.ceil(o/l)+2)*2,o));c[s++]=u;for(var p=1;pf&&(f=h,v=S)}M>0&&Ms&&(d=s-f);for(var g=0;gp&&(p=m,c=f+g)}var _=this.getRawIndex(h),S=this.getRawIndex(c);hf-p&&(l=f-p,s.length=l);for(var d=0;dh[1]&&(h[1]=y),v[c++]=m}return i._count=c,i._indices=v,i._updateGetRawIdx(),i},r.prototype.each=function(e,t){if(this._count)for(var a=e.length,n=this._chunks,i=0,o=this.count();il&&(l=h)}return o=[s,l],this._extent[e]=o,o},r.prototype.getRawDataItem=function(e){var t=this.getRawIndex(e);if(this._provider.persistent)return this._provider.getItem(t);for(var a=[],n=this._chunks,i=0;i=0?this._indices[e]:-1},r.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},r.internalField=function(){function e(t,a,n,i){return qa(t[i],this._dimensions[i])}Uv={arrayRows:e,objectRows:function(t,a,n,i){return qa(t[a],this._dimensions[i])},keyedColumns:e,original:function(t,a,n,i){var o=t&&(t.value==null?t:t.value);return qa(o instanceof Array?o[i]:o,this._dimensions[i])},typedArray:function(t,a,n,i){return t[i]}}}(),r}(),qA=function(){function r(e){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=e}return r.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},r.prototype._setLocalSource=function(e,t){this._sourceList=e,this._upstreamSignList=t,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},r.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},r.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},r.prototype._createSource=function(){this._setLocalSource([],[]);var e=this._sourceHost,t=this._getUpstreamSourceManagers(),a=!!t.length,n,i;if(uu(e)){var o=e,s=void 0,l=void 0,u=void 0;if(a){var f=t[0];f.prepareSource(),u=f.getSource(),s=u.data,l=u.sourceFormat,i=[f._getVersionSign()]}else s=o.get("data",!0),l=Ee(s)?Za:cr,i=[];var h=this._getSourceMetaRawOption()||{},v=u&&u.metaRawOption||{},c=st(h.seriesLayoutBy,v.seriesLayoutBy)||null,p=st(h.sourceHeader,v.sourceHeader),d=st(h.dimensions,v.dimensions),g=c!==v.seriesLayoutBy||!!p!=!!v.sourceHeader||d;n=g?[sd(s,{seriesLayoutBy:c,sourceHeader:p,dimensions:d},l)]:[]}else{var y=e;if(a){var m=this._applyTransform(t);n=m.sourceList,i=m.upstreamSignList}else{var _=y.get("source",!0);n=[sd(_,this._getSourceMetaRawOption(),null)],i=[]}}this._setLocalSource(n,i)},r.prototype._applyTransform=function(e){var t=this._sourceHost,a=t.get("transform",!0),n=t.get("fromTransformResult",!0);if(n!=null){var i="";e.length!==1&&d_(i)}var o,s=[],l=[];return D(e,function(u){u.prepareSource();var f=u.getSource(n||0),h="";n!=null&&!f&&d_(h),s.push(f),l.push(u._getVersionSign())}),a?o=Pk(a,s,{datasetIndex:t.componentIndex}):n!=null&&(o=[vk(s[0])]),{sourceList:o,upstreamSignList:l}},r.prototype._isDirty=function(){if(this._dirty)return!0;for(var e=this._getUpstreamSourceManagers(),t=0;t1||t>0&&!r.noHeader;return D(r.blocks,function(n){var i=QA(n);i>=e&&(e=i+ +(a&&(!i||ud(n)&&!n.noHeader)))}),e}return 0}function zk(r,e,t,a){var n=e.noHeader,i=Fk(QA(e)),o=[],s=e.blocks||[];be(!s||z(s)),s=s||[];var l=r.orderMode;if(e.sortBlocks&&l){s=s.slice();var u={valueAsc:"asc",valueDesc:"desc"};if($(u,l)){var f=new YA(u[l],null);s.sort(function(d,g){return f.evaluate(d.sortParam,g.sortParam)})}else l==="seriesDesc"&&s.reverse()}D(s,function(d,g){var y=e.valueFormatter,m=JA(d)(y?V(V({},r),{valueFormatter:y}):r,d,g>0?i.html:0,a);m!=null&&o.push(m)});var h=r.renderMode==="richText"?o.join(i.richText):fd(a,o.join(""),n?t:i.html);if(n)return h;var v=nd(e.header,"ordinal",r.useUTC),c=jA(a,r.renderMode).nameStyle,p=KA(a);return r.renderMode==="richText"?tC(r,v,c)+i.richText+h:fd(a,'
'+Se(v)+"
"+h,t)}function Gk(r,e,t,a){var n=r.renderMode,i=e.noName,o=e.noValue,s=!e.markerType,l=e.name,u=r.useUTC,f=e.valueFormatter||r.valueFormatter||function(S){return S=z(S)?S:[S],G(S,function(b,x){return nd(b,z(c)?c[x]:c,u)})};if(!(i&&o)){var h=s?"":r.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",n),v=i?"":nd(l,"ordinal",u),c=e.valueType,p=o?[]:f(e.value,e.dataIndex),d=!s||!i,g=!s&&i,y=jA(a,n),m=y.nameStyle,_=y.valueStyle;return n==="richText"?(s?"":h)+(i?"":tC(r,v,m))+(o?"":Uk(r,p,d,g,_)):fd(a,(s?"":h)+(i?"":Hk(v,!s,m))+(o?"":Wk(p,d,g,_)),t)}}function g_(r,e,t,a,n,i){if(r){var o=JA(r),s={useUTC:n,renderMode:t,orderMode:a,markupStyleCreator:e,valueFormatter:r.valueFormatter};return o(s,r,0,i)}}function Fk(r){return{html:Bk[r],richText:Vk[r]}}function fd(r,e,t){var a='
',n="margin: "+t+"px 0 0",i=KA(r);return'
'+e+a+"
"}function Hk(r,e,t){var a=e?"margin-left:2px":"";return''+Se(r)+""}function Wk(r,e,t,a){var n=t?"10px":"20px",i=e?"float:right;margin-left:"+n:"";return r=z(r)?r:[r],''+G(r,function(o){return Se(o)}).join("  ")+""}function tC(r,e,t){return r.markupStyleCreator.wrapRichTextStyle(e,t)}function Uk(r,e,t,a,n){var i=[n],o=a?10:20;return t&&i.push({padding:[0,0,0,o],align:"right"}),r.markupStyleCreator.wrapRichTextStyle(z(e)?e.join(" "):e,i)}function eC(r,e){var t=r.getData().getItemVisual(e,"style"),a=t[r.visualDrawType];return fi(a)}function rC(r,e){var t=r.get("padding");return t??(e==="richText"?[8,10]:10)}var Yv=function(){function r(){this.richTextStyles={},this._nextStyleNameId=_T()}return r.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},r.prototype.makeTooltipMarker=function(e,t,a){var n=a==="richText"?this._generateStyleName():null,i=wA({color:t,type:e,renderMode:a,markerId:n});return Y(i)?i:(this.richTextStyles[n]=i.style,i.content)},r.prototype.wrapRichTextStyle=function(e,t){var a={};z(t)?D(t,function(i){return V(a,i)}):V(a,t);var n=this._generateStyleName();return this.richTextStyles[n]=a,"{"+n+"|"+e+"}"},r}();function aC(r){var e=r.series,t=r.dataIndex,a=r.multipleSeries,n=e.getData(),i=n.mapDimensionsAll("defaultedTooltip"),o=i.length,s=e.getRawValue(t),l=z(s),u=eC(e,t),f,h,v,c;if(o>1||l&&!o){var p=Yk(s,e,t,i,u);f=p.inlineValues,h=p.inlineValueTypes,v=p.blocks,c=p.inlineValues[0]}else if(o){var d=n.getDimensionInfo(i[0]);c=f=vo(n,t,i[0]),h=d.type}else c=f=l?s[0]:s;var g=Dg(e),y=g&&e.name||"",m=n.getName(t),_=a?y:m;return se("section",{header:y,noHeader:a||!g,sortParam:c,blocks:[se("nameValue",{markerType:"item",markerColor:u,name:_,noName:!sr(_),value:f,valueType:h,dataIndex:t})].concat(v||[])})}function Yk(r,e,t,a,n){var i=e.getData(),o=ur(r,function(h,v,c){var p=i.getDimensionInfo(c);return h=h||p&&p.tooltip!==!1&&p.displayName!=null},!1),s=[],l=[],u=[];a.length?D(a,function(h){f(vo(i,t,h),h)}):D(r,f);function f(h,v){var c=i.getDimensionInfo(v);!c||c.otherDims.tooltip===!1||(o?u.push(se("nameValue",{markerType:"subItem",markerColor:n,name:c.displayName,value:h,valueType:c.type})):(s.push(h),l.push(c.type)))}return{inlineValues:s,inlineValueTypes:l,blocks:u}}var Da=bt();function fu(r,e){return r.getName(e)||r.getId(e)}var af="__universalTransitionEnabled",Et=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t._selectedDataIndicesMap={},t}return e.prototype.init=function(t,a,n){this.seriesIndex=this.componentIndex,this.dataTask=zs({count:$k,reset:Zk}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n);var i=Da(this).sourceManager=new qA(this);i.prepareSource();var o=this.getInitialData(t,n);m_(o,this),this.dataTask.context.data=o,Da(this).dataBeforeProcessed=o,y_(this),this._initSelectedMapFromData(o)},e.prototype.mergeDefaultAndTheme=function(t,a){var n=rl(this),i=n?Lo(t):{},o=this.subType;gt.hasClass(o)&&(o+="Series"),ut(t,a.getTheme().get(this.subType)),ut(t,this.getDefaultOption()),oi(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&tn(t,i,n)},e.prototype.mergeOption=function(t,a){t=ut(this.option,t,!0),this.fillDataTextStyle(t.data);var n=rl(this);n&&tn(this.option,t,n);var i=Da(this).sourceManager;i.dirty(),i.prepareSource();var o=this.getInitialData(t,a);m_(o,this),this.dataTask.dirty(),this.dataTask.context.data=o,Da(this).dataBeforeProcessed=o,y_(this),this._initSelectedMapFromData(o)},e.prototype.fillDataTextStyle=function(t){if(t&&!Ee(t))for(var a=["show"],n=0;nthis.getShallow("animationThreshold")&&(a=!1),!!a},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,a,n){var i=this.ecModel,o=ry.prototype.getColorFromPalette.call(this,t,a,n);return o||(o=i.getColorFromPalette(t,a,n)),o},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,a){this._innerSelect(this.getData(a),t)},e.prototype.unselect=function(t,a){var n=this.option.selectedMap;if(n){var i=this.option.selectedMode,o=this.getData(a);if(i==="series"||n==="all"){this.option.selectedMap={},this._selectedDataIndicesMap={};return}for(var s=0;s=0&&n.push(o)}return n},e.prototype.isSelected=function(t,a){var n=this.option.selectedMap;if(!n)return!1;var i=this.getData(a);return(n==="all"||n[fu(i,t)])&&!i.getItemModel(t).get(["select","disabled"])},e.prototype.isUniversalTransitionEnabled=function(){if(this[af])return!0;var t=this.option.universalTransition;return t?t===!0?!0:t&&t.enabled:!1},e.prototype._innerSelect=function(t,a){var n,i,o=this.option,s=o.selectedMode,l=a.length;if(!(!s||!l)){if(s==="series")o.selectedMap="all";else if(s==="multiple"){tt(o.selectedMap)||(o.selectedMap={});for(var u=o.selectedMap,f=0;f0&&this._innerSelect(t,a)}},e.registerClass=function(t){return gt.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(gt);$t(Et,Nh);$t(Et,ry);MT(Et,gt);function y_(r){var e=r.name;Dg(r)||(r.name=Xk(r)||e)}function Xk(r){var e=r.getRawData(),t=e.mapDimensionsAll("seriesName"),a=[];return D(t,function(n){var i=e.getDimensionInfo(n);i.displayName&&a.push(i.displayName)}),a.join(" ")}function $k(r){return r.model.getRawData().count()}function Zk(r){var e=r.model;return e.setData(e.getRawData().cloneShallow()),qk}function qk(r,e){e.outputData&&r.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function m_(r,e){D(lo(r.CHANGABLE_METHODS,r.DOWNSAMPLE_METHODS),function(t){r.wrapMethod(t,lt(Kk,e))})}function Kk(r,e){var t=hd(r);return t&&t.setOutputEnd((e||this).count()),e}function hd(r){var e=(r.ecModel||{}).scheduler,t=e&&e.getPipeline(r.uid);if(t){var a=t.currentTask;if(a){var n=a.agentStubMap;n&&(a=n.get(r.uid))}return a}}var zt=function(){function r(){this.group=new at,this.uid=Io("viewComponent")}return r.prototype.init=function(e,t){},r.prototype.render=function(e,t,a,n){},r.prototype.dispose=function(e,t){},r.prototype.updateView=function(e,t,a,n){},r.prototype.updateLayout=function(e,t,a,n){},r.prototype.updateVisual=function(e,t,a,n){},r.prototype.toggleBlurSeries=function(e,t,a){},r.prototype.eachRendered=function(e){var t=this.group;t&&t.traverse(e)},r}();Ig(zt);Sh(zt);function Eo(){var r=bt();return function(e){var t=r(e),a=e.pipelineContext,n=!!t.large,i=!!t.progressiveRender,o=t.large=!!(a&&a.large),s=t.progressiveRender=!!(a&&a.progressiveRender);return(n!==o||i!==s)&&"reset"}}var nC=bt(),jk=Eo(),Lt=function(){function r(){this.group=new at,this.uid=Io("viewChart"),this.renderTask=zs({plan:Jk,reset:Qk}),this.renderTask.context={view:this}}return r.prototype.init=function(e,t){},r.prototype.render=function(e,t,a,n){},r.prototype.highlight=function(e,t,a,n){var i=e.getData(n&&n.dataType);i&&S_(i,n,"emphasis")},r.prototype.downplay=function(e,t,a,n){var i=e.getData(n&&n.dataType);i&&S_(i,n,"normal")},r.prototype.remove=function(e,t){this.group.removeAll()},r.prototype.dispose=function(e,t){},r.prototype.updateView=function(e,t,a,n){this.render(e,t,a,n)},r.prototype.updateLayout=function(e,t,a,n){this.render(e,t,a,n)},r.prototype.updateVisual=function(e,t,a,n){this.render(e,t,a,n)},r.prototype.eachRendered=function(e){on(this.group,e)},r.markUpdateMethod=function(e,t){nC(e).updateMethod=t},r.protoInitialize=function(){var e=r.prototype;e.type="chart"}(),r}();function __(r,e,t){r&&Qs(r)&&(e==="emphasis"?ga:ya)(r,t)}function S_(r,e,t){var a=si(r,e),n=e&&e.highlightKey!=null?NR(e.highlightKey):null;a!=null?D(Rt(a),function(i){__(r.getItemGraphicEl(i),t,n)}):r.eachItemGraphicEl(function(i){__(i,t,n)})}Ig(Lt);Sh(Lt);function Jk(r){return jk(r.model)}function Qk(r){var e=r.model,t=r.ecModel,a=r.api,n=r.payload,i=e.pipelineContext.progressiveRender,o=r.view,s=n&&nC(n).updateMethod,l=i?"incrementalPrepareRender":s&&o[s]?s:"render";return l!=="render"&&o[l](e,t,a,n),tO[l]}var tO={incrementalPrepareRender:{progress:function(r,e){e.view.incrementalRender(r,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(r,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},Lf="\0__throttleOriginMethod",x_="\0__throttleRate",b_="\0__throttleType";function Vh(r,e,t){var a,n=0,i=0,o=null,s,l,u,f;e=e||0;function h(){i=new Date().getTime(),o=null,r.apply(l,u||[])}var v=function(){for(var c=[],p=0;p=0?h():o=setTimeout(h,-s),n=a};return v.clear=function(){o&&(clearTimeout(o),o=null)},v.debounceNextCall=function(c){f=c},v}function ko(r,e,t,a){var n=r[e];if(n){var i=n[Lf]||n,o=n[b_],s=n[x_];if(s!==t||o!==a){if(t==null||!a)return r[e]=i;n=r[e]=Vh(i,t,a==="debounce"),n[Lf]=i,n[b_]=a,n[x_]=t}return n}}function nl(r,e){var t=r[e];t&&t[Lf]&&(t.clear&&t.clear(),r[e]=t[Lf])}var w_=bt(),T_={itemStyle:li(cA,!0),lineStyle:li(vA,!0)},eO={lineStyle:"stroke",itemStyle:"fill"};function iC(r,e){var t=r.visualStyleMapper||T_[e];return t||(console.warn("Unknown style type '"+e+"'."),T_.itemStyle)}function oC(r,e){var t=r.visualDrawType||eO[e];return t||(console.warn("Unknown style type '"+e+"'."),"fill")}var rO={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,e){var t=r.getData(),a=r.visualStyleAccessPath||"itemStyle",n=r.getModel(a),i=iC(r,a),o=i(n),s=n.getShallow("decal");s&&(t.setVisual("decal",s),s.dirty=!0);var l=oC(r,a),u=o[l],f=K(u)?u:null,h=o.fill==="auto"||o.stroke==="auto";if(!o[l]||f||h){var v=r.getColorFromPalette(r.name,null,e.getSeriesCount());o[l]||(o[l]=v,t.setVisual("colorFromPalette",!0)),o.fill=o.fill==="auto"||K(o.fill)?v:o.fill,o.stroke=o.stroke==="auto"||K(o.stroke)?v:o.stroke}if(t.setVisual("style",o),t.setVisual("drawType",l),!e.isSeriesFiltered(r)&&f)return t.setVisual("colorFromPalette",!1),{dataEach:function(c,p){var d=r.getDataParams(p),g=V({},o);g[l]=f(d),c.setItemVisual(p,"style",g)}}}},Ko=new Ct,aO={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,e){if(!(r.ignoreStyleOnData||e.isSeriesFiltered(r))){var t=r.getData(),a=r.visualStyleAccessPath||"itemStyle",n=iC(r,a),i=t.getVisual("drawType");return{dataEach:t.hasItemOption?function(o,s){var l=o.getRawDataItem(s);if(l&&l[a]){Ko.option=l[a];var u=n(Ko),f=o.ensureUniqueItemVisual(s,"style");V(f,u),Ko.option.decal&&(o.setItemVisual(s,"decal",Ko.option.decal),Ko.option.decal.dirty=!0),i in u&&o.setItemVisual(s,"colorFromPalette",!1)}}:null}}}},nO={performRawSeries:!0,overallReset:function(r){var e=Z();r.eachSeries(function(t){var a=t.getColorBy();if(!t.isColorBySeries()){var n=t.type+"-"+a,i=e.get(n);i||(i={},e.set(n,i)),w_(t).scope=i}}),r.eachSeries(function(t){if(!(t.isColorBySeries()||r.isSeriesFiltered(t))){var a=t.getRawData(),n={},i=t.getData(),o=w_(t).scope,s=t.visualStyleAccessPath||"itemStyle",l=oC(t,s);i.each(function(u){var f=i.getRawIndex(u);n[f]=u}),a.each(function(u){var f=n[u],h=i.getItemVisual(f,"colorFromPalette");if(h){var v=i.ensureUniqueItemVisual(f,"style"),c=a.getName(u)||u+"",p=a.count();v[l]=t.getColorFromPalette(c,o,p)}})}})}},hu=Math.PI;function iO(r,e){e=e||{},J(e,{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var t=new at,a=new xt({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});t.add(a);var n=new St({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),i=new xt({style:{fill:"none"},textContent:n,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});t.add(i);var o;return e.showSpinner&&(o=new Ml({shape:{startAngle:-hu/2,endAngle:-hu/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001}),o.animateShape(!0).when(1e3,{endAngle:hu*3/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:hu*3/2}).delay(300).start("circularInOut"),t.add(o)),t.resize=function(){var s=n.getBoundingRect().width,l=e.showSpinner?e.spinnerRadius:0,u=(r.getWidth()-l*2-(e.showSpinner&&s?10:0)-s)/2-(e.showSpinner&&s?0:5+s/2)+(e.showSpinner?0:s/2)+(s?0:l),f=r.getHeight()/2;e.showSpinner&&o.setShape({cx:u,cy:f}),i.setShape({x:u-l,y:f-l,width:l*2,height:l*2}),a.setShape({x:0,y:0,width:r.getWidth(),height:r.getHeight()})},t.resize(),t}var sC=function(){function r(e,t,a,n){this._stageTaskMap=Z(),this.ecInstance=e,this.api=t,a=this._dataProcessorHandlers=a.slice(),n=this._visualHandlers=n.slice(),this._allHandlers=a.concat(n)}return r.prototype.restoreData=function(e,t){e.restoreData(t),this._stageTaskMap.each(function(a){var n=a.overallTask;n&&n.dirty()})},r.prototype.getPerformArgs=function(e,t){if(e.__pipeline){var a=this._pipelineMap.get(e.__pipeline.id),n=a.context,i=!t&&a.progressiveEnabled&&(!n||n.progressiveRender)&&e.__idxInPipeline>a.blockIndex,o=i?a.step:null,s=n&&n.modDataCount,l=s!=null?Math.ceil(s/o):null;return{step:o,modBy:l,modDataCount:s}}},r.prototype.getPipeline=function(e){return this._pipelineMap.get(e)},r.prototype.updateStreamModes=function(e,t){var a=this._pipelineMap.get(e.uid),n=e.getData(),i=n.count(),o=a.progressiveEnabled&&t.incrementalPrepareRender&&i>=a.threshold,s=e.get("large")&&i>=e.get("largeThreshold"),l=e.get("progressiveChunkMode")==="mod"?i:null;e.pipelineContext=a.context={progressiveRender:o,modDataCount:l,large:s}},r.prototype.restorePipelines=function(e){var t=this,a=t._pipelineMap=Z();e.eachSeries(function(n){var i=n.getProgressive(),o=n.uid;a.set(o,{id:o,head:null,tail:null,threshold:n.getProgressiveThreshold(),progressiveEnabled:i&&!(n.preventIncremental&&n.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),t._pipe(n,n.dataTask)})},r.prototype.prepareStageTasks=function(){var e=this._stageTaskMap,t=this.api.getModel(),a=this.api;D(this._allHandlers,function(n){var i=e.get(n.uid)||e.set(n.uid,{}),o="";be(!(n.reset&&n.overallReset),o),n.reset&&this._createSeriesStageTask(n,i,t,a),n.overallReset&&this._createOverallStageTask(n,i,t,a)},this)},r.prototype.prepareView=function(e,t,a,n){var i=e.renderTask,o=i.context;o.model=t,o.ecModel=a,o.api=n,i.__block=!e.incrementalPrepareRender,this._pipe(t,i)},r.prototype.performDataProcessorTasks=function(e,t){this._performStageTasks(this._dataProcessorHandlers,e,t,{block:!0})},r.prototype.performVisualTasks=function(e,t,a){this._performStageTasks(this._visualHandlers,e,t,a)},r.prototype._performStageTasks=function(e,t,a,n){n=n||{};var i=!1,o=this;D(e,function(l,u){if(!(n.visualType&&n.visualType!==l.visualType)){var f=o._stageTaskMap.get(l.uid),h=f.seriesTaskMap,v=f.overallTask;if(v){var c,p=v.agentStubMap;p.each(function(g){s(n,g)&&(g.dirty(),c=!0)}),c&&v.dirty(),o.updatePayload(v,a);var d=o.getPerformArgs(v,n.block);p.each(function(g){g.perform(d)}),v.perform(d)&&(i=!0)}else h&&h.each(function(g,y){s(n,g)&&g.dirty();var m=o.getPerformArgs(g,n.block);m.skip=!l.performRawSeries&&t.isSeriesFiltered(g.context.model),o.updatePayload(g,a),g.perform(m)&&(i=!0)})}});function s(l,u){return l.setDirty&&(!l.dirtyMap||l.dirtyMap.get(u.__pipeline.id))}this.unfinished=i||this.unfinished},r.prototype.performSeriesTasks=function(e){var t;e.eachSeries(function(a){t=a.dataTask.perform()||t}),this.unfinished=t||this.unfinished},r.prototype.plan=function(){this._pipelineMap.each(function(e){var t=e.tail;do{if(t.__block){e.blockIndex=t.__idxInPipeline;break}t=t.getUpstream()}while(t)})},r.prototype.updatePayload=function(e,t){t!=="remain"&&(e.context.payload=t)},r.prototype._createSeriesStageTask=function(e,t,a,n){var i=this,o=t.seriesTaskMap,s=t.seriesTaskMap=Z(),l=e.seriesType,u=e.getTargetSeries;e.createOnAllSeries?a.eachRawSeries(f):l?a.eachRawSeriesByType(l,f):u&&u(a,n).each(f);function f(h){var v=h.uid,c=s.set(v,o&&o.get(v)||zs({plan:fO,reset:hO,count:cO}));c.context={model:h,ecModel:a,api:n,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:i},i._pipe(h,c)}},r.prototype._createOverallStageTask=function(e,t,a,n){var i=this,o=t.overallTask=t.overallTask||zs({reset:oO});o.context={ecModel:a,api:n,overallReset:e.overallReset,scheduler:i};var s=o.agentStubMap,l=o.agentStubMap=Z(),u=e.seriesType,f=e.getTargetSeries,h=!0,v=!1,c="";be(!e.createOnAllSeries,c),u?a.eachRawSeriesByType(u,p):f?f(a,n).each(p):(h=!1,D(a.getSeries(),p));function p(d){var g=d.uid,y=l.set(g,s&&s.get(g)||(v=!0,zs({reset:sO,onDirty:uO})));y.context={model:d,overallProgress:h},y.agent=o,y.__block=h,i._pipe(d,y)}v&&o.dirty()},r.prototype._pipe=function(e,t){var a=e.uid,n=this._pipelineMap.get(a);!n.head&&(n.head=t),n.tail&&n.tail.pipe(t),n.tail=t,t.__idxInPipeline=n.count++,t.__pipeline=n},r.wrapStageHandler=function(e,t){return K(e)&&(e={overallReset:e,seriesType:pO(e)}),e.uid=Io("stageHandler"),t&&(e.visualType=t),e},r}();function oO(r){r.overallReset(r.ecModel,r.api,r.payload)}function sO(r){return r.overallProgress&&lO}function lO(){this.agent.dirty(),this.getDownstream().dirty()}function uO(){this.agent&&this.agent.dirty()}function fO(r){return r.plan?r.plan(r.model,r.ecModel,r.api,r.payload):null}function hO(r){r.useClearVisual&&r.data.clearAllVisual();var e=r.resetDefines=Rt(r.reset(r.model,r.ecModel,r.api,r.payload));return e.length>1?G(e,function(t,a){return lC(a)}):vO}var vO=lC(0);function lC(r){return function(e,t){var a=t.data,n=t.resetDefines[r];if(n&&n.dataEach)for(var i=e.start;i0&&c===u.length-v.length){var p=u.slice(0,c);p!=="data"&&(t.mainType=p,t[v.toLowerCase()]=l,f=!0)}}s.hasOwnProperty(u)&&(a[u]=l,f=!0),f||(n[u]=l)})}return{cptQuery:t,dataQuery:a,otherQuery:n}},r.prototype.filter=function(e,t){var a=this.eventInfo;if(!a)return!0;var n=a.targetEl,i=a.packedEvent,o=a.model,s=a.view;if(!o||!s)return!0;var l=t.cptQuery,u=t.dataQuery;return f(l,o,"mainType")&&f(l,o,"subType")&&f(l,o,"index","componentIndex")&&f(l,o,"name")&&f(l,o,"id")&&f(u,i,"name")&&f(u,i,"dataIndex")&&f(u,i,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(e,t.otherQuery,n,i));function f(h,v,c,p){return h[c]==null||v[p||c]===h[c]}},r.prototype.afterTrigger=function(){this.eventInfo=null},r}(),vd=["symbol","symbolSize","symbolRotate","symbolOffset"],M_=vd.concat(["symbolKeepAspect"]),yO={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,e){var t=r.getData();if(r.legendIcon&&t.setVisual("legendIcon",r.legendIcon),!r.hasSymbolVisual)return;for(var a={},n={},i=!1,o=0;o=0&&qn(l)?l:.5;var u=r.createRadialGradient(o,s,0,o,s,l);return u}function cd(r,e,t){for(var a=e.type==="radial"?RO(r,e,t):PO(r,e,t),n=e.colorStops,i=0;i0)?null:r==="dashed"?[4*e,2*e]:r==="dotted"?[e]:wt(r)?[r]:z(r)?r:null}function uy(r){var e=r.style,t=e.lineDash&&e.lineWidth>0&&kO(e.lineDash,e.lineWidth),a=e.lineDashOffset;if(t){var n=e.strokeNoScale&&r.getLineScale?r.getLineScale():1;n&&n!==1&&(t=G(t,function(i){return i/n}),a/=n)}return[t,a]}var OO=new Jr(!0);function Ef(r){var e=r.stroke;return!(e==null||e==="none"||!(r.lineWidth>0))}function I_(r){return typeof r=="string"&&r!=="none"}function kf(r){var e=r.fill;return e!=null&&e!=="none"}function L_(r,e){if(e.fillOpacity!=null&&e.fillOpacity!==1){var t=r.globalAlpha;r.globalAlpha=e.fillOpacity*e.opacity,r.fill(),r.globalAlpha=t}else r.fill()}function P_(r,e){if(e.strokeOpacity!=null&&e.strokeOpacity!==1){var t=r.globalAlpha;r.globalAlpha=e.strokeOpacity*e.opacity,r.stroke(),r.globalAlpha=t}else r.stroke()}function pd(r,e,t){var a=Lg(e.image,e.__image,t);if(xh(a)){var n=r.createPattern(a,e.repeat||"repeat");if(typeof DOMMatrix=="function"&&n&&n.setTransform){var i=new DOMMatrix;i.translateSelf(e.x||0,e.y||0),i.rotateSelf(0,0,(e.rotation||0)*Ds),i.scaleSelf(e.scaleX||1,e.scaleY||1),n.setTransform(i)}return n}}function NO(r,e,t,a){var n,i=Ef(t),o=kf(t),s=t.strokePercent,l=s<1,u=!e.path;(!e.silent||l)&&u&&e.createPathProxy();var f=e.path||OO,h=e.__dirty;if(!a){var v=t.fill,c=t.stroke,p=o&&!!v.colorStops,d=i&&!!c.colorStops,g=o&&!!v.image,y=i&&!!c.image,m=void 0,_=void 0,S=void 0,b=void 0,x=void 0;(p||d)&&(x=e.getBoundingRect()),p&&(m=h?cd(r,v,x):e.__canvasFillGradient,e.__canvasFillGradient=m),d&&(_=h?cd(r,c,x):e.__canvasStrokeGradient,e.__canvasStrokeGradient=_),g&&(S=h||!e.__canvasFillPattern?pd(r,v,e):e.__canvasFillPattern,e.__canvasFillPattern=S),y&&(b=h||!e.__canvasStrokePattern?pd(r,c,e):e.__canvasStrokePattern,e.__canvasStrokePattern=S),p?r.fillStyle=m:g&&(S?r.fillStyle=S:o=!1),d?r.strokeStyle=_:y&&(b?r.strokeStyle=b:i=!1)}var w=e.getGlobalScale();f.setScale(w[0],w[1],e.segmentIgnoreThreshold);var T,A;r.setLineDash&&t.lineDash&&(n=uy(e),T=n[0],A=n[1]);var C=!0;(u||h&ds)&&(f.setDPR(r.dpr),l?f.setContext(null):(f.setContext(r),C=!1),f.reset(),e.buildPath(f,e.shape,a),f.toStatic(),e.pathUpdated()),C&&f.rebuildPath(r,l?s:1),T&&(r.setLineDash(T),r.lineDashOffset=A),a||(t.strokeFirst?(i&&P_(r,t),o&&L_(r,t)):(o&&L_(r,t),i&&P_(r,t))),T&&r.setLineDash([])}function BO(r,e,t){var a=e.__image=Lg(t.image,e.__image,e,e.onload);if(!(!a||!xh(a))){var n=t.x||0,i=t.y||0,o=e.getWidth(),s=e.getHeight(),l=a.width/a.height;if(o==null&&s!=null?o=s*l:s==null&&o!=null?s=o/l:o==null&&s==null&&(o=a.width,s=a.height),t.sWidth&&t.sHeight){var u=t.sx||0,f=t.sy||0;r.drawImage(a,u,f,t.sWidth,t.sHeight,n,i,o,s)}else if(t.sx&&t.sy){var u=t.sx,f=t.sy,h=o-u,v=s-f;r.drawImage(a,u,f,h,v,n,i,o,s)}else r.drawImage(a,n,i,o,s)}}function VO(r,e,t){var a,n=t.text;if(n!=null&&(n+=""),n){r.font=t.font||ja,r.textAlign=t.textAlign,r.textBaseline=t.textBaseline;var i=void 0,o=void 0;r.setLineDash&&t.lineDash&&(a=uy(e),i=a[0],o=a[1]),i&&(r.setLineDash(i),r.lineDashOffset=o),t.strokeFirst?(Ef(t)&&r.strokeText(n,t.x,t.y),kf(t)&&r.fillText(n,t.x,t.y)):(kf(t)&&r.fillText(n,t.x,t.y),Ef(t)&&r.strokeText(n,t.x,t.y)),i&&r.setLineDash([])}}var R_=["shadowBlur","shadowOffsetX","shadowOffsetY"],E_=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function pC(r,e,t,a,n){var i=!1;if(!a&&(t=t||{},e===t))return!1;if(a||e.opacity!==t.opacity){Ge(r,n),i=!0;var o=Math.max(Math.min(e.opacity,1),0);r.globalAlpha=isNaN(o)?Qn.opacity:o}(a||e.blend!==t.blend)&&(i||(Ge(r,n),i=!0),r.globalCompositeOperation=e.blend||Qn.blend);for(var s=0;s0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.isSSR=function(){return this._ssr},e.prototype.setOption=function(t,a,n){if(!this[ge]){if(this._disposed){this.id;return}var i,o,s;if(tt(a)&&(n=a.lazyUpdate,i=a.silent,o=a.replaceMerge,s=a.transition,a=a.notMerge),this[ge]=!0,!this._model||a){var l=new JE(this._api),u=this._theme,f=this._model=new ay;f.scheduler=this._scheduler,f.ssr=this._ssr,f.init(null,null,null,u,this._locale,l)}this._model.setOption(t,{replaceMerge:o},gd);var h={seriesTransition:s,optionChanged:!0};if(n)this[Be]={silent:i,updateParams:h},this[ge]=!1,this.getZr().wakeUp();else{try{ki(this),Ma.update.call(this,null,h)}catch(v){throw this[Be]=null,this[ge]=!1,v}this._ssr||this._zr.flush(),this[Be]=null,this[ge]=!1,jo.call(this,i),Jo.call(this,i)}}},e.prototype.setTheme=function(){},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||yt.hasGlobalWindow&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},e.prototype.renderToCanvas=function(t){t=t||{};var a=this._zr.painter;return a.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.renderToSVGString=function(t){t=t||{};var a=this._zr.painter;return a.renderToString({useViewBox:t.useViewBox})},e.prototype.getSvgDataURL=function(){if(yt.svgSupported){var t=this._zr,a=t.storage.getDisplayList();return D(a,function(n){n.stopAnimation(null,!0)}),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(this._disposed){this.id;return}t=t||{};var a=t.excludeComponents,n=this._model,i=[],o=this;D(a,function(l){n.eachComponent({mainType:l},function(u){var f=o._componentsMap[u.__viewId];f.group.ignore||(i.push(f),f.group.ignore=!0)})});var s=this._zr.painter.getType()==="svg"?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return D(i,function(l){l.group.ignore=!1}),s},e.prototype.getConnectedDataURL=function(t){if(this._disposed){this.id;return}var a=t.type==="svg",n=this.group,i=Math.min,o=Math.max,s=1/0;if(Vf[n]){var l=s,u=s,f=-s,h=-s,v=[],c=t&&t.pixelRatio||this.getDevicePixelRatio();D(ri,function(_,S){if(_.group===n){var b=a?_.getZr().painter.getSvgDom().innerHTML:_.renderToCanvas(rt(t)),x=_.getDom().getBoundingClientRect();l=i(x.left,l),u=i(x.top,u),f=o(x.right,f),h=o(x.bottom,h),v.push({dom:b,left:x.left,top:x.top})}}),l*=c,u*=c,f*=c,h*=c;var p=f-l,d=h-u,g=Mr.createCanvas(),y=Fp(g,{renderer:a?"svg":"canvas"});if(y.resize({width:p,height:d}),a){var m="";return D(v,function(_){var S=_.left-l,b=_.top-u;m+=''+_.dom+""}),y.painter.getSvgRoot().innerHTML=m,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}else return t.connectedBackgroundColor&&y.add(new xt({shape:{x:0,y:0,width:p,height:d},style:{fill:t.connectedBackgroundColor}})),D(v,function(_){var S=new le({style:{x:_.left*c-l,y:_.top*c-u,image:_.dom}});y.add(S)}),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}else return this.getDataURL(t)},e.prototype.convertToPixel=function(t,a){return Kv(this,"convertToPixel",t,a)},e.prototype.convertFromPixel=function(t,a){return Kv(this,"convertFromPixel",t,a)},e.prototype.containPixel=function(t,a){if(this._disposed){this.id;return}var n=this._model,i,o=ks(n,t);return D(o,function(s,l){l.indexOf("Models")>=0&&D(s,function(u){var f=u.coordinateSystem;if(f&&f.containPoint)i=i||!!f.containPoint(a);else if(l==="seriesModels"){var h=this._chartsMap[u.__viewId];h&&h.containPoint&&(i=i||h.containPoint(a,u))}},this)},this),!!i},e.prototype.getVisual=function(t,a){var n=this._model,i=ks(n,t,{defaultMainType:"series"}),o=i.seriesModel,s=o.getData(),l=i.hasOwnProperty("dataIndexInside")?i.dataIndexInside:i.hasOwnProperty("dataIndex")?s.indexOfRawIndex(i.dataIndex):null;return l!=null?ly(s,l,a):Rl(s,a)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t=this;D(uN,function(a){var n=function(i){var o=t.getModel(),s=i.target,l,u=a==="globalout";if(u?l={}:s&&Zn(s,function(p){var d=nt(p);if(d&&d.dataIndex!=null){var g=d.dataModel||o.getSeriesByIndex(d.seriesIndex);return l=g&&g.getDataParams(d.dataIndex,d.dataType,s)||{},!0}else if(d.eventData)return l=V({},d.eventData),!0},!0),l){var f=l.componentType,h=l.componentIndex;(f==="markLine"||f==="markPoint"||f==="markArea")&&(f="series",h=l.seriesIndex);var v=f&&h!=null&&o.getComponent(f,h),c=v&&t[v.mainType==="series"?"_chartsMap":"_componentsMap"][v.__viewId];l.event=i,l.type=a,t._$eventProcessor.eventInfo={targetEl:s,packedEvent:l,model:v,view:c},t.trigger(a,l)}};n.zrEventfulCallAtLast=!0,t._zr.on(a,n,t)}),D(Gs,function(a,n){t._messageCenter.on(n,function(i){this.trigger(n,i)},t)}),D(["selectchanged"],function(a){t._messageCenter.on(a,function(n){this.trigger(a,n)},t)}),_O(this._messageCenter,this,this._api)},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){if(this._disposed){this.id;return}this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed){this.id;return}this._disposed=!0;var t=this.getDom();t&&AT(this.getDom(),cy,"");var a=this,n=a._api,i=a._model;D(a._componentsViews,function(o){o.dispose(i,n)}),D(a._chartsViews,function(o){o.dispose(i,n)}),a._zr.dispose(),a._dom=a._model=a._chartsMap=a._componentsMap=a._chartsViews=a._componentsViews=a._scheduler=a._api=a._zr=a._throttledZrFlush=a._theme=a._coordSysMgr=a._messageCenter=null,delete ri[a.id]},e.prototype.resize=function(t){if(!this[ge]){if(this._disposed){this.id;return}this._zr.resize(t);var a=this._model;if(this._loadingFX&&this._loadingFX.resize(),!!a){var n=a.resetOption("media"),i=t&&t.silent;this[Be]&&(i==null&&(i=this[Be].silent),n=!0,this[Be]=null),this[ge]=!0;try{n&&ki(this),Ma.update.call(this,{type:"resize",animation:V({duration:0},t&&t.animation)})}catch(o){throw this[ge]=!1,o}this[ge]=!1,jo.call(this,i),Jo.call(this,i)}}},e.prototype.showLoading=function(t,a){if(this._disposed){this.id;return}if(tt(t)&&(a=t,t=""),t=t||"default",this.hideLoading(),!!yd[t]){var n=yd[t](this._api,a),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){if(this._disposed){this.id;return}this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},e.prototype.makeActionFromEvent=function(t){var a=V({},t);return a.type=Gs[t.type],a},e.prototype.dispatchAction=function(t,a){if(this._disposed){this.id;return}if(tt(a)||(a={silent:!!a}),!!Nf[t.type]&&this._model){if(this[ge]){this._pendingActions.push(t);return}var n=a.silent;Jv.call(this,t,n);var i=a.flush;i?this._zr.flush():i!==!1&&yt.browser.weChat&&this._throttledZrFlush(),jo.call(this,n),Jo.call(this,n)}},e.prototype.updateLabelLayout=function(){Sr.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},e.prototype.appendData=function(t){if(this._disposed){this.id;return}var a=t.seriesIndex,n=this.getModel(),i=n.getSeriesByIndex(a);i.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()},e.internalField=function(){ki=function(h){var v=h._scheduler;v.restorePipelines(h._model),v.prepareStageTasks(),qv(h,!0),qv(h,!1),v.plan()},qv=function(h,v){for(var c=h._model,p=h._scheduler,d=v?h._componentsViews:h._chartsViews,g=v?h._componentsMap:h._chartsMap,y=h._zr,m=h._api,_=0;_v.get("hoverLayerThreshold")&&!yt.node&&!yt.worker&&v.eachSeries(function(g){if(!g.preventUsingHoverLayer){var y=h._chartsMap[g.__viewId];y.__alive&&y.eachRendered(function(m){m.states.emphasis&&(m.states.emphasis.hoverLayer=!0)})}})}function o(h,v){var c=h.get("blendMode")||null;v.eachRendered(function(p){p.isGroup||(p.style.blend=c)})}function s(h,v){if(!h.preventAutoZ){var c=h.get("z")||0,p=h.get("zlevel")||0;v.eachRendered(function(d){return l(d,c,p,-1/0),!0})}}function l(h,v,c,p){var d=h.getTextContent(),g=h.getTextGuideLine(),y=h.isGroup;if(y)for(var m=h.childrenRef(),_=0;_0?{duration:d,delay:c.get("delay"),easing:c.get("easing")}:null;v.eachRendered(function(y){if(y.states&&y.states.emphasis){if(ro(y))return;if(y instanceof mt&&BR(y),y.__dirty){var m=y.prevStates;m&&y.useStates(m)}if(p){y.stateTransition=g;var _=y.getTextContent(),S=y.getTextGuideLine();_&&(_.stateTransition=g),S&&(S.stateTransition=g)}y.__dirty&&n(y)}})}X_=function(h){return new(function(v){N(c,v);function c(){return v!==null&&v.apply(this,arguments)||this}return c.prototype.getCoordinateSystems=function(){return h._coordSysMgr.getCoordinateSystems()},c.prototype.getComponentByElement=function(p){for(;p;){var d=p.__ecComponentInfo;if(d!=null)return h._model.getComponent(d.mainType,d.index);p=p.parent}},c.prototype.enterEmphasis=function(p,d){ga(p,d),qe(h)},c.prototype.leaveEmphasis=function(p,d){ya(p,d),qe(h)},c.prototype.enterBlur=function(p){WT(p),qe(h)},c.prototype.leaveBlur=function(p){Og(p),qe(h)},c.prototype.enterSelect=function(p){UT(p),qe(h)},c.prototype.leaveSelect=function(p){YT(p),qe(h)},c.prototype.getModel=function(){return h.getModel()},c.prototype.getViewOfComponentModel=function(p){return h.getViewOfComponentModel(p)},c.prototype.getViewOfSeriesModel=function(p){return h.getViewOfSeriesModel(p)},c}(kA))(h)},LC=function(h){function v(c,p){for(var d=0;d=0)){Z_.push(t);var i=sC.wrapStageHandler(t,n);i.__prio=e,i.__raw=t,r.push(i)}}function _y(r,e){yd[r]=e}function mN(r){Iw({createCanvas:r})}function BC(r,e,t){var a=SC("registerMap");a&&a(r,e,t)}function _N(r){var e=SC("getMap");return e&&e(r)}var VC=Lk;ln(hy,rO);ln(zh,aO);ln(zh,nO);ln(hy,yO);ln(zh,mO);ln(wC,XO);gy(NA);yy(JO,fk);_y("default",iO);Rr({type:ti,event:ti,update:ti},Xt);Rr({type:Ju,event:Ju,update:Ju},Xt);Rr({type:Os,event:Os,update:Os},Xt);Rr({type:Qu,event:Qu,update:Qu},Xt);Rr({type:Ns,event:Ns,update:Ns},Xt);dy("light",dO);dy("dark",hC);var SN={},q_=[],xN={registerPreprocessor:gy,registerProcessor:yy,registerPostInit:EC,registerPostUpdate:kC,registerUpdateLifecycle:Gh,registerAction:Rr,registerCoordinateSystem:OC,registerLayout:NC,registerVisual:ln,registerTransform:VC,registerLoading:_y,registerMap:BC,registerImpl:$O,PRIORITY:TC,ComponentModel:gt,ComponentView:zt,SeriesModel:Et,ChartView:Lt,registerComponentModel:function(r){gt.registerClass(r)},registerComponentView:function(r){zt.registerClass(r)},registerSeriesModel:function(r){Et.registerClass(r)},registerChartView:function(r){Lt.registerClass(r)},registerSubTypeDefaulter:function(r,e){gt.registerSubTypeDefaulter(r,e)},registerPainter:function(r,e){vT(r,e)}};function pt(r){if(z(r)){D(r,function(e){pt(e)});return}vt(q_,r)>=0||(q_.push(r),K(r)&&(r={install:r}),r.install(xN))}function Qo(r){return r==null?0:r.length||1}function K_(r){return r}var ma=function(){function r(e,t,a,n,i,o){this._old=e,this._new=t,this._oldKeyGetter=a||K_,this._newKeyGetter=n||K_,this.context=i,this._diffModeMultiple=o==="multiple"}return r.prototype.add=function(e){return this._add=e,this},r.prototype.update=function(e){return this._update=e,this},r.prototype.updateManyToOne=function(e){return this._updateManyToOne=e,this},r.prototype.updateOneToMany=function(e){return this._updateOneToMany=e,this},r.prototype.updateManyToMany=function(e){return this._updateManyToMany=e,this},r.prototype.remove=function(e){return this._remove=e,this},r.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},r.prototype._executeOneToOne=function(){var e=this._old,t=this._new,a={},n=new Array(e.length),i=new Array(t.length);this._initIndexMap(e,null,n,"_oldKeyGetter"),this._initIndexMap(t,a,i,"_newKeyGetter");for(var o=0;o1){var f=l.shift();l.length===1&&(a[s]=l[0]),this._update&&this._update(f,o)}else u===1?(a[s]=null,this._update&&this._update(l,o)):this._remove&&this._remove(o)}this._performRestAdd(i,a)},r.prototype._executeMultiple=function(){var e=this._old,t=this._new,a={},n={},i=[],o=[];this._initIndexMap(e,a,i,"_oldKeyGetter"),this._initIndexMap(t,n,o,"_newKeyGetter");for(var s=0;s1&&v===1)this._updateManyToOne&&this._updateManyToOne(f,u),n[l]=null;else if(h===1&&v>1)this._updateOneToMany&&this._updateOneToMany(f,u),n[l]=null;else if(h===1&&v===1)this._update&&this._update(f,u),n[l]=null;else if(h>1&&v>1)this._updateManyToMany&&this._updateManyToMany(f,u),n[l]=null;else if(h>1)for(var c=0;c1)for(var s=0;s30}var ts=tt,Ia=G,DN=typeof Int32Array>"u"?Array:Int32Array,MN="e\0\0",j_=-1,IN=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],LN=["_approximateExtent"],J_,gu,es,rs,ec,as,rc,xe=function(){function r(e,t){this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","minmaxDownSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","minmaxDownSample","lttbDownSample"];var a,n=!1;GC(e)?(a=e.dimensions,this._dimOmitted=e.isDimensionOmitted(),this._schema=e):(n=!0,a=e),a=a||["x","y"];for(var i={},o=[],s={},l=!1,u={},f=0;f=t)){var a=this._store,n=a.getProvider();this._updateOrdinalMeta();var i=this._nameList,o=this._idList,s=n.getSource().sourceFormat,l=s===cr;if(l&&!n.pure)for(var u=[],f=e;f0},r.prototype.ensureUniqueItemVisual=function(e,t){var a=this._itemVisuals,n=a[e];n||(n=a[e]={});var i=n[t];return i==null&&(i=this.getVisual(t),z(i)?i=i.slice():ts(i)&&(i=V({},i)),n[t]=i),i},r.prototype.setItemVisual=function(e,t,a){var n=this._itemVisuals[e]||{};this._itemVisuals[e]=n,ts(t)?V(n,t):n[t]=a},r.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},r.prototype.setLayout=function(e,t){ts(e)?V(this._layout,e):this._layout[e]=t},r.prototype.getLayout=function(e){return this._layout[e]},r.prototype.getItemLayout=function(e){return this._itemLayouts[e]},r.prototype.setItemLayout=function(e,t,a){this._itemLayouts[e]=a?V(this._itemLayouts[e]||{},t):t},r.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},r.prototype.setItemGraphicEl=function(e,t){var a=this.hostModel&&this.hostModel.seriesIndex;qp(a,this.dataType,e,t),this._graphicEls[e]=t},r.prototype.getItemGraphicEl=function(e){return this._graphicEls[e]},r.prototype.eachItemGraphicEl=function(e,t){D(this._graphicEls,function(a,n){a&&e&&e.call(t,a,n)})},r.prototype.cloneShallow=function(e){return e||(e=new r(this._schema?this._schema:Ia(this.dimensions,this._getDimInfo,this),this.hostModel)),ec(e,this),e._store=this._store,e},r.prototype.wrapMethod=function(e,t){var a=this[e];K(a)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(e),this[e]=function(){var n=a.apply(this,arguments);return t.apply(this,[n].concat(vh(arguments)))})},r.internalField=function(){J_=function(e){var t=e._invertedIndicesMap;D(t,function(a,n){var i=e._dimInfos[n],o=i.ordinalMeta,s=e._store;if(o){a=t[n]=new DN(o.categories.length);for(var l=0;l1&&(l+="__ec__"+f),n[t]=l}}}(),r}();function PN(r,e){return No(r,e).dimensions}function No(r,e){ny(r)||(r=iy(r)),e=e||{};var t=e.coordDimensions||[],a=e.dimensionsDefine||r.dimensionsDefine||[],n=Z(),i=[],o=EN(r,t,a,e.dimensionsCount),s=e.canOmitUnusedDimensions&&WC(o),l=a===r.dimensionsDefine,u=l?HC(r):FC(a),f=e.encodeDefine;!f&&e.encodeDefaulter&&(f=e.encodeDefaulter(r,o));for(var h=Z(f),v=new $A(o),c=0;c0&&(a.name=n+(i-1)),i++,e.set(n,i)}}function EN(r,e,t,a){var n=Math.max(r.dimensionsDetectedCount||1,e.length,t.length,a||0);return D(e,function(i){var o;tt(i)&&(o=i.dimsDef)&&(n=Math.max(n,o.length))}),n}function kN(r,e,t){if(t||e.hasKey(r)){for(var a=0;e.hasKey(r+a);)a++;r+=a}return e.set(r,!0),r}var ON=function(){function r(e){this.coordSysDims=[],this.axisMap=Z(),this.categoryAxisMap=Z(),this.coordSysName=e}return r}();function NN(r){var e=r.get("coordinateSystem"),t=new ON(e),a=BN[e];if(a)return a(r,t,t.axisMap,t.categoryAxisMap),t}var BN={cartesian2d:function(r,e,t,a){var n=r.getReferringComponents("xAxis",jt).models[0],i=r.getReferringComponents("yAxis",jt).models[0];e.coordSysDims=["x","y"],t.set("x",n),t.set("y",i),Oi(n)&&(a.set("x",n),e.firstCategoryDimIndex=0),Oi(i)&&(a.set("y",i),e.firstCategoryDimIndex==null&&(e.firstCategoryDimIndex=1))},singleAxis:function(r,e,t,a){var n=r.getReferringComponents("singleAxis",jt).models[0];e.coordSysDims=["single"],t.set("single",n),Oi(n)&&(a.set("single",n),e.firstCategoryDimIndex=0)},polar:function(r,e,t,a){var n=r.getReferringComponents("polar",jt).models[0],i=n.findAxisModel("radiusAxis"),o=n.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],t.set("radius",i),t.set("angle",o),Oi(i)&&(a.set("radius",i),e.firstCategoryDimIndex=0),Oi(o)&&(a.set("angle",o),e.firstCategoryDimIndex==null&&(e.firstCategoryDimIndex=1))},geo:function(r,e,t,a){e.coordSysDims=["lng","lat"]},parallel:function(r,e,t,a){var n=r.ecModel,i=n.getComponent("parallel",r.get("parallelIndex")),o=e.coordSysDims=i.dimensions.slice();D(i.parallelAxisIndex,function(s,l){var u=n.getComponent("parallelAxis",s),f=o[l];t.set(f,u),Oi(u)&&(a.set(f,u),e.firstCategoryDimIndex==null&&(e.firstCategoryDimIndex=l))})}};function Oi(r){return r.get("type")==="category"}function UC(r,e,t){t=t||{};var a=t.byIndex,n=t.stackedCoordDimension,i,o,s;VN(e)?i=e:(o=e.schema,i=o.dimensions,s=e.store);var l=!!(r&&r.get("stack")),u,f,h,v;if(D(i,function(m,_){Y(m)&&(i[_]=m={name:m}),l&&!m.isExtraCoord&&(!a&&!u&&m.ordinalMeta&&(u=m),!f&&m.type!=="ordinal"&&m.type!=="time"&&(!n||n===m.coordDim)&&(f=m))}),f&&!a&&!u&&(a=!0),f){h="__\0ecstackresult_"+r.id,v="__\0ecstackedover_"+r.id,u&&(u.createInvertedIndices=!0);var c=f.coordDim,p=f.type,d=0;D(i,function(m){m.coordDim===c&&d++});var g={name:h,coordDim:c,coordDimIndex:d,type:p,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length},y={name:v,coordDim:v,coordDimIndex:d+1,type:p,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length+1};o?(s&&(g.storeDimIndex=s.ensureCalculationDimension(v,p),y.storeDimIndex=s.ensureCalculationDimension(h,p)),o.appendCalculationDimension(g),o.appendCalculationDimension(y)):(i.push(g),i.push(y))}return{stackedDimension:f&&f.name,stackedByDimension:u&&u.name,isStackedByIndex:a,stackedOverDimension:v,stackResultDimension:h}}function VN(r){return!GC(r.schema)}function _a(r,e){return!!e&&e===r.getCalculationInfo("stackedDimension")}function Sy(r,e){return _a(r,e)?r.getCalculationInfo("stackResultDimension"):e}function zN(r,e){var t=r.get("coordinateSystem"),a=Ro.get(t),n;return e&&e.coordSysDims&&(n=G(e.coordSysDims,function(i){var o={name:i},s=e.axisMap.get(i);if(s){var l=s.get("type");o.type=zf(l)}return o})),n||(n=a&&(a.getDimensionsInfo?a.getDimensionsInfo():a.dimensions.slice())||["x","y"]),n}function GN(r,e,t){var a,n;return t&&D(r,function(i,o){var s=i.coordDim,l=t.categoryAxisMap.get(s);l&&(a==null&&(a=o),i.ordinalMeta=l.getOrdinalMeta(),e&&(i.createInvertedIndices=!0)),i.otherDims.itemName!=null&&(n=!0)}),!n&&a!=null&&(r[a].otherDims.itemName=0),a}function ea(r,e,t){t=t||{};var a=e.getSourceManager(),n,i=!1;r?(i=!0,n=iy(r)):(n=a.getSource(),i=n.sourceFormat===cr);var o=NN(e),s=zN(e,o),l=t.useEncodeDefaulter,u=K(l)?l:l?lt(LA,s,e):null,f={coordDimensions:s,generateCoord:t.generateCoord,encodeDefine:e.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!i},h=No(n,f),v=GN(h.dimensions,t.createInvertedIndices,o),c=i?null:a.getSharedDataStore(h),p=UC(e,{schema:h,store:c}),d=new xe(h,e);d.setCalculationInfo(p);var g=v!=null&&FN(n)?function(y,m,_,S){return S===v?_:this.defaultDimValueGetter(y,m,_,S)}:null;return d.hasItemOption=!1,d.initData(i?n:c,null,g),d}function FN(r){if(r.sourceFormat===cr){var e=HN(r.data||[]);return!z(xo(e))}}function HN(r){for(var e=0;et[1]&&(t[1]=e[1])},r.prototype.unionExtentFromData=function(e,t){this.unionExtent(e.getApproximateExtent(t))},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.setExtent=function(e,t){var a=this._extent;isNaN(e)||(a[0]=e),isNaN(t)||(a[1]=t)},r.prototype.isInExtentRange=function(e){return this._extent[0]<=e&&this._extent[1]>=e},r.prototype.isBlank=function(){return this._isBlank},r.prototype.setBlank=function(e){this._isBlank=e},r}();Sh(ra);var WN=0,md=function(){function r(e){this.categories=e.categories||[],this._needCollect=e.needCollect,this._deduplication=e.deduplication,this.uid=++WN}return r.createByAxisModel=function(e){var t=e.option,a=t.data,n=a&&G(a,UN);return new r({categories:n,needCollect:!n,deduplication:t.dedplication!==!1})},r.prototype.getOrdinal=function(e){return this._getOrCreateMap().get(e)},r.prototype.parseAndCollect=function(e){var t,a=this._needCollect;if(!Y(e)&&!a)return e;if(a&&!this._deduplication)return t=this.categories.length,this.categories[t]=e,t;var n=this._getOrCreateMap();return t=n.get(e),t==null&&(a?(t=this.categories.length,this.categories[t]=e,n.set(e,t)):t=NaN),t},r.prototype._getOrCreateMap=function(){return this._map||(this._map=Z(this.categories))},r}();function UN(r){return tt(r)&&r.value!=null?r.value:r+""}function _d(r){return r.type==="interval"||r.type==="log"}function YN(r,e,t,a){var n={},i=r[1]-r[0],o=n.interval=Ag(i/e,!0);t!=null&&oa&&(o=n.interval=a);var s=n.intervalPrecision=YC(o),l=n.niceTickExtent=[Ut(Math.ceil(r[0]/o)*o,s),Ut(Math.floor(r[1]/o)*o,s)];return XN(l,r),n}function ac(r){var e=Math.pow(10,_h(r)),t=r/e;return t?t===2?t=3:t===3?t=5:t*=2:t=1,Ut(t*e)}function YC(r){return br(r)+2}function Q_(r,e,t){r[e]=Math.max(Math.min(r[e],t[1]),t[0])}function XN(r,e){!isFinite(r[0])&&(r[0]=e[0]),!isFinite(r[1])&&(r[1]=e[1]),Q_(r,0,e),Q_(r,1,e),r[0]>r[1]&&(r[0]=r[1])}function Fh(r,e){return r>=e[0]&&r<=e[1]}function Hh(r,e){return e[1]===e[0]?.5:(r-e[0])/(e[1]-e[0])}function Wh(r,e){return r*(e[1]-e[0])+e[0]}var Uh=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;a.type="ordinal";var n=a.getSetting("ordinalMeta");return n||(n=new md({})),z(n)&&(n=new md({categories:G(n,function(i){return tt(i)?i.value:i})})),a._ordinalMeta=n,a._extent=a.getSetting("extent")||[0,n.categories.length-1],a}return e.prototype.parse=function(t){return t==null?NaN:Y(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return t=this.parse(t),Fh(t,this._extent)&&this._ordinalMeta.categories[t]!=null},e.prototype.normalize=function(t){return t=this._getTickNumber(this.parse(t)),Hh(t,this._extent)},e.prototype.scale=function(t){return t=Math.round(Wh(t,this._extent)),this.getRawOrdinalNumber(t)},e.prototype.getTicks=function(){for(var t=[],a=this._extent,n=a[0];n<=a[1];)t.push({value:n}),n++;return t},e.prototype.getMinorTicks=function(t){},e.prototype.setSortInfo=function(t){if(t==null){this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null;return}for(var a=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],o=0,s=this._ordinalMeta.categories.length,l=Math.min(s,a.length);o=0&&t=0&&t=t},e.prototype.getOrdinalMeta=function(){return this._ordinalMeta},e.prototype.calcNiceTicks=function(){},e.prototype.calcNiceExtent=function(){},e.type="ordinal",e}(ra);ra.registerClass(Uh);var In=Ut,Sa=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type="interval",t._interval=0,t._intervalPrecision=2,t}return e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return Fh(t,this._extent)},e.prototype.normalize=function(t){return Hh(t,this._extent)},e.prototype.scale=function(t){return Wh(t,this._extent)},e.prototype.setExtent=function(t,a){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(a)||(n[1]=parseFloat(a))},e.prototype.unionExtent=function(t){var a=this._extent;t[0]a[1]&&(a[1]=t[1]),this.setExtent(a[0],a[1])},e.prototype.getInterval=function(){return this._interval},e.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=YC(t)},e.prototype.getTicks=function(t){var a=this._interval,n=this._extent,i=this._niceExtent,o=this._intervalPrecision,s=[];if(!a)return s;var l=1e4;n[0]l)return[];var f=s.length?s[s.length-1].value:i[1];return n[1]>f&&(t?s.push({value:In(f+a,o)}):s.push({value:n[1]})),s},e.prototype.getMinorTicks=function(t){for(var a=this.getTicks(!0),n=[],i=this.getExtent(),o=1;oi[0]&&c0&&(i=i===null?s:Math.min(i,s))}t[a]=i}}return t}function qC(r){var e=qN(r),t=[];return D(r,function(a){var n=a.coordinateSystem,i=n.getBaseAxis(),o=i.getExtent(),s;if(i.type==="category")s=i.getBandWidth();else if(i.type==="value"||i.type==="time"){var l=i.dim+"_"+i.index,u=e[l],f=Math.abs(o[1]-o[0]),h=i.scale.getExtent(),v=Math.abs(h[1]-h[0]);s=u?f/v*u:f}else{var c=a.getData();s=Math.abs(o[1]-o[0])/c.count()}var p=W(a.get("barWidth"),s),d=W(a.get("barMaxWidth"),s),g=W(a.get("barMinWidth")||(tD(a)?.5:1),s),y=a.get("barGap"),m=a.get("barCategoryGap");t.push({bandWidth:s,barWidth:p,barMaxWidth:d,barMinWidth:g,barGap:y,barCategoryGap:m,axisKey:xy(i),stackId:$C(a)})}),KC(t)}function KC(r){var e={};D(r,function(a,n){var i=a.axisKey,o=a.bandWidth,s=e[i]||{bandWidth:o,remainedWidth:o,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},l=s.stacks;e[i]=s;var u=a.stackId;l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var f=a.barWidth;f&&!l[u].width&&(l[u].width=f,f=Math.min(s.remainedWidth,f),s.remainedWidth-=f);var h=a.barMaxWidth;h&&(l[u].maxWidth=h);var v=a.barMinWidth;v&&(l[u].minWidth=v);var c=a.barGap;c!=null&&(s.gap=c);var p=a.barCategoryGap;p!=null&&(s.categoryGap=p)});var t={};return D(e,function(a,n){t[n]={};var i=a.stacks,o=a.bandWidth,s=a.categoryGap;if(s==null){var l=_t(i).length;s=Math.max(35-l*4,15)+"%"}var u=W(s,o),f=W(a.gap,1),h=a.remainedWidth,v=a.autoWidthCount,c=(h-u)/(v+(v-1)*f);c=Math.max(c,0),D(i,function(y){var m=y.maxWidth,_=y.minWidth;if(y.width){var S=y.width;m&&(S=Math.min(S,m)),_&&(S=Math.max(S,_)),y.width=S,h-=S+f*S,v--}else{var S=c;m&&mS&&(S=_),S!==c&&(y.width=S,h-=S+f*S,v--)}}),c=(h-u)/(v+(v-1)*f),c=Math.max(c,0);var p=0,d;D(i,function(y,m){y.width||(y.width=c),d=y,p+=y.width*(1+f)}),d&&(p-=d.width*f);var g=-p/2;D(i,function(y,m){t[n][m]=t[n][m]||{bandWidth:o,offset:g,width:y.width},g+=y.width*(1+f)})}),t}function KN(r,e,t){if(r&&e){var a=r[xy(e)];return a}}function jC(r,e){var t=ZC(r,e),a=qC(t);D(t,function(n){var i=n.getData(),o=n.coordinateSystem,s=o.getBaseAxis(),l=$C(n),u=a[xy(s)][l],f=u.offset,h=u.width;i.setLayout({bandWidth:u.bandWidth,offset:f,size:h})})}function JC(r){return{seriesType:r,plan:Eo(),reset:function(e){if(QC(e)){var t=e.getData(),a=e.coordinateSystem,n=a.getBaseAxis(),i=a.getOtherAxis(n),o=t.getDimensionIndex(t.mapDimension(i.dim)),s=t.getDimensionIndex(t.mapDimension(n.dim)),l=e.get("showBackground",!0),u=t.mapDimension(i.dim),f=t.getCalculationInfo("stackResultDimension"),h=_a(t,u)&&!!t.getCalculationInfo("stackedOnSeries"),v=i.isHorizontal(),c=jN(n,i),p=tD(e),d=e.get("barMinHeight")||0,g=f&&t.getDimensionIndex(f),y=t.getLayout("size"),m=t.getLayout("offset");return{progress:function(_,S){for(var b=_.count,x=p&&Ur(b*3),w=p&&l&&Ur(b*3),T=p&&Ur(b),A=a.master.getRect(),C=v?A.width:A.height,M,I=S.getStore(),L=0;(M=_.next())!=null;){var P=I.get(h?g:o,M),R=I.get(s,M),E=c,O=void 0;h&&(O=+P-I.get(o,M));var k=void 0,B=void 0,F=void 0,H=void 0;if(v){var U=a.dataToPoint([P,R]);if(h){var j=a.dataToPoint([O,R]);E=j[0]}k=E,B=U[1]+m,F=U[0]-E,H=y,Math.abs(F)0?t:1:t))}var JN=function(r,e,t,a){for(;t>>1;r[n][1]n&&(this._approxInterval=n);var s=yu.length,l=Math.min(JN(yu,this._approxInterval,0,s),s-1);this._interval=yu[l][1],this._minLevelUnit=yu[Math.max(l-1,0)][0]},e.prototype.parse=function(t){return wt(t)?t:+Ze(t)},e.prototype.contain=function(t){return Fh(this.parse(t),this._extent)},e.prototype.normalize=function(t){return Hh(this.parse(t),this._extent)},e.prototype.scale=function(t){return Wh(t,this._extent)},e.type="time",e}(Sa),yu=[["second",$g],["minute",Zg],["hour",Vs],["quarter-day",Vs*6],["half-day",Vs*12],["day",or*1.2],["half-week",or*3.5],["week",or*7],["month",or*31],["quarter",or*95],["half-year",W0/2],["year",W0]];function QN(r,e,t,a){var n=Ze(e),i=Ze(t),o=function(p){return Y0(n,p,a)===Y0(i,p,a)},s=function(){return o("year")},l=function(){return s()&&o("month")},u=function(){return l()&&o("day")},f=function(){return u()&&o("hour")},h=function(){return f()&&o("minute")},v=function(){return h()&&o("second")},c=function(){return v()&&o("millisecond")};switch(r){case"year":return s();case"month":return l();case"day":return u();case"hour":return f();case"minute":return h();case"second":return v();case"millisecond":return c()}}function tB(r,e){return r/=or,r>16?16:r>7.5?7:r>3.5?4:r>1.5?2:1}function eB(r){var e=30*or;return r/=e,r>6?6:r>3?3:r>2?2:1}function rB(r){return r/=Vs,r>12?12:r>6?6:r>3.5?4:r>2?2:1}function t1(r,e){return r/=e?Zg:$g,r>30?30:r>20?20:r>15?15:r>10?10:r>5?5:r>2?2:1}function aB(r){return Ag(r,!0)}function nB(r,e,t){var a=new Date(r);switch(no(e)){case"year":case"month":a[yA(t)](0);case"day":a[mA(t)](1);case"hour":a[_A(t)](0);case"minute":a[SA(t)](0);case"second":a[xA(t)](0),a[bA(t)](0)}return a.getTime()}function iB(r,e,t,a){var n=1e4,i=dA,o=0;function s(C,M,I,L,P,R,E){for(var O=new Date(M),k=M,B=O[L]();k1&&R===0&&I.unshift({value:I[0].value-k})}}for(var R=0;R=a[0]&&m<=a[1]&&h++)}var _=(a[1]-a[0])/e;if(h>_*1.5&&v>_/1.5||(u.push(g),h>_||r===i[c]))break}f=[]}}}for(var S=At(G(u,function(C){return At(C,function(M){return M.value>=a[0]&&M.value<=a[1]&&!M.notAdd})}),function(C){return C.length>0}),b=[],x=S.length-1,c=0;c0;)i*=10;var s=[Ut(lB(a[0]/i)*i),Ut(sB(a[1]/i)*i)];this._interval=i,this._niceExtent=s}},e.prototype.calcNiceExtent=function(t){Fs.calcNiceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return t=yr(t)/yr(this.base),Fh(t,this._extent)},e.prototype.normalize=function(t){return t=yr(t)/yr(this.base),Hh(t,this._extent)},e.prototype.scale=function(t){return t=Wh(t,this._extent),mu(this.base,t)},e.type="log",e}(ra),eD=wy.prototype;eD.getMinorTicks=Fs.getMinorTicks;eD.getLabel=Fs.getLabel;function _u(r,e){return oB(r,br(e))}ra.registerClass(wy);var uB=function(){function r(e,t,a){this._prepareParams(e,t,a)}return r.prototype._prepareParams=function(e,t,a){a[1]0&&l>0&&!u&&(s=0),s<0&&l<0&&!f&&(l=0));var v=this._determinedMin,c=this._determinedMax;return v!=null&&(s=v,u=!0),c!=null&&(l=c,f=!0),{min:s,max:l,minFixed:u,maxFixed:f,isBlank:h}},r.prototype.modifyDataMinMax=function(e,t){this[hB[e]]=t},r.prototype.setDeterminedMinMax=function(e,t){var a=fB[e];this[a]=t},r.prototype.freeze=function(){this.frozen=!0},r}(),fB={min:"_determinedMin",max:"_determinedMax"},hB={min:"_dataMin",max:"_dataMax"};function rD(r,e,t){var a=r.rawExtentInfo;return a||(a=new uB(r,e,t),r.rawExtentInfo=a,a)}function Su(r,e){return e==null?null:so(e)?NaN:r.parse(e)}function aD(r,e){var t=r.type,a=rD(r,e,r.getExtent()).calculate();r.setBlank(a.isBlank);var n=a.min,i=a.max,o=e.ecModel;if(o&&t==="time"){var s=ZC("bar",o),l=!1;if(D(s,function(h){l=l||h.getBaseAxis()===e.axis}),l){var u=qC(s),f=vB(n,i,e,u);n=f.min,i=f.max}}return{extent:[n,i],fixMin:a.minFixed,fixMax:a.maxFixed}}function vB(r,e,t,a){var n=t.axis.getExtent(),i=Math.abs(n[1]-n[0]),o=KN(a,t.axis);if(o===void 0)return{min:r,max:e};var s=1/0;D(o,function(c){s=Math.min(c.offset,s)});var l=-1/0;D(o,function(c){l=Math.max(c.offset+c.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,f=e-r,h=1-(s+l)/i,v=f/h-f;return e+=v*(l/u),r-=v*(s/u),{min:r,max:e}}function hi(r,e){var t=e,a=aD(r,t),n=a.extent,i=t.get("splitNumber");r instanceof wy&&(r.base=t.get("logBase"));var o=r.type,s=t.get("interval"),l=o==="interval"||o==="time";r.setExtent(n[0],n[1]),r.calcNiceExtent({splitNumber:i,fixMin:a.fixMin,fixMax:a.fixMax,minInterval:l?t.get("minInterval"):null,maxInterval:l?t.get("maxInterval"):null}),s!=null&&r.setInterval&&r.setInterval(s)}function El(r,e){if(e=e||r.get("type"),e)switch(e){case"category":return new Uh({ordinalMeta:r.getOrdinalMeta?r.getOrdinalMeta():r.getCategories(),extent:[1/0,-1/0]});case"time":return new by({locale:r.ecModel.getLocaleModel(),useUTC:r.ecModel.get("useUTC")});default:return new(ra.getClass(e)||Sa)}}function cB(r){var e=r.scale.getExtent(),t=e[0],a=e[1];return!(t>0&&a>0||t<0&&a<0)}function Bo(r){var e=r.getLabelModel().get("formatter"),t=r.type==="category"?r.scale.getExtent()[0]:null;return r.scale.type==="time"?function(a){return function(n,i){return r.scale.getFormattedLabel(n,i,a)}}(e):Y(e)?function(a){return function(n){var i=r.scale.getLabel(n),o=a.replace("{value}",i??"");return o}}(e):K(e)?function(a){return function(n,i){return t!=null&&(i=n.value-t),a(Ty(r,n),i,n.level!=null?{level:n.level}:null)}}(e):function(a){return r.scale.getLabel(a)}}function Ty(r,e){return r.type==="category"?r.scale.getLabel(e):e.value}function pB(r){var e=r.model,t=r.scale;if(!(!e.get(["axisLabel","show"])||t.isBlank())){var a,n,i=t.getExtent();t instanceof Uh?n=t.count():(a=t.getTicks(),n=a.length);var o=r.getLabelModel(),s=Bo(r),l,u=1;n>40&&(u=Math.ceil(n/40));for(var f=0;fr[1]&&(r[1]=n[1])})}var Vo=function(){function r(){}return r.prototype.getNeedCrossZero=function(){var e=this.option;return!e.scale},r.prototype.getCoordSysModel=function(){},r}();function yB(r){return ea(null,r)}var mB={isDimensionStacked:_a,enableDataStack:UC,getStackedDimension:Sy};function _B(r,e){var t=e;e instanceof Ct||(t=new Ct(e));var a=El(t);return a.setExtent(r[0],r[1]),hi(a,t),a}function SB(r){$t(r,Vo)}function xB(r,e){return e=e||{},Nt(r,null,null,e.state!=="normal")}const bB=Object.freeze(Object.defineProperty({__proto__:null,createDimensions:PN,createList:yB,createScale:_B,createSymbol:qt,createTextStyle:xB,dataStack:mB,enableHoverEmphasis:Xa,getECData:nt,getLayoutRect:Jt,mixinAxisModelCommonMethods:SB},Symbol.toStringTag,{value:"Module"}));var wB=1e-8;function r1(r,e){return Math.abs(r-e)n&&(a=o,n=l)}if(a)return AB(a.exterior);var u=this.getBoundingRect();return[u.x+u.width/2,u.y+u.height/2]},e.prototype.getBoundingRect=function(t){var a=this._rect;if(a&&!t)return a;var n=[1/0,1/0],i=[-1/0,-1/0],o=this.geometries;return D(o,function(s){s.type==="polygon"?a1(s.exterior,n,i,t):D(s.points,function(l){a1(l,n,i,t)})}),isFinite(n[0])&&isFinite(n[1])&&isFinite(i[0])&&isFinite(i[1])||(n[0]=n[1]=i[0]=i[1]=0),a=new ht(n[0],n[1],i[0]-n[0],i[1]-n[1]),t||(this._rect=a),a},e.prototype.contain=function(t){var a=this.getBoundingRect(),n=this.geometries;if(!a.contain(t[0],t[1]))return!1;t:for(var i=0,o=n.length;i>1^-(s&1),l=l>>1^-(l&1),s+=n,l+=i,n=s,i=l,a.push([s/t,l/t])}return a}function xd(r,e){return r=DB(r),G(At(r.features,function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0}),function(t){var a=t.properties,n=t.geometry,i=[];switch(n.type){case"Polygon":var o=n.coordinates;i.push(new n1(o[0],o.slice(1)));break;case"MultiPolygon":D(n.coordinates,function(l){l[0]&&i.push(new n1(l[0],l.slice(1)))});break;case"LineString":i.push(new i1([n.coordinates]));break;case"MultiLineString":i.push(new i1(n.coordinates))}var s=new oD(a[e||"name"],i,a.cp);return s.properties=a,s})}const MB=Object.freeze(Object.defineProperty({__proto__:null,MAX_SAFE_INTEGER:Wp,asc:Ye,getPercentWithPrecision:uP,getPixelPrecision:wg,getPrecision:br,getPrecisionSafe:gT,isNumeric:Cg,isRadianAroundZero:uo,linearMap:Dt,nice:Ag,numericToNumber:jr,parseDate:Ze,quantile:ju,quantity:mT,quantityExponent:_h,reformIntervals:Up,remRadian:Tg,round:Ut},Symbol.toStringTag,{value:"Module"})),IB=Object.freeze(Object.defineProperty({__proto__:null,format:Pl,parse:Ze},Symbol.toStringTag,{value:"Module"})),LB=Object.freeze(Object.defineProperty({__proto__:null,Arc:Ml,BezierCurve:To,BoundingRect:ht,Circle:Qr,CompoundPath:Ch,Ellipse:Dl,Group:at,Image:le,IncrementalDisplayable:rA,Line:te,LinearGradient:Ao,Polygon:Te,Polyline:Ce,RadialGradient:Vg,Rect:xt,Ring:wo,Sector:we,Text:St,clipPointsByRect:Hg,clipRectByRect:sA,createIcon:Do,extendPath:iA,extendShape:nA,getShapeClass:Dh,getTransform:$a,initProps:Gt,makeImage:Gg,makePath:Il,mergePath:Ue,registerShape:vr,resizePath:Fg,updateProps:Tt},Symbol.toStringTag,{value:"Module"})),PB=Object.freeze(Object.defineProperty({__proto__:null,addCommas:Kg,capitalFirst:kE,encodeHTML:Se,formatTime:EE,formatTpl:Jg,getTextRect:PE,getTooltipMarker:wA,normalizeCssArray:mi,toCamelCase:jg,truncateText:zP},Symbol.toStringTag,{value:"Module"})),RB=Object.freeze(Object.defineProperty({__proto__:null,bind:X,clone:rt,curry:lt,defaults:J,each:D,extend:V,filter:At,indexOf:vt,inherits:dg,isArray:z,isFunction:K,isObject:tt,isString:Y,map:G,merge:ut,reduce:ur},Symbol.toStringTag,{value:"Module"}));var sl=bt();function lD(r,e){var t=G(e,function(a){return r.scale.parse(a)});return r.type==="time"&&t.length>0&&(t.sort(),t.unshift(t[0]),t.push(t[t.length-1])),t}function EB(r){var e=r.getLabelModel().get("customValues");if(e){var t=Bo(r),a=r.scale.getExtent(),n=lD(r,e),i=At(n,function(o){return o>=a[0]&&o<=a[1]});return{labels:G(i,function(o){var s={value:o};return{formattedLabel:t(s),rawLabel:r.scale.getLabel(s),tickValue:o}})}}return r.type==="category"?OB(r):BB(r)}function kB(r,e){var t=r.getTickModel().get("customValues");if(t){var a=r.scale.getExtent(),n=lD(r,t);return{ticks:At(n,function(i){return i>=a[0]&&i<=a[1]})}}return r.type==="category"?NB(r,e):{ticks:G(r.scale.getTicks(),function(i){return i.value})}}function OB(r){var e=r.getLabelModel(),t=uD(r,e);return!e.get("show")||r.scale.isBlank()?{labels:[],labelCategoryInterval:t.labelCategoryInterval}:t}function uD(r,e){var t=fD(r,"labels"),a=Ay(e),n=hD(t,a);if(n)return n;var i,o;return K(a)?i=pD(r,a):(o=a==="auto"?VB(r):a,i=cD(r,o)),vD(t,a,{labels:i,labelCategoryInterval:o})}function NB(r,e){var t=fD(r,"ticks"),a=Ay(e),n=hD(t,a);if(n)return n;var i,o;if((!e.get("show")||r.scale.isBlank())&&(i=[]),K(a))i=pD(r,a,!0);else if(a==="auto"){var s=uD(r,r.getLabelModel());o=s.labelCategoryInterval,i=G(s.labels,function(l){return l.tickValue})}else o=a,i=cD(r,o,!0);return vD(t,a,{ticks:i,tickCategoryInterval:o})}function BB(r){var e=r.scale.getTicks(),t=Bo(r);return{labels:G(e,function(a,n){return{level:a.level,formattedLabel:t(a,n),rawLabel:r.scale.getLabel(a),tickValue:a.value}})}}function fD(r,e){return sl(r)[e]||(sl(r)[e]=[])}function hD(r,e){for(var t=0;t40&&(s=Math.max(1,Math.floor(o/40)));for(var l=i[0],u=r.dataToCoord(l+1)-r.dataToCoord(l),f=Math.abs(u*Math.cos(a)),h=Math.abs(u*Math.sin(a)),v=0,c=0;l<=i[1];l+=s){var p=0,d=0,g=Tl(t({value:l}),e.font,"center","top");p=g.width*1.3,d=g.height*1.3,v=Math.max(v,p,7),c=Math.max(c,d,7)}var y=v/f,m=c/h;isNaN(y)&&(y=1/0),isNaN(m)&&(m=1/0);var _=Math.max(0,Math.floor(Math.min(y,m))),S=sl(r.model),b=r.getExtent(),x=S.lastAutoInterval,w=S.lastTickCount;return x!=null&&w!=null&&Math.abs(x-_)<=1&&Math.abs(w-o)<=1&&x>_&&S.axisExtent0===b[0]&&S.axisExtent1===b[1]?_=x:(S.lastTickCount=o,S.lastAutoInterval=_,S.axisExtent0=b[0],S.axisExtent1=b[1]),_}function GB(r){var e=r.getLabelModel();return{axisRotate:r.getRotate?r.getRotate():r.isHorizontal&&!r.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function cD(r,e,t){var a=Bo(r),n=r.scale,i=n.getExtent(),o=r.getLabelModel(),s=[],l=Math.max((e||0)+1,1),u=i[0],f=n.count();u!==0&&l>1&&f/l>2&&(u=Math.round(Math.ceil(u/l)*l));var h=nD(r),v=o.get("showMinLabel")||h,c=o.get("showMaxLabel")||h;v&&u!==i[0]&&d(i[0]);for(var p=u;p<=i[1];p+=l)d(p);c&&p-l!==i[1]&&d(i[1]);function d(g){var y={value:g};s.push(t?g:{formattedLabel:a(y),rawLabel:n.getLabel(y),tickValue:g})}return s}function pD(r,e,t){var a=r.scale,n=Bo(r),i=[];return D(a.getTicks(),function(o){var s=a.getLabel(o),l=o.value;e(o.value,s)&&i.push(t?l:{formattedLabel:n(o),rawLabel:s,tickValue:l})}),i}var o1=[0,1],dr=function(){function r(e,t,a){this.onBand=!1,this.inverse=!1,this.dim=e,this.scale=t,this._extent=a||[0,0]}return r.prototype.contain=function(e){var t=this._extent,a=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return e>=a&&e<=n},r.prototype.containData=function(e){return this.scale.contain(e)},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.getPixelPrecision=function(e){return wg(e||this.scale.getExtent(),this._extent)},r.prototype.setExtent=function(e,t){var a=this._extent;a[0]=e,a[1]=t},r.prototype.dataToCoord=function(e,t){var a=this._extent,n=this.scale;return e=n.normalize(e),this.onBand&&n.type==="ordinal"&&(a=a.slice(),s1(a,n.count())),Dt(e,o1,a,t)},r.prototype.coordToData=function(e,t){var a=this._extent,n=this.scale;this.onBand&&n.type==="ordinal"&&(a=a.slice(),s1(a,n.count()));var i=Dt(e,a,o1,t);return this.scale.scale(i)},r.prototype.pointToData=function(e,t){},r.prototype.getTicksCoords=function(e){e=e||{};var t=e.tickModel||this.getTickModel(),a=kB(this,t),n=a.ticks,i=G(n,function(s){return{coord:this.dataToCoord(this.scale.type==="ordinal"?this.scale.getRawOrdinalNumber(s):s),tickValue:s}},this),o=t.get("alignWithLabel");return FB(this,i,o,e.clamp),i},r.prototype.getMinorTicksCoords=function(){if(this.scale.type==="ordinal")return[];var e=this.model.getModel("minorTick"),t=e.get("splitNumber");t>0&&t<100||(t=5);var a=this.scale.getMinorTicks(t),n=G(a,function(i){return G(i,function(o){return{coord:this.dataToCoord(o),tickValue:o}},this)},this);return n},r.prototype.getViewLabels=function(){return EB(this).labels},r.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},r.prototype.getTickModel=function(){return this.model.getModel("axisTick")},r.prototype.getBandWidth=function(){var e=this._extent,t=this.scale.getExtent(),a=t[1]-t[0]+(this.onBand?1:0);a===0&&(a=1);var n=Math.abs(e[1]-e[0]);return Math.abs(n)/a},r.prototype.calculateCategoryInterval=function(){return zB(this)},r}();function s1(r,e){var t=r[1]-r[0],a=e,n=t/a/2;r[0]+=n,r[1]-=n}function FB(r,e,t,a){var n=e.length;if(!r.onBand||t||!n)return;var i=r.getExtent(),o,s;if(n===1)e[0].coord=i[0],o=e[1]={coord:i[1],tickValue:e[0].tickValue};else{var l=e[n-1].tickValue-e[0].tickValue,u=(e[n-1].coord-e[0].coord)/l;D(e,function(c){c.coord-=u/2});var f=r.scale.getExtent();s=1+f[1]-e[n-1].tickValue,o={coord:e[n-1].coord+u*s,tickValue:f[1]+1},e.push(o)}var h=i[0]>i[1];v(e[0].coord,i[0])&&(a?e[0].coord=i[0]:e.shift()),a&&v(i[0],e[0].coord)&&e.unshift({coord:i[0]}),v(i[1],o.coord)&&(a?o.coord=i[1]:e.pop()),a&&v(o.coord,i[1])&&e.push({coord:i[1]});function v(c,p){return c=Ut(c),p=Ut(p),h?c>p:cn&&(n+=ns);var c=Math.atan2(s,o);if(c<0&&(c+=ns),c>=a&&c<=n||c+ns>=a&&c+ns<=n)return l[0]=f,l[1]=h,u-t;var p=t*Math.cos(a)+r,d=t*Math.sin(a)+e,g=t*Math.cos(n)+r,y=t*Math.sin(n)+e,m=(p-o)*(p-o)+(d-s)*(d-s),_=(g-o)*(g-o)+(y-s)*(y-s);return m<_?(l[0]=p,l[1]=d,Math.sqrt(m)):(l[0]=g,l[1]=y,Math.sqrt(_))}function Ff(r,e,t,a,n,i,o,s){var l=n-r,u=i-e,f=t-r,h=a-e,v=Math.sqrt(f*f+h*h);f/=v,h/=v;var c=l*f+u*h,p=c/v;s&&(p=Math.min(Math.max(p,0),1)),p*=v;var d=o[0]=r+p*f,g=o[1]=e+p*h;return Math.sqrt((d-n)*(d-n)+(g-i)*(g-i))}function dD(r,e,t,a,n,i,o){t<0&&(r=r+t,t=-t),a<0&&(e=e+a,a=-a);var s=r+t,l=e+a,u=o[0]=Math.min(Math.max(n,r),s),f=o[1]=Math.min(Math.max(i,e),l);return Math.sqrt((u-n)*(u-n)+(f-i)*(f-i))}var xr=[];function qB(r,e,t){var a=dD(e.x,e.y,e.width,e.height,r.x,r.y,xr);return t.set(xr[0],xr[1]),a}function KB(r,e,t){for(var a=0,n=0,i=0,o=0,s,l,u=1/0,f=e.data,h=r.x,v=r.y,c=0;c0){e=e/180*Math.PI,wr.fromArray(r[0]),Vt.fromArray(r[1]),Zt.fromArray(r[2]),ft.sub(Yr,wr,Vt),ft.sub(Hr,Zt,Vt);var t=Yr.len(),a=Hr.len();if(!(t<.001||a<.001)){Yr.scale(1/t),Hr.scale(1/a);var n=Yr.dot(Hr),i=Math.cos(e);if(i1&&ft.copy(Le,Zt),Le.toArray(r[1])}}}}function jB(r,e,t){if(t<=180&&t>0){t=t/180*Math.PI,wr.fromArray(r[0]),Vt.fromArray(r[1]),Zt.fromArray(r[2]),ft.sub(Yr,Vt,wr),ft.sub(Hr,Zt,Vt);var a=Yr.len(),n=Hr.len();if(!(a<.001||n<.001)){Yr.scale(1/a),Hr.scale(1/n);var i=Yr.dot(e),o=Math.cos(t);if(i=l)ft.copy(Le,Zt);else{Le.scaleAndAdd(Hr,s/Math.tan(Math.PI/2-f));var h=Zt.x!==Vt.x?(Le.x-Vt.x)/(Zt.x-Vt.x):(Le.y-Vt.y)/(Zt.y-Vt.y);if(isNaN(h))return;h<0?ft.copy(Le,Vt):h>1&&ft.copy(Le,Zt)}Le.toArray(r[1])}}}}function oc(r,e,t,a){var n=t==="normal",i=n?r:r.ensureState(t);i.ignore=e;var o=a.get("smooth");o&&o===!0&&(o=.3),i.shape=i.shape||{},o>0&&(i.shape.smooth=o);var s=a.getModel("lineStyle").getLineStyle();n?r.useStyle(s):i.style=s}function JB(r,e){var t=e.smooth,a=e.points;if(a)if(r.moveTo(a[0][0],a[0][1]),t>0&&a.length>=3){var n=la(a[0],a[1]),i=la(a[1],a[2]);if(!n||!i){r.lineTo(a[1][0],a[1][1]),r.lineTo(a[2][0],a[2][1]);return}var o=Math.min(n,i)*t,s=Is([],a[1],a[0],o/n),l=Is([],a[1],a[2],o/i),u=Is([],s,l,.5);r.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),r.bezierCurveTo(l[0],l[1],l[0],l[1],a[2][0],a[2][1])}else for(var f=1;f0){_(A*T,0,o);var C=A+x;C<0&&S(-C*T,1)}else S(-x*T,1)}}function _(x,w,T){x!==0&&(u=!0);for(var A=w;A0)for(var C=0;C0;C--){var P=T[C-1]*L;_(-P,C,o)}}}function b(x){var w=x<0?-1:1;x=Math.abs(x);for(var T=Math.ceil(x/(o-1)),A=0;A0?_(T,0,A+1):_(-T,o-A-1,o),x-=T,x<=0)return}return u}function QB(r,e,t,a){return mD(r,"x","width",e,t)}function _D(r,e,t,a){return mD(r,"y","height",e,t)}function SD(r){var e=[];r.sort(function(d,g){return g.priority-d.priority});var t=new ht(0,0,0,0);function a(d){if(!d.ignore){var g=d.ensureState("emphasis");g.ignore==null&&(g.ignore=!1)}d.ignore=!0}for(var n=0;n=0&&a.attr(i.oldLayoutSelect),vt(v,"emphasis")>=0&&a.attr(i.oldLayoutEmphasis)),Tt(a,u,t,l)}else if(a.attr(u),!Mo(a).valueAnimation){var h=st(a.style.opacity,1);a.style.opacity=0,Gt(a,{style:{opacity:h}},t,l)}if(i.oldLayout=u,a.states.select){var c=i.oldLayoutSelect={};xu(c,u,bu),xu(c,a.states.select,bu)}if(a.states.emphasis){var p=i.oldLayoutEmphasis={};xu(p,u,bu),xu(p,a.states.emphasis,bu)}hA(a,l,f,t,t)}if(n&&!n.ignore&&!n.invisible){var i=rV(n),o=i.oldLayout,d={points:n.shape.points};o?(n.attr({shape:o}),Tt(n,{shape:d},t)):(n.setShape(d),n.style.strokePercent=0,Gt(n,{style:{strokePercent:1}},t)),i.oldLayout=d}},r}(),lc=bt();function nV(r){r.registerUpdateLifecycle("series:beforeupdate",function(e,t,a){var n=lc(t).labelManager;n||(n=lc(t).labelManager=new aV),n.clearLabels()}),r.registerUpdateLifecycle("series:layoutlabels",function(e,t,a){var n=lc(t).labelManager;a.updatedSeries.forEach(function(i){n.addLabelsOfSeries(t.getViewOfSeriesModel(i))}),n.updateLayoutConfig(t),n.layout(t),n.processLabelsOverall()})}var uc=Math.sin,fc=Math.cos,xD=Math.PI,Pn=Math.PI*2,iV=180/xD,bD=function(){function r(){}return r.prototype.reset=function(e){this._start=!0,this._d=[],this._str="",this._p=Math.pow(10,e||4)},r.prototype.moveTo=function(e,t){this._add("M",e,t)},r.prototype.lineTo=function(e,t){this._add("L",e,t)},r.prototype.bezierCurveTo=function(e,t,a,n,i,o){this._add("C",e,t,a,n,i,o)},r.prototype.quadraticCurveTo=function(e,t,a,n){this._add("Q",e,t,a,n)},r.prototype.arc=function(e,t,a,n,i,o){this.ellipse(e,t,a,a,0,n,i,o)},r.prototype.ellipse=function(e,t,a,n,i,o,s,l){var u=s-o,f=!l,h=Math.abs(u),v=Ga(h-Pn)||(f?u>=Pn:-u>=Pn),c=u>0?u%Pn:u%Pn+Pn,p=!1;v?p=!0:Ga(h)?p=!1:p=c>=xD==!!f;var d=e+a*fc(o),g=t+n*uc(o);this._start&&this._add("M",d,g);var y=Math.round(i*iV);if(v){var m=1/this._p,_=(f?1:-1)*(Pn-m);this._add("A",a,n,y,1,+f,e+a*fc(o+_),t+n*uc(o+_)),m>.01&&this._add("A",a,n,y,0,+f,d,g)}else{var S=e+a*fc(s),b=t+n*uc(s);this._add("A",a,n,y,+p,+f,S,b)}},r.prototype.rect=function(e,t,a,n){this._add("M",e,t),this._add("l",a,0),this._add("l",0,n),this._add("l",-a,0),this._add("Z")},r.prototype.closePath=function(){this._d.length>0&&this._add("Z")},r.prototype._add=function(e,t,a,n,i,o,s,l,u){for(var f=[],h=this._p,v=1;v"}function pV(r){return""}function Iy(r,e){e=e||{};var t=e.newline?` +`:"";function a(n){var i=n.children,o=n.tag,s=n.attrs,l=n.text;return cV(o,s)+(o!=="style"?Se(l):l||"")+(i?""+t+G(i,function(u){return a(u)}).join(t)+t:"")+pV(o)}return a(r)}function dV(r,e,t){t=t||{};var a=t.newline?` +`:"",n=" {"+a,i=a+"}",o=G(_t(r),function(l){return l+n+G(_t(r[l]),function(u){return u+":"+r[l][u]+";"}).join(a)+i}).join(a),s=G(_t(e),function(l){return"@keyframes "+l+n+G(_t(e[l]),function(u){return u+n+G(_t(e[l][u]),function(f){var h=e[l][u][f];return f==="d"&&(h='path("'+h+'")'),f+":"+h+";"}).join(a)+i}).join(a)+i}).join(a);return!o&&!s?"":[""].join(a)}function wd(r){return{zrId:r,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssStyleCache:{},cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function h1(r,e,t,a){return ne("svg","root",{width:r,height:e,xmlns:wD,"xmlns:xlink":TD,version:"1.1",baseProfile:"full",viewBox:a?"0 0 "+r+" "+e:!1},t)}var gV=0;function CD(){return gV++}var v1={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},kn="transform-origin";function yV(r,e,t){var a=V({},r.shape);V(a,e),r.buildPath(t,a);var n=new bD;return n.reset(iT(r)),t.rebuildPath(n,1),n.generateStr(),n.getStr()}function mV(r,e){var t=e.originX,a=e.originY;(t||a)&&(r[kn]=t+"px "+a+"px")}var _V={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function DD(r,e){var t=e.zrId+"-ani-"+e.cssAnimIdx++;return e.cssAnims[t]=r,t}function SV(r,e,t){var a=r.shape.paths,n={},i,o;if(D(a,function(l){var u=wd(t.zrId);u.animation=!0,Yh(l,{},u,!0);var f=u.cssAnims,h=u.cssNodes,v=_t(f),c=v.length;if(c){o=v[c-1];var p=f[o];for(var d in p){var g=p[d];n[d]=n[d]||{d:""},n[d].d+=g.d||""}for(var y in h){var m=h[y].animation;m.indexOf(o)>=0&&(i=m)}}}),!!i){e.d=!1;var s=DD(n,t);return i.replace(o,s)}}function c1(r){return Y(r)?v1[r]?"cubic-bezier("+v1[r]+")":_g(r)?r:"":""}function Yh(r,e,t,a){var n=r.animators,i=n.length,o=[];if(r instanceof Ch){var s=SV(r,e,t);if(s)o.push(s);else if(!i)return}else if(!i)return;for(var l={},u=0;u0}).length){var Yt=DD(w,t);return Yt+" "+m[0]+" both"}}for(var g in l){var s=d(l[g]);s&&o.push(s)}if(o.length){var y=t.zrId+"-cls-"+CD();t.cssNodes["."+y]={animation:o.join(",")},e.class=y}}function xV(r,e,t){if(!r.ignore)if(r.isSilent()){var a={"pointer-events":"none"};p1(a,e,t)}else{var n=r.states.emphasis&&r.states.emphasis.style?r.states.emphasis.style:{},i=n.fill;if(!i){var o=r.style&&r.style.fill,s=r.states.select&&r.states.select.style&&r.states.select.style.fill,l=r.currentStates.indexOf("select")>=0&&s||o;l&&(i=mf(l))}var u=n.lineWidth;if(u){var f=!n.strokeNoScale&&r.transform?r.transform[0]:1;u=u/f}var a={cursor:"pointer"};i&&(a.fill=i),n.stroke&&(a.stroke=n.stroke),u&&(a["stroke-width"]=u),p1(a,e,t)}}function p1(r,e,t,a){var n=JSON.stringify(r),i=t.cssStyleCache[n];i||(i=t.zrId+"-cls-"+CD(),t.cssStyleCache[n]=i,t.cssNodes["."+i+":hover"]=r),e.class=e.class?e.class+" "+i:i}var ll=Math.round;function MD(r){return r&&Y(r.src)}function ID(r){return r&&K(r.toDataURL)}function Ly(r,e,t,a){fV(function(n,i){var o=n==="fill"||n==="stroke";o&&nT(i)?PD(e,r,n,a):o&&xg(i)?RD(t,r,n,a):r[n]=i,o&&a.ssr&&i==="none"&&(r["pointer-events"]="visible")},e,t,!1),MV(t,r,a)}function Py(r,e){var t=cT(e);t&&(t.each(function(a,n){a!=null&&(r[(f1+n).toLowerCase()]=a+"")}),e.isSilent()&&(r[f1+"silent"]="true"))}function d1(r){return Ga(r[0]-1)&&Ga(r[1])&&Ga(r[2])&&Ga(r[3]-1)}function bV(r){return Ga(r[4])&&Ga(r[5])}function Ry(r,e,t){if(e&&!(bV(e)&&d1(e))){var a=1e4;r.transform=d1(e)?"translate("+ll(e[4]*a)/a+" "+ll(e[5]*a)/a+")":A2(e)}}function g1(r,e,t){for(var a=r.points,n=[],i=0;i"u"){var g="Image width/height must been given explictly in svg-ssr renderer.";be(v,g),be(c,g)}else if(v==null||c==null){var y=function(C,M){if(C){var I=C.elm,L=v||M.width,P=c||M.height;C.tag==="pattern"&&(u?(P=1,L/=i.width):f&&(L=1,P/=i.height)),C.attrs.width=L,C.attrs.height=P,I&&(I.setAttribute("width",L),I.setAttribute("height",P))}},m=Lg(p,null,r,function(C){l||y(x,C),y(h,C)});m&&m.width&&m.height&&(v=v||m.width,c=c||m.height)}h=ne("image","img",{href:p,width:v,height:c}),o.width=v,o.height=c}else n.svgElement&&(h=rt(n.svgElement),o.width=n.svgWidth,o.height=n.svgHeight);if(h){var _,S;l?_=S=1:u?(S=1,_=o.width/i.width):f?(_=1,S=o.height/i.height):o.patternUnits="userSpaceOnUse",_!=null&&!isNaN(_)&&(o.width=_),S!=null&&!isNaN(S)&&(o.height=S);var b=oT(n);b&&(o.patternTransform=b);var x=ne("pattern","",o,[h]),w=Iy(x),T=a.patternCache,A=T[w];A||(A=a.zrId+"-p"+a.patternIdx++,T[w]=A,o.id=A,x=a.defs[A]=ne("pattern",A,o,[h])),e[t]=gh(A)}}function IV(r,e,t){var a=t.clipPathCache,n=t.defs,i=a[r.id];if(!i){i=t.zrId+"-c"+t.clipPathIdx++;var o={id:i};a[r.id]=i,n[i]=ne("clipPath",i,o,[LD(r,t)])}e["clip-path"]=gh(i)}function _1(r){return document.createTextNode(r)}function Fn(r,e,t){r.insertBefore(e,t)}function S1(r,e){r.removeChild(e)}function x1(r,e){r.appendChild(e)}function ED(r){return r.parentNode}function kD(r){return r.nextSibling}function hc(r,e){r.textContent=e}var b1=58,LV=120,PV=ne("","");function Td(r){return r===void 0}function Gr(r){return r!==void 0}function RV(r,e,t){for(var a={},n=e;n<=t;++n){var i=r[n].key;i!==void 0&&(a[i]=n)}return a}function bs(r,e){var t=r.key===e.key,a=r.tag===e.tag;return a&&t}function ul(r){var e,t=r.children,a=r.tag;if(Gr(a)){var n=r.elm=AD(a);if(Ey(PV,r),z(t))for(e=0;ei?(p=t[l+1]==null?null:t[l+1].elm,OD(r,p,t,n,l)):Wf(r,e,a,i))}function Xi(r,e){var t=e.elm=r.elm,a=r.children,n=e.children;r!==e&&(Ey(r,e),Td(e.text)?Gr(a)&&Gr(n)?a!==n&&EV(t,a,n):Gr(n)?(Gr(r.text)&&hc(t,""),OD(t,null,n,0,n.length-1)):Gr(a)?Wf(t,a,0,a.length-1):Gr(r.text)&&hc(t,""):r.text!==e.text&&(Gr(a)&&Wf(t,a,0,a.length-1),hc(t,e.text)))}function kV(r,e){if(bs(r,e))Xi(r,e);else{var t=r.elm,a=ED(t);ul(e),a!==null&&(Fn(a,e.elm,kD(t)),Wf(a,[r],0,0))}return e}var OV=0,NV=function(){function r(e,t,a){if(this.type="svg",this.refreshHover=w1(),this.configLayer=w1(),this.storage=t,this._opts=a=V({},a),this.root=e,this._id="zr"+OV++,this._oldVNode=h1(a.width,a.height),e&&!a.ssr){var n=this._viewport=document.createElement("div");n.style.cssText="position:relative;overflow:hidden";var i=this._svgDom=this._oldVNode.elm=AD("svg");Ey(null,this._oldVNode),n.appendChild(i),e.appendChild(n)}this.resize(a.width,a.height)}return r.prototype.getType=function(){return this.type},r.prototype.getViewportRoot=function(){return this._viewport},r.prototype.getViewportRootOffset=function(){var e=this.getViewportRoot();if(e)return{offsetLeft:e.offsetLeft||0,offsetTop:e.offsetTop||0}},r.prototype.getSvgDom=function(){return this._svgDom},r.prototype.refresh=function(){if(this.root){var e=this.renderToVNode({willUpdate:!0});e.attrs.style="position:absolute;left:0;top:0;user-select:none",kV(this._oldVNode,e),this._oldVNode=e}},r.prototype.renderOneToVNode=function(e){return m1(e,wd(this._id))},r.prototype.renderToVNode=function(e){e=e||{};var t=this.storage.getDisplayList(!0),a=this._width,n=this._height,i=wd(this._id);i.animation=e.animation,i.willUpdate=e.willUpdate,i.compress=e.compress,i.emphasis=e.emphasis,i.ssr=this._opts.ssr;var o=[],s=this._bgVNode=BV(a,n,this._backgroundColor,i);s&&o.push(s);var l=e.compress?null:this._mainVNode=ne("g","main",{},[]);this._paintList(t,i,l?l.children:o),l&&o.push(l);var u=G(_t(i.defs),function(v){return i.defs[v]});if(u.length&&o.push(ne("defs","defs",{},u)),e.animation){var f=dV(i.cssNodes,i.cssAnims,{newline:!0});if(f){var h=ne("style","stl",{},[],f);o.push(h)}}return h1(a,n,o,e.useViewBox)},r.prototype.renderToString=function(e){return e=e||{},Iy(this.renderToVNode({animation:st(e.cssAnimation,!0),emphasis:st(e.cssEmphasis,!0),willUpdate:!1,compress:!0,useViewBox:st(e.useViewBox,!0)}),{newline:!0})},r.prototype.setBackgroundColor=function(e){this._backgroundColor=e},r.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},r.prototype._paintList=function(e,t,a){for(var n=e.length,i=[],o=0,s,l,u=0,f=0;f=0&&!(v&&l&&v[d]===l[d]);d--);for(var g=p-1;g>d;g--)o--,s=i[o-1];for(var y=d+1;y=s)}}for(var h=this.__startIndex;h15)break}}P.prevElClipPaths&&y.restore()};if(m)if(m.length===0)T=g.__endIndex;else for(var C=c.dpr,M=0;M0&&e>n[0]){for(l=0;le);l++);s=a[n[l]]}if(n.splice(l+1,0,e),a[e]=t,!t.virtual)if(s){var u=s.dom;u.nextSibling?o.insertBefore(t.dom,u.nextSibling):o.appendChild(t.dom)}else o.firstChild?o.insertBefore(t.dom,o.firstChild):o.appendChild(t.dom);t.painter||(t.painter=this)}},r.prototype.eachLayer=function(e,t){for(var a=this._zlevelList,n=0;n0?wu:0),this._needsManuallyCompositing),f.__builtin__||fh("ZLevel "+u+" has been used by unkown layer "+f.id),f!==i&&(f.__used=!0,f.__startIndex!==l&&(f.__dirty=!0),f.__startIndex=l,f.incremental?f.__drawIndex=-1:f.__drawIndex=l,t(l),i=f),n.__dirty&Zr&&!n.__inHover&&(f.__dirty=!0,f.incremental&&f.__drawIndex<0&&(f.__drawIndex=l))}t(l),this.eachBuiltinLayer(function(h,v){!h.__used&&h.getElementCount()>0&&(h.__dirty=!0,h.__startIndex=h.__endIndex=h.__drawIndex=0),h.__dirty&&h.__drawIndex<0&&(h.__drawIndex=h.__startIndex)})},r.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},r.prototype._clearLayer=function(e){e.clear()},r.prototype.setBackgroundColor=function(e){this._backgroundColor=e,D(this._layers,function(t){t.setUnpainted()})},r.prototype.configLayer=function(e,t){if(t){var a=this._layerConfig;a[e]?ut(a[e],t,!0):a[e]=t;for(var n=0;n-1&&(u.style.stroke=u.style.fill,u.style.fill="#fff",u.style.lineWidth=2),a},e.type="series.line",e.dependencies=["grid","polar"],e.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1},e}(Et);function po(r,e){var t=r.mapDimensionsAll("defaultedLabel"),a=t.length;if(a===1){var n=vo(r,e,t[0]);return n!=null?n+"":null}else if(a){for(var i=[],o=0;o=0&&a.push(e[i])}return a.join(" ")}var kl=function(r){N(e,r);function e(t,a,n,i){var o=r.call(this)||this;return o.updateData(t,a,n,i),o}return e.prototype._createSymbol=function(t,a,n,i,o){this.removeAll();var s=qt(t,-1,-1,2,2,null,o);s.attr({z2:100,culling:!0,scaleX:i[0]/2,scaleY:i[1]/2}),s.drift=YV,this._symbolType=t,this.add(s)},e.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},e.prototype.getSymbolType=function(){return this._symbolType},e.prototype.getSymbolPath=function(){return this.childAt(0)},e.prototype.highlight=function(){ga(this.childAt(0))},e.prototype.downplay=function(){ya(this.childAt(0))},e.prototype.setZ=function(t,a){var n=this.childAt(0);n.zlevel=t,n.z=a},e.prototype.setDraggable=function(t,a){var n=this.childAt(0);n.draggable=t,n.cursor=!a&&t?"move":n.cursor},e.prototype.updateData=function(t,a,n,i){this.silent=!1;var o=t.getItemVisual(a,"symbol")||"circle",s=t.hostModel,l=e.getSymbolSize(t,a),u=o!==this._symbolType,f=i&&i.disableAnimation;if(u){var h=t.getItemVisual(a,"symbolKeepAspect");this._createSymbol(o,t,a,l,h)}else{var v=this.childAt(0);v.silent=!1;var c={scaleX:l[0]/2,scaleY:l[1]/2};f?v.attr(c):Tt(v,c,s,a),Pr(v)}if(this._updateCommon(t,a,l,n,i),u){var v=this.childAt(0);if(!f){var c={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:v.style.opacity}};v.scaleX=v.scaleY=0,v.style.opacity=0,Gt(v,c,s,a)}}f&&this.childAt(0).stopAnimation("leave")},e.prototype._updateCommon=function(t,a,n,i,o){var s=this.childAt(0),l=t.hostModel,u,f,h,v,c,p,d,g,y;if(i&&(u=i.emphasisItemStyle,f=i.blurItemStyle,h=i.selectItemStyle,v=i.focus,c=i.blurScope,d=i.labelStatesModels,g=i.hoverScale,y=i.cursorStyle,p=i.emphasisDisabled),!i||t.hasItemOption){var m=i&&i.itemModel?i.itemModel:t.getItemModel(a),_=m.getModel("emphasis");u=_.getModel("itemStyle").getItemStyle(),h=m.getModel(["select","itemStyle"]).getItemStyle(),f=m.getModel(["blur","itemStyle"]).getItemStyle(),v=_.get("focus"),c=_.get("blurScope"),p=_.get("disabled"),d=oe(m),g=_.getShallow("scale"),y=m.getShallow("cursor")}var S=t.getItemVisual(a,"symbolRotate");s.attr("rotation",(S||0)*Math.PI/180||0);var b=_i(t.getItemVisual(a,"symbolOffset"),n);b&&(s.x=b[0],s.y=b[1]),y&&s.attr("cursor",y);var x=t.getItemVisual(a,"style"),w=x.fill;if(s instanceof le){var T=s.style;s.useStyle(V({image:T.image,x:T.x,y:T.y,width:T.width,height:T.height},x))}else s.__isEmptyBrush?s.useStyle(V({},x)):s.useStyle(x),s.style.decal=null,s.setColor(w,o&&o.symbolInnerColor),s.style.strokeNoScale=!0;var A=t.getItemVisual(a,"liftZ"),C=this._z2;A!=null?C==null&&(this._z2=s.z2,s.z2+=A):C!=null&&(s.z2=C,this._z2=null);var M=o&&o.useNameLabel;pe(s,d,{labelFetcher:l,labelDataIndex:a,defaultText:I,inheritColor:w,defaultOpacity:x.opacity});function I(R){return M?t.getName(R):po(t,R)}this._sizeX=n[0]/2,this._sizeY=n[1]/2;var L=s.ensureState("emphasis");L.style=u,s.ensureState("select").style=h,s.ensureState("blur").style=f;var P=g==null||g===!0?Math.max(1.1,3/this._sizeY):isFinite(g)&&g>0?+g:1;L.scaleX=this._sizeX*P,L.scaleY=this._sizeY*P,this.setSymbolScale(1),Wt(this,v,c,p)},e.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},e.prototype.fadeOut=function(t,a,n){var i=this.childAt(0),o=nt(this).dataIndex,s=n&&n.animation;if(this.silent=i.silent=!0,n&&n.fadeLabel){var l=i.getTextContent();l&&Qa(l,{style:{opacity:0}},a,{dataIndex:o,removeOpt:s,cb:function(){i.removeTextContent()}})}else i.removeTextContent();Qa(i,{style:{opacity:0},scaleX:0,scaleY:0},a,{dataIndex:o,cb:t,removeOpt:s})},e.getSymbolSize=function(t,a){return Oo(t.getItemVisual(a,"symbolSize"))},e}(at);function YV(r,e){this.parent.drift(r,e)}function cc(r,e,t,a){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(a.isIgnore&&a.isIgnore(t))&&!(a.clipShape&&!a.clipShape.contain(e[0],e[1]))&&r.getItemVisual(t,"symbol")!=="none"}function C1(r){return r!=null&&!tt(r)&&(r={isIgnore:r}),r||{}}function D1(r){var e=r.hostModel,t=e.getModel("emphasis");return{emphasisItemStyle:t.getModel("itemStyle").getItemStyle(),blurItemStyle:e.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:e.getModel(["select","itemStyle"]).getItemStyle(),focus:t.get("focus"),blurScope:t.get("blurScope"),emphasisDisabled:t.get("disabled"),hoverScale:t.get("scale"),labelStatesModels:oe(e),cursorStyle:e.get("cursor")}}var Ol=function(){function r(e){this.group=new at,this._SymbolCtor=e||kl}return r.prototype.updateData=function(e,t){this._progressiveEls=null,t=C1(t);var a=this.group,n=e.hostModel,i=this._data,o=this._SymbolCtor,s=t.disableAnimation,l=D1(e),u={disableAnimation:s},f=t.getSymbolPoint||function(h){return e.getItemLayout(h)};i||a.removeAll(),e.diff(i).add(function(h){var v=f(h);if(cc(e,v,h,t)){var c=new o(e,h,l,u);c.setPosition(v),e.setItemGraphicEl(h,c),a.add(c)}}).update(function(h,v){var c=i.getItemGraphicEl(v),p=f(h);if(!cc(e,p,h,t)){a.remove(c);return}var d=e.getItemVisual(h,"symbol")||"circle",g=c&&c.getSymbolType&&c.getSymbolType();if(!c||g&&g!==d)a.remove(c),c=new o(e,h,l,u),c.setPosition(p);else{c.updateData(e,h,l,u);var y={x:p[0],y:p[1]};s?c.attr(y):Tt(c,y,n)}a.add(c),e.setItemGraphicEl(h,c)}).remove(function(h){var v=i.getItemGraphicEl(h);v&&v.fadeOut(function(){a.remove(v)},n)}).execute(),this._getSymbolPoint=f,this._data=e},r.prototype.updateLayout=function(){var e=this,t=this._data;t&&t.eachItemGraphicEl(function(a,n){var i=e._getSymbolPoint(n);a.setPosition(i),a.markRedraw()})},r.prototype.incrementalPrepareUpdate=function(e){this._seriesScope=D1(e),this._data=null,this.group.removeAll()},r.prototype.incrementalUpdate=function(e,t,a){this._progressiveEls=[],a=C1(a);function n(l){l.isGroup||(l.incremental=!0,l.ensureState("emphasis").hoverLayer=!0)}for(var i=e.start;i0?t=a[0]:a[1]<0&&(t=a[1]),t}function VD(r,e,t,a){var n=NaN;r.stacked&&(n=t.get(t.getCalculationInfo("stackedOverDimension"),a)),isNaN(n)&&(n=r.valueStart);var i=r.baseDataOffset,o=[];return o[i]=t.get(r.baseDim,a),o[1-i]=n,e.dataToPoint(o)}function $V(r,e){var t=[];return e.diff(r).add(function(a){t.push({cmd:"+",idx:a})}).update(function(a,n){t.push({cmd:"=",idx:n,idx1:a})}).remove(function(a){t.push({cmd:"-",idx:a})}).execute(),t}function ZV(r,e,t,a,n,i,o,s){for(var l=$V(r,e),u=[],f=[],h=[],v=[],c=[],p=[],d=[],g=BD(n,e,o),y=r.getLayout("points")||[],m=e.getLayout("points")||[],_=0;_=n||d<0)break;if(ai(y,m)){if(l){d+=i;continue}break}if(d===t)r[i>0?"moveTo":"lineTo"](y,m),h=y,v=m;else{var _=y-u,S=m-f;if(_*_+S*S<.5){d+=i;continue}if(o>0){for(var b=d+i,x=e[b*2],w=e[b*2+1];x===y&&w===m&&g=a||ai(x,w))c=y,p=m;else{C=x-u,M=w-f;var P=y-u,R=x-y,E=m-f,O=w-m,k=void 0,B=void 0;if(s==="x"){k=Math.abs(P),B=Math.abs(R);var F=C>0?1:-1;c=y-F*k*o,p=m,I=y+F*B*o,L=m}else if(s==="y"){k=Math.abs(E),B=Math.abs(O);var H=M>0?1:-1;c=y,p=m-H*k*o,I=y,L=m+H*B*o}else k=Math.sqrt(P*P+E*E),B=Math.sqrt(R*R+O*O),A=B/(B+k),c=y-C*o*(1-A),p=m-M*o*(1-A),I=y+C*o*A,L=m+M*o*A,I=La(I,Pa(x,y)),L=La(L,Pa(w,m)),I=Pa(I,La(x,y)),L=Pa(L,La(w,m)),C=I-y,M=L-m,c=y-C*k/B,p=m-M*k/B,c=La(c,Pa(u,y)),p=La(p,Pa(f,m)),c=Pa(c,La(u,y)),p=Pa(p,La(f,m)),C=y-c,M=m-p,I=y+C*B/k,L=m+M*B/k}r.bezierCurveTo(h,v,c,p,y,m),h=I,v=L}else r.lineTo(y,m)}u=y,f=m,d+=i}return g}var zD=function(){function r(){this.smooth=0,this.smoothConstraint=!0}return r}(),qV=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a.type="ec-polyline",a}return e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new zD},e.prototype.buildPath=function(t,a){var n=a.points,i=0,o=n.length/2;if(a.connectNulls){for(;o>0&&ai(n[o*2-2],n[o*2-1]);o--);for(;i=0){var S=u?(p-l)*_+l:(c-s)*_+s;return u?[t,S]:[S,t]}s=c,l=p;break;case o.C:c=i[h++],p=i[h++],d=i[h++],g=i[h++],y=i[h++],m=i[h++];var b=u?gf(s,c,d,y,t,f):gf(l,p,g,m,t,f);if(b>0)for(var x=0;x=0){var S=u?re(l,p,g,m,w):re(s,c,d,y,w);return u?[t,S]:[S,t]}}s=y,l=m;break}}},e}(mt),KV=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e}(zD),GD=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a.type="ec-polygon",a}return e.prototype.getDefaultShape=function(){return new KV},e.prototype.buildPath=function(t,a){var n=a.points,i=a.stackedOnPoints,o=0,s=n.length/2,l=a.smoothMonotone;if(a.connectNulls){for(;s>0&&ai(n[s*2-2],n[s*2-1]);s--);for(;oe){i?t.push(o(i,l,e)):n&&t.push(o(n,l,0),o(n,l,e));break}else n&&(t.push(o(n,l,0)),n=null),t.push(l),i=l}return t}function QV(r,e,t){var a=r.getVisual("visualMeta");if(!(!a||!a.length||!r.count())&&e.type==="cartesian2d"){for(var n,i,o=a.length-1;o>=0;o--){var s=r.getDimensionInfo(a[o].dimension);if(n=s&&s.coordDim,n==="x"||n==="y"){i=a[o];break}}if(i){var l=e.getAxis(n),u=G(i.stops,function(_){return{coord:l.toGlobalCoord(l.dataToCoord(_.value)),color:_.color}}),f=u.length,h=i.outerColors.slice();f&&u[0].coord>u[f-1].coord&&(u.reverse(),h.reverse());var v=JV(u,n==="x"?t.getWidth():t.getHeight()),c=v.length;if(!c&&f)return u[0].coord<0?h[1]?h[1]:u[f-1].color:h[0]?h[0]:u[0].color;var p=10,d=v[0].coord-p,g=v[c-1].coord+p,y=g-d;if(y<.001)return"transparent";D(v,function(_){_.offset=(_.coord-d)/y}),v.push({offset:c?v[c-1].offset:.5,color:h[1]||"transparent"}),v.unshift({offset:c?v[0].offset:.5,color:h[0]||"transparent"});var m=new Ao(0,0,0,0,v,!0);return m[n]=d,m[n+"2"]=g,m}}}function tz(r,e,t){var a=r.get("showAllSymbol"),n=a==="auto";if(!(a&&!n)){var i=t.getAxesByScale("ordinal")[0];if(i&&!(n&&ez(i,e))){var o=e.mapDimension(i.dim),s={};return D(i.getViewLabels(),function(l){var u=i.scale.getRawOrdinalNumber(l.tickValue);s[u]=1}),function(l){return!s.hasOwnProperty(e.get(o,l))}}}}function ez(r,e){var t=r.getExtent(),a=Math.abs(t[1]-t[0])/r.scale.count();isNaN(a)&&(a=0);for(var n=e.count(),i=Math.max(1,Math.round(n/5)),o=0;oa)return!1;return!0}function rz(r,e){return isNaN(r)||isNaN(e)}function az(r){for(var e=r.length/2;e>0&&rz(r[e*2-2],r[e*2-1]);e--);return e-1}function R1(r,e){return[r[e*2],r[e*2+1]]}function nz(r,e,t){for(var a=r.length/2,n=t==="x"?0:1,i,o,s=0,l=-1,u=0;u=e||i>=e&&o<=e){l=u;break}s=u,i=o}return{range:[s,l],t:(e-i)/(o-i)}}function WD(r){if(r.get(["endLabel","show"]))return!0;for(var e=0;e0&&t.get(["emphasis","lineStyle","width"])==="bolder"){var B=p.getState("emphasis").style;B.lineWidth=+p.style.lineWidth+1}nt(p).seriesIndex=t.seriesIndex,Wt(p,E,O,k);var F=P1(t.get("smooth")),H=t.get("smoothMonotone");if(p.setShape({smooth:F,smoothMonotone:H,connectNulls:w}),d){var U=s.getCalculationInfo("stackedOnSeries"),j=0;d.useStyle(J(u.getAreaStyle(),{fill:I,opacity:.7,lineJoin:"bevel",decal:s.getVisual("style").decal})),U&&(j=P1(U.get("smooth"))),d.setShape({smooth:F,stackedOnSmooth:j,smoothMonotone:H,connectNulls:w}),ce(d,t,"areaStyle"),nt(d).seriesIndex=t.seriesIndex,Wt(d,E,O,k)}var Q=this._changePolyState;s.eachItemGraphicEl(function(it){it&&(it.onHoverStateChange=Q)}),this._polyline.onHoverStateChange=Q,this._data=s,this._coordSys=i,this._stackedOnPoints=b,this._points=f,this._step=C,this._valueOrigin=_,t.get("triggerLineEvent")&&(this.packEventData(t,p),d&&this.packEventData(t,d))},e.prototype.packEventData=function(t,a){nt(a).eventData={componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line"}},e.prototype.highlight=function(t,a,n,i){var o=t.getData(),s=si(o,i);if(this._changePolyState("emphasis"),!(s instanceof Array)&&s!=null&&s>=0){var l=o.getLayout("points"),u=o.getItemGraphicEl(s);if(!u){var f=l[s*2],h=l[s*2+1];if(isNaN(f)||isNaN(h)||this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(f,h))return;var v=t.get("zlevel")||0,c=t.get("z")||0;u=new kl(o,s),u.x=f,u.y=h,u.setZ(v,c);var p=u.getSymbolPath().getTextContent();p&&(p.zlevel=v,p.z=c,p.z2=this._polyline.z2+1),u.__temp=!0,o.setItemGraphicEl(s,u),u.stopSymbolAnimation(!0),this.group.add(u)}u.highlight()}else Lt.prototype.highlight.call(this,t,a,n,i)},e.prototype.downplay=function(t,a,n,i){var o=t.getData(),s=si(o,i);if(this._changePolyState("normal"),s!=null&&s>=0){var l=o.getItemGraphicEl(s);l&&(l.__temp?(o.setItemGraphicEl(s,null),this.group.remove(l)):l.downplay())}else Lt.prototype.downplay.call(this,t,a,n,i)},e.prototype._changePolyState=function(t){var a=this._polygon;wf(this._polyline,t),a&&wf(a,t)},e.prototype._newPolyline=function(t){var a=this._polyline;return a&&this._lineGroup.remove(a),a=new qV({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(a),this._polyline=a,a},e.prototype._newPolygon=function(t,a){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new GD({shape:{points:t,stackedOnPoints:a},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},e.prototype._initSymbolLabelAnimation=function(t,a,n){var i,o,s=a.getBaseAxis(),l=s.inverse;a.type==="cartesian2d"?(i=s.isHorizontal(),o=!1):a.type==="polar"&&(i=s.dim==="angle",o=!0);var u=t.hostModel,f=u.get("animationDuration");K(f)&&(f=f(null));var h=u.get("animationDelay")||0,v=K(h)?h(null):h;t.eachItemGraphicEl(function(c,p){var d=c;if(d){var g=[c.x,c.y],y=void 0,m=void 0,_=void 0;if(n)if(o){var S=n,b=a.pointToCoord(g);i?(y=S.startAngle,m=S.endAngle,_=-b[1]/180*Math.PI):(y=S.r0,m=S.r,_=b[0])}else{var x=n;i?(y=x.x,m=x.x+x.width,_=c.x):(y=x.y+x.height,m=x.y,_=c.y)}var w=m===y?0:(_-y)/(m-y);l&&(w=1-w);var T=K(h)?h(p):f*w+v,A=d.getSymbolPath(),C=A.getTextContent();d.attr({scaleX:0,scaleY:0}),d.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:T}),C&&C.animateFrom({style:{opacity:0}},{duration:300,delay:T}),A.disableLabelAnimation=!0}})},e.prototype._initOrUpdateEndLabel=function(t,a,n){var i=t.getModel("endLabel");if(WD(t)){var o=t.getData(),s=this._polyline,l=o.getLayout("points");if(!l){s.removeTextContent(),this._endLabel=null;return}var u=this._endLabel;u||(u=this._endLabel=new St({z2:200}),u.ignoreClip=!0,s.setTextContent(this._endLabel),s.disableLabelAnimation=!0);var f=az(l);f>=0&&(pe(s,oe(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:f,defaultText:function(h,v,c){return c!=null?ND(o,c):po(o,h)},enableTextSetter:!0},iz(i,a)),s.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},e.prototype._endLabelOnDuring=function(t,a,n,i,o,s,l){var u=this._endLabel,f=this._polyline;if(u){t<1&&i.originalX==null&&(i.originalX=u.x,i.originalY=u.y);var h=n.getLayout("points"),v=n.hostModel,c=v.get("connectNulls"),p=s.get("precision"),d=s.get("distance")||0,g=l.getBaseAxis(),y=g.isHorizontal(),m=g.inverse,_=a.shape,S=m?y?_.x:_.y+_.height:y?_.x+_.width:_.y,b=(y?d:0)*(m?-1:1),x=(y?0:-d)*(m?-1:1),w=y?"x":"y",T=nz(h,S,w),A=T.range,C=A[1]-A[0],M=void 0;if(C>=1){if(C>1&&!c){var I=R1(h,A[0]);u.attr({x:I[0]+b,y:I[1]+x}),o&&(M=v.getRawValue(A[0]))}else{var I=f.getPointOn(S,w);I&&u.attr({x:I[0]+b,y:I[1]+x});var L=v.getRawValue(A[0]),P=v.getRawValue(A[1]);o&&(M=CT(n,p,L,P,T.t))}i.lastFrameIndex=A[0]}else{var R=t===1||i.lastFrameIndex>0?A[0]:0,I=R1(h,R);o&&(M=v.getRawValue(R)),u.attr({x:I[0]+b,y:I[1]+x})}if(o){var E=Mo(u);typeof E.setLabelText=="function"&&E.setLabelText(M)}}},e.prototype._doUpdateAnimation=function(t,a,n,i,o,s,l){var u=this._polyline,f=this._polygon,h=t.hostModel,v=ZV(this._data,t,this._stackedOnPoints,a,this._coordSys,n,this._valueOrigin),c=v.current,p=v.stackedOnCurrent,d=v.next,g=v.stackedOnNext;if(o&&(p=Ra(v.stackedOnCurrent,v.current,n,o,l),c=Ra(v.current,null,n,o,l),g=Ra(v.stackedOnNext,v.next,n,o,l),d=Ra(v.next,null,n,o,l)),L1(c,d)>3e3||f&&L1(p,g)>3e3){u.stopAnimation(),u.setShape({points:d}),f&&(f.stopAnimation(),f.setShape({points:d,stackedOnPoints:g}));return}u.shape.__points=v.current,u.shape.points=c;var y={shape:{points:d}};v.current!==c&&(y.shape.__points=v.next),u.stopAnimation(),Tt(u,y,h),f&&(f.setShape({points:c,stackedOnPoints:p}),f.stopAnimation(),Tt(f,{shape:{stackedOnPoints:g}},h),u.shape.points!==f.shape.points&&(f.shape.points=u.shape.points));for(var m=[],_=v.status,S=0;S<_.length;S++){var b=_[S].cmd;if(b==="="){var x=t.getItemGraphicEl(_[S].idx1);x&&m.push({el:x,ptIdx:S})}}u.animators&&u.animators.length&&u.animators[0].during(function(){f&&f.dirtyShape();for(var w=u.shape.__points,T=0;Te&&(e=r[t]);return isFinite(e)?e:NaN},min:function(r){for(var e=1/0,t=0;t10&&o.type==="cartesian2d"&&i){var l=o.getBaseAxis(),u=o.getOtherAxis(l),f=l.getExtent(),h=a.getDevicePixelRatio(),v=Math.abs(f[1]-f[0])*(h||1),c=Math.round(s/v);if(isFinite(c)&&c>1){i==="lttb"?e.setData(n.lttbDownSample(n.mapDimension(u.dim),1/c)):i==="minmax"&&e.setData(n.minmaxDownSample(n.mapDimension(u.dim),1/c));var p=void 0;Y(i)?p=sz[i]:K(i)&&(p=i),p&&e.setData(n.downSample(n.mapDimension(u.dim),1/c,p,lz))}}}}}function uz(r){r.registerChartView(oz),r.registerSeriesModel(UV),r.registerLayout(Bl("line",!0)),r.registerVisual({seriesType:"line",reset:function(e){var t=e.getData(),a=e.getModel("lineStyle").getLineStyle();a&&!a.stroke&&(a.stroke=t.getVisual("style").fill),t.setVisual("legendLineStyle",a)}}),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,UD("line"))}var fl=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.getInitialData=function(t,a){return ea(null,this,{useEncodeDefaulter:!0})},e.prototype.getMarkerPosition=function(t,a,n){var i=this.coordinateSystem;if(i&&i.clampData){var o=i.clampData(t),s=i.dataToPoint(o);if(n)D(i.getAxes(),function(v,c){if(v.type==="category"&&a!=null){var p=v.getTicksCoords(),d=v.getTickModel().get("alignWithLabel"),g=o[c],y=a[c]==="x1"||a[c]==="y1";if(y&&!d&&(g+=1),p.length<2)return;if(p.length===2){s[c]=v.toGlobalCoord(v.getExtent()[y?1:0]);return}for(var m=void 0,_=void 0,S=1,b=0;bg){_=(x+m)/2;break}b===1&&(S=w-p[0].tickValue)}_==null&&(m?m&&(_=p[p.length-1].coord):_=p[0].coord),s[c]=v.toGlobalCoord(_)}});else{var l=this.getData(),u=l.getLayout("offset"),f=l.getLayout("size"),h=i.getBaseAxis().isHorizontal()?0:1;s[h]+=u+f/2}return s}return[NaN,NaN]},e.type="series.__base_bar__",e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},e}(Et);Et.registerClass(fl);var fz=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.getInitialData=function(){return ea(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},e.prototype.getProgressive=function(){return this.get("large")?this.get("progressive"):!1},e.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),a=this.get("largeThreshold");return a>t&&(t=a),t},e.prototype.brushSelector=function(t,a,n){return n.rect(a.getItemLayout(t))},e.type="series.bar",e.dependencies=["grid","polar"],e.defaultOption=sn(fl.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),e}(fl),hz=function(){function r(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0}return r}(),Uf=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a.type="sausage",a}return e.prototype.getDefaultShape=function(){return new hz},e.prototype.buildPath=function(t,a){var n=a.cx,i=a.cy,o=Math.max(a.r0||0,0),s=Math.max(a.r,0),l=(s-o)*.5,u=o+l,f=a.startAngle,h=a.endAngle,v=a.clockwise,c=Math.PI*2,p=v?h-fMath.PI/2&&fs)return!0;s=h}return!1},e.prototype._isOrderDifferentInView=function(t,a){for(var n=a.scale,i=n.getExtent(),o=Math.max(0,i[0]),s=Math.min(i[1],n.getOrdinalMeta().categories.length-1);o<=s;++o)if(t.ordinalNumbers[o]!==n.getRawOrdinalNumber(o))return!0},e.prototype._updateSortWithinSameData=function(t,a,n,i){if(this._isOrderChangedWithinSameData(t,a,n)){var o=this._dataSort(t,n,a);this._isOrderDifferentInView(o,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:o}))}},e.prototype._dispatchInitSort=function(t,a,n){var i=a.baseAxis,o=this._dataSort(t,i,function(s){return t.get(t.mapDimension(a.otherAxis.dim),s)});n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:o})},e.prototype.remove=function(t,a){this._clear(this._model),this._removeOnRenderedListener(a)},e.prototype.dispose=function(t,a){this._removeOnRenderedListener(a)},e.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},e.prototype._clear=function(t){var a=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl(function(i){tl(i,t,nt(i).dataIndex)})):a.removeAll(),this._data=null,this._isFirstFrame=!0},e.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},e.type="bar",e}(Lt),E1={cartesian2d:function(r,e){var t=e.width<0?-1:1,a=e.height<0?-1:1;t<0&&(e.x+=e.width,e.width=-e.width),a<0&&(e.y+=e.height,e.height=-e.height);var n=r.x+r.width,i=r.y+r.height,o=dc(e.x,r.x),s=gc(e.x+e.width,n),l=dc(e.y,r.y),u=gc(e.y+e.height,i),f=sn?s:o,e.y=h&&l>i?u:l,e.width=f?0:s-o,e.height=h?0:u-l,t<0&&(e.x+=e.width,e.width=-e.width),a<0&&(e.y+=e.height,e.height=-e.height),f||h},polar:function(r,e){var t=e.r0<=e.r?1:-1;if(t<0){var a=e.r;e.r=e.r0,e.r0=a}var n=gc(e.r,r.r),i=dc(e.r0,r.r0);e.r=n,e.r0=i;var o=n-i<0;if(t<0){var a=e.r;e.r=e.r0,e.r0=a}return o}},k1={cartesian2d:function(r,e,t,a,n,i,o,s,l){var u=new xt({shape:V({},a),z2:1});if(u.__dataIndex=t,u.name="item",i){var f=u.shape,h=n?"height":"width";f[h]=0}return u},polar:function(r,e,t,a,n,i,o,s,l){var u=!n&&l?Uf:we,f=new u({shape:a,z2:1});f.name="item";var h=YD(n);if(f.calculateTextPosition=vz(h,{isRoundCap:u===Uf}),i){var v=f.shape,c=n?"r":"endAngle",p={};v[c]=n?a.r0:a.startAngle,p[c]=a[c],(s?Tt:Gt)(f,{shape:p},i)}return f}};function gz(r,e){var t=r.get("realtimeSort",!0),a=e.getBaseAxis();if(t&&a.type==="category"&&e.type==="cartesian2d")return{baseAxis:a,otherAxis:e.getOtherAxis(a)}}function O1(r,e,t,a,n,i,o,s){var l,u;i?(u={x:a.x,width:a.width},l={y:a.y,height:a.height}):(u={y:a.y,height:a.height},l={x:a.x,width:a.width}),s||(o?Tt:Gt)(t,{shape:l},e,n,null);var f=e?r.baseAxis.model:null;(o?Tt:Gt)(t,{shape:u},f,n)}function N1(r,e){for(var t=0;t0?1:-1,o=a.height>0?1:-1;return{x:a.x+i*n/2,y:a.y+o*n/2,width:a.width-i*n,height:a.height-o*n}},polar:function(r,e,t){var a=r.getItemLayout(e);return{cx:a.cx,cy:a.cy,r0:a.r0,r:a.r,startAngle:a.startAngle,endAngle:a.endAngle,clockwise:a.clockwise}}};function _z(r){return r.startAngle!=null&&r.endAngle!=null&&r.startAngle===r.endAngle}function YD(r){return function(e){var t=e?"Arc":"Angle";return function(a){switch(a){case"start":case"insideStart":case"end":case"insideEnd":return a+t;default:return a}}}(r)}function V1(r,e,t,a,n,i,o,s){var l=e.getItemVisual(t,"style");if(s){if(!i.get("roundCap")){var f=r.shape,h=jn(a.getModel("itemStyle"),f,!0);V(f,h),r.setShape(f)}}else{var u=a.get(["itemStyle","borderRadius"])||0;r.setShape("r",u)}r.useStyle(l);var v=a.getShallow("cursor");v&&r.attr("cursor",v);var c=s?o?n.r>=n.r0?"endArc":"startArc":n.endAngle>=n.startAngle?"endAngle":"startAngle":o?n.height>=0?"bottom":"top":n.width>=0?"right":"left",p=oe(a);pe(r,p,{labelFetcher:i,labelDataIndex:t,defaultText:po(i.getData(),t),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:c});var d=r.getTextContent();if(s&&d){var g=a.get(["label","position"]);r.textConfig.inside=g==="middle"?!0:null,cz(r,g==="outside"?c:g,YD(o),a.get(["label","rotate"]))}fA(d,p,i.getRawValue(t),function(m){return ND(e,m)});var y=a.getModel(["emphasis"]);Wt(r,y.get("focus"),y.get("blurScope"),y.get("disabled")),ce(r,a),_z(n)&&(r.style.fill="none",r.style.stroke="none",D(r.states,function(m){m.style&&(m.style.fill=m.style.stroke="none")}))}function Sz(r,e){var t=r.get(["itemStyle","borderColor"]);if(!t||t==="none")return 0;var a=r.get(["itemStyle","borderWidth"])||0,n=isNaN(e.width)?Number.MAX_VALUE:Math.abs(e.width),i=isNaN(e.height)?Number.MAX_VALUE:Math.abs(e.height);return Math.min(a,n,i)}var xz=function(){function r(){}return r}(),z1=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a.type="largeBar",a}return e.prototype.getDefaultShape=function(){return new xz},e.prototype.buildPath=function(t,a){for(var n=a.points,i=this.baseDimIdx,o=1-this.baseDimIdx,s=[],l=[],u=this.barWidth,f=0;f=0?t:null},30,!1);function bz(r,e,t){for(var a=r.baseDimIdx,n=1-a,i=r.shape.points,o=r.largeDataIndices,s=[],l=[],u=r.barWidth,f=0,h=i.length/3;f=s[0]&&e<=s[0]+l[0]&&t>=s[1]&&t<=s[1]+l[1])return o[f]}return-1}function XD(r,e,t){if(Si(t,"cartesian2d")){var a=e,n=t.getArea();return{x:r?a.x:n.x,y:r?n.y:a.y,width:r?a.width:n.width,height:r?n.height:a.height}}else{var n=t.getArea(),i=e;return{cx:n.cx,cy:n.cy,r0:r?n.r0:i.r0,r:r?n.r:i.r,startAngle:r?i.startAngle:0,endAngle:r?i.endAngle:Math.PI*2}}}function wz(r,e,t){var a=r.type==="polar"?we:xt;return new a({shape:XD(e,t,r),silent:!0,z2:0})}function Tz(r){r.registerChartView(dz),r.registerSeriesModel(fz),r.registerLayout(r.PRIORITY.VISUAL.LAYOUT,lt(jC,"bar")),r.registerLayout(r.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,JC("bar")),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,UD("bar")),r.registerAction({type:"changeAxisOrder",event:"changeAxisOrder",update:"update"},function(e,t){var a=e.componentType||"series";t.eachComponent({mainType:a,query:e},function(n){e.sortInfo&&n.axis.setCategorySortInfo(e.sortInfo)})})}var H1=Math.PI*2,Du=Math.PI/180;function $D(r,e){return Jt(r.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function ZD(r,e){var t=$D(r,e),a=r.get("center"),n=r.get("radius");z(n)||(n=[0,n]);var i=W(t.width,e.getWidth()),o=W(t.height,e.getHeight()),s=Math.min(i,o),l=W(n[0],s/2),u=W(n[1],s/2),f,h,v=r.coordinateSystem;if(v){var c=v.dataToPoint(a);f=c[0]||0,h=c[1]||0}else z(a)||(a=[a,a]),f=W(a[0],i)+t.x,h=W(a[1],o)+t.y;return{cx:f,cy:h,r0:l,r:u}}function Az(r,e,t){e.eachSeriesByType(r,function(a){var n=a.getData(),i=n.mapDimension("value"),o=$D(a,t),s=ZD(a,t),l=s.cx,u=s.cy,f=s.r,h=s.r0,v=-a.get("startAngle")*Du,c=a.get("endAngle"),p=a.get("padAngle")*Du;c=c==="auto"?v-H1:-c*Du;var d=a.get("minAngle")*Du,g=d+p,y=0;n.each(i,function(O){!isNaN(O)&&y++});var m=n.getSum(i),_=Math.PI/(m||y)*2,S=a.get("clockwise"),b=a.get("roseType"),x=a.get("stillShowZeroSum"),w=n.getDataExtent(i);w[0]=0;var T=S?1:-1,A=[v,c],C=T*p/2;Pg(A,!S),v=A[0],c=A[1];var M=qD(a);M.startAngle=v,M.endAngle=c,M.clockwise=S;var I=Math.abs(c-v),L=I,P=0,R=v;if(n.setLayout({viewRect:o,r:f}),n.each(i,function(O,k){var B;if(isNaN(O)){n.setItemLayout(k,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:S,cx:l,cy:u,r0:h,r:b?NaN:f});return}b!=="area"?B=m===0&&x?_:O*_:B=I/y,BB?(H=R+T*B/2,U=H):(H=R+C,U=F-C),n.setItemLayout(k,{angle:B,startAngle:H,endAngle:U,clockwise:S,cx:l,cy:u,r0:h,r:b?Dt(O,w,[h,f]):f}),R=F}),Lt?y:g,b=Math.abs(_.label.y-t);if(b>=S.maxY){var x=_.label.x-e-_.len2*n,w=a+_.len,T=Math.abs(x)r.unconstrainedWidth?null:c:null;a.setStyle("width",p)}var d=a.getBoundingRect();i.width=d.width;var g=(a.style.margin||0)+2.1;i.height=d.height+g,i.y-=(i.height-h)/2}}}function yc(r){return r.position==="center"}function Mz(r){var e=r.getData(),t=[],a,n,i=!1,o=(r.get("minShowLabelAngle")||0)*Cz,s=e.getLayout("viewRect"),l=e.getLayout("r"),u=s.width,f=s.x,h=s.y,v=s.height;function c(x){x.ignore=!0}function p(x){if(!x.ignore)return!0;for(var w in x.states)if(x.states[w].ignore===!1)return!0;return!1}e.each(function(x){var w=e.getItemGraphicEl(x),T=w.shape,A=w.getTextContent(),C=w.getTextGuideLine(),M=e.getItemModel(x),I=M.getModel("label"),L=I.get("position")||M.get(["emphasis","label","position"]),P=I.get("distanceToLabelLine"),R=I.get("alignTo"),E=W(I.get("edgeDistance"),u),O=I.get("bleedMargin"),k=M.getModel("labelLine"),B=k.get("length");B=W(B,u);var F=k.get("length2");if(F=W(F,u),Math.abs(T.endAngle-T.startAngle)0?"right":"left":U>0?"left":"right"}var kt=Math.PI,Ht=0,ee=I.get("rotate");if(wt(ee))Ht=ee*(kt/180);else if(L==="center")Ht=0;else if(ee==="radial"||ee===!0){var He=U<0?-H+kt:-H;Ht=He}else if(ee==="tangential"&&L!=="outside"&&L!=="outer"){var Oe=Math.atan2(U,j);Oe<0&&(Oe=kt*2+Oe);var un=j>0;un&&(Oe=kt+Oe),Ht=Oe-kt}if(i=!!Ht,A.x=Q,A.y=it,A.rotation=Ht,A.setStyle({verticalAlign:"middle"}),ct){A.setStyle({align:Yt});var Qh=A.states.select;Qh&&(Qh.x+=A.x,Qh.y+=A.y)}else{var Ta=A.getBoundingRect().clone();Ta.applyTransform(A.getComputedTransform());var Rm=(A.style.margin||0)+2.1;Ta.y-=Rm/2,Ta.height+=Rm,t.push({label:A,labelLine:C,position:L,len:B,len2:F,minTurnAngle:k.get("minTurnAngle"),maxSurfaceAngle:k.get("maxSurfaceAngle"),surfaceNormal:new ft(U,j),linePoints:Pt,textAlign:Yt,labelDistance:P,labelAlignTo:R,edgeDistance:E,bleedMargin:O,rect:Ta,unconstrainedWidth:Ta.width,labelStyleWidth:A.style.width})}w.setTextConfig({inside:ct})}}),!i&&r.get("avoidLabelOverlap")&&Dz(t,a,n,l,u,v,f,h);for(var d=0;d0){for(var f=o.getItemLayout(0),h=1;isNaN(f&&f.startAngle)&&h=i.r0}},e.type="pie",e}(Lt);function zo(r,e,t){e=z(e)&&{coordDimensions:e}||V({encodeDefine:r.getEncode()},e);var a=r.getSource(),n=No(a,e).dimensions,i=new xe(n,r);return i.initData(a,t),i}var zl=function(){function r(e,t){this._getDataWithEncodedVisual=e,this._getRawData=t}return r.prototype.getAllNames=function(){var e=this._getRawData();return e.mapArray(e.getName)},r.prototype.containName=function(e){var t=this._getRawData();return t.indexOfName(e)>=0},r.prototype.indexOfName=function(e){var t=this._getDataWithEncodedVisual();return t.indexOfName(e)},r.prototype.getItemVisual=function(e,t){var a=this._getDataWithEncodedVisual();return a.getItemVisual(e,t)},r}(),Pz=bt(),Rz=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new zl(X(this.getData,this),X(this.getRawData,this)),this._defaultLabelLine(t)},e.prototype.mergeOption=function(){r.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return zo(this,{coordDimensions:["value"],encodeDefaulter:lt(ty,this)})},e.prototype.getDataParams=function(t){var a=this.getData(),n=Pz(a),i=n.seats;if(!i){var o=[];a.each(a.mapDimension("value"),function(l){o.push(l)}),i=n.seats=yT(o,a.hostModel.get("percentPrecision"))}var s=r.prototype.getDataParams.call(this,t);return s.percent=i[t]||0,s.$vars.push("percent"),s},e.prototype._defaultLabelLine=function(t){oi(t,"labelLine",["show"]);var a=t.labelLine,n=t.emphasis.labelLine;a.show=a.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,endAngle:"auto",padAngle:0,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},e}(Et);function Ez(r){return{seriesType:r,reset:function(e,t){var a=e.getData();a.filterSelf(function(n){var i=a.mapDimension("value"),o=a.get(i,n);return!(wt(o)&&!isNaN(o)&&o<0)})}}}function kz(r){r.registerChartView(Lz),r.registerSeriesModel(Rz),cC("pie",r.registerAction),r.registerLayout(lt(Az,"pie")),r.registerProcessor(Vl("pie")),r.registerProcessor(Ez("pie"))}var Oz=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.hasSymbolVisual=!0,t}return e.prototype.getInitialData=function(t,a){return ea(null,this,{useEncodeDefaulter:!0})},e.prototype.getProgressive=function(){var t=this.option.progressive;return t??(this.option.large?5e3:this.get("progressive"))},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return t??(this.option.large?1e4:this.get("progressiveThreshold"))},e.prototype.brushSelector=function(t,a,n){return n.point(a.getItemLayout(t))},e.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},e.type="series.scatter",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}},e}(Et),jD=4,Nz=function(){function r(){}return r}(),Bz=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a._off=0,a.hoverDataIdx=-1,a}return e.prototype.getDefaultShape=function(){return new Nz},e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.buildPath=function(t,a){var n=a.points,i=a.size,o=this.symbolProxy,s=o.shape,l=t.getContext?t.getContext():t,u=l&&i[0]=0;u--){var f=u*2,h=i[f]-s/2,v=i[f+1]-l/2;if(t>=h&&a>=v&&t<=h+s&&a<=v+l)return u}return-1},e.prototype.contain=function(t,a){var n=this.transformCoordToLocal(t,a),i=this.getBoundingRect();if(t=n[0],a=n[1],i.contain(t,a)){var o=this.hoverDataIdx=this.findDataIndex(t,a);return o>=0}return this.hoverDataIdx=-1,!1},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var a=this.shape,n=a.points,i=a.size,o=i[0],s=i[1],l=1/0,u=1/0,f=-1/0,h=-1/0,v=0;v=0&&(u.dataIndex=h+(e.startIndex||0))})},r.prototype.remove=function(){this._clear()},r.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},r}(),zz=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=t.getData(),o=this._updateSymbolDraw(i,t);o.updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},e.prototype.incrementalPrepareRender=function(t,a,n){var i=t.getData(),o=this._updateSymbolDraw(i,t);o.incrementalPrepareUpdate(i),this._finished=!1},e.prototype.incrementalRender=function(t,a,n){this._symbolDraw.incrementalUpdate(t,a.getData(),{clipShape:this._getClipShape(a)}),this._finished=t.end===a.getData().count()},e.prototype.updateTransform=function(t,a,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4)return{update:!0};var o=Bl("").reset(t,a,n);o.progress&&o.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout(i)},e.prototype.eachRendered=function(t){this._symbolDraw&&this._symbolDraw.eachRendered(t)},e.prototype._getClipShape=function(t){if(t.get("clip",!0)){var a=t.coordinateSystem;return a&&a.getArea&&a.getArea(.1)}},e.prototype._updateSymbolDraw=function(t,a){var n=this._symbolDraw,i=a.pipelineContext,o=i.large;return(!n||o!==this._isLargeDraw)&&(n&&n.remove(),n=this._symbolDraw=o?new Vz:new Ol,this._isLargeDraw=o,this.group.removeAll()),this.group.add(n.group),n},e.prototype.remove=function(t,a){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},e.prototype.dispose=function(){},e.type="scatter",e}(Lt),Gz=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.type="grid",e.dependencies=["xAxis","yAxis"],e.layoutMode="box",e.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},e}(gt),Cd=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",jt).models[0]},e.type="cartesian2dAxis",e}(gt);$t(Cd,Vo);var JD={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,showMinLine:!0,showMaxLine:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},Fz=ut({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},JD),ky=ut({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},JD),Hz=ut({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},ky),Wz=J({logBase:10},ky);const QD={category:Fz,value:ky,time:Hz,log:Wz};var Uz={value:1,category:1,time:1,log:1};function go(r,e,t,a){D(Uz,function(n,i){var o=ut(ut({},QD[i],!0),a,!0),s=function(l){N(u,l);function u(){var f=l!==null&&l.apply(this,arguments)||this;return f.type=e+"Axis."+i,f}return u.prototype.mergeDefaultAndTheme=function(f,h){var v=rl(this),c=v?Lo(f):{},p=h.getTheme();ut(f,p.get(i+"Axis")),ut(f,this.getDefaultOption()),f.type=U1(f),v&&tn(f,c,v)},u.prototype.optionUpdated=function(){var f=this.option;f.type==="category"&&(this.__ordinalMeta=md.createByAxisModel(this))},u.prototype.getCategories=function(f){var h=this.option;if(h.type==="category")return f?h.data:this.__ordinalMeta.categories},u.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},u.type=e+"Axis."+i,u.defaultOption=o,u}(t);r.registerComponentModel(s)}),r.registerSubTypeDefaulter(e+"Axis",U1)}function U1(r){return r.type||(r.data?"category":"value")}var Yz=function(){function r(e){this.type="cartesian",this._dimList=[],this._axes={},this.name=e||""}return r.prototype.getAxis=function(e){return this._axes[e]},r.prototype.getAxes=function(){return G(this._dimList,function(e){return this._axes[e]},this)},r.prototype.getAxesByScale=function(e){return e=e.toLowerCase(),At(this.getAxes(),function(t){return t.scale.type===e})},r.prototype.addAxis=function(e){var t=e.dim;this._axes[t]=e,this._dimList.push(t)},r}(),Dd=["x","y"];function Y1(r){return r.type==="interval"||r.type==="time"}var Xz=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type="cartesian2d",t.dimensions=Dd,t}return e.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,a=this.getAxis("y").scale;if(!(!Y1(t)||!Y1(a))){var n=t.getExtent(),i=a.getExtent(),o=this.dataToPoint([n[0],i[0]]),s=this.dataToPoint([n[1],i[1]]),l=n[1]-n[0],u=i[1]-i[0];if(!(!l||!u)){var f=(s[0]-o[0])/l,h=(s[1]-o[1])/u,v=o[0]-n[0]*f,c=o[1]-i[0]*h,p=this._transform=[f,0,0,h,v,c];this._invTransform=di([],p)}}},e.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},e.prototype.containPoint=function(t){var a=this.getAxis("x"),n=this.getAxis("y");return a.contain(a.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},e.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},e.prototype.containZone=function(t,a){var n=this.dataToPoint(t),i=this.dataToPoint(a),o=this.getArea(),s=new ht(n[0],n[1],i[0]-n[0],i[1]-n[1]);return o.intersect(s)},e.prototype.dataToPoint=function(t,a,n){n=n||[];var i=t[0],o=t[1];if(this._transform&&i!=null&&isFinite(i)&&o!=null&&isFinite(o))return fe(n,t,this._transform);var s=this.getAxis("x"),l=this.getAxis("y");return n[0]=s.toGlobalCoord(s.dataToCoord(i,a)),n[1]=l.toGlobalCoord(l.dataToCoord(o,a)),n},e.prototype.clampData=function(t,a){var n=this.getAxis("x").scale,i=this.getAxis("y").scale,o=n.getExtent(),s=i.getExtent(),l=n.parse(t[0]),u=i.parse(t[1]);return a=a||[],a[0]=Math.min(Math.max(Math.min(o[0],o[1]),l),Math.max(o[0],o[1])),a[1]=Math.min(Math.max(Math.min(s[0],s[1]),u),Math.max(s[0],s[1])),a},e.prototype.pointToData=function(t,a){var n=[];if(this._invTransform)return fe(n,t,this._invTransform);var i=this.getAxis("x"),o=this.getAxis("y");return n[0]=i.coordToData(i.toLocalCoord(t[0]),a),n[1]=o.coordToData(o.toLocalCoord(t[1]),a),n},e.prototype.getOtherAxis=function(t){return this.getAxis(t.dim==="x"?"y":"x")},e.prototype.getArea=function(t){t=t||0;var a=this.getAxis("x").getGlobalExtent(),n=this.getAxis("y").getGlobalExtent(),i=Math.min(a[0],a[1])-t,o=Math.min(n[0],n[1])-t,s=Math.max(a[0],a[1])-i+t,l=Math.max(n[0],n[1])-o+t;return new ht(i,o,s,l)},e}(Yz),$z=function(r){N(e,r);function e(t,a,n,i,o){var s=r.call(this,t,a,n)||this;return s.index=0,s.type=i||"value",s.position=o||"bottom",s}return e.prototype.isHorizontal=function(){var t=this.position;return t==="top"||t==="bottom"},e.prototype.getGlobalExtent=function(t){var a=this.getExtent();return a[0]=this.toGlobalCoord(a[0]),a[1]=this.toGlobalCoord(a[1]),t&&a[0]>a[1]&&a.reverse(),a},e.prototype.pointToData=function(t,a){return this.coordToData(this.toLocalCoord(t[this.dim==="x"?0:1]),a)},e.prototype.setCategorySortInfo=function(t){if(this.type!=="category")return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},e}(dr);function Md(r,e,t){t=t||{};var a=r.coordinateSystem,n=e.axis,i={},o=n.getAxesOnZeroOf()[0],s=n.position,l=o?"onZero":s,u=n.dim,f=a.getRect(),h=[f.x,f.x+f.width,f.y,f.y+f.height],v={left:0,right:1,top:0,bottom:1,onZero:2},c=e.get("offset")||0,p=u==="x"?[h[2]-c,h[3]+c]:[h[0]-c,h[1]+c];if(o){var d=o.toGlobalCoord(o.dataToCoord(0));p[v.onZero]=Math.max(Math.min(d,p[1]),p[0])}i.position=[u==="y"?p[v[l]]:h[0],u==="x"?p[v[l]]:h[3]],i.rotation=Math.PI/2*(u==="x"?0:1);var g={top:-1,bottom:1,left:-1,right:1};i.labelDirection=i.tickDirection=i.nameDirection=g[s],i.labelOffset=o?p[v[s]]-p[v.onZero]:0,e.get(["axisTick","inside"])&&(i.tickDirection=-i.tickDirection),ae(t.labelInside,e.get(["axisLabel","inside"]))&&(i.labelDirection=-i.labelDirection);var y=e.get(["axisLabel","rotate"]);return i.labelRotate=l==="top"?-y:y,i.z2=1,i}function X1(r){return r.get("coordinateSystem")==="cartesian2d"}function $1(r){var e={xAxisModel:null,yAxisModel:null};return D(e,function(t,a){var n=a.replace(/Model$/,""),i=r.getReferringComponents(n,jt).models[0];e[a]=i}),e}var mc=Math.log;function tM(r,e,t){var a=Sa.prototype,n=a.getTicks.call(t),i=a.getTicks.call(t,!0),o=n.length-1,s=a.getInterval.call(t),l=aD(r,e),u=l.extent,f=l.fixMin,h=l.fixMax;if(r.type==="log"){var v=mc(r.base);u=[mc(u[0])/v,mc(u[1])/v]}r.setExtent(u[0],u[1]),r.calcNiceExtent({splitNumber:o,fixMin:f,fixMax:h});var c=a.getExtent.call(r);f&&(u[0]=c[0]),h&&(u[1]=c[1]);var p=a.getInterval.call(r),d=u[0],g=u[1];if(f&&h)p=(g-d)/o;else if(f)for(g=u[0]+p*o;gu[0]&&isFinite(d)&&isFinite(u[0]);)p=ac(p),d=u[1]-p*o;else{var y=r.getTicks().length-1;y>o&&(p=ac(p));var m=p*o;g=Math.ceil(u[1]/p)*p,d=Ut(g-m),d<0&&u[0]>=0?(d=0,g=Ut(m)):g>0&&u[1]<=0&&(g=0,d=-Ut(m))}var _=(n[0].value-i[0].value)/s,S=(n[o].value-i[o].value)/s;a.setExtent.call(r,d+p*_,g+p*S),a.setInterval.call(r,p),(_||S)&&a.setNiceExtent.call(r,d+p,g-p)}var Zz=function(){function r(e,t,a){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=Dd,this._initCartesian(e,t,a),this.model=e}return r.prototype.getRect=function(){return this._rect},r.prototype.update=function(e,t){var a=this._axesMap;this._updateScale(e,this.model);function n(o){var s,l=_t(o),u=l.length;if(u){for(var f=[],h=u-1;h>=0;h--){var v=+l[h],c=o[v],p=c.model,d=c.scale;_d(d)&&p.get("alignTicks")&&p.get("interval")==null?f.push(c):(hi(d,p),_d(d)&&(s=c))}f.length&&(s||(s=f.pop(),hi(s.scale,s.model)),D(f,function(g){tM(g.scale,g.model,s.scale)}))}}n(a.x),n(a.y);var i={};D(a.x,function(o){Z1(a,"y",o,i)}),D(a.y,function(o){Z1(a,"x",o,i)}),this.resize(this.model,t)},r.prototype.resize=function(e,t,a){var n=e.getBoxLayoutParams(),i=!a&&e.get("containLabel"),o=Jt(n,{width:t.getWidth(),height:t.getHeight()});this._rect=o;var s=this._axesList;l(),i&&(D(s,function(u){if(!u.model.get(["axisLabel","inside"])){var f=pB(u);if(f){var h=u.isHorizontal()?"height":"width",v=u.model.get(["axisLabel","margin"]);o[h]-=f[h]+v,u.position==="top"?o.y+=f.height+v:u.position==="left"&&(o.x+=f.width+v)}}}),l()),D(this._coordsList,function(u){u.calcAffineTransform()});function l(){D(s,function(u){var f=u.isHorizontal(),h=f?[0,o.width]:[0,o.height],v=u.inverse?1:0;u.setExtent(h[v],h[1-v]),qz(u,f?o.x:o.y)})}},r.prototype.getAxis=function(e,t){var a=this._axesMap[e];if(a!=null)return a[t||0]},r.prototype.getAxes=function(){return this._axesList.slice()},r.prototype.getCartesian=function(e,t){if(e!=null&&t!=null){var a="x"+e+"y"+t;return this._coordsMap[a]}tt(e)&&(t=e.yAxisIndex,e=e.xAxisIndex);for(var n=0,i=this._coordsList;n0?"top":"bottom",i="center"):uo(n-Fa)?(o=a>0?"bottom":"top",i="center"):(o="middle",n>0&&n0?"right":"left":i=a>0?"left":"right"),{rotation:n,textAlign:i,textVerticalAlign:o}},r.makeAxisEventDataBase=function(e){var t={componentType:e.mainType,componentIndex:e.componentIndex};return t[e.mainType+"Index"]=e.componentIndex,t},r.isLabelSilent=function(e){var t=e.get("tooltip");return e.get("silent")||!(e.get("triggerEvent")||t&&t.show)},r}(),K1={axisLine:function(r,e,t,a){var n=e.get(["axisLine","show"]);if(n==="auto"&&r.handleAutoShown&&(n=r.handleAutoShown("axisLine")),!!n){var i=e.axis.getExtent(),o=a.transform,s=[i[0],0],l=[i[1],0],u=s[0]>l[0];o&&(fe(s,s,o),fe(l,l,o));var f=V({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),h=new te({shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:f,strokeContainThreshold:r.strokeContainThreshold||5,silent:!0,z2:1});ho(h.shape,h.style.lineWidth),h.anid="line",t.add(h);var v=e.get(["axisLine","symbol"]);if(v!=null){var c=e.get(["axisLine","symbolSize"]);Y(v)&&(v=[v,v]),(Y(c)||wt(c))&&(c=[c,c]);var p=_i(e.get(["axisLine","symbolOffset"])||0,c),d=c[0],g=c[1];D([{rotate:r.rotation+Math.PI/2,offset:p[0],r:0},{rotate:r.rotation-Math.PI/2,offset:p[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],function(y,m){if(v[m]!=="none"&&v[m]!=null){var _=qt(v[m],-d/2,-g/2,d,g,f.stroke,!0),S=y.r+y.offset,b=u?l:s;_.attr({rotation:y.rotate,x:b[0]+S*Math.cos(r.rotation),y:b[1]-S*Math.sin(r.rotation),silent:!0,z2:11}),t.add(_)}})}}},axisTickLabel:function(r,e,t,a){var n=Jz(t,a,e,r),i=t5(t,a,e,r);if(jz(e,i,n),Qz(t,a,e,r.tickDirection),e.get(["axisLabel","hideOverlap"])){var o=yD(G(i,function(s){return{label:s,priority:s.z2,defaultAttr:{ignore:s.ignore}}}));SD(o)}},axisName:function(r,e,t,a){var n=ae(r.axisName,e.get("name"));if(n){var i=e.get("nameLocation"),o=r.nameDirection,s=e.getModel("nameTextStyle"),l=e.get("nameGap")||0,u=e.axis.getExtent(),f=u[0]>u[1]?-1:1,h=[i==="start"?u[0]-f*l:i==="end"?u[1]+f*l:(u[0]+u[1])/2,J1(i)?r.labelOffset+o*l:0],v,c=e.get("nameRotate");c!=null&&(c=c*Fa/180);var p;J1(i)?v=Re.innerTextLayout(r.rotation,c??r.rotation,o):(v=Kz(r.rotation,i,c||0,u),p=r.axisNameAvailableWidth,p!=null&&(p=Math.abs(p/Math.sin(v.rotation)),!isFinite(p)&&(p=null)));var d=s.getFont(),g=e.get("nameTruncate",!0)||{},y=g.ellipsis,m=ae(r.nameTruncateMaxWidth,g.maxWidth,p),_=new St({x:h[0],y:h[1],rotation:v.rotation,silent:Re.isLabelSilent(e),style:Nt(s,{text:n,font:d,overflow:"truncate",width:m,ellipsis:y,fill:s.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:s.get("align")||v.textAlign,verticalAlign:s.get("verticalAlign")||v.textVerticalAlign}),z2:1});if(gi({el:_,componentModel:e,itemName:n}),_.__fullText=n,_.anid="name",e.get("triggerEvent")){var S=Re.makeAxisEventDataBase(e);S.targetType="axisName",S.name=n,nt(_).eventData=S}a.add(_),_.updateTransform(),t.add(_),_.decomposeTransform()}}};function Kz(r,e,t,a){var n=Tg(t-r),i,o,s=a[0]>a[1],l=e==="start"&&!s||e!=="start"&&s;return uo(n-Fa/2)?(o=l?"bottom":"top",i="center"):uo(n-Fa*1.5)?(o=l?"top":"bottom",i="center"):(o="middle",nFa/2?i=l?"left":"right":i=l?"right":"left"),{rotation:n,textAlign:i,textVerticalAlign:o}}function jz(r,e,t){if(!nD(r.axis)){var a=r.get(["axisLabel","showMinLabel"]),n=r.get(["axisLabel","showMaxLabel"]);e=e||[],t=t||[];var i=e[0],o=e[1],s=e[e.length-1],l=e[e.length-2],u=t[0],f=t[1],h=t[t.length-1],v=t[t.length-2];a===!1?(Ke(i),Ke(u)):j1(i,o)&&(a?(Ke(o),Ke(f)):(Ke(i),Ke(u))),n===!1?(Ke(s),Ke(h)):j1(l,s)&&(n?(Ke(l),Ke(v)):(Ke(s),Ke(h)))}}function Ke(r){r&&(r.ignore=!0)}function j1(r,e){var t=r&&r.getBoundingRect().clone(),a=e&&e.getBoundingRect().clone();if(!(!t||!a)){var n=bl([]);return nn(n,n,-r.rotation),t.applyTransform($r([],n,r.getLocalTransform())),a.applyTransform($r([],n,e.getLocalTransform())),t.intersect(a)}}function J1(r){return r==="middle"||r==="center"}function eM(r,e,t,a,n){for(var i=[],o=[],s=[],l=0;l=0||r===e}function o5(r){var e=Oy(r);if(e){var t=e.axisPointerModel,a=e.axis.scale,n=t.option,i=t.get("status"),o=t.get("value");o!=null&&(o=a.parse(o));var s=Id(t);i==null&&(n.status=s?"show":"hide");var l=a.getExtent().slice();l[0]>l[1]&&l.reverse(),(o==null||o>l[1])&&(o=l[1]),o0&&!p.min?p.min=0:p.min!=null&&p.min<0&&!p.max&&(p.max=0);var d=l;p.color!=null&&(d=J({color:p.color},l));var g=ut(rt(p),{boundaryGap:t,splitNumber:a,scale:n,axisLine:i,axisTick:o,axisLabel:s,name:p.text,showName:u,nameLocation:"end",nameGap:h,nameTextStyle:d,triggerEvent:v},!1);if(Y(f)){var y=g.name;g.name=f.replace("{value}",y??"")}else K(f)&&(g.name=f(g.name,g));var m=new Ct(g,null,this.ecModel);return $t(m,Vo.prototype),m.mainType="radar",m.componentIndex=this.componentIndex,m},this);this._indicatorModels=c},e.prototype.getIndicatorModels=function(){return this._indicatorModels},e.type="radar",e.defaultOption={z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:ut({lineStyle:{color:"#bbb"}},is.axisLine),axisLabel:Mu(is.axisLabel,!1),axisTick:Mu(is.axisTick,!1),splitLine:Mu(is.splitLine,!0),splitArea:Mu(is.splitArea,!0),indicator:[]},e}(gt),_5=["axisLine","axisTickLabel","axisName"],S5=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=this.group;i.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},e.prototype._buildAxes=function(t){var a=t.coordinateSystem,n=a.getIndicatorAxes(),i=G(n,function(o){var s=o.model.get("showName")?o.name:"",l=new Re(o.model,{axisName:s,position:[a.cx,a.cy],rotation:o.angle,labelDirection:-1,tickDirection:-1,nameDirection:1});return l});D(i,function(o){D(_5,o.add,o),this.group.add(o.getGroup())},this)},e.prototype._buildSplitLineAndArea=function(t){var a=t.coordinateSystem,n=a.getIndicatorAxes();if(!n.length)return;var i=t.get("shape"),o=t.getModel("splitLine"),s=t.getModel("splitArea"),l=o.getModel("lineStyle"),u=s.getModel("areaStyle"),f=o.get("show"),h=s.get("show"),v=l.get("color"),c=u.get("color"),p=z(v)?v:[v],d=z(c)?c:[c],g=[],y=[];function m(R,E,O){var k=O%E.length;return R[k]=R[k]||[],k}if(i==="circle")for(var _=n[0].getTicksCoords(),S=a.cx,b=a.cy,x=0;x<_.length;x++){if(f){var w=m(g,p,x);g[w].push(new Qr({shape:{cx:S,cy:b,r:_[x].coord}}))}if(h&&x<_.length-1){var w=m(y,d,x);y[w].push(new wo({shape:{cx:S,cy:b,r0:_[x].coord,r:_[x+1].coord}}))}}else for(var T,A=G(n,function(R,E){var O=R.getTicksCoords();return T=T==null?O.length-1:Math.min(O.length-1,T),G(O,function(k){return a.coordToPoint(k.coord,E)})}),C=[],x=0;x<=T;x++){for(var M=[],I=0;I3?1.4:o>1?1.2:1.1,f=i>0?u:1/u;xc(this,"zoom","zoomOnMouseWheel",t,{scale:f,originX:s,originY:l,isAvailableBehavior:null})}if(n){var h=Math.abs(i),v=(i>0?1:-1)*(h>3?.4:h>1?.15:.05);xc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:v,originX:s,originY:l,isAvailableBehavior:null})}}},e.prototype._pinchHandler=function(t){if(!nS(this._zr,"globalPan")){var a=t.pinchScale>1?1.1:1/1.1;xc(this,"zoom",null,t,{scale:a,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})}},e}(hr);function xc(r,e,t,a,n){r.pointerChecker&&r.pointerChecker(a,n.originX,n.originY)&&(da(a.event),sM(r,e,t,a,n))}function sM(r,e,t,a,n){n.isAvailableBehavior=X(of,null,t,a),r.trigger(e,n)}function of(r,e,t){var a=t[r];return!r||a&&(!Y(a)||e.event[a+"Key"])}function By(r,e,t){var a=r.target;a.x+=e,a.y+=t,a.dirty()}function Vy(r,e,t,a){var n=r.target,i=r.zoomLimit,o=r.zoom=r.zoom||1;if(o*=e,i){var s=i.min||0,l=i.max||1/0;o=Math.max(Math.min(l,o),s)}var u=o/r.zoom;r.zoom=o,n.x-=(t-n.x)*(u-1),n.y-=(a-n.y)*(u-1),n.scaleX*=u,n.scaleY*=u,n.dirty()}var D5={axisPointer:1,tooltip:1,brush:1};function Xh(r,e,t){var a=e.getComponentByElement(r.topTarget),n=a&&a.coordinateSystem;return a&&a!==t&&!D5.hasOwnProperty(a.mainType)&&n&&n.model!==t}function lM(r){if(Y(r)){var e=new DOMParser;r=e.parseFromString(r,"text/xml")}var t=r;for(t.nodeType===9&&(t=t.firstChild);t.nodeName.toLowerCase()!=="svg"||t.nodeType!==1;)t=t.nextSibling;return t}var bc,Yf={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},iS=_t(Yf),Xf={"alignment-baseline":"textBaseline","stop-color":"stopColor"},oS=_t(Xf),M5=function(){function r(){this._defs={},this._root=null}return r.prototype.parse=function(e,t){t=t||{};var a=lM(e);this._defsUsePending=[];var n=new at;this._root=n;var i=[],o=a.getAttribute("viewBox")||"",s=parseFloat(a.getAttribute("width")||t.width),l=parseFloat(a.getAttribute("height")||t.height);isNaN(s)&&(s=null),isNaN(l)&&(l=null),We(a,n,null,!0,!1);for(var u=a.firstChild;u;)this._parseNode(u,n,i,null,!1,!1),u=u.nextSibling;P5(this._defs,this._defsUsePending),this._defsUsePending=[];var f,h;if(o){var v=$h(o);v.length>=4&&(f={x:parseFloat(v[0]||0),y:parseFloat(v[1]||0),width:parseFloat(v[2]),height:parseFloat(v[3])})}if(f&&s!=null&&l!=null&&(h=fM(f,{x:0,y:0,width:s,height:l}),!t.ignoreViewBox)){var c=n;n=new at,n.add(c),c.scaleX=c.scaleY=h.scale,c.x=h.x,c.y=h.y}return!t.ignoreRootClip&&s!=null&&l!=null&&n.setClipPath(new xt({shape:{x:0,y:0,width:s,height:l}})),{root:n,width:s,height:l,viewBoxRect:f,viewBoxTransform:h,named:i}},r.prototype._parseNode=function(e,t,a,n,i,o){var s=e.nodeName.toLowerCase(),l,u=n;if(s==="defs"&&(i=!0),s==="text"&&(o=!0),s==="defs"||s==="switch")l=t;else{if(!i){var f=bc[s];if(f&&$(bc,s)){l=f.call(this,e,t);var h=e.getAttribute("name");if(h){var v={name:h,namedFrom:null,svgNodeTagLower:s,el:l};a.push(v),s==="g"&&(u=v)}else n&&a.push({name:n.name,namedFrom:n,svgNodeTagLower:s,el:l});t.add(l)}}var c=sS[s];if(c&&$(sS,s)){var p=c.call(this,e),d=e.getAttribute("id");d&&(this._defs[d]=p)}}if(l&&l.isGroup)for(var g=e.firstChild;g;)g.nodeType===1?this._parseNode(g,l,a,u,i,o):g.nodeType===3&&o&&this._parseText(g,l),g=g.nextSibling},r.prototype._parseText=function(e,t){var a=new fo({style:{text:e.textContent},silent:!0,x:this._textX||0,y:this._textY||0});je(t,a),We(e,a,this._defsUsePending,!1,!1),I5(a,t);var n=a.style,i=n.fontSize;i&&i<9&&(n.fontSize=9,a.scaleX*=i/9,a.scaleY*=i/9);var o=(n.fontSize||n.fontFamily)&&[n.fontStyle,n.fontWeight,(n.fontSize||12)+"px",n.fontFamily||"sans-serif"].join(" ");n.font=o;var s=a.getBoundingRect();return this._textX+=s.width,t.add(a),a},r.internalField=function(){bc={g:function(e,t){var a=new at;return je(t,a),We(e,a,this._defsUsePending,!1,!1),a},rect:function(e,t){var a=new xt;return je(t,a),We(e,a,this._defsUsePending,!1,!1),a.setShape({x:parseFloat(e.getAttribute("x")||"0"),y:parseFloat(e.getAttribute("y")||"0"),width:parseFloat(e.getAttribute("width")||"0"),height:parseFloat(e.getAttribute("height")||"0")}),a.silent=!0,a},circle:function(e,t){var a=new Qr;return je(t,a),We(e,a,this._defsUsePending,!1,!1),a.setShape({cx:parseFloat(e.getAttribute("cx")||"0"),cy:parseFloat(e.getAttribute("cy")||"0"),r:parseFloat(e.getAttribute("r")||"0")}),a.silent=!0,a},line:function(e,t){var a=new te;return je(t,a),We(e,a,this._defsUsePending,!1,!1),a.setShape({x1:parseFloat(e.getAttribute("x1")||"0"),y1:parseFloat(e.getAttribute("y1")||"0"),x2:parseFloat(e.getAttribute("x2")||"0"),y2:parseFloat(e.getAttribute("y2")||"0")}),a.silent=!0,a},ellipse:function(e,t){var a=new Dl;return je(t,a),We(e,a,this._defsUsePending,!1,!1),a.setShape({cx:parseFloat(e.getAttribute("cx")||"0"),cy:parseFloat(e.getAttribute("cy")||"0"),rx:parseFloat(e.getAttribute("rx")||"0"),ry:parseFloat(e.getAttribute("ry")||"0")}),a.silent=!0,a},polygon:function(e,t){var a=e.getAttribute("points"),n;a&&(n=fS(a));var i=new Te({shape:{points:n||[]},silent:!0});return je(t,i),We(e,i,this._defsUsePending,!1,!1),i},polyline:function(e,t){var a=e.getAttribute("points"),n;a&&(n=fS(a));var i=new Ce({shape:{points:n||[]},silent:!0});return je(t,i),We(e,i,this._defsUsePending,!1,!1),i},image:function(e,t){var a=new le;return je(t,a),We(e,a,this._defsUsePending,!1,!1),a.setStyle({image:e.getAttribute("xlink:href")||e.getAttribute("href"),x:+e.getAttribute("x"),y:+e.getAttribute("y"),width:+e.getAttribute("width"),height:+e.getAttribute("height")}),a.silent=!0,a},text:function(e,t){var a=e.getAttribute("x")||"0",n=e.getAttribute("y")||"0",i=e.getAttribute("dx")||"0",o=e.getAttribute("dy")||"0";this._textX=parseFloat(a)+parseFloat(i),this._textY=parseFloat(n)+parseFloat(o);var s=new at;return je(t,s),We(e,s,this._defsUsePending,!1,!0),s},tspan:function(e,t){var a=e.getAttribute("x"),n=e.getAttribute("y");a!=null&&(this._textX=parseFloat(a)),n!=null&&(this._textY=parseFloat(n));var i=e.getAttribute("dx")||"0",o=e.getAttribute("dy")||"0",s=new at;return je(t,s),We(e,s,this._defsUsePending,!1,!0),this._textX+=parseFloat(i),this._textY+=parseFloat(o),s},path:function(e,t){var a=e.getAttribute("d")||"",n=JT(a);return je(t,n),We(e,n,this._defsUsePending,!1,!1),n.silent=!0,n}}}(),r}(),sS={lineargradient:function(r){var e=parseInt(r.getAttribute("x1")||"0",10),t=parseInt(r.getAttribute("y1")||"0",10),a=parseInt(r.getAttribute("x2")||"10",10),n=parseInt(r.getAttribute("y2")||"0",10),i=new Ao(e,t,a,n);return lS(r,i),uS(r,i),i},radialgradient:function(r){var e=parseInt(r.getAttribute("cx")||"0",10),t=parseInt(r.getAttribute("cy")||"0",10),a=parseInt(r.getAttribute("r")||"0",10),n=new Vg(e,t,a);return lS(r,n),uS(r,n),n}};function lS(r,e){var t=r.getAttribute("gradientUnits");t==="userSpaceOnUse"&&(e.global=!0)}function uS(r,e){for(var t=r.firstChild;t;){if(t.nodeType===1&&t.nodeName.toLocaleLowerCase()==="stop"){var a=t.getAttribute("offset"),n=void 0;a&&a.indexOf("%")>0?n=parseInt(a,10)/100:a?n=parseFloat(a):n=0;var i={};uM(t,i,i);var o=i.stopColor||t.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:n,color:o})}t=t.nextSibling}}function je(r,e){r&&r.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),J(e.__inheritedStyle,r.__inheritedStyle))}function fS(r){for(var e=$h(r),t=[],a=0;a0;i-=2){var o=a[i],s=a[i-1],l=$h(o);switch(n=n||Fe(),s){case"translate":Ir(n,n,[parseFloat(l[0]),parseFloat(l[1]||"0")]);break;case"scale":dh(n,n,[parseFloat(l[0]),parseFloat(l[1]||l[0])]);break;case"rotate":nn(n,n,-parseFloat(l[0])*wc,[parseFloat(l[1]||"0"),parseFloat(l[2]||"0")]);break;case"skewX":var u=Math.tan(parseFloat(l[0])*wc);$r(n,[1,0,u,1,0,0],n);break;case"skewY":var f=Math.tan(parseFloat(l[0])*wc);$r(n,[1,f,0,1,0,0],n);break;case"matrix":n[0]=parseFloat(l[0]),n[1]=parseFloat(l[1]),n[2]=parseFloat(l[2]),n[3]=parseFloat(l[3]),n[4]=parseFloat(l[4]),n[5]=parseFloat(l[5]);break}}e.setLocalTransform(n)}}var vS=/([^\s:;]+)\s*:\s*([^:;]+)/g;function uM(r,e,t){var a=r.getAttribute("style");if(a){vS.lastIndex=0;for(var n;(n=vS.exec(a))!=null;){var i=n[1],o=$(Yf,i)?Yf[i]:null;o&&(e[o]=n[2]);var s=$(Xf,i)?Xf[i]:null;s&&(t[s]=n[2])}}}function O5(r,e,t){for(var a=0;a0,g={api:a,geo:l,mapOrGeoModel:e,data:s,isVisualEncodedByVisualMap:d,isGeo:o,transformInfoRaw:v};l.resourceType==="geoJSON"?this._buildGeoJSON(g):l.resourceType==="geoSVG"&&this._buildSVG(g),this._updateController(e,t,a),this._updateMapSelectHandler(e,u,a,n)},r.prototype._buildGeoJSON=function(e){var t=this._regionsGroupByName=Z(),a=Z(),n=this._regionsGroup,i=e.transformInfoRaw,o=e.mapOrGeoModel,s=e.data,l=e.geo.projection,u=l&&l.stream;function f(c,p){return p&&(c=p(c)),c&&[c[0]*i.scaleX+i.x,c[1]*i.scaleY+i.y]}function h(c){for(var p=[],d=!u&&l&&l.project,g=0;g=0)&&(v=n);var c=o?{normal:{align:"center",verticalAlign:"middle"}}:null;pe(e,oe(a),{labelFetcher:v,labelDataIndex:h,defaultText:t},c);var p=e.getTextContent();if(p&&(hM(p).ignore=p.ignore,e.textConfig&&o)){var d=e.getBoundingRect().clone();e.textConfig.layoutRect=d,e.textConfig.position=[(o[0]-d.x)/d.width*100+"%",(o[1]-d.y)/d.height*100+"%"]}e.disableLabelAnimation=!0}else e.removeTextContent(),e.removeTextConfig(),e.disableLabelAnimation=null}function yS(r,e,t,a,n,i){r.data?r.data.setItemGraphicEl(i,e):nt(e).eventData={componentType:"geo",componentIndex:n.componentIndex,geoIndex:n.componentIndex,name:t,region:a&&a.option||{}}}function mS(r,e,t,a,n){r.data||gi({el:e,componentModel:n,itemName:t,itemTooltipOption:a.get("tooltip")})}function _S(r,e,t,a,n){e.highDownSilentOnTouch=!!n.get("selectedMode");var i=a.getModel("emphasis"),o=i.get("focus");return Wt(e,o,i.get("blurScope"),i.get("disabled")),r.isGeo&&OR(e,n,t),o}function SS(r,e,t){var a=[],n;function i(){n=[]}function o(){n.length&&(a.push(n),n=[])}var s=e({polygonStart:i,polygonEnd:o,lineStart:i,lineEnd:o,point:function(l,u){isFinite(l)&&isFinite(u)&&n.push([l,u])},sphere:function(){}});return!t&&s.polygonStart(),D(r,function(l){s.lineStart();for(var u=0;u-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n},e.type="series.map",e.dependencies=["geo"],e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},e}(Et);function eG(r,e){var t={};return D(r,function(a){a.each(a.mapDimension("value"),function(n,i){var o="ec-"+a.getName(i);t[o]=t[o]||[],isNaN(n)||t[o].push(n)})}),r[0].map(r[0].mapDimension("value"),function(a,n){for(var i="ec-"+r[0].getName(n),o=0,s=1/0,l=-1/0,u=t[i].length,f=0;f1?(S.width=_,S.height=_/g):(S.height=_,S.width=_*g),S.y=m[1]-S.height/2,S.x=m[0]-S.width/2;else{var b=r.getBoxLayoutParams();b.aspect=g,S=Jt(b,{width:p,height:d})}this.setViewRect(S.x,S.y,S.width,S.height),this.setCenter(r.get("center"),e),this.setZoom(r.get("zoom"))}function iG(r,e){D(e.get("geoCoord"),function(t,a){r.addGeoCoord(a,t)})}var oG=function(){function r(){this.dimensions=cM}return r.prototype.create=function(e,t){var a=[];function n(o){return{nameProperty:o.get("nameProperty"),aspectScale:o.get("aspectScale"),projection:o.get("projection")}}e.eachComponent("geo",function(o,s){var l=o.get("map"),u=new Rd(l+s,l,V({nameMap:o.get("nameMap")},n(o)));u.zoomLimit=o.get("scaleLimit"),a.push(u),o.coordinateSystem=u,u.model=o,u.resize=TS,u.resize(o,t)}),e.eachSeries(function(o){var s=o.get("coordinateSystem");if(s==="geo"){var l=o.get("geoIndex")||0;o.coordinateSystem=a[l]}});var i={};return e.eachSeriesByType("map",function(o){if(!o.getHostGeoModel()){var s=o.getMapType();i[s]=i[s]||[],i[s].push(o)}}),D(i,function(o,s){var l=G(o,function(f){return f.get("nameMap")}),u=new Rd(s,s,V({nameMap:hh(l)},n(o[0])));u.zoomLimit=ae.apply(null,G(o,function(f){return f.get("scaleLimit")})),a.push(u),u.resize=TS,u.resize(o[0],t),D(o,function(f){f.coordinateSystem=u,iG(u,f)})}),a},r.prototype.getFilledRegions=function(e,t,a,n){for(var i=(e||[]).slice(),o=Z(),s=0;s=0;o--){var s=n[o];s.hierNode={defaultAncestor:null,ancestor:s,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},t.push(s)}}function vG(r,e){var t=r.isExpand?r.children:[],a=r.parentNode.children,n=r.hierNode.i?a[r.hierNode.i-1]:null;if(t.length){dG(r);var i=(t[0].hierNode.prelim+t[t.length-1].hierNode.prelim)/2;n?(r.hierNode.prelim=n.hierNode.prelim+e(r,n),r.hierNode.modifier=r.hierNode.prelim-i):r.hierNode.prelim=i}else n&&(r.hierNode.prelim=n.hierNode.prelim+e(r,n));r.parentNode.hierNode.defaultAncestor=gG(r,n,r.parentNode.hierNode.defaultAncestor||a[0],e)}function cG(r){var e=r.hierNode.prelim+r.parentNode.hierNode.modifier;r.setLayout({x:e},!0),r.hierNode.modifier+=r.parentNode.hierNode.modifier}function CS(r){return arguments.length?r:_G}function ws(r,e){return r-=Math.PI/2,{x:e*Math.cos(r),y:e*Math.sin(r)}}function pG(r,e){return Jt(r.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function dG(r){for(var e=r.children,t=e.length,a=0,n=0;--t>=0;){var i=e[t];i.hierNode.prelim+=a,i.hierNode.modifier+=a,n+=i.hierNode.change,a+=i.hierNode.shift+n}}function gG(r,e,t,a){if(e){for(var n=r,i=r,o=i.parentNode.children[0],s=e,l=n.hierNode.modifier,u=i.hierNode.modifier,f=o.hierNode.modifier,h=s.hierNode.modifier;s=Tc(s),i=Ac(i),s&&i;){n=Tc(n),o=Ac(o),n.hierNode.ancestor=r;var v=s.hierNode.prelim+h-i.hierNode.prelim-u+a(s,i);v>0&&(mG(yG(s,r,t),r,v),u+=v,l+=v),h+=s.hierNode.modifier,u+=i.hierNode.modifier,l+=n.hierNode.modifier,f+=o.hierNode.modifier}s&&!Tc(n)&&(n.hierNode.thread=s,n.hierNode.modifier+=h-l),i&&!Ac(o)&&(o.hierNode.thread=i,o.hierNode.modifier+=u-f,t=r)}return t}function Tc(r){var e=r.children;return e.length&&r.isExpand?e[e.length-1]:r.hierNode.thread}function Ac(r){var e=r.children;return e.length&&r.isExpand?e[0]:r.hierNode.thread}function yG(r,e,t){return r.hierNode.ancestor.parentNode===e.parentNode?r.hierNode.ancestor:t}function mG(r,e,t){var a=t/(e.hierNode.i-r.hierNode.i);e.hierNode.change-=a,e.hierNode.shift+=t,e.hierNode.modifier+=t,e.hierNode.prelim+=t,r.hierNode.change+=a}function _G(r,e){return r.parentNode===e.parentNode?1:2}var SG=function(){function r(){this.parentPoint=[],this.childPoints=[]}return r}(),xG=function(r){N(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new SG},e.prototype.buildPath=function(t,a){var n=a.childPoints,i=n.length,o=a.parentPoint,s=n[0],l=n[i-1];if(i===1){t.moveTo(o[0],o[1]),t.lineTo(s[0],s[1]);return}var u=a.orient,f=u==="TB"||u==="BT"?0:1,h=1-f,v=W(a.forkPosition,1),c=[];c[f]=o[f],c[h]=o[h]+(l[h]-o[h])*v,t.moveTo(o[0],o[1]),t.lineTo(c[0],c[1]),t.moveTo(s[0],s[1]),c[f]=s[f],t.lineTo(c[0],c[1]),c[f]=l[f],t.lineTo(c[0],c[1]),t.lineTo(l[0],l[1]);for(var p=1;pm.x,b||(S=S-Math.PI));var w=b?"left":"right",T=s.getModel("label"),A=T.get("rotate"),C=A*(Math.PI/180),M=g.getTextContent();M&&(g.setTextConfig({position:T.get("position")||w,rotation:A==null?-S:C,origin:"center"}),M.setStyle("verticalAlign","middle"))}var I=s.get(["emphasis","focus"]),L=I==="relative"?lo(o.getAncestorsIndices(),o.getDescendantIndices()):I==="ancestor"?o.getAncestorsIndices():I==="descendant"?o.getDescendantIndices():null;L&&(nt(t).focus=L),wG(n,o,f,t,p,c,d,a),t.__edge&&(t.onHoverStateChange=function(P){if(P!=="blur"){var R=o.parentNode&&r.getItemGraphicEl(o.parentNode.dataIndex);R&&R.hoverState===Cl||wf(t.__edge,P)}})}function wG(r,e,t,a,n,i,o,s){var l=e.getModel(),u=r.get("edgeShape"),f=r.get("layout"),h=r.getOrient(),v=r.get(["lineStyle","curveness"]),c=r.get("edgeForkPosition"),p=l.getModel("lineStyle").getLineStyle(),d=a.__edge;if(u==="curve")e.parentNode&&e.parentNode!==t&&(d||(d=a.__edge=new To({shape:Ed(f,h,v,n,n)})),Tt(d,{shape:Ed(f,h,v,i,o)},r));else if(u==="polyline"&&f==="orthogonal"&&e!==t&&e.children&&e.children.length!==0&&e.isExpand===!0){for(var g=e.children,y=[],m=0;mt&&(t=n.height)}this.height=t+1},r.prototype.getNodeById=function(e){if(this.getId()===e)return this;for(var t=0,a=this.children,n=a.length;t=0&&this.hostTree.data.setItemLayout(this.dataIndex,e,t)},r.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},r.prototype.getModel=function(e){if(!(this.dataIndex<0)){var t=this.hostTree,a=t.data.getItemModel(this.dataIndex);return a.getModel(e)}},r.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},r.prototype.setVisual=function(e,t){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,e,t)},r.prototype.getVisual=function(e){return this.hostTree.data.getItemVisual(this.dataIndex,e)},r.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},r.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},r.prototype.getChildIndex=function(){if(this.parentNode){for(var e=this.parentNode.children,t=0;t=0){var a=t.getData().tree.root,n=r.targetNode;if(Y(n)&&(n=a.getNodeById(n)),n&&a.contains(n))return{node:n};var i=r.targetNodeId;if(i!=null&&(n=a.getNodeById(i)))return{node:n}}}function _M(r){for(var e=[];r;)r=r.parentNode,r&&e.push(r);return e.reverse()}function Wy(r,e){var t=_M(r);return vt(t,e)>=0}function Zh(r,e){for(var t=[];r;){var a=r.dataIndex;t.push({name:r.name,dataIndex:a,value:e.getRawValue(a)}),r=r.parentNode}return t.reverse(),t}var RG=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.hasSymbolVisual=!0,t.ignoreStyleOnData=!0,t}return e.prototype.getInitialData=function(t){var a={name:t.name,children:t.data},n=t.leaves||{},i=new Ct(n,this,this.ecModel),o=Hy.createTree(a,this,s);function s(h){h.wrapMethod("getItemModel",function(v,c){var p=o.getNodeByDataIndex(c);return p&&p.children.length&&p.isExpand||(v.parentModel=i),v})}var l=0;o.eachNode("preorder",function(h){h.depth>l&&(l=h.depth)});var u=t.expandAndCollapse,f=u&&t.initialTreeDepth>=0?t.initialTreeDepth:l;return o.root.eachNode("preorder",function(h){var v=h.hostTree.data.getRawDataItem(h.dataIndex);h.isExpand=v&&v.collapsed!=null?!v.collapsed:h.depth<=f}),o.data},e.prototype.getOrient=function(){var t=this.get("orient");return t==="horizontal"?t="LR":t==="vertical"&&(t="TB"),t},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.formatTooltip=function(t,a,n){for(var i=this.getData().tree,o=i.root.children[0],s=i.getNodeByDataIndex(t),l=s.getValue(),u=s.name;s&&s!==o;)u=s.parentNode.name+"."+u,s=s.parentNode;return se("nameValue",{name:u,value:l,noValue:isNaN(l)||l==null})},e.prototype.getDataParams=function(t){var a=r.prototype.getDataParams.apply(this,arguments),n=this.getData().tree.getNodeByDataIndex(t);return a.treeAncestors=Zh(n,this),a.collapsed=!n.isExpand,a},e.type="series.tree",e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},e}(Et);function EG(r,e,t){for(var a=[r],n=[],i;i=a.pop();)if(n.push(i),i.isExpand){var o=i.children;if(o.length)for(var s=0;s=0;i--)t.push(n[i])}}function kG(r,e){r.eachSeriesByType("tree",function(t){OG(t,e)})}function OG(r,e){var t=pG(r,e);r.layoutInfo=t;var a=r.get("layout"),n=0,i=0,o=null;a==="radial"?(n=2*Math.PI,i=Math.min(t.height,t.width)/2,o=CS(function(_,S){return(_.parentNode===S.parentNode?1:2)/_.depth})):(n=t.width,i=t.height,o=CS());var s=r.getData().tree.root,l=s.children[0];if(l){hG(s),EG(l,vG,o),s.hierNode.modifier=-l.hierNode.prelim,ss(l,cG);var u=l,f=l,h=l;ss(l,function(_){var S=_.getLayout().x;Sf.getLayout().x&&(f=_),_.depth>h.depth&&(h=_)});var v=u===f?1:o(u,f)/2,c=v-u.getLayout().x,p=0,d=0,g=0,y=0;if(a==="radial")p=n/(f.getLayout().x+v+c),d=i/(h.depth-1||1),ss(l,function(_){g=(_.getLayout().x+c)*p,y=(_.depth-1)*d;var S=ws(g,y);_.setLayout({x:S.x,y:S.y,rawX:g,rawY:y},!0)});else{var m=r.getOrient();m==="RL"||m==="LR"?(d=i/(f.getLayout().x+v+c),p=n/(h.depth-1||1),ss(l,function(_){y=(_.getLayout().x+c)*d,g=m==="LR"?(_.depth-1)*p:n-(_.depth-1)*p,_.setLayout({x:g,y},!0)})):(m==="TB"||m==="BT")&&(p=n/(f.getLayout().x+v+c),d=i/(h.depth-1||1),ss(l,function(_){g=(_.getLayout().x+c)*p,y=m==="TB"?(_.depth-1)*d:i-(_.depth-1)*d,_.setLayout({x:g,y},!0)}))}}}function NG(r){r.eachSeriesByType("tree",function(e){var t=e.getData(),a=t.tree;a.eachNode(function(n){var i=n.getModel(),o=i.getModel("itemStyle").getItemStyle(),s=t.ensureUniqueItemVisual(n.dataIndex,"style");V(s,o)})})}function BG(r){r.registerAction({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(e,t){t.eachComponent({mainType:"series",subType:"tree",query:e},function(a){var n=e.dataIndex,i=a.getData().tree,o=i.getNodeByDataIndex(n);o.isExpand=!o.isExpand})}),r.registerAction({type:"treeRoam",event:"treeRoam",update:"none"},function(e,t,a){t.eachComponent({mainType:"series",subType:"tree",query:e},function(n){var i=n.coordinateSystem,o=Gy(i,e,void 0,a);n.setCenter&&n.setCenter(o.center),n.setZoom&&n.setZoom(o.zoom)})})}function VG(r){r.registerChartView(bG),r.registerSeriesModel(RG),r.registerLayout(kG),r.registerVisual(NG),BG(r)}var PS=["treemapZoomToNode","treemapRender","treemapMove"];function zG(r){for(var e=0;e1;)i=i.parentNode;var o=od(r.ecModel,i.name||i.dataIndex+"",a);n.setVisual("decal",o)})}var GG=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.preventUsingHoverLayer=!0,t}return e.prototype.getInitialData=function(t,a){var n={name:t.name,children:t.data};xM(n);var i=t.levels||[],o=this.designatedVisualItemStyle={},s=new Ct({itemStyle:o},this,a);i=t.levels=FG(i,a);var l=G(i||[],function(h){return new Ct(h,s,a)},this),u=Hy.createTree(n,this,f);function f(h){h.wrapMethod("getItemModel",function(v,c){var p=u.getNodeByDataIndex(c),d=p?l[p.depth]:null;return v.parentModel=d||s,v})}return u.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.formatTooltip=function(t,a,n){var i=this.getData(),o=this.getRawValue(t),s=i.getName(t);return se("nameValue",{name:s,value:o})},e.prototype.getDataParams=function(t){var a=r.prototype.getDataParams.apply(this,arguments),n=this.getData().tree.getNodeByDataIndex(t);return a.treeAncestors=Zh(n,this),a.treePathInfo=a.treeAncestors,a},e.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},V(this.layoutInfo,t)},e.prototype.mapIdToIndex=function(t){var a=this._idIndexMap;a||(a=this._idIndexMap=Z(),this._idIndexMapCount=0);var n=a.get(t);return n==null&&a.set(t,n=this._idIndexMapCount++),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var a=this.getRawData().tree.root;(!t||t!==a&&!a.contains(t))&&(this._viewRoot=a)},e.prototype.enableAriaDecal=function(){SM(this)},e.type="series.treemap",e.layoutMode="box",e.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.32*.32,scaleLimit:null,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#fff"}},emphasis:{itemStyle:{color:"rgba(0,0,0,0.9)"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],overflow:"truncate",verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},e}(Et);function xM(r){var e=0;D(r.children,function(a){xM(a);var n=a.value;z(n)&&(n=n[0]),e+=n});var t=r.value;z(t)&&(t=t[0]),(t==null||isNaN(t))&&(t=e),t<0&&(t=0),z(r.value)?r.value[0]=t:r.value=t}function FG(r,e){var t=Rt(e.get("color")),a=Rt(e.get(["aria","decal","decals"]));if(t){r=r||[];var n,i;D(r,function(s){var l=new Ct(s),u=l.get("color"),f=l.get("decal");(l.get(["itemStyle","color"])||u&&u!=="none")&&(n=!0),(l.get(["itemStyle","decal"])||f&&f!=="none")&&(i=!0)});var o=r[0]||(r[0]={});return n||(o.color=t.slice()),!i&&a&&(o.decal=a.slice()),r}}var HG=8,RS=8,Cc=5,WG=function(){function r(e){this.group=new at,e.add(this.group)}return r.prototype.render=function(e,t,a,n){var i=e.getModel("breadcrumb"),o=this.group;if(o.removeAll(),!(!i.get("show")||!a)){var s=i.getModel("itemStyle"),l=i.getModel("emphasis"),u=s.getModel("textStyle"),f=l.getModel(["itemStyle","textStyle"]),h={pos:{left:i.get("left"),right:i.get("right"),top:i.get("top"),bottom:i.get("bottom")},box:{width:t.getWidth(),height:t.getHeight()},emptyItemWidth:i.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(a,h,u),this._renderContent(e,h,s,l,u,f,n),kh(o,h.pos,h.box)}},r.prototype._prepare=function(e,t,a){for(var n=e;n;n=n.parentNode){var i=Qt(n.getModel().get("name"),""),o=a.getTextRect(i),s=Math.max(o.width+HG*2,t.emptyItemWidth);t.totalWidth+=s+RS,t.renderList.push({node:n,text:i,width:s})}},r.prototype._renderContent=function(e,t,a,n,i,o,s){for(var l=0,u=t.emptyItemWidth,f=e.get(["breadcrumb","height"]),h=OE(t.pos,t.box),v=t.totalWidth,c=t.renderList,p=n.getModel("itemStyle").getItemStyle(),d=c.length-1;d>=0;d--){var g=c[d],y=g.node,m=g.width,_=g.text;v>h.width&&(v-=m-u,m=u,_=null);var S=new Te({shape:{points:UG(l,0,m,f,d===c.length-1,d===0)},style:J(a.getItemStyle(),{lineJoin:"bevel"}),textContent:new St({style:Nt(i,{text:_})}),textConfig:{position:"inside"},z2:bo*1e4,onclick:lt(s,y)});S.disableLabelAnimation=!0,S.getTextContent().ensureState("emphasis").style=Nt(o,{text:_}),S.ensureState("emphasis").style=p,Wt(S,n.get("focus"),n.get("blurScope"),n.get("disabled")),this.group.add(S),YG(S,e,y),l+=m+RS}},r.prototype.remove=function(){this.group.removeAll()},r}();function UG(r,e,t,a,n,i){var o=[[n?r:r-Cc,e],[r+t,e],[r+t,e+a],[n?r:r-Cc,e+a]];return!i&&o.splice(2,0,[r+t+Cc,e+a/2]),!n&&o.push([r,e+a/2]),o}function YG(r,e,t){nt(r).eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.seriesIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:t&&t.dataIndex,name:t&&t.name},treePathInfo:t&&Zh(t,e)}}var XG=function(){function r(){this._storage=[],this._elExistsMap={}}return r.prototype.add=function(e,t,a,n,i){return this._elExistsMap[e.id]?!1:(this._elExistsMap[e.id]=!0,this._storage.push({el:e,target:t,duration:a,delay:n,easing:i}),!0)},r.prototype.finished=function(e){return this._finishedCallback=e,this},r.prototype.start=function(){for(var e=this,t=this._storage.length,a=function(){t--,t<=0&&(e._storage.length=0,e._elExistsMap={},e._finishedCallback&&e._finishedCallback())},n=0,i=this._storage.length;nkS||Math.abs(t.dy)>kS)){var a=this.seriesModel.getData().tree.root;if(!a)return;var n=a.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},e.prototype._onZoom=function(t){var a=t.originX,n=t.originY,i=t.scale;if(this._state!=="animating"){var o=this.seriesModel.getData().tree.root;if(!o)return;var s=o.getLayout();if(!s)return;var l=new ht(s.x,s.y,s.width,s.height),u=null,f=this._controllerHost;u=f.zoomLimit;var h=f.zoom=f.zoom||1;if(h*=i,u){var v=u.min||0,c=u.max||1/0;h=Math.max(Math.min(c,h),v)}var p=h/f.zoom;f.zoom=h;var d=this.seriesModel.layoutInfo;a-=d.x,n-=d.y;var g=Fe();Ir(g,g,[-a,-n]),dh(g,g,[p,p]),Ir(g,g,[a,n]),l.applyTransform(g),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:l.x,y:l.y,width:l.width,height:l.height}})}},e.prototype._initEvents=function(t){var a=this;t.on("click",function(n){if(a._state==="ready"){var i=a.seriesModel.get("nodeClick",!0);if(i){var o=a.findTarget(n.offsetX,n.offsetY);if(o){var s=o.node;if(s.getLayout().isLeafRoot)a._rootToNode(o);else if(i==="zoomToNode")a._zoomToNode(o);else if(i==="link"){var l=s.hostTree.data.getItemModel(s.dataIndex),u=l.get("link",!0),f=l.get("target",!0)||"blank";u&&If(u,f)}}}}},this)},e.prototype._renderBreadcrumb=function(t,a,n){var i=this;n||(n=t.get("leafDepth",!0)!=null?{node:t.getViewRoot()}:this.findTarget(a.getWidth()/2,a.getHeight()/2),n||(n={node:t.getData().tree.root})),(this._breadcrumb||(this._breadcrumb=new WG(this.group))).render(t,a,n.node,function(o){i._state!=="animating"&&(Wy(t.getViewRoot(),o)?i._rootToNode({node:o}):i._zoomToNode({node:o}))})},e.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage=ls(),this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},e.prototype.dispose=function(){this._clearController()},e.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype.findTarget=function(t,a){var n,i=this.seriesModel.getViewRoot();return i.eachNode({attr:"viewChildren",order:"preorder"},function(o){var s=this._storage.background[o.getRawIndex()];if(s){var l=s.transformCoordToLocal(t,a),u=s.shape;if(u.x<=l[0]&&l[0]<=u.x+u.width&&u.y<=l[1]&&l[1]<=u.y+u.height)n={node:o,offsetX:l[0],offsetY:l[1]};else return!1}},this),n},e.type="treemap",e}(Lt);function ls(){return{nodeGroup:[],background:[],content:[]}}function JG(r,e,t,a,n,i,o,s,l,u){if(!o)return;var f=o.getLayout(),h=r.getData(),v=o.getModel();if(h.setItemGraphicEl(o.dataIndex,null),!f||!f.isInView)return;var c=f.width,p=f.height,d=f.borderWidth,g=f.invisible,y=o.getRawIndex(),m=s&&s.getRawIndex(),_=o.viewChildren,S=f.upperHeight,b=_&&_.length,x=v.getModel("itemStyle"),w=v.getModel(["emphasis","itemStyle"]),T=v.getModel(["blur","itemStyle"]),A=v.getModel(["select","itemStyle"]),C=x.get("borderRadius")||0,M=it("nodeGroup",kd);if(!M)return;if(l.add(M),M.x=f.x||0,M.y=f.y||0,M.markRedraw(),$f(M).nodeWidth=c,$f(M).nodeHeight=p,f.isAboveViewRoot)return M;var I=it("background",ES,u,qG);I&&F(M,I,b&&f.upperLabelHeight);var L=v.getModel("emphasis"),P=L.get("focus"),R=L.get("blurScope"),E=L.get("disabled"),O=P==="ancestor"?o.getAncestorsIndices():P==="descendant"?o.getDescendantIndices():P;if(b)Qs(M)&&Xn(M,!1),I&&(Xn(I,!E),h.setItemGraphicEl(o.dataIndex,I),Jp(I,O,R));else{var k=it("content",ES,u,KG);k&&H(M,k),I.disableMorphing=!0,I&&Qs(I)&&Xn(I,!1),Xn(M,!E),h.setItemGraphicEl(o.dataIndex,M);var B=v.getShallow("cursor");B&&k.attr("cursor",B),Jp(M,O,R)}return M;function F(ct,et,dt){var q=nt(et);if(q.dataIndex=o.dataIndex,q.seriesIndex=r.seriesIndex,et.setShape({x:0,y:0,width:c,height:p,r:C}),g)U(et);else{et.invisible=!1;var ot=o.getVisual("style"),Bt=ot.stroke,It=BS(x);It.fill=Bt;var kt=Nn(w);kt.fill=w.get("borderColor");var Ht=Nn(T);Ht.fill=T.get("borderColor");var ee=Nn(A);if(ee.fill=A.get("borderColor"),dt){var He=c-2*d;j(et,Bt,ot.opacity,{x:d,y:0,width:He,height:S})}else et.removeTextContent();et.setStyle(It),et.ensureState("emphasis").style=kt,et.ensureState("blur").style=Ht,et.ensureState("select").style=ee,ui(et)}ct.add(et)}function H(ct,et){var dt=nt(et);dt.dataIndex=o.dataIndex,dt.seriesIndex=r.seriesIndex;var q=Math.max(c-2*d,0),ot=Math.max(p-2*d,0);if(et.culling=!0,et.setShape({x:d,y:d,width:q,height:ot,r:C}),g)U(et);else{et.invisible=!1;var Bt=o.getVisual("style"),It=Bt.fill,kt=BS(x);kt.fill=It,kt.decal=Bt.decal;var Ht=Nn(w),ee=Nn(T),He=Nn(A);j(et,It,Bt.opacity,null),et.setStyle(kt),et.ensureState("emphasis").style=Ht,et.ensureState("blur").style=ee,et.ensureState("select").style=He,ui(et)}ct.add(et)}function U(ct){!ct.invisible&&i.push(ct)}function j(ct,et,dt,q){var ot=v.getModel(q?NS:OS),Bt=Qt(v.get("name"),null),It=ot.getShallow("show");pe(ct,oe(v,q?NS:OS),{defaultText:It?Bt:null,inheritColor:et,defaultOpacity:dt,labelFetcher:r,labelDataIndex:o.dataIndex});var kt=ct.getTextContent();if(kt){var Ht=kt.style,ee=ch(Ht.padding||0);q&&(ct.setTextConfig({layoutRect:q}),kt.disableLabelLayout=!0),kt.beforeUpdate=function(){var Oe=Math.max((q?q.width:ct.shape.width)-ee[1]-ee[3],0),un=Math.max((q?q.height:ct.shape.height)-ee[0]-ee[2],0);(Ht.width!==Oe||Ht.height!==un)&&kt.setStyle({width:Oe,height:un})},Ht.truncateMinChar=2,Ht.lineOverflow="truncate",Q(Ht,q,f);var He=kt.getState("emphasis");Q(He?He.style:null,q,f)}}function Q(ct,et,dt){var q=ct?ct.text:null;if(!et&&dt.isLeafRoot&&q!=null){var ot=r.get("drillDownIcon",!0);ct.text=ot?ot+" "+q:q}}function it(ct,et,dt,q){var ot=m!=null&&t[ct][m],Bt=n[ct];return ot?(t[ct][m]=null,Pt(Bt,ot)):g||(ot=new et,ot instanceof fr&&(ot.z2=QG(dt,q)),Yt(Bt,ot)),e[ct][y]=ot}function Pt(ct,et){var dt=ct[y]={};et instanceof kd?(dt.oldX=et.x,dt.oldY=et.y):dt.oldShape=V({},et.shape)}function Yt(ct,et){var dt=ct[y]={},q=o.parentNode,ot=et instanceof at;if(q&&(!a||a.direction==="drillDown")){var Bt=0,It=0,kt=n.background[q.getRawIndex()];!a&&kt&&kt.oldShape&&(Bt=kt.oldShape.width,It=kt.oldShape.height),ot?(dt.oldX=0,dt.oldY=It):dt.oldShape={x:Bt,y:It,width:0,height:0}}dt.fadein=!ot}}function QG(r,e){return r*ZG+e}var cl=D,tF=tt,Zf=-1,ie=function(){function r(e){var t=e.mappingMethod,a=e.type,n=this.option=rt(e);this.type=a,this.mappingMethod=t,this._normalizeData=aF[t];var i=r.visualHandlers[a];this.applyVisual=i.applyVisual,this.getColorMapper=i.getColorMapper,this._normalizedToVisual=i._normalizedToVisual[t],t==="piecewise"?(Dc(n),eF(n)):t==="category"?n.categories?rF(n):Dc(n,!0):(be(t!=="linear"||n.dataExtent),Dc(n))}return r.prototype.mapValueToVisual=function(e){var t=this._normalizeData(e);return this._normalizedToVisual(t,e)},r.prototype.getNormalizer=function(){return X(this._normalizeData,this)},r.listVisualTypes=function(){return _t(r.visualHandlers)},r.isValidType=function(e){return r.visualHandlers.hasOwnProperty(e)},r.eachVisual=function(e,t,a){tt(e)?D(e,t,a):t.call(a,e)},r.mapVisual=function(e,t,a){var n,i=z(e)?[]:tt(e)?{}:(n=!0,null);return r.eachVisual(e,function(o,s){var l=t.call(a,o,s);n?i=l:i[s]=l}),i},r.retrieveVisuals=function(e){var t={},a;return e&&cl(r.visualHandlers,function(n,i){e.hasOwnProperty(i)&&(t[i]=e[i],a=!0)}),a?t:null},r.prepareVisualTypes=function(e){if(z(e))e=e.slice();else if(tF(e)){var t=[];cl(e,function(a,n){t.push(n)}),e=t}else return[];return e.sort(function(a,n){return n==="color"&&a!=="color"&&a.indexOf("color")===0?1:-1}),e},r.dependsOn=function(e,t){return t==="color"?!!(e&&e.indexOf(t)===0):e===t},r.findPieceIndex=function(e,t,a){for(var n,i=1/0,o=0,s=t.length;o=0;i--)a[i]==null&&(delete t[e[i]],e.pop())}function Dc(r,e){var t=r.visual,a=[];tt(t)?cl(t,function(i){a.push(i)}):t!=null&&a.push(t);var n={color:1,symbol:1};!e&&a.length===1&&!n.hasOwnProperty(r.type)&&(a[1]=a[0]),bM(r,a)}function Lu(r){return{applyVisual:function(e,t,a){var n=this.mapValueToVisual(e);a("color",r(t("color"),n))},_normalizedToVisual:Od([0,1])}}function VS(r){var e=this.option.visual;return e[Math.round(Dt(r,[0,1],[0,e.length-1],!0))]||{}}function us(r){return function(e,t,a){a(r,this.mapValueToVisual(e))}}function Ts(r){var e=this.option.visual;return e[this.option.loop&&r!==Zf?r%e.length:r]}function Bn(){return this.option.visual[0]}function Od(r){return{linear:function(e){return Dt(e,r,this.option.visual,!0)},category:Ts,piecewise:function(e,t){var a=Nd.call(this,t);return a==null&&(a=Dt(e,r,this.option.visual,!0)),a},fixed:Bn}}function Nd(r){var e=this.option,t=e.pieceList;if(e.hasSpecialVisual){var a=ie.findPieceIndex(r,t),n=t[a];if(n&&n.visual)return n.visual[this.type]}}function bM(r,e){return r.visual=e,r.type==="color"&&(r.parsedVisual=G(e,function(t){var a=Pe(t);return a||[0,0,0,1]})),e}var aF={linear:function(r){return Dt(r,this.option.dataExtent,[0,1],!0)},piecewise:function(r){var e=this.option.pieceList,t=ie.findPieceIndex(r,e,!0);if(t!=null)return Dt(t,[0,e.length-1],[0,1],!0)},category:function(r){var e=this.option.categories?this.option.categoryMap[r]:r;return e??Zf},fixed:Xt};function Pu(r,e,t){return r?e<=t:e=t.length||d===t[d.depth]){var y=uF(n,l,d,g,p,a);TM(d,y,t,a)}})}}}function oF(r,e,t){var a=V({},e),n=t.designatedVisualItemStyle;return D(["color","colorAlpha","colorSaturation"],function(i){n[i]=e[i];var o=r.get(i);n[i]=null,o!=null&&(a[i]=o)}),a}function zS(r){var e=Mc(r,"color");if(e){var t=Mc(r,"colorAlpha"),a=Mc(r,"colorSaturation");return a&&(e=eo(e,null,null,a)),t&&(e=Zs(e,t)),e}}function sF(r,e){return e!=null?eo(e,null,null,r):null}function Mc(r,e){var t=r[e];if(t!=null&&t!=="none")return t}function lF(r,e,t,a,n,i){if(!(!i||!i.length)){var o=Ic(e,"color")||n.color!=null&&n.color!=="none"&&(Ic(e,"colorAlpha")||Ic(e,"colorSaturation"));if(o){var s=e.get("visualMin"),l=e.get("visualMax"),u=t.dataExtent.slice();s!=null&&su[1]&&(u[1]=l);var f=e.get("colorMappingBy"),h={type:o.name,dataExtent:u,visual:o.range};h.type==="color"&&(f==="index"||f==="id")?(h.mappingMethod="category",h.loop=!0):h.mappingMethod="linear";var v=new ie(h);return wM(v).drColorMappingBy=f,v}}}function Ic(r,e){var t=r.get(e);return z(t)&&t.length?{name:e,range:t}:null}function uF(r,e,t,a,n,i){var o=V({},e);if(n){var s=n.type,l=s==="color"&&wM(n).drColorMappingBy,u=l==="index"?a:l==="id"?i.mapIdToIndex(t.getId()):t.getValue(r.get("visualDimension"));o[s]=n.mapValueToVisual(u)}return o}var pl=Math.max,qf=Math.min,GS=ae,Uy=D,AM=["itemStyle","borderWidth"],fF=["itemStyle","gapWidth"],hF=["upperLabel","show"],vF=["upperLabel","height"];const cF={seriesType:"treemap",reset:function(r,e,t,a){var n=t.getWidth(),i=t.getHeight(),o=r.option,s=Jt(r.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),l=o.size||[],u=W(GS(s.width,l[0]),n),f=W(GS(s.height,l[1]),i),h=a&&a.type,v=["treemapZoomToNode","treemapRootToNode"],c=vl(a,v,r),p=h==="treemapRender"||h==="treemapMove"?a.rootRect:null,d=r.getViewRoot(),g=_M(d);if(h!=="treemapMove"){var y=h==="treemapZoomToNode"?_F(r,c,d,u,f):p?[p.width,p.height]:[u,f],m=o.sort;m&&m!=="asc"&&m!=="desc"&&(m="desc");var _={squareRatio:o.squareRatio,sort:m,leafDepth:o.leafDepth};d.hostTree.clearLayouts();var S={x:0,y:0,width:y[0],height:y[1],area:y[0]*y[1]};d.setLayout(S),CM(d,_,!1,0),S=d.getLayout(),Uy(g,function(x,w){var T=(g[w+1]||d).getValue();x.setLayout(V({dataExtent:[T,T],borderWidth:0,upperHeight:0},S))})}var b=r.getData().tree.root;b.setLayout(SF(s,p,c),!0),r.setLayoutInfo(s),DM(b,new ht(-s.x,-s.y,n,i),g,d,0)}};function CM(r,e,t,a){var n,i;if(!r.isRemoved()){var o=r.getLayout();n=o.width,i=o.height;var s=r.getModel(),l=s.get(AM),u=s.get(fF)/2,f=MM(s),h=Math.max(l,f),v=l-u,c=h-u;r.setLayout({borderWidth:l,upperHeight:h,upperLabelHeight:f},!0),n=pl(n-2*v,0),i=pl(i-v-c,0);var p=n*i,d=pF(r,s,p,e,t,a);if(d.length){var g={x:v,y:c,width:n,height:i},y=qf(n,i),m=1/0,_=[];_.area=0;for(var S=0,b=d.length;S=0;l--){var u=n[a==="asc"?o-l-1:l].getValue();u/t*es[1]&&(s[1]=u)})),{sum:a,dataExtent:s}}function mF(r,e,t){for(var a=0,n=1/0,i=0,o=void 0,s=r.length;ia&&(a=o));var l=r.area*r.area,u=e*e*t;return l?pl(u*a/l,l/(u*n)):1/0}function FS(r,e,t,a,n){var i=e===t.width?0:1,o=1-i,s=["x","y"],l=["width","height"],u=t[s[i]],f=e?r.area/e:0;(n||f>t[l[o]])&&(f=t[l[o]]);for(var h=0,v=r.length;hWp&&(u=Wp),i=s}ua&&(a=e);var i=a%2?a+2:a+3;n=[];for(var o=0;o0&&(b[0]=-b[0],b[1]=-b[1]);var w=S[0]<0?-1:1;if(i.__position!=="start"&&i.__position!=="end"){var T=-Math.atan2(S[1],S[0]);h[0].8?"left":v[0]<-.8?"right":"center",d=v[1]>.8?"top":v[1]<-.8?"bottom":"middle";break;case"start":i.x=-v[0]*y+f[0],i.y=-v[1]*m+f[1],p=v[0]>.8?"right":v[0]<-.8?"left":"center",d=v[1]>.8?"bottom":v[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":i.x=y*w+f[0],i.y=f[1]+A,p=S[0]<0?"right":"left",i.originX=-y*w,i.originY=-A;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":i.x=x[0],i.y=x[1]+A,p="center",i.originY=-A;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":i.x=-y*w+h[0],i.y=h[1]+A,p=S[0]>=0?"right":"left",i.originX=y*w,i.originY=-A;break}i.scaleX=i.scaleY=o,i.setStyle({verticalAlign:i.__verticalAlign||d,align:i.__align||p})}},e}(at),qy=function(){function r(e){this.group=new at,this._LineCtor=e||Zy}return r.prototype.updateData=function(e){var t=this;this._progressiveEls=null;var a=this,n=a.group,i=a._lineData;a._lineData=e,i||n.removeAll();var o=$S(e);e.diff(i).add(function(s){t._doAdd(e,s,o)}).update(function(s,l){t._doUpdate(i,e,l,s,o)}).remove(function(s){n.remove(i.getItemGraphicEl(s))}).execute()},r.prototype.updateLayout=function(){var e=this._lineData;e&&e.eachItemGraphicEl(function(t,a){t.updateLayout(e,a)},this)},r.prototype.incrementalPrepareUpdate=function(e){this._seriesScope=$S(e),this._lineData=null,this.group.removeAll()},r.prototype.incrementalUpdate=function(e,t){this._progressiveEls=[];function a(s){!s.isGroup&&!VF(s)&&(s.incremental=!0,s.ensureState("emphasis").hoverLayer=!0)}for(var n=e.start;n0}function $S(r){var e=r.hostModel,t=e.getModel("emphasis");return{lineStyle:e.getModel("lineStyle").getLineStyle(),emphasisLineStyle:t.getModel(["lineStyle"]).getLineStyle(),blurLineStyle:e.getModel(["blur","lineStyle"]).getLineStyle(),selectLineStyle:e.getModel(["select","lineStyle"]).getLineStyle(),emphasisDisabled:t.get("disabled"),blurScope:t.get("blurScope"),focus:t.get("focus"),labelStatesModels:oe(e)}}function ZS(r){return isNaN(r[0])||isNaN(r[1])}function kc(r){return r&&!ZS(r[0])&&!ZS(r[1])}var Oc=[],Nc=[],Bc=[],Vi=ue,Vc=Ua,qS=Math.abs;function KS(r,e,t){for(var a=r[0],n=r[1],i=r[2],o=1/0,s,l=t*t,u=.1,f=.1;f<=.9;f+=.1){Oc[0]=Vi(a[0],n[0],i[0],f),Oc[1]=Vi(a[1],n[1],i[1],f);var h=qS(Vc(Oc,e)-l);h=0?s=s+u:s=s-u:p>=0?s=s-u:s=s+u}return s}function zc(r,e){var t=[],a=Xs,n=[[],[],[]],i=[[],[]],o=[];e/=2,r.eachEdge(function(s,l){var u=s.getLayout(),f=s.getVisual("fromSymbol"),h=s.getVisual("toSymbol");u.__original||(u.__original=[Xr(u[0]),Xr(u[1])],u[2]&&u.__original.push(Xr(u[2])));var v=u.__original;if(u[2]!=null){if(me(n[0],v[0]),me(n[1],v[2]),me(n[2],v[1]),f&&f!=="none"){var c=Cs(s.node1),p=KS(n,v[0],c*e);a(n[0][0],n[1][0],n[2][0],p,t),n[0][0]=t[3],n[1][0]=t[4],a(n[0][1],n[1][1],n[2][1],p,t),n[0][1]=t[3],n[1][1]=t[4]}if(h&&h!=="none"){var c=Cs(s.node2),p=KS(n,v[1],c*e);a(n[0][0],n[1][0],n[2][0],p,t),n[1][0]=t[1],n[2][0]=t[2],a(n[0][1],n[1][1],n[2][1],p,t),n[1][1]=t[1],n[2][1]=t[2]}me(u[0],n[0]),me(u[1],n[2]),me(u[2],n[1])}else{if(me(i[0],v[0]),me(i[1],v[1]),Ba(o,i[1],i[0]),pi(o,o),f&&f!=="none"){var c=Cs(s.node1);cf(i[0],i[0],o,c*e)}if(h&&h!=="none"){var c=Cs(s.node2);cf(i[1],i[1],o,-c*e)}me(u[0],i[0]),me(u[1],i[1])}})}function jS(r){return r.type==="view"}var zF=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a){var n=new Ol,i=new qy,o=this.group;this._controller=new Gl(a.getZr()),this._controllerHost={target:o},o.add(n.group),o.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},e.prototype.render=function(t,a,n){var i=this,o=t.coordinateSystem;this._model=t;var s=this._symbolDraw,l=this._lineDraw,u=this.group;if(jS(o)){var f={x:o.x,y:o.y,scaleX:o.scaleX,scaleY:o.scaleY};this._firstRender?u.attr(f):Tt(u,f,t)}zc(t.getGraph(),As(t));var h=t.getData();s.updateData(h);var v=t.getEdgeData();l.updateData(v),this._updateNodeAndLinkScale(),this._updateController(t,a,n),clearTimeout(this._layoutTimeout);var c=t.forceLayout,p=t.get(["force","layoutAnimation"]);c&&this._startForceLayoutIteration(c,p);var d=t.get("layout");h.graph.eachNode(function(_){var S=_.dataIndex,b=_.getGraphicEl(),x=_.getModel();if(b){b.off("drag").off("dragend");var w=x.get("draggable");w&&b.on("drag",function(A){switch(d){case"force":c.warmUp(),!i._layouting&&i._startForceLayoutIteration(c,p),c.setFixed(S),h.setItemLayout(S,[b.x,b.y]);break;case"circular":h.setItemLayout(S,[b.x,b.y]),_.setLayout({fixed:!0},!0),$y(t,"symbolSize",_,[A.offsetX,A.offsetY]),i.updateLayout(t);break;case"none":default:h.setItemLayout(S,[b.x,b.y]),Xy(t.getGraph(),t),i.updateLayout(t);break}}).on("dragend",function(){c&&c.setUnfixed(S)}),b.setDraggable(w,!!x.get("cursor"));var T=x.get(["emphasis","focus"]);T==="adjacency"&&(nt(b).focus=_.getAdjacentDataIndices())}}),h.graph.eachEdge(function(_){var S=_.getGraphicEl(),b=_.getModel().get(["emphasis","focus"]);S&&b==="adjacency"&&(nt(S).focus={edge:[_.dataIndex],node:[_.node1.dataIndex,_.node2.dataIndex]})});var g=t.get("layout")==="circular"&&t.get(["circular","rotateLabel"]),y=h.getLayout("cx"),m=h.getLayout("cy");h.graph.eachNode(function(_){RM(_,g,y,m)}),this._firstRender=!1},e.prototype.dispose=function(){this.remove(),this._controller&&this._controller.dispose(),this._controllerHost=null},e.prototype._startForceLayoutIteration=function(t,a){var n=this;(function i(){t.step(function(o){n.updateLayout(n._model),(n._layouting=!o)&&(a?n._layoutTimeout=setTimeout(i,16):i())})})()},e.prototype._updateController=function(t,a,n){var i=this,o=this._controller,s=this._controllerHost,l=this.group;if(o.setPointerChecker(function(u,f,h){var v=l.getBoundingRect();return v.applyTransform(l.transform),v.contain(f,h)&&!Xh(u,n,t)}),!jS(t.coordinateSystem)){o.disable();return}o.enable(t.get("roam")),s.zoomLimit=t.get("scaleLimit"),s.zoom=t.coordinateSystem.getZoom(),o.off("pan").off("zoom").on("pan",function(u){By(s,u.dx,u.dy),n.dispatchAction({seriesId:t.id,type:"graphRoam",dx:u.dx,dy:u.dy})}).on("zoom",function(u){Vy(s,u.scale,u.originX,u.originY),n.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:u.scale,originX:u.originX,originY:u.originY}),i._updateNodeAndLinkScale(),zc(t.getGraph(),As(t)),i._lineDraw.updateLayout(),n.updateLabelLayout()})},e.prototype._updateNodeAndLinkScale=function(){var t=this._model,a=t.getData(),n=As(t);a.eachItemGraphicEl(function(i,o){i&&i.setSymbolScale(n)})},e.prototype.updateLayout=function(t){zc(t.getGraph(),As(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},e.prototype.remove=function(){clearTimeout(this._layoutTimeout),this._layouting=!1,this._layoutTimeout=null,this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()},e.type="graph",e}(Lt);function zi(r){return"_EC_"+r}var GF=function(){function r(e){this.type="graph",this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this._directed=e||!1}return r.prototype.isDirected=function(){return this._directed},r.prototype.addNode=function(e,t){e=e==null?""+t:""+e;var a=this._nodesMap;if(!a[zi(e)]){var n=new Vn(e,t);return n.hostGraph=this,this.nodes.push(n),a[zi(e)]=n,n}},r.prototype.getNodeByIndex=function(e){var t=this.data.getRawIndex(e);return this.nodes[t]},r.prototype.getNodeById=function(e){return this._nodesMap[zi(e)]},r.prototype.addEdge=function(e,t,a){var n=this._nodesMap,i=this._edgesMap;if(wt(e)&&(e=this.nodes[e]),wt(t)&&(t=this.nodes[t]),e instanceof Vn||(e=n[zi(e)]),t instanceof Vn||(t=n[zi(t)]),!(!e||!t)){var o=e.id+"-"+t.id,s=new kM(e,t,a);return s.hostGraph=this,this._directed&&(e.outEdges.push(s),t.inEdges.push(s)),e.edges.push(s),e!==t&&t.edges.push(s),this.edges.push(s),i[o]=s,s}},r.prototype.getEdgeByIndex=function(e){var t=this.edgeData.getRawIndex(e);return this.edges[t]},r.prototype.getEdge=function(e,t){e instanceof Vn&&(e=e.id),t instanceof Vn&&(t=t.id);var a=this._edgesMap;return this._directed?a[e+"-"+t]:a[e+"-"+t]||a[t+"-"+e]},r.prototype.eachNode=function(e,t){for(var a=this.nodes,n=a.length,i=0;i=0&&e.call(t,a[i],i)},r.prototype.eachEdge=function(e,t){for(var a=this.edges,n=a.length,i=0;i=0&&a[i].node1.dataIndex>=0&&a[i].node2.dataIndex>=0&&e.call(t,a[i],i)},r.prototype.breadthFirstTraverse=function(e,t,a,n){if(t instanceof Vn||(t=this._nodesMap[zi(t)]),!!t){for(var i=a==="out"?"outEdges":a==="in"?"inEdges":"edges",o=0;o=0&&l.node2.dataIndex>=0});for(var i=0,o=n.length;i=0&&this[r][e].setItemVisual(this.dataIndex,t,a)},getVisual:function(t){return this[r][e].getItemVisual(this.dataIndex,t)},setLayout:function(t,a){this.dataIndex>=0&&this[r][e].setItemLayout(this.dataIndex,t,a)},getLayout:function(){return this[r][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[r][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[r][e].getRawIndex(this.dataIndex)}}}$t(Vn,OM("hostGraph","data"));$t(kM,OM("hostGraph","edgeData"));function NM(r,e,t,a,n){for(var i=new GF(a),o=0;o "+v)),u++)}var c=t.get("coordinateSystem"),p;if(c==="cartesian2d"||c==="polar")p=ea(r,t);else{var d=Ro.get(c),g=d?d.dimensions||[]:[];vt(g,"value")<0&&g.concat(["value"]);var y=No(r,{coordDimensions:g,encodeDefine:t.getEncode()}).dimensions;p=new xe(y,t),p.initData(r)}var m=new xe(["value"],t);return m.initData(l,s),n&&n(p,m),yM({mainData:p,struct:i,structAttr:"graph",datas:{node:p,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),i.update(),i}var FF=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.hasSymbolVisual=!0,t}return e.prototype.init=function(t){r.prototype.init.apply(this,arguments);var a=this;function n(){return a._categoriesData}this.legendVisualProvider=new zl(n,n),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},e.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},e.prototype.mergeDefaultAndTheme=function(t){r.prototype.mergeDefaultAndTheme.apply(this,arguments),oi(t,"edgeLabel",["show"])},e.prototype.getInitialData=function(t,a){var n=t.edges||t.links||[],i=t.data||t.nodes||[],o=this;if(i&&n){DF(this);var s=NM(i,n,this,!0,l);return D(s.edges,function(u){MF(u.node1,u.node2,this,u.dataIndex)},this),s.data}function l(u,f){u.wrapMethod("getItemModel",function(p){var d=o._categoriesModels,g=p.getShallow("category"),y=d[g];return y&&(y.parentModel=p.parentModel,p.parentModel=y),p});var h=Ct.prototype.getModel;function v(p,d){var g=h.call(this,p,d);return g.resolveParentPath=c,g}f.wrapMethod("getItemModel",function(p){return p.resolveParentPath=c,p.getModel=v,p});function c(p){if(p&&(p[0]==="label"||p[1]==="label")){var d=p.slice();return p[0]==="label"?d[0]="edgeLabel":p[1]==="label"&&(d[1]="edgeLabel"),d}return p}}},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.getCategoriesData=function(){return this._categoriesData},e.prototype.formatTooltip=function(t,a,n){if(n==="edge"){var i=this.getData(),o=this.getDataParams(t,n),s=i.graph.getEdgeByIndex(t),l=i.getName(s.node1.dataIndex),u=i.getName(s.node2.dataIndex),f=[];return l!=null&&f.push(l),u!=null&&f.push(u),se("nameValue",{name:f.join(" > "),value:o.value,noValue:o.value==null})}var h=aC({series:this,dataIndex:t,multipleSeries:a});return h},e.prototype._updateCategoriesData=function(){var t=G(this.option.categories||[],function(n){return n.value!=null?n:V({value:0},n)}),a=new xe(["value"],this);a.initData(t),this._categoriesData=a,this._categoriesModels=a.mapArray(function(n){return a.getItemModel(n)})},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.isAnimationEnabled=function(){return r.prototype.isAnimationEnabled.call(this)&&!(this.get("layout")==="force"&&this.get(["force","layoutAnimation"]))},e.type="series.graph",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(Et),HF={type:"graphRoam",event:"graphRoam",update:"none"};function WF(r){r.registerChartView(zF),r.registerSeriesModel(FF),r.registerProcessor(bF),r.registerVisual(wF),r.registerVisual(TF),r.registerLayout(IF),r.registerLayout(r.PRIORITY.VISUAL.POST_CHART_LAYOUT,PF),r.registerLayout(EF),r.registerCoordinateSystem("graphView",{dimensions:Fl.dimensions,create:OF}),r.registerAction({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series:focusNodeAdjacency"},Xt),r.registerAction({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series:unfocusNodeAdjacency"},Xt),r.registerAction(HF,function(e,t,a){t.eachComponent({mainType:"series",query:e},function(n){var i=n.coordinateSystem,o=Gy(i,e,void 0,a);n.setCenter&&n.setCenter(o.center),n.setZoom&&n.setZoom(o.zoom)})})}var UF=function(){function r(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0}return r}(),YF=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a.type="pointer",a}return e.prototype.getDefaultShape=function(){return new UF},e.prototype.buildPath=function(t,a){var n=Math.cos,i=Math.sin,o=a.r,s=a.width,l=a.angle,u=a.x-n(l)*s*(s>=o/3?1:2),f=a.y-i(l)*s*(s>=o/3?1:2);l=a.angle-Math.PI/2,t.moveTo(u,f),t.lineTo(a.x+n(l)*s,a.y+i(l)*s),t.lineTo(a.x+n(a.angle)*o,a.y+i(a.angle)*o),t.lineTo(a.x-n(l)*s,a.y-i(l)*s),t.lineTo(u,f)},e}(mt);function XF(r,e){var t=r.get("center"),a=e.getWidth(),n=e.getHeight(),i=Math.min(a,n),o=W(t[0],e.getWidth()),s=W(t[1],e.getHeight()),l=W(r.get("radius"),i/2);return{cx:o,cy:s,r:l}}function Eu(r,e){var t=r==null?"":r+"";return e&&(Y(e)?t=e.replace("{value}",t):K(e)&&(t=e(r))),t}var $F=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){this.group.removeAll();var i=t.get(["axisLine","lineStyle","color"]),o=XF(t,n);this._renderMain(t,a,n,i,o),this._data=t.getData()},e.prototype.dispose=function(){},e.prototype._renderMain=function(t,a,n,i,o){var s=this.group,l=t.get("clockwise"),u=-t.get("startAngle")/180*Math.PI,f=-t.get("endAngle")/180*Math.PI,h=t.getModel("axisLine"),v=h.get("roundCap"),c=v?Uf:we,p=h.get("show"),d=h.getModel("lineStyle"),g=d.get("width"),y=[u,f];Pg(y,!l),u=y[0],f=y[1];for(var m=f-u,_=u,S=[],b=0;p&&b=A&&(C===0?0:i[C-1][0])Math.PI/2&&(Q+=Math.PI)):j==="tangential"?Q=-T-Math.PI/2:wt(j)&&(Q=j*Math.PI/180),Q===0?h.add(new St({style:Nt(_,{text:B,x:H,y:U,verticalAlign:R<-.8?"top":R>.8?"bottom":"middle",align:P<-.4?"left":P>.4?"right":"center"},{inheritColor:F}),silent:!0})):h.add(new St({style:Nt(_,{text:B,x:H,y:U,verticalAlign:"middle",align:"center"},{inheritColor:F}),silent:!0,originX:H,originY:U,rotation:Q}))}if(m.get("show")&&E!==S){var O=m.get("distance");O=O?O+f:f;for(var it=0;it<=b;it++){P=Math.cos(T),R=Math.sin(T);var Pt=new te({shape:{x1:P*(p-O)+v,y1:R*(p-O)+c,x2:P*(p-w-O)+v,y2:R*(p-w-O)+c},silent:!0,style:I});I.stroke==="auto"&&Pt.setStyle({stroke:i((E+it/b)/S)}),h.add(Pt),T+=C}T-=C}else T+=A}},e.prototype._renderPointer=function(t,a,n,i,o,s,l,u,f){var h=this.group,v=this._data,c=this._progressEls,p=[],d=t.get(["pointer","show"]),g=t.getModel("progress"),y=g.get("show"),m=t.getData(),_=m.mapDimension("value"),S=+t.get("min"),b=+t.get("max"),x=[S,b],w=[s,l];function T(C,M){var I=m.getItemModel(C),L=I.getModel("pointer"),P=W(L.get("width"),o.r),R=W(L.get("length"),o.r),E=t.get(["pointer","icon"]),O=L.get("offsetCenter"),k=W(O[0],o.r),B=W(O[1],o.r),F=L.get("keepAspect"),H;return E?H=qt(E,k-P/2,B-R,P,R,null,F):H=new YF({shape:{angle:-Math.PI/2,width:P,r:R,x:k,y:B}}),H.rotation=-(M+Math.PI/2),H.x=o.cx,H.y=o.cy,H}function A(C,M){var I=g.get("roundCap"),L=I?Uf:we,P=g.get("overlap"),R=P?g.get("width"):f/m.count(),E=P?o.r-R:o.r-(C+1)*R,O=P?o.r:o.r-C*R,k=new L({shape:{startAngle:s,endAngle:M,cx:o.cx,cy:o.cy,clockwise:u,r0:E,r:O}});return P&&(k.z2=Dt(m.get(_,C),[S,b],[100,0],!0)),k}(y||d)&&(m.diff(v).add(function(C){var M=m.get(_,C);if(d){var I=T(C,s);Gt(I,{rotation:-((isNaN(+M)?w[0]:Dt(M,x,w,!0))+Math.PI/2)},t),h.add(I),m.setItemGraphicEl(C,I)}if(y){var L=A(C,s),P=g.get("clip");Gt(L,{shape:{endAngle:Dt(M,x,w,P)}},t),h.add(L),qp(t.seriesIndex,m.dataType,C,L),p[C]=L}}).update(function(C,M){var I=m.get(_,C);if(d){var L=v.getItemGraphicEl(M),P=L?L.rotation:s,R=T(C,P);R.rotation=P,Tt(R,{rotation:-((isNaN(+I)?w[0]:Dt(I,x,w,!0))+Math.PI/2)},t),h.add(R),m.setItemGraphicEl(C,R)}if(y){var E=c[M],O=E?E.shape.endAngle:s,k=A(C,O),B=g.get("clip");Tt(k,{shape:{endAngle:Dt(I,x,w,B)}},t),h.add(k),qp(t.seriesIndex,m.dataType,C,k),p[C]=k}}).execute(),m.each(function(C){var M=m.getItemModel(C),I=M.getModel("emphasis"),L=I.get("focus"),P=I.get("blurScope"),R=I.get("disabled");if(d){var E=m.getItemGraphicEl(C),O=m.getItemVisual(C,"style"),k=O.fill;if(E instanceof le){var B=E.style;E.useStyle(V({image:B.image,x:B.x,y:B.y,width:B.width,height:B.height},O))}else E.useStyle(O),E.type!=="pointer"&&E.setColor(k);E.setStyle(M.getModel(["pointer","itemStyle"]).getItemStyle()),E.style.fill==="auto"&&E.setStyle("fill",i(Dt(m.get(_,C),x,[0,1],!0))),E.z2EmphasisLift=0,ce(E,M),Wt(E,L,P,R)}if(y){var F=p[C];F.useStyle(m.getItemVisual(C,"style")),F.setStyle(M.getModel(["progress","itemStyle"]).getItemStyle()),F.z2EmphasisLift=0,ce(F,M),Wt(F,L,P,R)}}),this._progressEls=p)},e.prototype._renderAnchor=function(t,a){var n=t.getModel("anchor"),i=n.get("show");if(i){var o=n.get("size"),s=n.get("icon"),l=n.get("offsetCenter"),u=n.get("keepAspect"),f=qt(s,a.cx-o/2+W(l[0],a.r),a.cy-o/2+W(l[1],a.r),o,o,null,u);f.z2=n.get("showAbove")?1:0,f.setStyle(n.getModel("itemStyle").getItemStyle()),this.group.add(f)}},e.prototype._renderTitleAndDetail=function(t,a,n,i,o){var s=this,l=t.getData(),u=l.mapDimension("value"),f=+t.get("min"),h=+t.get("max"),v=new at,c=[],p=[],d=t.isAnimationEnabled(),g=t.get(["pointer","showAbove"]);l.diff(this._data).add(function(y){c[y]=new St({silent:!0}),p[y]=new St({silent:!0})}).update(function(y,m){c[y]=s._titleEls[m],p[y]=s._detailEls[m]}).execute(),l.each(function(y){var m=l.getItemModel(y),_=l.get(u,y),S=new at,b=i(Dt(_,[f,h],[0,1],!0)),x=m.getModel("title");if(x.get("show")){var w=x.get("offsetCenter"),T=o.cx+W(w[0],o.r),A=o.cy+W(w[1],o.r),C=c[y];C.attr({z2:g?0:2,style:Nt(x,{x:T,y:A,text:l.getName(y),align:"center",verticalAlign:"middle"},{inheritColor:b})}),S.add(C)}var M=m.getModel("detail");if(M.get("show")){var I=M.get("offsetCenter"),L=o.cx+W(I[0],o.r),P=o.cy+W(I[1],o.r),R=W(M.get("width"),o.r),E=W(M.get("height"),o.r),O=t.get(["progress","show"])?l.getItemVisual(y,"style").fill:b,C=p[y],k=M.get("formatter");C.attr({z2:g?0:2,style:Nt(M,{x:L,y:P,text:Eu(_,k),width:isNaN(R)?null:R,height:isNaN(E)?null:E,align:"center",verticalAlign:"middle"},{inheritColor:O})}),fA(C,{normal:M},_,function(F){return Eu(F,k)}),d&&hA(C,y,l,t,{getFormattedLabel:function(F,H,U,j,Q,it){return Eu(it?it.interpolatedValue:_,k)}}),S.add(C)}v.add(S)}),this.group.add(v),this._titleEls=c,this._detailEls=p},e.type="gauge",e}(Lt),ZF=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.visualStyleAccessPath="itemStyle",t}return e.prototype.getInitialData=function(t,a){return zo(this,["value"])},e.type="series.gauge",e.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12,rotate:0},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},e}(Et);function qF(r){r.registerChartView($F),r.registerSeriesModel(ZF)}var KF=["itemStyle","opacity"],jF=function(r){N(e,r);function e(t,a){var n=r.call(this)||this,i=n,o=new Ce,s=new St;return i.setTextContent(s),n.setTextGuideLine(o),n.updateData(t,a,!0),n}return e.prototype.updateData=function(t,a,n){var i=this,o=t.hostModel,s=t.getItemModel(a),l=t.getItemLayout(a),u=s.getModel("emphasis"),f=s.get(KF);f=f??1,n||Pr(i),i.useStyle(t.getItemVisual(a,"style")),i.style.lineJoin="round",n?(i.setShape({points:l.points}),i.style.opacity=0,Gt(i,{style:{opacity:f}},o,a)):Tt(i,{style:{opacity:f},shape:{points:l.points}},o,a),ce(i,s),this._updateLabel(t,a),Wt(this,u.get("focus"),u.get("blurScope"),u.get("disabled"))},e.prototype._updateLabel=function(t,a){var n=this,i=this.getTextGuideLine(),o=n.getTextContent(),s=t.hostModel,l=t.getItemModel(a),u=t.getItemLayout(a),f=u.label,h=t.getItemVisual(a,"style"),v=h.fill;pe(o,oe(l),{labelFetcher:t.hostModel,labelDataIndex:a,defaultOpacity:h.opacity,defaultText:t.getName(a)},{normal:{align:f.textAlign,verticalAlign:f.verticalAlign}}),n.setTextConfig({local:!0,inside:!!f.inside,insideStroke:v,outsideFill:v});var c=f.linePoints;i.setShape({points:c}),n.textGuideLineConfig={anchor:c?new ft(c[0][0],c[0][1]):null},Tt(o,{style:{x:f.x,y:f.y}},s,a),o.attr({rotation:f.rotation,originX:f.x,originY:f.y,z2:10}),Cy(n,Dy(l),{stroke:v})},e}(Te),JF=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.ignoreLabelLineUpdate=!0,t}return e.prototype.render=function(t,a,n){var i=t.getData(),o=this._data,s=this.group;i.diff(o).add(function(l){var u=new jF(i,l);i.setItemGraphicEl(l,u),s.add(u)}).update(function(l,u){var f=o.getItemGraphicEl(u);f.updateData(i,l),s.add(f),i.setItemGraphicEl(l,f)}).remove(function(l){var u=o.getItemGraphicEl(l);tl(u,t,l)}).execute(),this._data=i},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.prototype.dispose=function(){},e.type="funnel",e}(Lt),QF=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new zl(X(this.getData,this),X(this.getRawData,this)),this._defaultLabelLine(t)},e.prototype.getInitialData=function(t,a){return zo(this,{coordDimensions:["value"],encodeDefaulter:lt(ty,this)})},e.prototype._defaultLabelLine=function(t){oi(t,"labelLine",["show"]);var a=t.labelLine,n=t.emphasis.labelLine;a.show=a.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.prototype.getDataParams=function(t){var a=this.getData(),n=r.prototype.getDataParams.call(this,t),i=a.mapDimension("value"),o=a.getSum(i);return n.percent=o?+(a.get(i,t)/o*100).toFixed(2):0,n.$vars.push("percent"),n},e.type="series.funnel",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(Et);function t3(r,e){return Jt(r.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function e3(r,e){for(var t=r.mapDimension("value"),a=r.mapArray(t,function(l){return l}),n=[],i=e==="ascending",o=0,s=r.count();oy3)return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX,r.offsetY]);n.behavior!=="none"&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(r){if(!(this._mouseDownPoint||!Fc(this,"mousemove"))){var e=this._model,t=e.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX,r.offsetY]),a=t.behavior;a==="jump"&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand(a==="none"?null:{axisExpandWindow:t.axisExpandWindow,animation:a==="jump"?null:{duration:0}})}}};function Fc(r,e){var t=r._model;return t.get("axisExpandable")&&t.get("axisExpandTriggerOn")===e}var S3=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(){r.prototype.init.apply(this,arguments),this.mergeOption({})},e.prototype.mergeOption=function(t){var a=this.option;t&&ut(a,t,!0),this._initDimensions()},e.prototype.contains=function(t,a){var n=t.get("parallelIndex");return n!=null&&a.getComponent("parallel",n)===this},e.prototype.setAxisExpand=function(t){D(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],function(a){t.hasOwnProperty(a)&&(this.option[a]=t[a])},this)},e.prototype._initDimensions=function(){var t=this.dimensions=[],a=this.parallelAxisIndex=[],n=At(this.ecModel.queryComponents({mainType:"parallelAxis"}),function(i){return(i.get("parallelIndex")||0)===this.componentIndex},this);D(n,function(i){t.push("dim"+i.get("dim")),a.push(i.componentIndex)})},e.type="parallel",e.dependencies=["parallelAxis"],e.layoutMode="box",e.defaultOption={z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},e}(gt),x3=function(r){N(e,r);function e(t,a,n,i,o){var s=r.call(this,t,a,n)||this;return s.type=i||"value",s.axisIndex=o,s}return e.prototype.isHorizontal=function(){return this.coordinateSystem.getModel().get("layout")!=="horizontal"},e}(dr);function bi(r,e,t,a,n,i){r=r||0;var o=t[1]-t[0];if(n!=null&&(n=Gi(n,[0,o])),i!=null&&(i=Math.max(i,n??0)),a==="all"){var s=Math.abs(e[1]-e[0]);s=Gi(s,[0,o]),n=i=Gi(s,[n,i]),a=0}e[0]=Gi(e[0],t),e[1]=Gi(e[1],t);var l=Hc(e,a);e[a]+=r;var u=n||0,f=t.slice();l.sign<0?f[0]+=u:f[1]-=u,e[a]=Gi(e[a],f);var h;return h=Hc(e,a),n!=null&&(h.sign!==l.sign||h.spani&&(e[1-a]=e[a]+h.sign*i),e}function Hc(r,e){var t=r[e]-r[1-e];return{span:Math.abs(t),sign:t>0?-1:t<0?1:e?-1:1}}function Gi(r,e){return Math.min(e[1]!=null?e[1]:1/0,Math.max(e[0]!=null?e[0]:-1/0,r))}var Wc=D,VM=Math.min,zM=Math.max,tx=Math.floor,b3=Math.ceil,ex=Ut,w3=Math.PI,T3=function(){function r(e,t,a){this.type="parallel",this._axesMap=Z(),this._axesLayout={},this.dimensions=e.dimensions,this._model=e,this._init(e,t,a)}return r.prototype._init=function(e,t,a){var n=e.dimensions,i=e.parallelAxisIndex;Wc(n,function(o,s){var l=i[s],u=t.getComponent("parallelAxis",l),f=this._axesMap.set(o,new x3(o,El(u),[0,0],u.get("type"),l)),h=f.type==="category";f.onBand=h&&u.get("boundaryGap"),f.inverse=u.get("inverse"),u.axis=f,f.model=u,f.coordinateSystem=u.coordinateSystem=this},this)},r.prototype.update=function(e,t){this._updateAxesFromSeries(this._model,e)},r.prototype.containPoint=function(e){var t=this._makeLayoutInfo(),a=t.axisBase,n=t.layoutBase,i=t.pixelDimIndex,o=e[1-i],s=e[i];return o>=a&&o<=a+t.axisLength&&s>=n&&s<=n+t.layoutLength},r.prototype.getModel=function(){return this._model},r.prototype._updateAxesFromSeries=function(e,t){t.eachSeries(function(a){if(e.contains(a,t)){var n=a.getData();Wc(this.dimensions,function(i){var o=this._axesMap.get(i);o.scale.unionExtentFromData(n,n.mapDimension(i)),hi(o.scale,o.model)},this)}},this)},r.prototype.resize=function(e,t){this._rect=Jt(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),this._layoutAxes()},r.prototype.getRect=function(){return this._rect},r.prototype._makeLayoutInfo=function(){var e=this._model,t=this._rect,a=["x","y"],n=["width","height"],i=e.get("layout"),o=i==="horizontal"?0:1,s=t[n[o]],l=[0,s],u=this.dimensions.length,f=ku(e.get("axisExpandWidth"),l),h=ku(e.get("axisExpandCount")||0,[0,u]),v=e.get("axisExpandable")&&u>3&&u>h&&h>1&&f>0&&s>0,c=e.get("axisExpandWindow"),p;if(c)p=ku(c[1]-c[0],l),c[1]=c[0]+p;else{p=ku(f*(h-1),l);var d=e.get("axisExpandCenter")||tx(u/2);c=[f*d-p/2],c[1]=c[0]+p}var g=(s-p)/(u-h);g<3&&(g=0);var y=[tx(ex(c[0]/f,1))+1,b3(ex(c[1]/f,1))-1],m=g/f*c[0];return{layout:i,pixelDimIndex:o,layoutBase:t[a[o]],layoutLength:s,axisBase:t[a[1-o]],axisLength:t[n[1-o]],axisExpandable:v,axisExpandWidth:f,axisCollapseWidth:g,axisExpandWindow:c,axisCount:u,winInnerIndices:y,axisExpandWindow0Pos:m}},r.prototype._layoutAxes=function(){var e=this._rect,t=this._axesMap,a=this.dimensions,n=this._makeLayoutInfo(),i=n.layout;t.each(function(o){var s=[0,n.axisLength],l=o.inverse?1:0;o.setExtent(s[l],s[1-l])}),Wc(a,function(o,s){var l=(n.axisExpandable?C3:A3)(s,n),u={horizontal:{x:l.position,y:n.axisLength},vertical:{x:0,y:l.position}},f={horizontal:w3/2,vertical:0},h=[u[i].x+e.x,u[i].y+e.y],v=f[i],c=Fe();nn(c,c,v),Ir(c,c,h),this._axesLayout[o]={position:h,rotation:v,transform:c,axisNameAvailableWidth:l.axisNameAvailableWidth,axisLabelShow:l.axisLabelShow,nameTruncateMaxWidth:l.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},r.prototype.getAxis=function(e){return this._axesMap.get(e)},r.prototype.dataToPoint=function(e,t){return this.axisCoordToPoint(this._axesMap.get(t).dataToCoord(e),t)},r.prototype.eachActiveState=function(e,t,a,n){a==null&&(a=0),n==null&&(n=e.count());var i=this._axesMap,o=this.dimensions,s=[],l=[];D(o,function(g){s.push(e.mapDimension(g)),l.push(i.get(g).model)});for(var u=this.hasAxisBrushed(),f=a;fi*(1-h[0])?(u="jump",l=s-i*(1-h[2])):(l=s-i*h[1])>=0&&(l=s-i*(1-h[1]))<=0&&(l=0),l*=t.axisExpandWidth/f,l?bi(l,n,o,"all"):u="none";else{var c=n[1]-n[0],p=o[1]*s/c;n=[zM(0,p-c/2)],n[1]=VM(o[1],n[0]+c),n[0]=n[1]-c}return{axisExpandWindow:n,behavior:u}},r}();function ku(r,e){return VM(zM(r,e[0]),e[1])}function A3(r,e){var t=e.layoutLength/(e.axisCount-1);return{position:t*r,axisNameAvailableWidth:t,axisLabelShow:!0}}function C3(r,e){var t=e.layoutLength,a=e.axisExpandWidth,n=e.axisCount,i=e.axisCollapseWidth,o=e.winInnerIndices,s,l=i,u=!1,f;return r=0;n--)Ye(a[n])},e.prototype.getActiveState=function(t){var a=this.activeIntervals;if(!a.length)return"normal";if(t==null||isNaN(+t))return"inactive";if(a.length===1){var n=a[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,o=a.length;iP3}function YM(r){var e=r.length-1;return e<0&&(e=0),[r[0],r[e]]}function XM(r,e,t,a){var n=new at;return n.add(new xt({name:"main",style:tm(t),silent:!0,draggable:!0,cursor:"move",drift:lt(nx,r,e,n,["n","s","w","e"]),ondragend:lt(ci,e,{isEnd:!0})})),D(a,function(i){n.add(new xt({name:i.join(""),style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:lt(nx,r,e,n,i),ondragend:lt(ci,e,{isEnd:!0})}))}),n}function $M(r,e,t,a){var n=a.brushStyle.lineWidth||0,i=yo(n,R3),o=t[0][0],s=t[1][0],l=o-n/2,u=s-n/2,f=t[0][1],h=t[1][1],v=f-i+n/2,c=h-i+n/2,p=f-o,d=h-s,g=p+n,y=d+n;ia(r,e,"main",o,s,p,d),a.transformable&&(ia(r,e,"w",l,u,i,y),ia(r,e,"e",v,u,i,y),ia(r,e,"n",l,u,g,i),ia(r,e,"s",l,c,g,i),ia(r,e,"nw",l,u,i,i),ia(r,e,"ne",v,u,i,i),ia(r,e,"sw",l,c,i,i),ia(r,e,"se",v,c,i,i))}function Hd(r,e){var t=e.__brushOption,a=t.transformable,n=e.childAt(0);n.useStyle(tm(t)),n.attr({silent:!a,cursor:a?"move":"default"}),D([["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]],function(i){var o=e.childOfName(i.join("")),s=i.length===1?Wd(r,i[0]):V3(r,i);o&&o.attr({silent:!a,invisible:!a,cursor:a?k3[s]+"-resize":null})})}function ia(r,e,t,a,n,i,o){var s=e.childOfName(t);s&&s.setShape(G3(em(r,e,[[a,n],[a+i,n+o]])))}function tm(r){return J({strokeNoScale:!0},r.brushStyle)}function ZM(r,e,t,a){var n=[gl(r,t),gl(e,a)],i=[yo(r,t),yo(e,a)];return[[n[0],i[0]],[n[1],i[1]]]}function B3(r){return $a(r.group)}function Wd(r,e){var t={w:"left",e:"right",n:"top",s:"bottom"},a={left:"w",right:"e",top:"n",bottom:"s"},n=Mh(t[e],B3(r));return a[n]}function V3(r,e){var t=[Wd(r,e[0]),Wd(r,e[1])];return(t[0]==="e"||t[0]==="w")&&t.reverse(),t.join("")}function nx(r,e,t,a,n,i){var o=t.__brushOption,s=r.toRectRange(o.range),l=qM(e,n,i);D(a,function(u){var f=E3[u];s[f[0]][f[1]]+=l[f[0]]}),o.range=r.fromRectRange(ZM(s[0][0],s[1][0],s[0][1],s[1][1])),jy(e,t),ci(e,{isEnd:!1})}function z3(r,e,t,a){var n=e.__brushOption.range,i=qM(r,t,a);D(n,function(o){o[0]+=i[0],o[1]+=i[1]}),jy(r,e),ci(r,{isEnd:!1})}function qM(r,e,t){var a=r.group,n=a.transformCoordToLocal(e,t),i=a.transformCoordToLocal(0,0);return[n[0]-i[0],n[1]-i[1]]}function em(r,e,t){var a=UM(r,e);return a&&a!==vi?a.clipPath(t,r._transform):rt(t)}function G3(r){var e=gl(r[0][0],r[1][0]),t=gl(r[0][1],r[1][1]),a=yo(r[0][0],r[1][0]),n=yo(r[0][1],r[1][1]);return{x:e,y:t,width:a-e,height:n-t}}function F3(r,e,t){if(!(!r._brushType||W3(r,e.offsetX,e.offsetY))){var a=r._zr,n=r._covers,i=Qy(r,e,t);if(!r._dragging)for(var o=0;oa.getWidth()||t<0||t>a.getHeight()}var Kh={lineX:sx(0),lineY:sx(1),rect:{createCover:function(r,e){function t(a){return a}return XM({toRectRange:t,fromRectRange:t},r,e,[["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]])},getCreatingRange:function(r){var e=YM(r);return ZM(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(r,e,t,a){$M(r,e,t,a)},updateCommon:Hd,contain:Yd},polygon:{createCover:function(r,e){var t=new at;return t.add(new Ce({name:"main",style:tm(e),silent:!0})),t},getCreatingRange:function(r){return r},endCreating:function(r,e){e.remove(e.childAt(0)),e.add(new Te({name:"main",draggable:!0,drift:lt(z3,r,e),ondragend:lt(ci,r,{isEnd:!0})}))},updateCoverShape:function(r,e,t,a){e.childAt(0).setShape({points:em(r,e,t)})},updateCommon:Hd,contain:Yd}};function sx(r){return{createCover:function(e,t){return XM({toRectRange:function(a){var n=[a,[0,100]];return r&&n.reverse(),n},fromRectRange:function(a){return a[r]}},e,t,[[["w"],["e"]],[["n"],["s"]]][r])},getCreatingRange:function(e){var t=YM(e),a=gl(t[0][r],t[1][r]),n=yo(t[0][r],t[1][r]);return[a,n]},updateCoverShape:function(e,t,a,n){var i,o=UM(e,t);if(o!==vi&&o.getLinearBrushOtherExtent)i=o.getLinearBrushOtherExtent(r);else{var s=e._zr;i=[0,[s.getWidth(),s.getHeight()][1-r]]}var l=[a,i];r&&l.reverse(),$M(e,t,l,n)},updateCommon:Hd,contain:Yd}}function jM(r){return r=rm(r),function(e){return Hg(e,r)}}function JM(r,e){return r=rm(r),function(t){var a=e??t,n=a?r.width:r.height,i=a?r.x:r.y;return[i,i+(n||0)]}}function QM(r,e,t){var a=rm(r);return function(n,i){return a.contain(i[0],i[1])&&!Xh(n,e,t)}}function rm(r){return ht.create(r)}var U3=["axisLine","axisTickLabel","axisName"],Y3=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a){r.prototype.init.apply(this,arguments),(this._brushController=new Ky(a.getZr())).on("brush",X(this._onBrush,this))},e.prototype.render=function(t,a,n,i){if(!X3(t,a,i)){this.axisModel=t,this.api=n,this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new at,this.group.add(this._axisGroup),!!t.get("show")){var s=Z3(t,a),l=s.coordinateSystem,u=t.getAreaSelectStyle(),f=u.width,h=t.axis.dim,v=l.getAxisLayout(h),c=V({strokeContainThreshold:f},v),p=new Re(t,c);D(U3,p.add,p),this._axisGroup.add(p.getGroup()),this._refreshBrushController(c,u,t,s,f,n),Ll(o,this._axisGroup,t)}}},e.prototype._refreshBrushController=function(t,a,n,i,o,s){var l=n.axis.getExtent(),u=l[1]-l[0],f=Math.min(30,Math.abs(u)*.1),h=ht.create({x:l[0],y:-o/2,width:u,height:o});h.x-=f,h.width+=2*f,this._brushController.mount({enableGlobalPan:!0,rotation:t.rotation,x:t.position[0],y:t.position[1]}).setPanels([{panelId:"pl",clipPath:jM(h),isTargetByCursor:QM(h,s,i),getLinearBrushOtherExtent:JM(h,0)}]).enableBrush({brushType:"lineX",brushStyle:a,removeOnClick:!0}).updateCovers($3(n))},e.prototype._onBrush=function(t){var a=t.areas,n=this.axisModel,i=n.axis,o=G(a,function(s){return[i.coordToData(s.range[0],!0),i.coordToData(s.range[1],!0)]});(!n.option.realtime===t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"axisAreaSelect",parallelAxisId:n.id,intervals:o})},e.prototype.dispose=function(){this._brushController.dispose()},e.type="parallelAxis",e}(zt);function X3(r,e,t){return t&&t.type==="axisAreaSelect"&&e.findComponents({mainType:"parallelAxis",query:t})[0]===r}function $3(r){var e=r.axis;return G(r.activeIntervals,function(t){return{brushType:"lineX",panelId:"pl",range:[e.dataToCoord(t[0],!0),e.dataToCoord(t[1],!0)]}})}function Z3(r,e){return e.getComponent("parallel",r.get("parallelIndex"))}var q3={type:"axisAreaSelect",event:"axisAreaSelected"};function K3(r){r.registerAction(q3,function(e,t){t.eachComponent({mainType:"parallelAxis",query:e},function(a){a.axis.model.setActiveIntervals(e.intervals)})}),r.registerAction("parallelAxisExpand",function(e,t){t.eachComponent({mainType:"parallel",query:e},function(a){a.setAxisExpand(e)})})}var j3={type:"value",areaSelectStyle:{width:20,borderWidth:1,borderColor:"rgba(160,197,232)",color:"rgba(160,197,232)",opacity:.3},realtime:!0,z:10};function tI(r){r.registerComponentView(m3),r.registerComponentModel(S3),r.registerCoordinateSystem("parallel",M3),r.registerPreprocessor(p3),r.registerComponentModel(Gd),r.registerComponentView(Y3),go(r,"parallel",Gd,j3),K3(r)}function J3(r){pt(tI),r.registerChartView(o3),r.registerSeriesModel(u3),r.registerVisual(r.PRIORITY.VISUAL.BRUSH,c3)}var Q3=function(){function r(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.cpx2=0,this.cpy2=0,this.extent=0}return r}(),tH=function(r){N(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultShape=function(){return new Q3},e.prototype.buildPath=function(t,a){var n=a.extent;t.moveTo(a.x1,a.y1),t.bezierCurveTo(a.cpx1,a.cpy1,a.cpx2,a.cpy2,a.x2,a.y2),a.orient==="vertical"?(t.lineTo(a.x2+n,a.y2),t.bezierCurveTo(a.cpx2+n,a.cpy2,a.cpx1+n,a.cpy1,a.x1+n,a.y1)):(t.lineTo(a.x2,a.y2+n),t.bezierCurveTo(a.cpx2,a.cpy2+n,a.cpx1,a.cpy1+n,a.x1,a.y1+n)),t.closePath()},e.prototype.highlight=function(){ga(this)},e.prototype.downplay=function(){ya(this)},e}(mt),eH=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._focusAdjacencyDisabled=!1,t}return e.prototype.render=function(t,a,n){var i=this,o=t.getGraph(),s=this.group,l=t.layoutInfo,u=l.width,f=l.height,h=t.getData(),v=t.getData("edge"),c=t.get("orient");this._model=t,s.removeAll(),s.x=l.x,s.y=l.y,o.eachEdge(function(p){var d=new tH,g=nt(d);g.dataIndex=p.dataIndex,g.seriesIndex=t.seriesIndex,g.dataType="edge";var y=p.getModel(),m=y.getModel("lineStyle"),_=m.get("curveness"),S=p.node1.getLayout(),b=p.node1.getModel(),x=b.get("localX"),w=b.get("localY"),T=p.node2.getLayout(),A=p.node2.getModel(),C=A.get("localX"),M=A.get("localY"),I=p.getLayout(),L,P,R,E,O,k,B,F;d.shape.extent=Math.max(1,I.dy),d.shape.orient=c,c==="vertical"?(L=(x!=null?x*u:S.x)+I.sy,P=(w!=null?w*f:S.y)+S.dy,R=(C!=null?C*u:T.x)+I.ty,E=M!=null?M*f:T.y,O=L,k=P*(1-_)+E*_,B=R,F=P*_+E*(1-_)):(L=(x!=null?x*u:S.x)+S.dx,P=(w!=null?w*f:S.y)+I.sy,R=C!=null?C*u:T.x,E=(M!=null?M*f:T.y)+I.ty,O=L*(1-_)+R*_,k=P,B=L*_+R*(1-_),F=E),d.setShape({x1:L,y1:P,x2:R,y2:E,cpx1:O,cpy1:k,cpx2:B,cpy2:F}),d.useStyle(m.getItemStyle()),lx(d.style,c,p);var H=""+y.get("value"),U=oe(y,"edgeLabel");pe(d,U,{labelFetcher:{getFormattedLabel:function(it,Pt,Yt,ct,et,dt){return t.getFormattedLabel(it,Pt,"edge",ct,Tr(et,U.normal&&U.normal.get("formatter"),H),dt)}},labelDataIndex:p.dataIndex,defaultText:H}),d.setTextConfig({position:"inside"});var j=y.getModel("emphasis");ce(d,y,"lineStyle",function(it){var Pt=it.getItemStyle();return lx(Pt,c,p),Pt}),s.add(d),v.setItemGraphicEl(p.dataIndex,d);var Q=j.get("focus");Wt(d,Q==="adjacency"?p.getAdjacentDataIndices():Q==="trajectory"?p.getTrajectoryDataIndices():Q,j.get("blurScope"),j.get("disabled"))}),o.eachNode(function(p){var d=p.getLayout(),g=p.getModel(),y=g.get("localX"),m=g.get("localY"),_=g.getModel("emphasis"),S=g.get(["itemStyle","borderRadius"])||0,b=new xt({shape:{x:y!=null?y*u:d.x,y:m!=null?m*f:d.y,width:d.dx,height:d.dy,r:S},style:g.getModel("itemStyle").getItemStyle(),z2:10});pe(b,oe(g),{labelFetcher:{getFormattedLabel:function(w,T){return t.getFormattedLabel(w,T,"node")}},labelDataIndex:p.dataIndex,defaultText:p.id}),b.disableLabelAnimation=!0,b.setStyle("fill",p.getVisual("color")),b.setStyle("decal",p.getVisual("style").decal),ce(b,g),s.add(b),h.setItemGraphicEl(p.dataIndex,b),nt(b).dataType="node";var x=_.get("focus");Wt(b,x==="adjacency"?p.getAdjacentDataIndices():x==="trajectory"?p.getTrajectoryDataIndices():x,_.get("blurScope"),_.get("disabled"))}),h.eachItemGraphicEl(function(p,d){var g=h.getItemModel(d);g.get("draggable")&&(p.drift=function(y,m){i._focusAdjacencyDisabled=!0,this.shape.x+=y,this.shape.y+=m,this.dirty(),n.dispatchAction({type:"dragNode",seriesId:t.id,dataIndex:h.getRawIndex(d),localX:this.shape.x/u,localY:this.shape.y/f})},p.ondragend=function(){i._focusAdjacencyDisabled=!1},p.draggable=!0,p.cursor="move")}),!this._data&&t.isAnimationEnabled()&&s.setClipPath(rH(s.getBoundingRect(),t,function(){s.removeClipPath()})),this._data=t.getData()},e.prototype.dispose=function(){},e.type="sankey",e}(Lt);function lx(r,e,t){switch(r.fill){case"source":r.fill=t.node1.getVisual("color"),r.decal=t.node1.getVisual("style").decal;break;case"target":r.fill=t.node2.getVisual("color"),r.decal=t.node2.getVisual("style").decal;break;case"gradient":var a=t.node1.getVisual("color"),n=t.node2.getVisual("color");Y(a)&&Y(n)&&(r.fill=new Ao(0,0,+(e==="horizontal"),+(e==="vertical"),[{color:a,offset:0},{color:n,offset:1}]))}}function rH(r,e,t){var a=new xt({shape:{x:r.x-10,y:r.y-10,width:0,height:r.height+20}});return Gt(a,{shape:{width:r.width+20}},e,t),a}var aH=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.getInitialData=function(t,a){var n=t.edges||t.links||[],i=t.data||t.nodes||[],o=t.levels||[];this.levelModels=[];for(var s=this.levelModels,l=0;l=0&&(s[o[l].depth]=new Ct(o[l],this,a));var u=NM(i,n,this,!0,f);return u.data;function f(h,v){h.wrapMethod("getItemModel",function(c,p){var d=c.parentModel,g=d.getData().getItemLayout(p);if(g){var y=g.depth,m=d.levelModels[y];m&&(c.parentModel=m)}return c}),v.wrapMethod("getItemModel",function(c,p){var d=c.parentModel,g=d.getGraph().getEdgeByIndex(p),y=g.node1.getLayout();if(y){var m=y.depth,_=d.levelModels[m];_&&(c.parentModel=_)}return c})}},e.prototype.setNodePosition=function(t,a){var n=this.option.data||this.option.nodes,i=n[t];i.localX=a[0],i.localY=a[1]},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.formatTooltip=function(t,a,n){function i(c){return isNaN(c)||c==null}if(n==="edge"){var o=this.getDataParams(t,n),s=o.data,l=o.value,u=s.source+" -- "+s.target;return se("nameValue",{name:u,value:l,noValue:i(l)})}else{var f=this.getGraph().getNodeByIndex(t),h=f.getLayout().value,v=this.getDataParams(t,n).data.name;return se("nameValue",{name:v!=null?v+"":null,value:h,noValue:i(h)})}},e.prototype.optionUpdated=function(){},e.prototype.getDataParams=function(t,a){var n=r.prototype.getDataParams.call(this,t,a);if(n.value==null&&a==="node"){var i=this.getGraph().getNodeByIndex(t),o=i.getLayout().value;n.value=o}return n},e.type="series.sankey",e.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},edgeLabel:{show:!1,fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},e}(Et);function nH(r,e){r.eachSeriesByType("sankey",function(t){var a=t.get("nodeWidth"),n=t.get("nodeGap"),i=iH(t,e);t.layoutInfo=i;var o=i.width,s=i.height,l=t.getGraph(),u=l.nodes,f=l.edges;sH(u);var h=At(u,function(d){return d.getLayout().value===0}),v=h.length!==0?0:t.get("layoutIterations"),c=t.get("orient"),p=t.get("nodeAlign");oH(u,f,a,n,o,s,v,c,p)})}function iH(r,e){return Jt(r.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function oH(r,e,t,a,n,i,o,s,l){lH(r,e,t,n,i,s,l),vH(r,e,i,n,a,o,s),xH(r,s)}function sH(r){D(r,function(e){var t=Ka(e.outEdges,Kf),a=Ka(e.inEdges,Kf),n=e.getValue()||0,i=Math.max(t,a,n);e.setLayout({value:i},!0)})}function lH(r,e,t,a,n,i,o){for(var s=[],l=[],u=[],f=[],h=0,v=0;v=0;y&&g.depth>c&&(c=g.depth),d.setLayout({depth:y?g.depth:h},!0),i==="vertical"?d.setLayout({dy:t},!0):d.setLayout({dx:t},!0);for(var m=0;mh-1?c:h-1;o&&o!=="left"&&uH(r,o,i,w);var T=i==="vertical"?(n-t)/w:(a-t)/w;hH(r,T,i)}function eI(r){var e=r.hostGraph.data.getRawDataItem(r.dataIndex);return e.depth!=null&&e.depth>=0}function uH(r,e,t,a){if(e==="right"){for(var n=[],i=r,o=0;i.length;){for(var s=0;s0;i--)l*=.99,dH(s,l,o),Uc(s,n,t,a,o),SH(s,l,o),Uc(s,n,t,a,o)}function cH(r,e){var t=[],a=e==="vertical"?"y":"x",n=Yp(r,function(i){return i.getLayout()[a]});return n.keys.sort(function(i,o){return i-o}),D(n.keys,function(i){t.push(n.buckets.get(i))}),t}function pH(r,e,t,a,n,i){var o=1/0;D(r,function(s){var l=s.length,u=0;D(s,function(h){u+=h.getLayout().value});var f=i==="vertical"?(a-(l-1)*n)/u:(t-(l-1)*n)/u;f0&&(s=l.getLayout()[i]+u,n==="vertical"?l.setLayout({x:s},!0):l.setLayout({y:s},!0)),f=l.getLayout()[i]+l.getLayout()[v]+e;var p=n==="vertical"?a:t;if(u=f-e-p,u>0){s=l.getLayout()[i]-u,n==="vertical"?l.setLayout({x:s},!0):l.setLayout({y:s},!0),f=s;for(var c=h-2;c>=0;--c)l=o[c],u=l.getLayout()[i]+l.getLayout()[v]+e-f,u>0&&(s=l.getLayout()[i]-u,n==="vertical"?l.setLayout({x:s},!0):l.setLayout({y:s},!0)),f=l.getLayout()[i]}})}function dH(r,e,t){D(r.slice().reverse(),function(a){D(a,function(n){if(n.outEdges.length){var i=Ka(n.outEdges,gH,t)/Ka(n.outEdges,Kf);if(isNaN(i)){var o=n.outEdges.length;i=o?Ka(n.outEdges,yH,t)/o:0}if(t==="vertical"){var s=n.getLayout().x+(i-en(n,t))*e;n.setLayout({x:s},!0)}else{var l=n.getLayout().y+(i-en(n,t))*e;n.setLayout({y:l},!0)}}})})}function gH(r,e){return en(r.node2,e)*r.getValue()}function yH(r,e){return en(r.node2,e)}function mH(r,e){return en(r.node1,e)*r.getValue()}function _H(r,e){return en(r.node1,e)}function en(r,e){return e==="vertical"?r.getLayout().x+r.getLayout().dx/2:r.getLayout().y+r.getLayout().dy/2}function Kf(r){return r.getValue()}function Ka(r,e,t){for(var a=0,n=r.length,i=-1;++io&&(o=l)}),D(a,function(s){var l=new ie({type:"color",mappingMethod:"linear",dataExtent:[i,o],visual:e.get("color")}),u=l.mapValueToVisual(s.getLayout().value),f=s.getModel().get(["itemStyle","color"]);f!=null?(s.setVisual("color",f),s.setVisual("style",{fill:f})):(s.setVisual("color",u),s.setVisual("style",{fill:u}))})}n.length&&D(n,function(s){var l=s.getModel().get("lineStyle");s.setVisual("style",l)})})}function wH(r){r.registerChartView(eH),r.registerSeriesModel(aH),r.registerLayout(nH),r.registerVisual(bH),r.registerAction({type:"dragNode",event:"dragnode",update:"update"},function(e,t){t.eachComponent({mainType:"series",subType:"sankey",query:e},function(a){a.setNodePosition(e.dataIndex,[e.localX,e.localY])})})}var rI=function(){function r(){}return r.prototype._hasEncodeRule=function(e){var t=this.getEncode();return t&&t.get(e)!=null},r.prototype.getInitialData=function(e,t){var a,n=t.getComponent("xAxis",this.get("xAxisIndex")),i=t.getComponent("yAxis",this.get("yAxisIndex")),o=n.get("type"),s=i.get("type"),l;o==="category"?(e.layout="horizontal",a=n.getOrdinalMeta(),l=!this._hasEncodeRule("x")):s==="category"?(e.layout="vertical",a=i.getOrdinalMeta(),l=!this._hasEncodeRule("y")):e.layout=e.layout||"horizontal";var u=["x","y"],f=e.layout==="horizontal"?0:1,h=this._baseAxisDim=u[f],v=u[1-f],c=[n,i],p=c[f].get("type"),d=c[1-f].get("type"),g=e.data;if(g&&l){var y=[];D(g,function(S,b){var x;z(S)?(x=S.slice(),S.unshift(b)):z(S.value)?(x=V({},S),x.value=x.value.slice(),S.value.unshift(b)):x=S,y.push(x)}),e.data=y}var m=this.defaultValueDimensions,_=[{name:h,type:zf(p),ordinalMeta:a,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:v,type:zf(d),dimsDef:m.slice()}];return zo(this,{coordDimensions:_,dimensionsCount:m.length+1,encodeDefaulter:lt(LA,_,this)})},r.prototype.getBaseAxis=function(){var e=this._baseAxisDim;return this.ecModel.getComponent(e+"Axis",this.get(e+"AxisIndex")).axis},r}(),aI=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],t.visualDrawType="stroke",t}return e.type="series.boxplot",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},e}(Et);$t(aI,rI,!0);var TH=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=t.getData(),o=this.group,s=this._data;this._data||o.removeAll();var l=t.get("layout")==="horizontal"?1:0;i.diff(s).add(function(u){if(i.hasValue(u)){var f=i.getItemLayout(u),h=ux(f,i,u,l,!0);i.setItemGraphicEl(u,h),o.add(h)}}).update(function(u,f){var h=s.getItemGraphicEl(f);if(!i.hasValue(u)){o.remove(h);return}var v=i.getItemLayout(u);h?(Pr(h),nI(v,h,i,u)):h=ux(v,i,u,l),o.add(h),i.setItemGraphicEl(u,h)}).remove(function(u){var f=s.getItemGraphicEl(u);f&&o.remove(f)}).execute(),this._data=i},e.prototype.remove=function(t){var a=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl(function(i){i&&a.remove(i)})},e.type="boxplot",e}(Lt),AH=function(){function r(){}return r}(),CH=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a.type="boxplotBoxPath",a}return e.prototype.getDefaultShape=function(){return new AH},e.prototype.buildPath=function(t,a){var n=a.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();id){var S=[y,_];a.push(S)}}}return{boxData:t,outliers:a}}var EH={type:"echarts:boxplot",transform:function(e){var t=e.upstream;if(t.sourceFormat!==Ae){var a="";Mt(a)}var n=RH(t.getRawData(),e.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:n.boxData},{data:n.outliers}]}};function kH(r){r.registerSeriesModel(aI),r.registerChartView(TH),r.registerLayout(MH),r.registerTransform(EH)}var OH=["itemStyle","borderColor"],NH=["itemStyle","borderColor0"],BH=["itemStyle","borderColorDoji"],VH=["itemStyle","color"],zH=["itemStyle","color0"];function am(r,e){return e.get(r>0?VH:zH)}function nm(r,e){return e.get(r===0?BH:r>0?OH:NH)}var GH={seriesType:"candlestick",plan:Eo(),performRawSeries:!0,reset:function(r,e){if(!e.isSeriesFiltered(r)){var t=r.pipelineContext.large;return!t&&{progress:function(a,n){for(var i;(i=a.next())!=null;){var o=n.getItemModel(i),s=n.getItemLayout(i).sign,l=o.getItemStyle();l.fill=am(s,o),l.stroke=nm(s,o)||l.fill;var u=n.ensureUniqueItemVisual(i,"style");V(u,l)}}}}}},FH=["color","borderColor"],HH=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){this.group.removeClipPath(),this._progressiveEls=null,this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},e.prototype.incrementalPrepareRender=function(t,a,n){this._clear(),this._updateDrawMode(t)},e.prototype.incrementalRender=function(t,a,n,i){this._progressiveEls=[],this._isLargeDraw?this._incrementalRenderLarge(t,a):this._incrementalRenderNormal(t,a)},e.prototype.eachRendered=function(t){on(this._progressiveEls||this.group,t)},e.prototype._updateDrawMode=function(t){var a=t.pipelineContext.large;(this._isLargeDraw==null||a!==this._isLargeDraw)&&(this._isLargeDraw=a,this._clear())},e.prototype._renderNormal=function(t){var a=t.getData(),n=this._data,i=this.group,o=a.getLayout("isSimpleBox"),s=t.get("clip",!0),l=t.coordinateSystem,u=l.getArea&&l.getArea();this._data||i.removeAll(),a.diff(n).add(function(f){if(a.hasValue(f)){var h=a.getItemLayout(f);if(s&&fx(u,h))return;var v=Yc(h,f,!0);Gt(v,{shape:{points:h.ends}},t,f),Xc(v,a,f,o),i.add(v),a.setItemGraphicEl(f,v)}}).update(function(f,h){var v=n.getItemGraphicEl(h);if(!a.hasValue(f)){i.remove(v);return}var c=a.getItemLayout(f);if(s&&fx(u,c)){i.remove(v);return}v?(Tt(v,{shape:{points:c.ends}},t,f),Pr(v)):v=Yc(c),Xc(v,a,f,o),i.add(v),a.setItemGraphicEl(f,v)}).remove(function(f){var h=n.getItemGraphicEl(f);h&&i.remove(h)}).execute(),this._data=a},e.prototype._renderLarge=function(t){this._clear(),hx(t,this.group);var a=t.get("clip",!0)?Nl(t.coordinateSystem,!1,t):null;a?this.group.setClipPath(a):this.group.removeClipPath()},e.prototype._incrementalRenderNormal=function(t,a){for(var n=a.getData(),i=n.getLayout("isSimpleBox"),o;(o=t.next())!=null;){var s=n.getItemLayout(o),l=Yc(s);Xc(l,n,o,i),l.incremental=!0,this.group.add(l),this._progressiveEls.push(l)}},e.prototype._incrementalRenderLarge=function(t,a){hx(a,this.group,this._progressiveEls,!0)},e.prototype.remove=function(t){this._clear()},e.prototype._clear=function(){this.group.removeAll(),this._data=null},e.type="candlestick",e}(Lt),WH=function(){function r(){}return r}(),UH=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a.type="normalCandlestickBox",a}return e.prototype.getDefaultShape=function(){return new WH},e.prototype.buildPath=function(t,a){var n=a.points;this.__simpleBox?(t.moveTo(n[4][0],n[4][1]),t.lineTo(n[6][0],n[6][1])):(t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1]),t.lineTo(n[2][0],n[2][1]),t.lineTo(n[3][0],n[3][1]),t.closePath(),t.moveTo(n[4][0],n[4][1]),t.lineTo(n[5][0],n[5][1]),t.moveTo(n[6][0],n[6][1]),t.lineTo(n[7][0],n[7][1]))},e}(mt);function Yc(r,e,t){var a=r.ends;return new UH({shape:{points:t?YH(a,r):a},z2:100})}function fx(r,e){for(var t=!0,a=0;ab?M[i]:C[i],ends:P,brushRect:B(x,w,_)})}function O(H,U){var j=[];return j[n]=U,j[i]=H,isNaN(U)||isNaN(H)?[NaN,NaN]:e.dataToPoint(j)}function k(H,U,j){var Q=U.slice(),it=U.slice();Q[n]=tf(Q[n]+a/2,1,!1),it[n]=tf(it[n]-a/2,1,!0),j?H.push(Q,it):H.push(it,Q)}function B(H,U,j){var Q=O(H,j),it=O(U,j);return Q[n]-=a/2,it[n]-=a/2,{x:Q[0],y:Q[1],width:a,height:it[1]-Q[1]}}function F(H){return H[n]=tf(H[n],1),H}}function p(d,g){for(var y=Ur(d.count*4),m=0,_,S=[],b=[],x,w=g.getStore(),T=!!r.get(["itemStyle","borderColorDoji"]);(x=d.next())!=null;){var A=w.get(s,x),C=w.get(u,x),M=w.get(f,x),I=w.get(h,x),L=w.get(v,x);if(isNaN(A)||isNaN(I)||isNaN(L)){y[m++]=NaN,m+=3;continue}y[m++]=vx(w,x,C,M,f,T),S[n]=A,S[i]=I,_=e.dataToPoint(S,null,b),y[m++]=_?_[0]:NaN,y[m++]=_?_[1]:NaN,S[i]=L,_=e.dataToPoint(S,null,b),y[m++]=_?_[1]:NaN}g.setLayout("largePoints",y)}}};function vx(r,e,t,a,n,i){var o;return t>a?o=-1:t0?r.get(n,e-1)<=a?1:-1:1,o}function qH(r,e){var t=r.getBaseAxis(),a,n=t.type==="category"?t.getBandWidth():(a=t.getExtent(),Math.abs(a[1]-a[0])/e.count()),i=W(st(r.get("barMaxWidth"),n),n),o=W(st(r.get("barMinWidth"),1),n),s=r.get("barWidth");return s!=null?W(s,n):Math.max(Math.min(n/2,i),o)}function KH(r){r.registerChartView(HH),r.registerSeriesModel(iI),r.registerPreprocessor($H),r.registerVisual(GH),r.registerLayout(ZH)}function cx(r,e){var t=e.rippleEffectColor||e.color;r.eachChild(function(a){a.attr({z:e.z,zlevel:e.zlevel,style:{stroke:e.brushType==="stroke"?t:null,fill:e.brushType==="fill"?t:null}})})}var jH=function(r){N(e,r);function e(t,a){var n=r.call(this)||this,i=new kl(t,a),o=new at;return n.add(i),n.add(o),n.updateData(t,a),n}return e.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},e.prototype.startEffectAnimation=function(t){for(var a=t.symbolType,n=t.color,i=t.rippleNumber,o=this.childAt(1),s=0;s0&&(s=this._getLineLength(i)/f*1e3),s!==this._period||l!==this._loop||u!==this._roundTrip){i.stopAnimation();var v=void 0;K(h)?v=h(n):v=h,i.__t>0&&(v=-s*i.__t),this._animateSymbol(i,s,v,l,u)}this._period=s,this._loop=l,this._roundTrip=u}},e.prototype._animateSymbol=function(t,a,n,i,o){if(a>0){t.__t=0;var s=this,l=t.animate("",i).when(o?a*2:a,{__t:o?2:1}).delay(n).during(function(){s._updateSymbolPosition(t)});i||l.done(function(){s.remove(t)}),l.start()}},e.prototype._getLineLength=function(t){return la(t.__p1,t.__cp1)+la(t.__cp1,t.__p2)},e.prototype._updateAnimationPoints=function(t,a){t.__p1=a[0],t.__p2=a[1],t.__cp1=a[2]||[(a[0][0]+a[1][0])/2,(a[0][1]+a[1][1])/2]},e.prototype.updateData=function(t,a,n){this.childAt(0).updateData(t,a,n),this._updateEffectSymbol(t,a)},e.prototype._updateSymbolPosition=function(t){var a=t.__p1,n=t.__p2,i=t.__cp1,o=t.__t<1?t.__t:2-t.__t,s=[t.x,t.y],l=s.slice(),u=ue,f=Ip;s[0]=u(a[0],i[0],n[0],o),s[1]=u(a[1],i[1],n[1],o);var h=t.__t<1?f(a[0],i[0],n[0],o):f(n[0],i[0],a[0],1-o),v=t.__t<1?f(a[1],i[1],n[1],o):f(n[1],i[1],a[1],1-o);t.rotation=-Math.atan2(v,h)-Math.PI/2,(this._symbolType==="line"||this._symbolType==="rect"||this._symbolType==="roundRect")&&(t.__lastT!==void 0&&t.__lastT=0&&!(i[l]<=a);l--);l=Math.min(l,o-2)}else{for(l=s;la);l++);l=Math.min(l-1,o-2)}var f=(a-i[l])/(i[l+1]-i[l]),h=n[l],v=n[l+1];t.x=h[0]*(1-f)+f*v[0],t.y=h[1]*(1-f)+f*v[1];var c=t.__t<1?v[0]-h[0]:h[0]-v[0],p=t.__t<1?v[1]-h[1]:h[1]-v[1];t.rotation=-Math.atan2(p,c)-Math.PI/2,this._lastFrame=l,this._lastFramePercent=a,t.ignore=!1}},e}(oI),r4=function(){function r(){this.polyline=!1,this.curveness=0,this.segs=[]}return r}(),a4=function(r){N(e,r);function e(t){var a=r.call(this,t)||this;return a._off=0,a.hoverDataIdx=-1,a}return e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new r4},e.prototype.buildPath=function(t,a){var n=a.segs,i=a.curveness,o;if(a.polyline)for(o=this._off;o0){t.moveTo(n[o++],n[o++]);for(var l=1;l0){var c=(u+h)/2-(f-v)*i,p=(f+v)/2-(h-u)*i;t.quadraticCurveTo(c,p,h,v)}else t.lineTo(h,v)}this.incremental&&(this._off=o,this.notClear=!0)},e.prototype.findDataIndex=function(t,a){var n=this.shape,i=n.segs,o=n.curveness,s=this.style.lineWidth;if(n.polyline)for(var l=0,u=0;u0)for(var h=i[u++],v=i[u++],c=1;c0){var g=(h+p)/2-(v-d)*o,y=(v+d)/2-(p-h)*o;if(ET(h,v,g,y,p,d,s,t,a))return l}else if(Oa(h,v,p,d,s,t,a))return l;l++}return-1},e.prototype.contain=function(t,a){var n=this.transformCoordToLocal(t,a),i=this.getBoundingRect();if(t=n[0],a=n[1],i.contain(t,a)){var o=this.hoverDataIdx=this.findDataIndex(t,a);return o>=0}return this.hoverDataIdx=-1,!1},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var a=this.shape,n=a.segs,i=1/0,o=1/0,s=-1/0,l=-1/0,u=0;u0&&(o.dataIndex=l+e.__startIndex)})},r.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},r}(),lI={seriesType:"lines",plan:Eo(),reset:function(r){var e=r.coordinateSystem;if(e){var t=r.get("polyline"),a=r.pipelineContext.large;return{progress:function(n,i){var o=[];if(a){var s=void 0,l=n.end-n.start;if(t){for(var u=0,f=n.start;f0&&(f||u.configLayer(s,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(l/10+.9,1),0)})),o.updateData(i);var h=t.get("clip",!0)&&Nl(t.coordinateSystem,!1,t);h?this.group.setClipPath(h):this.group.removeClipPath(),this._lastZlevel=s,this._finished=!0},e.prototype.incrementalPrepareRender=function(t,a,n){var i=t.getData(),o=this._updateLineDraw(i,t);o.incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},e.prototype.incrementalRender=function(t,a,n){this._lineDraw.incrementalUpdate(t,a.getData()),this._finished=t.end===a.getData().count()},e.prototype.eachRendered=function(t){this._lineDraw&&this._lineDraw.eachRendered(t)},e.prototype.updateTransform=function(t,a,n){var i=t.getData(),o=t.pipelineContext;if(!this._finished||o.large||o.progressiveRender)return{update:!0};var s=lI.reset(t,a,n);s.progress&&s.progress({start:0,end:i.count(),count:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},e.prototype._updateLineDraw=function(t,a){var n=this._lineDraw,i=this._showEffect(a),o=!!a.get("polyline"),s=a.pipelineContext,l=s.large;return(!n||i!==this._hasEffet||o!==this._isPolyline||l!==this._isLargeDraw)&&(n&&n.remove(),n=this._lineDraw=l?new n4:new qy(o?i?e4:sI:i?oI:Zy),this._hasEffet=i,this._isPolyline=o,this._isLargeDraw=l),this.group.add(n.group),n},e.prototype._showEffect=function(t){return!!t.get(["effect","show"])},e.prototype._clearLayer=function(t){var a=t.getZr(),n=a.painter.getType()==="svg";!n&&this._lastZlevel!=null&&a.painter.getLayer(this._lastZlevel).clear(!0)},e.prototype.remove=function(t,a){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(a)},e.prototype.dispose=function(t,a){this.remove(t,a)},e.type="lines",e}(Lt),o4=typeof Uint32Array>"u"?Array:Uint32Array,s4=typeof Float64Array>"u"?Array:Float64Array;function px(r){var e=r.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(r.data=G(e,function(t){var a=[t[0].coord,t[1].coord],n={coords:a};return t[0].name&&(n.fromName=t[0].name),t[1].name&&(n.toName=t[1].name),hh([n,t[0],t[1]])}))}var l4=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.visualStyleAccessPath="lineStyle",t.visualDrawType="stroke",t}return e.prototype.init=function(t){t.data=t.data||[],px(t);var a=this._processFlatCoordsArray(t.data);this._flatCoords=a.flatCoords,this._flatCoordsOffset=a.flatCoordsOffset,a.flatCoords&&(t.data=new Float32Array(a.count)),r.prototype.init.apply(this,arguments)},e.prototype.mergeOption=function(t){if(px(t),t.data){var a=this._processFlatCoordsArray(t.data);this._flatCoords=a.flatCoords,this._flatCoordsOffset=a.flatCoordsOffset,a.flatCoords&&(t.data=new Float32Array(a.count))}r.prototype.mergeOption.apply(this,arguments)},e.prototype.appendData=function(t){var a=this._processFlatCoordsArray(t.data);a.flatCoords&&(this._flatCoords?(this._flatCoords=lo(this._flatCoords,a.flatCoords),this._flatCoordsOffset=lo(this._flatCoordsOffset,a.flatCoordsOffset)):(this._flatCoords=a.flatCoords,this._flatCoordsOffset=a.flatCoordsOffset),t.data=new Float32Array(a.count)),this.getRawData().appendData(t.data)},e.prototype._getCoordsFromItemModel=function(t){var a=this.getData().getItemModel(t),n=a.option instanceof Array?a.option:a.getShallow("coords");return n},e.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[t*2+1]:this._getCoordsFromItemModel(t).length},e.prototype.getLineCoords=function(t,a){if(this._flatCoordsOffset){for(var n=this._flatCoordsOffset[t*2],i=this._flatCoordsOffset[t*2+1],o=0;o ")})},e.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},e.prototype.getProgressive=function(){var t=this.option.progressive;return t??(this.option.large?1e4:this.get("progressive"))},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return t??(this.option.large?2e4:this.get("progressiveThreshold"))},e.prototype.getZLevelKey=function(){var t=this.getModel("effect"),a=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&a>0?a+"":""},e.type="series.lines",e.dependencies=["grid","polar","geo","calendar"],e.defaultOption={coordinateSystem:"geo",z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},e}(Et);function Ou(r){return r instanceof Array||(r=[r,r]),r}var u4={seriesType:"lines",reset:function(r){var e=Ou(r.get("symbol")),t=Ou(r.get("symbolSize")),a=r.getData();a.setVisual("fromSymbol",e&&e[0]),a.setVisual("toSymbol",e&&e[1]),a.setVisual("fromSymbolSize",t&&t[0]),a.setVisual("toSymbolSize",t&&t[1]);function n(i,o){var s=i.getItemModel(o),l=Ou(s.getShallow("symbol",!0)),u=Ou(s.getShallow("symbolSize",!0));l[0]&&i.setItemVisual(o,"fromSymbol",l[0]),l[1]&&i.setItemVisual(o,"toSymbol",l[1]),u[0]&&i.setItemVisual(o,"fromSymbolSize",u[0]),u[1]&&i.setItemVisual(o,"toSymbolSize",u[1])}return{dataEach:a.hasItemOption?n:null}}};function f4(r){r.registerChartView(i4),r.registerSeriesModel(l4),r.registerLayout(lI),r.registerVisual(u4)}var h4=256,v4=function(){function r(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var e=Mr.createCanvas();this.canvas=e}return r.prototype.update=function(e,t,a,n,i,o){var s=this._getBrush(),l=this._getGradient(i,"inRange"),u=this._getGradient(i,"outOfRange"),f=this.pointSize+this.blurSize,h=this.canvas,v=h.getContext("2d"),c=e.length;h.width=t,h.height=a;for(var p=0;p0){var I=o(_)?l:u;_>0&&(_=_*C+T),b[x++]=I[M],b[x++]=I[M+1],b[x++]=I[M+2],b[x++]=I[M+3]*_*256}else x+=4}return v.putImageData(S,0,0),h},r.prototype._getBrush=function(){var e=this._brushCanvas||(this._brushCanvas=Mr.createCanvas()),t=this.pointSize+this.blurSize,a=t*2;e.width=a,e.height=a;var n=e.getContext("2d");return n.clearRect(0,0,a,a),n.shadowOffsetX=a,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-t,t,this.pointSize,0,Math.PI*2,!0),n.closePath(),n.fill(),e},r.prototype._getGradient=function(e,t){for(var a=this._gradientPixels,n=a[t]||(a[t]=new Uint8ClampedArray(256*4)),i=[0,0,0,0],o=0,s=0;s<256;s++)e[t](s/255,!0,i),n[o++]=i[0],n[o++]=i[1],n[o++]=i[2],n[o++]=i[3];return n},r}();function c4(r,e,t){var a=r[1]-r[0];e=G(e,function(o){return{interval:[(o.interval[0]-r[0])/a,(o.interval[1]-r[0])/a]}});var n=e.length,i=0;return function(o){var s;for(s=i;s=0;s--){var l=e[s].interval;if(l[0]<=o&&o<=l[1]){i=s;break}}return s>=0&&s=e[0]&&a<=e[1]}}function dx(r){var e=r.dimensions;return e[0]==="lng"&&e[1]==="lat"}var d4=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i;a.eachComponent("visualMap",function(s){s.eachTargetSeries(function(l){l===t&&(i=s)})}),this._progressiveEls=null,this.group.removeAll();var o=t.coordinateSystem;o.type==="cartesian2d"||o.type==="calendar"?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):dx(o)&&this._renderOnGeo(o,t,i,n)},e.prototype.incrementalPrepareRender=function(t,a,n){this.group.removeAll()},e.prototype.incrementalRender=function(t,a,n,i){var o=a.coordinateSystem;o&&(dx(o)?this.render(a,n,i):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(a,i,t.start,t.end,!0)))},e.prototype.eachRendered=function(t){on(this._progressiveEls||this.group,t)},e.prototype._renderOnCartesianAndCalendar=function(t,a,n,i,o){var s=t.coordinateSystem,l=Si(s,"cartesian2d"),u,f,h,v;if(l){var c=s.getAxis("x"),p=s.getAxis("y");u=c.getBandWidth()+.5,f=p.getBandWidth()+.5,h=c.scale.getExtent(),v=p.scale.getExtent()}for(var d=this.group,g=t.getData(),y=t.getModel(["emphasis","itemStyle"]).getItemStyle(),m=t.getModel(["blur","itemStyle"]).getItemStyle(),_=t.getModel(["select","itemStyle"]).getItemStyle(),S=t.get(["itemStyle","borderRadius"]),b=oe(t),x=t.getModel("emphasis"),w=x.get("focus"),T=x.get("blurScope"),A=x.get("disabled"),C=l?[g.mapDimension("x"),g.mapDimension("y"),g.mapDimension("value")]:[g.mapDimension("time"),g.mapDimension("value")],M=n;Mh[1]||Rv[1])continue;var E=s.dataToPoint([P,R]);I=new xt({shape:{x:E[0]-u/2,y:E[1]-f/2,width:u,height:f},style:L})}else{if(isNaN(g.get(C[1],M)))continue;I=new xt({z2:1,shape:s.dataToRect([g.get(C[0],M)]).contentShape,style:L})}if(g.hasItemOption){var O=g.getItemModel(M),k=O.getModel("emphasis");y=k.getModel("itemStyle").getItemStyle(),m=O.getModel(["blur","itemStyle"]).getItemStyle(),_=O.getModel(["select","itemStyle"]).getItemStyle(),S=O.get(["itemStyle","borderRadius"]),w=k.get("focus"),T=k.get("blurScope"),A=k.get("disabled"),b=oe(O)}I.shape.r=S;var B=t.getRawValue(M),F="-";B&&B[2]!=null&&(F=B[2]+""),pe(I,b,{labelFetcher:t,labelDataIndex:M,defaultOpacity:L.opacity,defaultText:F}),I.ensureState("emphasis").style=y,I.ensureState("blur").style=m,I.ensureState("select").style=_,Wt(I,w,T,A),I.incremental=o,o&&(I.states.emphasis.hoverLayer=!0),d.add(I),g.setItemGraphicEl(M,I),this._progressiveEls&&this._progressiveEls.push(I)}},e.prototype._renderOnGeo=function(t,a,n,i){var o=n.targetVisuals.inRange,s=n.targetVisuals.outOfRange,l=a.getData(),u=this._hmLayer||this._hmLayer||new v4;u.blurSize=a.get("blurSize"),u.pointSize=a.get("pointSize"),u.minOpacity=a.get("minOpacity"),u.maxOpacity=a.get("maxOpacity");var f=t.getViewRect().clone(),h=t.getRoamTransform();f.applyTransform(h);var v=Math.max(f.x,0),c=Math.max(f.y,0),p=Math.min(f.width+f.x,i.getWidth()),d=Math.min(f.height+f.y,i.getHeight()),g=p-v,y=d-c,m=[l.mapDimension("lng"),l.mapDimension("lat"),l.mapDimension("value")],_=l.mapArray(m,function(w,T,A){var C=t.dataToPoint([w,T]);return C[0]-=v,C[1]-=c,C.push(A),C}),S=n.getExtent(),b=n.type==="visualMap.continuous"?p4(S,n.option.range):c4(S,n.getPieceList(),n.option.selected);u.update(_,g,y,o.color.getNormalizer(),{inRange:o.color.getColorMapper(),outOfRange:s.color.getColorMapper()},b);var x=new le({style:{width:g,height:y,x:v,y:c,image:u.canvas},silent:!0});this.group.add(x)},e.type="heatmap",e}(Lt),g4=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.getInitialData=function(t,a){return ea(null,this,{generateCoord:"value"})},e.prototype.preventIncremental=function(){var t=Ro.get(this.get("coordinateSystem"));if(t&&t.dimensions)return t.dimensions[0]==="lng"&&t.dimensions[1]==="lat"},e.type="series.heatmap",e.dependencies=["grid","geo","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0,select:{itemStyle:{borderColor:"#212121"}}},e}(Et);function y4(r){r.registerChartView(d4),r.registerSeriesModel(g4)}var m4=["itemStyle","borderWidth"],gx=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],qc=new Qr,_4=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=this.group,o=t.getData(),s=this._data,l=t.coordinateSystem,u=l.getBaseAxis(),f=u.isHorizontal(),h=l.master.getRect(),v={ecSize:{width:n.getWidth(),height:n.getHeight()},seriesModel:t,coordSys:l,coordSysExtent:[[h.x,h.x+h.width],[h.y,h.y+h.height]],isHorizontal:f,valueDim:gx[+f],categoryDim:gx[1-+f]};o.diff(s).add(function(p){if(o.hasValue(p)){var d=mx(o,p),g=yx(o,p,d,v),y=_x(o,v,g);o.setItemGraphicEl(p,y),i.add(y),xx(y,v,g)}}).update(function(p,d){var g=s.getItemGraphicEl(d);if(!o.hasValue(p)){i.remove(g);return}var y=mx(o,p),m=yx(o,p,y,v),_=pI(o,m);g&&_!==g.__pictorialShapeStr&&(i.remove(g),o.setItemGraphicEl(p,null),g=null),g?C4(g,v,m):g=_x(o,v,m,!0),o.setItemGraphicEl(p,g),g.__pictorialSymbolMeta=m,i.add(g),xx(g,v,m)}).remove(function(p){var d=s.getItemGraphicEl(p);d&&Sx(s,p,d.__pictorialSymbolMeta.animationModel,d)}).execute();var c=t.get("clip",!0)?Nl(t.coordinateSystem,!1,t):null;return c?i.setClipPath(c):i.removeClipPath(),this._data=o,this.group},e.prototype.remove=function(t,a){var n=this.group,i=this._data;t.get("animation")?i&&i.eachItemGraphicEl(function(o){Sx(i,nt(o).dataIndex,t,o)}):n.removeAll()},e.type="pictorialBar",e}(Lt);function yx(r,e,t,a){var n=r.getItemLayout(e),i=t.get("symbolRepeat"),o=t.get("symbolClip"),s=t.get("symbolPosition")||"start",l=t.get("symbolRotate"),u=(l||0)*Math.PI/180||0,f=t.get("symbolPatternSize")||2,h=t.isAnimationEnabled(),v={dataIndex:e,layout:n,itemModel:t,symbolType:r.getItemVisual(e,"symbol")||"circle",style:r.getItemVisual(e,"style"),symbolClip:o,symbolRepeat:i,symbolRepeatDirection:t.get("symbolRepeatDirection"),symbolPatternSize:f,rotation:u,animationModel:h?t:null,hoverScale:h&&t.get(["emphasis","scale"]),z2:t.getShallow("z",!0)||0};S4(t,i,n,a,v),x4(r,e,n,i,o,v.boundingLength,v.pxSign,f,a,v),b4(t,v.symbolScale,u,a,v);var c=v.symbolSize,p=_i(t.get("symbolOffset"),c);return w4(t,c,n,i,o,p,s,v.valueLineWidth,v.boundingLength,v.repeatCutLength,a,v),v}function S4(r,e,t,a,n){var i=a.valueDim,o=r.get("symbolBoundingData"),s=a.coordSys.getOtherAxis(a.coordSys.getBaseAxis()),l=s.toGlobalCoord(s.dataToCoord(0)),u=1-+(t[i.wh]<=0),f;if(z(o)){var h=[Kc(s,o[0])-l,Kc(s,o[1])-l];h[1]=0?1:-1:f>0?1:-1}function Kc(r,e){return r.toGlobalCoord(r.dataToCoord(r.scale.parse(e)))}function x4(r,e,t,a,n,i,o,s,l,u){var f=l.valueDim,h=l.categoryDim,v=Math.abs(t[h.wh]),c=r.getItemVisual(e,"symbolSize"),p;z(c)?p=c.slice():c==null?p=["100%","100%"]:p=[c,c],p[h.index]=W(p[h.index],v),p[f.index]=W(p[f.index],a?v:Math.abs(i)),u.symbolSize=p;var d=u.symbolScale=[p[0]/s,p[1]/s];d[f.index]*=(l.isHorizontal?-1:1)*o}function b4(r,e,t,a,n){var i=r.get(m4)||0;i&&(qc.attr({scaleX:e[0],scaleY:e[1],rotation:t}),qc.updateTransform(),i/=qc.getLineScale(),i*=e[a.valueDim.index]),n.valueLineWidth=i||0}function w4(r,e,t,a,n,i,o,s,l,u,f,h){var v=f.categoryDim,c=f.valueDim,p=h.pxSign,d=Math.max(e[c.index]+s,0),g=d;if(a){var y=Math.abs(l),m=ae(r.get("symbolMargin"),"15%")+"",_=!1;m.lastIndexOf("!")===m.length-1&&(_=!0,m=m.slice(0,m.length-1));var S=W(m,e[c.index]),b=Math.max(d+S*2,0),x=_?0:S*2,w=Cg(a),T=w?a:bx((y+x)/b),A=y-T*d;S=A/2/(_?T:Math.max(T-1,1)),b=d+S*2,x=_?0:S*2,!w&&a!=="fixed"&&(T=u?bx((Math.abs(u)+x)/b):0),g=T*b-x,h.repeatTimes=T,h.symbolMargin=S}var C=p*(g/2),M=h.pathPosition=[];M[v.index]=t[v.wh]/2,M[c.index]=o==="start"?C:o==="end"?l-C:l/2,i&&(M[0]+=i[0],M[1]+=i[1]);var I=h.bundlePosition=[];I[v.index]=t[v.xy],I[c.index]=t[c.xy];var L=h.barRectShape=V({},t);L[c.wh]=p*Math.max(Math.abs(t[c.wh]),Math.abs(M[c.index]+C)),L[v.wh]=t[v.wh];var P=h.clipShape={};P[v.xy]=-t[v.xy],P[v.wh]=f.ecSize[v.wh],P[c.xy]=0,P[c.wh]=t[c.wh]}function uI(r){var e=r.symbolPatternSize,t=qt(r.symbolType,-e/2,-e/2,e,e);return t.attr({culling:!0}),t.type!=="image"&&t.setStyle({strokeNoScale:!0}),t}function fI(r,e,t,a){var n=r.__pictorialBundle,i=t.symbolSize,o=t.valueLineWidth,s=t.pathPosition,l=e.valueDim,u=t.repeatTimes||0,f=0,h=i[e.valueDim.index]+o+t.symbolMargin*2;for(im(r,function(d){d.__pictorialAnimationIndex=f,d.__pictorialRepeatTimes=u,f0:y<0)&&(m=u-1-d),g[l.index]=h*(m-u/2+.5)+s[l.index],{x:g[0],y:g[1],scaleX:t.symbolScale[0],scaleY:t.symbolScale[1],rotation:t.rotation}}}function hI(r,e,t,a){var n=r.__pictorialBundle,i=r.__pictorialMainPath;i?oo(i,null,{x:t.pathPosition[0],y:t.pathPosition[1],scaleX:t.symbolScale[0],scaleY:t.symbolScale[1],rotation:t.rotation},t,a):(i=r.__pictorialMainPath=uI(t),n.add(i),oo(i,{x:t.pathPosition[0],y:t.pathPosition[1],scaleX:0,scaleY:0,rotation:t.rotation},{scaleX:t.symbolScale[0],scaleY:t.symbolScale[1]},t,a))}function vI(r,e,t){var a=V({},e.barRectShape),n=r.__pictorialBarRect;n?oo(n,null,{shape:a},e,t):(n=r.__pictorialBarRect=new xt({z2:2,shape:a,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),n.disableMorphing=!0,r.add(n))}function cI(r,e,t,a){if(t.symbolClip){var n=r.__pictorialClipPath,i=V({},t.clipShape),o=e.valueDim,s=t.animationModel,l=t.dataIndex;if(n)Tt(n,{shape:i},s,l);else{i[o.wh]=0,n=new xt({shape:i}),r.__pictorialBundle.setClipPath(n),r.__pictorialClipPath=n;var u={};u[o.wh]=t.clipShape[o.wh],yi[a?"updateProps":"initProps"](n,{shape:u},s,l)}}}function mx(r,e){var t=r.getItemModel(e);return t.getAnimationDelayParams=T4,t.isAnimationEnabled=A4,t}function T4(r){return{index:r.__pictorialAnimationIndex,count:r.__pictorialRepeatTimes}}function A4(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function _x(r,e,t,a){var n=new at,i=new at;return n.add(i),n.__pictorialBundle=i,i.x=t.bundlePosition[0],i.y=t.bundlePosition[1],t.symbolRepeat?fI(n,e,t):hI(n,e,t),vI(n,t,a),cI(n,e,t,a),n.__pictorialShapeStr=pI(r,t),n.__pictorialSymbolMeta=t,n}function C4(r,e,t){var a=t.animationModel,n=t.dataIndex,i=r.__pictorialBundle;Tt(i,{x:t.bundlePosition[0],y:t.bundlePosition[1]},a,n),t.symbolRepeat?fI(r,e,t,!0):hI(r,e,t,!0),vI(r,t,!0),cI(r,e,t,!0)}function Sx(r,e,t,a){var n=a.__pictorialBarRect;n&&n.removeTextContent();var i=[];im(a,function(o){i.push(o)}),a.__pictorialMainPath&&i.push(a.__pictorialMainPath),a.__pictorialClipPath&&(t=null),D(i,function(o){Qa(o,{scaleX:0,scaleY:0},t,e,function(){a.parent&&a.parent.remove(a)})}),r.setItemGraphicEl(e,null)}function pI(r,e){return[r.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function im(r,e,t){D(r.__pictorialBundle.children(),function(a){a!==r.__pictorialBarRect&&e.call(t,a)})}function oo(r,e,t,a,n,i){e&&r.attr(e),a.symbolClip&&!n?t&&r.attr(t):t&&yi[n?"updateProps":"initProps"](r,t,a.animationModel,a.dataIndex,i)}function xx(r,e,t){var a=t.dataIndex,n=t.itemModel,i=n.getModel("emphasis"),o=i.getModel("itemStyle").getItemStyle(),s=n.getModel(["blur","itemStyle"]).getItemStyle(),l=n.getModel(["select","itemStyle"]).getItemStyle(),u=n.getShallow("cursor"),f=i.get("focus"),h=i.get("blurScope"),v=i.get("scale");im(r,function(d){if(d instanceof le){var g=d.style;d.useStyle(V({image:g.image,x:g.x,y:g.y,width:g.width,height:g.height},t.style))}else d.useStyle(t.style);var y=d.ensureState("emphasis");y.style=o,v&&(y.scaleX=d.scaleX*1.1,y.scaleY=d.scaleY*1.1),d.ensureState("blur").style=s,d.ensureState("select").style=l,u&&(d.cursor=u),d.z2=t.z2});var c=e.valueDim.posDesc[+(t.boundingLength>0)],p=r.__pictorialBarRect;p.ignoreClip=!0,pe(p,oe(n),{labelFetcher:e.seriesModel,labelDataIndex:a,defaultText:po(e.seriesModel.getData(),a),inheritColor:t.style.fill,defaultOpacity:t.style.opacity,defaultOutsidePosition:c}),Wt(r,f,h,i.get("disabled"))}function bx(r){var e=Math.round(r);return Math.abs(r-e)<1e-4?e:Math.ceil(r)}var D4=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.hasSymbolVisual=!0,t.defaultSymbol="roundRect",t}return e.prototype.getInitialData=function(t){return t.stack=null,r.prototype.getInitialData.apply(this,arguments)},e.type="series.pictorialBar",e.dependencies=["grid"],e.defaultOption=sn(fl.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",clip:!1,progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),e}(fl);function M4(r){r.registerChartView(_4),r.registerSeriesModel(D4),r.registerLayout(r.PRIORITY.VISUAL.LAYOUT,lt(jC,"pictorialBar")),r.registerLayout(r.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,JC("pictorialBar"))}var I4=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._layers=[],t}return e.prototype.render=function(t,a,n){var i=t.getData(),o=this,s=this.group,l=t.getLayerSeries(),u=i.getLayout("layoutInfo"),f=u.rect,h=u.boundaryGap;s.x=0,s.y=f.y+h[0];function v(g){return g.name}var c=new ma(this._layersSeries||[],l,v,v),p=[];c.add(X(d,this,"add")).update(X(d,this,"update")).remove(X(d,this,"remove")).execute();function d(g,y,m){var _=o._layers;if(g==="remove"){s.remove(_[y]);return}for(var S=[],b=[],x,w=l[y].indices,T=0;Ti&&(i=s),a.push(s)}for(var u=0;ui&&(i=h)}return{y0:n,max:i}}function k4(r){r.registerChartView(I4),r.registerSeriesModel(P4),r.registerLayout(R4),r.registerProcessor(Vl("themeRiver"))}var O4=2,N4=4,Ax=function(r){N(e,r);function e(t,a,n,i){var o=r.call(this)||this;o.z2=O4,o.textConfig={inside:!0},nt(o).seriesIndex=a.seriesIndex;var s=new St({z2:N4,silent:t.getModel().get(["label","silent"])});return o.setTextContent(s),o.updateData(!0,t,a,n,i),o}return e.prototype.updateData=function(t,a,n,i,o){this.node=a,a.piece=this,n=n||this._seriesModel,i=i||this._ecModel;var s=this;nt(s).dataIndex=a.dataIndex;var l=a.getModel(),u=l.getModel("emphasis"),f=a.getLayout(),h=V({},f);h.label=null;var v=a.getVisual("style");v.lineJoin="bevel";var c=a.getVisual("decal");c&&(v.decal=co(c,o));var p=jn(l.getModel("itemStyle"),h,!0);V(h,p),D(ke,function(m){var _=s.ensureState(m),S=l.getModel([m,"itemStyle"]);_.style=S.getItemStyle();var b=jn(S,h);b&&(_.shape=b)}),t?(s.setShape(h),s.shape.r=f.r0,Gt(s,{shape:{r:f.r}},n,a.dataIndex)):(Tt(s,{shape:h},n),Pr(s)),s.useStyle(v),this._updateLabel(n);var d=l.getShallow("cursor");d&&s.attr("cursor",d),this._seriesModel=n||this._seriesModel,this._ecModel=i||this._ecModel;var g=u.get("focus"),y=g==="relative"?lo(a.getAncestorsIndices(),a.getDescendantIndices()):g==="ancestor"?a.getAncestorsIndices():g==="descendant"?a.getDescendantIndices():g;Wt(this,y,u.get("blurScope"),u.get("disabled"))},e.prototype._updateLabel=function(t){var a=this,n=this.node.getModel(),i=n.getModel("label"),o=this.node.getLayout(),s=o.endAngle-o.startAngle,l=(o.startAngle+o.endAngle)/2,u=Math.cos(l),f=Math.sin(l),h=this,v=h.getTextContent(),c=this.node.dataIndex,p=i.get("minAngle")/180*Math.PI,d=i.get("show")&&!(p!=null&&Math.abs(s)P&&!uo(E-P)&&E0?(o.virtualPiece?o.virtualPiece.updateData(!1,m,t,a,n):(o.virtualPiece=new Ax(m,t,a,n),f.add(o.virtualPiece)),_.piece.off("click"),o.virtualPiece.on("click",function(S){o._rootToNode(_.parentNode)})):o.virtualPiece&&(f.remove(o.virtualPiece),o.virtualPiece=null)}},e.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",function(a){var n=!1,i=t.seriesModel.getViewRoot();i.eachNode(function(o){if(!n&&o.piece&&o.piece===a.target){var s=o.getModel().get("nodeClick");if(s==="rootToNode")t._rootToNode(o);else if(s==="link"){var l=o.getModel(),u=l.get("link");if(u){var f=l.get("target",!0)||"_blank";If(u,f)}}n=!0}})})},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:Xd,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},e.prototype.containPoint=function(t,a){var n=a.getData(),i=n.getItemLayout(0);if(i){var o=t[0]-i.cx,s=t[1]-i.cy,l=Math.sqrt(o*o+s*s);return l<=i.r&&l>=i.r0}},e.type="sunburst",e}(Lt),G4=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.ignoreStyleOnData=!0,t}return e.prototype.getInitialData=function(t,a){var n={name:t.name,children:t.data};dI(n);var i=this._levelModels=G(t.levels||[],function(l){return new Ct(l,this,a)},this),o=Hy.createTree(n,this,s);function s(l){l.wrapMethod("getItemModel",function(u,f){var h=o.getNodeByDataIndex(f),v=i[h.depth];return v&&(u.parentModel=v),u})}return o.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.getDataParams=function(t){var a=r.prototype.getDataParams.apply(this,arguments),n=this.getData().tree.getNodeByDataIndex(t);return a.treePathInfo=Zh(n,this),a},e.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var a=this.getRawData().tree.root;(!t||t!==a&&!a.contains(t))&&(this._viewRoot=a)},e.prototype.enableAriaDecal=function(){SM(this)},e.type="series.sunburst",e.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"},e}(Et);function dI(r){var e=0;D(r.children,function(a){dI(a);var n=a.value;z(n)&&(n=n[0]),e+=n});var t=r.value;z(t)&&(t=t[0]),(t==null||isNaN(t))&&(t=e),t<0&&(t=0),z(r.value)?r.value[0]=t:r.value=t}var Dx=Math.PI/180;function F4(r,e,t){e.eachSeriesByType(r,function(a){var n=a.get("center"),i=a.get("radius");z(i)||(i=[0,i]),z(n)||(n=[n,n]);var o=t.getWidth(),s=t.getHeight(),l=Math.min(o,s),u=W(n[0],o),f=W(n[1],s),h=W(i[0],l/2),v=W(i[1],l/2),c=-a.get("startAngle")*Dx,p=a.get("minAngle")*Dx,d=a.getData().tree.root,g=a.getViewRoot(),y=g.depth,m=a.get("sort");m!=null&&gI(g,m);var _=0;D(g.children,function(E){!isNaN(E.getValue())&&_++});var S=g.getValue(),b=Math.PI/(S||_)*2,x=g.depth>0,w=g.height-(x?-1:1),T=(v-h)/(w||1),A=a.get("clockwise"),C=a.get("stillShowZeroSum"),M=A?1:-1,I=function(E,O){if(E){var k=O;if(E!==d){var B=E.getValue(),F=S===0&&C?b:B*b;F1;)o=o.parentNode;var s=n.getColorFromPalette(o.name||o.dataIndex+"",e);return a.depth>1&&Y(s)&&(s=yf(s,(a.depth-1)/(i-1)*.5)),s}r.eachSeriesByType("sunburst",function(a){var n=a.getData(),i=n.tree;i.eachNode(function(o){var s=o.getModel(),l=s.getModel("itemStyle").getItemStyle();l.fill||(l.fill=t(o,a,i.root.height));var u=n.ensureUniqueItemVisual(o.dataIndex,"style");V(u,l)})})}function U4(r){r.registerChartView(z4),r.registerSeriesModel(G4),r.registerLayout(lt(F4,"sunburst")),r.registerProcessor(lt(Vl,"sunburst")),r.registerVisual(W4),V4(r)}var Mx={color:"fill",borderColor:"stroke"},Y4={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},ca=bt(),X4=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},e.prototype.getInitialData=function(t,a){return ea(null,this)},e.prototype.getDataParams=function(t,a,n){var i=r.prototype.getDataParams.call(this,t,a);return n&&(i.info=ca(n).info),i},e.type="series.custom",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,clip:!1},e}(Et);function $4(r,e){return e=e||[0,0],G(["x","y"],function(t,a){var n=this.getAxis(t),i=e[a],o=r[a]/2;return n.type==="category"?n.getBandWidth():Math.abs(n.dataToCoord(i-o)-n.dataToCoord(i+o))},this)}function Z4(r){var e=r.master.getRect();return{coordSys:{type:"cartesian2d",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:function(t){return r.dataToPoint(t)},size:X($4,r)}}}function q4(r,e){return e=e||[0,0],G([0,1],function(t){var a=e[t],n=r[t]/2,i=[],o=[];return i[t]=a-n,o[t]=a+n,i[1-t]=o[1-t]=e[1-t],Math.abs(this.dataToPoint(i)[t]-this.dataToPoint(o)[t])},this)}function K4(r){var e=r.getBoundingRect();return{coordSys:{type:"geo",x:e.x,y:e.y,width:e.width,height:e.height,zoom:r.getZoom()},api:{coord:function(t){return r.dataToPoint(t)},size:X(q4,r)}}}function j4(r,e){var t=this.getAxis(),a=e instanceof Array?e[0]:e,n=(r instanceof Array?r[0]:r)/2;return t.type==="category"?t.getBandWidth():Math.abs(t.dataToCoord(a-n)-t.dataToCoord(a+n))}function J4(r){var e=r.getRect();return{coordSys:{type:"singleAxis",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:function(t){return r.dataToPoint(t)},size:X(j4,r)}}}function Q4(r,e){return e=e||[0,0],G(["Radius","Angle"],function(t,a){var n="get"+t+"Axis",i=this[n](),o=e[a],s=r[a]/2,l=i.type==="category"?i.getBandWidth():Math.abs(i.dataToCoord(o-s)-i.dataToCoord(o+s));return t==="Angle"&&(l=l*Math.PI/180),l},this)}function tW(r){var e=r.getRadiusAxis(),t=r.getAngleAxis(),a=e.getExtent();return a[0]>a[1]&&a.reverse(),{coordSys:{type:"polar",cx:r.cx,cy:r.cy,r:a[1],r0:a[0]},api:{coord:function(n){var i=e.dataToRadius(n[0]),o=t.dataToAngle(n[1]),s=r.coordToPoint([i,o]);return s.push(i,o*Math.PI/180),s},size:X(Q4,r)}}}function eW(r){var e=r.getRect(),t=r.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:r.getCellWidth(),cellHeight:r.getCellHeight(),rangeInfo:{start:t.start,end:t.end,weeks:t.weeks,dayCount:t.allDay}},api:{coord:function(a,n){return r.dataToPoint(a,n)}}}}function yI(r,e,t,a){return r&&(r.legacy||r.legacy!==!1&&!t&&!a&&e!=="tspan"&&(e==="text"||$(r,"text")))}function mI(r,e,t){var a=r,n,i,o;if(e==="text")o=a;else{o={},$(a,"text")&&(o.text=a.text),$(a,"rich")&&(o.rich=a.rich),$(a,"textFill")&&(o.fill=a.textFill),$(a,"textStroke")&&(o.stroke=a.textStroke),$(a,"fontFamily")&&(o.fontFamily=a.fontFamily),$(a,"fontSize")&&(o.fontSize=a.fontSize),$(a,"fontStyle")&&(o.fontStyle=a.fontStyle),$(a,"fontWeight")&&(o.fontWeight=a.fontWeight),i={type:"text",style:o,silent:!0},n={};var s=$(a,"textPosition");t?n.position=s?a.textPosition:"inside":s&&(n.position=a.textPosition),$(a,"textPosition")&&(n.position=a.textPosition),$(a,"textOffset")&&(n.offset=a.textOffset),$(a,"textRotation")&&(n.rotation=a.textRotation),$(a,"textDistance")&&(n.distance=a.textDistance)}return Ix(o,r),D(o.rich,function(l){Ix(l,l)}),{textConfig:n,textContent:i}}function Ix(r,e){e&&(e.font=e.textFont||e.font,$(e,"textStrokeWidth")&&(r.lineWidth=e.textStrokeWidth),$(e,"textAlign")&&(r.align=e.textAlign),$(e,"textVerticalAlign")&&(r.verticalAlign=e.textVerticalAlign),$(e,"textLineHeight")&&(r.lineHeight=e.textLineHeight),$(e,"textWidth")&&(r.width=e.textWidth),$(e,"textHeight")&&(r.height=e.textHeight),$(e,"textBackgroundColor")&&(r.backgroundColor=e.textBackgroundColor),$(e,"textPadding")&&(r.padding=e.textPadding),$(e,"textBorderColor")&&(r.borderColor=e.textBorderColor),$(e,"textBorderWidth")&&(r.borderWidth=e.textBorderWidth),$(e,"textBorderRadius")&&(r.borderRadius=e.textBorderRadius),$(e,"textBoxShadowColor")&&(r.shadowColor=e.textBoxShadowColor),$(e,"textBoxShadowBlur")&&(r.shadowBlur=e.textBoxShadowBlur),$(e,"textBoxShadowOffsetX")&&(r.shadowOffsetX=e.textBoxShadowOffsetX),$(e,"textBoxShadowOffsetY")&&(r.shadowOffsetY=e.textBoxShadowOffsetY))}function Lx(r,e,t){var a=r;a.textPosition=a.textPosition||t.position||"inside",t.offset!=null&&(a.textOffset=t.offset),t.rotation!=null&&(a.textRotation=t.rotation),t.distance!=null&&(a.textDistance=t.distance);var n=a.textPosition.indexOf("inside")>=0,i=r.fill||"#000";Px(a,e);var o=a.textFill==null;return n?o&&(a.textFill=t.insideFill||"#fff",!a.textStroke&&t.insideStroke&&(a.textStroke=t.insideStroke),!a.textStroke&&(a.textStroke=i),a.textStrokeWidth==null&&(a.textStrokeWidth=2)):(o&&(a.textFill=r.fill||t.outsideFill||"#000"),!a.textStroke&&t.outsideStroke&&(a.textStroke=t.outsideStroke)),a.text=e.text,a.rich=e.rich,D(e.rich,function(s){Px(s,s)}),a}function Px(r,e){e&&($(e,"fill")&&(r.textFill=e.fill),$(e,"stroke")&&(r.textStroke=e.fill),$(e,"lineWidth")&&(r.textStrokeWidth=e.lineWidth),$(e,"font")&&(r.font=e.font),$(e,"fontStyle")&&(r.fontStyle=e.fontStyle),$(e,"fontWeight")&&(r.fontWeight=e.fontWeight),$(e,"fontSize")&&(r.fontSize=e.fontSize),$(e,"fontFamily")&&(r.fontFamily=e.fontFamily),$(e,"align")&&(r.textAlign=e.align),$(e,"verticalAlign")&&(r.textVerticalAlign=e.verticalAlign),$(e,"lineHeight")&&(r.textLineHeight=e.lineHeight),$(e,"width")&&(r.textWidth=e.width),$(e,"height")&&(r.textHeight=e.height),$(e,"backgroundColor")&&(r.textBackgroundColor=e.backgroundColor),$(e,"padding")&&(r.textPadding=e.padding),$(e,"borderColor")&&(r.textBorderColor=e.borderColor),$(e,"borderWidth")&&(r.textBorderWidth=e.borderWidth),$(e,"borderRadius")&&(r.textBorderRadius=e.borderRadius),$(e,"shadowColor")&&(r.textBoxShadowColor=e.shadowColor),$(e,"shadowBlur")&&(r.textBoxShadowBlur=e.shadowBlur),$(e,"shadowOffsetX")&&(r.textBoxShadowOffsetX=e.shadowOffsetX),$(e,"shadowOffsetY")&&(r.textBoxShadowOffsetY=e.shadowOffsetY),$(e,"textShadowColor")&&(r.textShadowColor=e.textShadowColor),$(e,"textShadowBlur")&&(r.textShadowBlur=e.textShadowBlur),$(e,"textShadowOffsetX")&&(r.textShadowOffsetX=e.textShadowOffsetX),$(e,"textShadowOffsetY")&&(r.textShadowOffsetY=e.textShadowOffsetY))}var _I={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},Rx=_t(_I);ur(Kr,function(r,e){return r[e]=1,r},{});Kr.join(", ");var jf=["","style","shape","extra"],mo=bt();function om(r,e,t,a,n){var i=r+"Animation",o=Co(r,a,n)||{},s=mo(e).userDuring;return o.duration>0&&(o.during=s?X(oW,{el:e,userDuring:s}):null,o.setToFinal=!0,o.scope=r),V(o,t[i]),o}function sf(r,e,t,a){a=a||{};var n=a.dataIndex,i=a.isInit,o=a.clearStyle,s=t.isAnimationEnabled(),l=mo(r),u=e.style;l.userDuring=e.during;var f={},h={};if(lW(r,e,h),kx("shape",e,h),kx("extra",e,h),!i&&s&&(sW(r,e,f),Ex("shape",r,e,f),Ex("extra",r,e,f),uW(r,e,u,f)),h.style=u,rW(r,h,o),nW(r,e),s)if(i){var v={};D(jf,function(p){var d=p?e[p]:e;d&&d.enterFrom&&(p&&(v[p]=v[p]||{}),V(p?v[p]:v,d.enterFrom))});var c=om("enter",r,e,t,n);c.duration>0&&r.animateFrom(v,c)}else aW(r,e,n||0,t,f);SI(r,e),u?r.dirty():r.markRedraw()}function SI(r,e){for(var t=mo(r).leaveToProps,a=0;a0&&r.animateFrom(n,i)}}function nW(r,e){$(e,"silent")&&(r.silent=e.silent),$(e,"ignore")&&(r.ignore=e.ignore),r instanceof fr&&$(e,"invisible")&&(r.invisible=e.invisible),r instanceof mt&&$(e,"autoBatch")&&(r.autoBatch=e.autoBatch)}var Vr={},iW={setTransform:function(r,e){return Vr.el[r]=e,this},getTransform:function(r){return Vr.el[r]},setShape:function(r,e){var t=Vr.el,a=t.shape||(t.shape={});return a[r]=e,t.dirtyShape&&t.dirtyShape(),this},getShape:function(r){var e=Vr.el.shape;if(e)return e[r]},setStyle:function(r,e){var t=Vr.el,a=t.style;return a&&(a[r]=e,t.dirtyStyle&&t.dirtyStyle()),this},getStyle:function(r){var e=Vr.el.style;if(e)return e[r]},setExtra:function(r,e){var t=Vr.el.extra||(Vr.el.extra={});return t[r]=e,this},getExtra:function(r){var e=Vr.el.extra;if(e)return e[r]}};function oW(){var r=this,e=r.el;if(e){var t=mo(e).userDuring,a=r.userDuring;if(t!==a){r.el=r.userDuring=null;return}Vr.el=e,a(iW)}}function Ex(r,e,t,a){var n=t[r];if(n){var i=e[r],o;if(i){var s=t.transition,l=n.transition;if(l)if(!o&&(o=a[r]={}),ni(l))V(o,i);else for(var u=Rt(l),f=0;f=0){!o&&(o=a[r]={});for(var c=_t(i),f=0;f=0)){var v=r.getAnimationStyleProps(),c=v?v.style:null;if(c){!i&&(i=a.style={});for(var p=_t(t),u=0;u=0?e.getStore().get(O,R):void 0}var k=e.get(E.name,R),B=E&&E.ordinalMeta;return B?B.categories[k]:k}function x(P,R){R==null&&(R=u);var E=e.getItemVisual(R,"style"),O=E&&E.fill,k=E&&E.opacity,B=m(R,Ha).getItemStyle();O!=null&&(B.fill=O),k!=null&&(B.opacity=k);var F={inheritColor:Y(O)?O:"#000"},H=_(R,Ha),U=Nt(H,null,F,!1,!0);U.text=H.getShallow("show")?st(r.getFormattedLabel(R,Ha),po(e,R)):null;var j=Df(H,F,!1);return A(P,B),B=Lx(B,U,j),P&&T(B,P),B.legacy=!0,B}function w(P,R){R==null&&(R=u);var E=m(R,pa).getItemStyle(),O=_(R,pa),k=Nt(O,null,null,!0,!0);k.text=O.getShallow("show")?Tr(r.getFormattedLabel(R,pa),r.getFormattedLabel(R,Ha),po(e,R)):null;var B=Df(O,null,!0);return A(P,E),E=Lx(E,k,B),P&&T(E,P),E.legacy=!0,E}function T(P,R){for(var E in R)$(R,E)&&(P[E]=R[E])}function A(P,R){P&&(P.textFill&&(R.textFill=P.textFill),P.textPosition&&(R.textPosition=P.textPosition))}function C(P,R){if(R==null&&(R=u),$(Mx,P)){var E=e.getItemVisual(R,"style");return E?E[Mx[P]]:null}if($(Y4,P))return e.getItemVisual(R,P)}function M(P){if(i.type==="cartesian2d"){var R=i.getBaseAxis();return ZN(J({axis:R},P))}}function I(){return t.getCurrentSeriesIndices()}function L(P){return Wg(P,t)}}function _W(r){var e={};return D(r.dimensions,function(t){var a=r.getDimensionInfo(t);if(!a.isExtraCoord){var n=a.coordDim,i=e[n]=e[n]||[];i[a.coordDimIndex]=r.getDimensionIndex(t)}}),e}function tp(r,e,t,a,n,i,o){if(!a){i.remove(e);return}var s=hm(r,e,t,a,n,i);return s&&o.setItemGraphicEl(t,s),s&&Wt(s,a.focus,a.blurScope,a.emphasisDisabled),s}function hm(r,e,t,a,n,i){var o=-1,s=e;e&&TI(e,a,n)&&(o=vt(i.childrenRef(),e),e=null);var l=!e,u=e;u?u.clearStates():(u=um(a),s&&dW(s,u)),a.morph===!1?u.disableMorphing=!0:u.disableMorphing&&(u.disableMorphing=!1),Je.normal.cfg=Je.normal.conOpt=Je.emphasis.cfg=Je.emphasis.conOpt=Je.blur.cfg=Je.blur.conOpt=Je.select.cfg=Je.select.conOpt=null,Je.isLegacy=!1,xW(u,t,a,n,l,Je),SW(u,t,a,n,l),fm(r,u,t,a,Je,n,l),$(a,"info")&&(ca(u).info=a.info);for(var f=0;f=0?i.replaceAt(u,o):i.add(u),u}function TI(r,e,t){var a=ca(r),n=e.type,i=e.shape,o=e.style;return t.isUniversalTransitionEnabled()||n!=null&&n!==a.customGraphicType||n==="path"&&CW(i)&&AI(i)!==a.customPathData||n==="image"&&$(o,"image")&&o.image!==a.customImagePath}function SW(r,e,t,a,n){var i=t.clipPath;if(i===!1)r&&r.getClipPath()&&r.removeClipPath();else if(i){var o=r.getClipPath();o&&TI(o,i,a)&&(o=null),o||(o=um(i),r.setClipPath(o)),fm(null,o,e,i,null,a,n)}}function xW(r,e,t,a,n,i){if(!r.isGroup){Nx(t,null,i),Nx(t,pa,i);var o=i.normal.conOpt,s=i.emphasis.conOpt,l=i.blur.conOpt,u=i.select.conOpt;if(o!=null||s!=null||u!=null||l!=null){var f=r.getTextContent();if(o===!1)f&&r.removeTextContent();else{o=i.normal.conOpt=o||{type:"text"},f?f.clearStates():(f=um(o),r.setTextContent(f)),fm(null,f,e,o,null,a,n);for(var h=o&&o.style,v=0;v=f;c--){var p=e.childAt(c);wW(e,p,n)}}}function wW(r,e,t){e&&jh(e,ca(r).option,t)}function TW(r){new ma(r.oldChildren,r.newChildren,Bx,Bx,r).add(Vx).update(Vx).remove(AW).execute()}function Bx(r,e){var t=r&&r.name;return t??cW+e}function Vx(r,e){var t=this.context,a=r!=null?t.newChildren[r]:null,n=e!=null?t.oldChildren[e]:null;hm(t.api,n,t.dataIndex,a,t.seriesModel,t.group)}function AW(r){var e=this.context,t=e.oldChildren[r];t&&jh(t,ca(t).option,e.seriesModel)}function AI(r){return r&&(r.pathData||r.d)}function CW(r){return r&&($(r,"pathData")||$(r,"d"))}function DW(r){r.registerChartView(gW),r.registerSeriesModel(X4)}var Hn=bt(),zx=rt,ep=X,cm=function(){function r(){this._dragging=!1,this.animationThreshold=15}return r.prototype.render=function(e,t,a,n){var i=t.get("value"),o=t.get("status");if(this._axisModel=e,this._axisPointerModel=t,this._api=a,!(!n&&this._lastValue===i&&this._lastStatus===o)){this._lastValue=i,this._lastStatus=o;var s=this._group,l=this._handle;if(!o||o==="hide"){s&&s.hide(),l&&l.hide();return}s&&s.show(),l&&l.show();var u={};this.makeElOption(u,i,e,t,a);var f=u.graphicKey;f!==this._lastGraphicKey&&this.clear(a),this._lastGraphicKey=f;var h=this._moveAnimation=this.determineAnimation(e,t);if(!s)s=this._group=new at,this.createPointerEl(s,u,e,t),this.createLabelEl(s,u,e,t),a.getZr().add(s);else{var v=lt(Gx,t,h);this.updatePointerEl(s,u,v),this.updateLabelEl(s,u,v,t)}Hx(s,t,!0),this._renderHandle(i)}},r.prototype.remove=function(e){this.clear(e)},r.prototype.dispose=function(e){this.clear(e)},r.prototype.determineAnimation=function(e,t){var a=t.get("animation"),n=e.axis,i=n.type==="category",o=t.get("snap");if(!o&&!i)return!1;if(a==="auto"||a==null){var s=this.animationThreshold;if(i&&n.getBandWidth()>s)return!0;if(o){var l=Oy(e).seriesDataCount,u=n.getExtent();return Math.abs(u[0]-u[1])/l>s}return!1}return a===!0},r.prototype.makeElOption=function(e,t,a,n,i){},r.prototype.createPointerEl=function(e,t,a,n){var i=t.pointer;if(i){var o=Hn(e).pointerEl=new yi[i.type](zx(t.pointer));e.add(o)}},r.prototype.createLabelEl=function(e,t,a,n){if(t.label){var i=Hn(e).labelEl=new St(zx(t.label));e.add(i),Fx(i,n)}},r.prototype.updatePointerEl=function(e,t,a){var n=Hn(e).pointerEl;n&&t.pointer&&(n.setStyle(t.pointer.style),a(n,{shape:t.pointer.shape}))},r.prototype.updateLabelEl=function(e,t,a,n){var i=Hn(e).labelEl;i&&(i.setStyle(t.label.style),a(i,{x:t.label.x,y:t.label.y}),Fx(i,n))},r.prototype._renderHandle=function(e){if(!(this._dragging||!this.updateHandleTransform)){var t=this._axisPointerModel,a=this._api.getZr(),n=this._handle,i=t.getModel("handle"),o=t.get("status");if(!i.get("show")||!o||o==="hide"){n&&a.remove(n),this._handle=null;return}var s;this._handle||(s=!0,n=this._handle=Do(i.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(u){da(u.event)},onmousedown:ep(this._onHandleDragMove,this,0,0),drift:ep(this._onHandleDragMove,this),ondragend:ep(this._onHandleDragEnd,this)}),a.add(n)),Hx(n,t,!1),n.setStyle(i.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var l=i.get("size");z(l)||(l=[l,l]),n.scaleX=l[0]/2,n.scaleY=l[1]/2,ko(this,"_doDispatchAxisPointer",i.get("throttle")||0,"fixRate"),this._moveHandleToValue(e,s)}},r.prototype._moveHandleToValue=function(e,t){Gx(this._axisPointerModel,!t&&this._moveAnimation,this._handle,rp(this.getHandleTransform(e,this._axisModel,this._axisPointerModel)))},r.prototype._onHandleDragMove=function(e,t){var a=this._handle;if(a){this._dragging=!0;var n=this.updateHandleTransform(rp(a),[e,t],this._axisModel,this._axisPointerModel);this._payloadInfo=n,a.stopAnimation(),a.attr(rp(n)),Hn(a).lastProp=null,this._doDispatchAxisPointer()}},r.prototype._doDispatchAxisPointer=function(){var e=this._handle;if(e){var t=this._payloadInfo,a=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:a.axis.dim,axisIndex:a.componentIndex}]})}},r.prototype._onHandleDragEnd=function(){this._dragging=!1;var e=this._handle;if(e){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},r.prototype.clear=function(e){this._lastValue=null,this._lastStatus=null;var t=e.getZr(),a=this._group,n=this._handle;t&&a&&(this._lastGraphicKey=null,a&&t.remove(a),n&&t.remove(n),this._group=null,this._handle=null,this._payloadInfo=null),nl(this,"_doDispatchAxisPointer")},r.prototype.doClear=function(){},r.prototype.buildLabel=function(e,t,a){return a=a||0,{x:e[a],y:e[1-a],width:t[a],height:t[1-a]}},r}();function Gx(r,e,t,a){CI(Hn(t).lastProp,a)||(Hn(t).lastProp=a,e?Tt(t,a,r):(t.stopAnimation(),t.attr(a)))}function CI(r,e){if(tt(r)&&tt(e)){var t=!0;return D(e,function(a,n){t=t&&CI(r[n],a)}),!!t}else return r===e}function Fx(r,e){r[e.get(["label","show"])?"show":"hide"]()}function rp(r){return{x:r.x||0,y:r.y||0,rotation:r.rotation||0}}function Hx(r,e,t){var a=e.get("z"),n=e.get("zlevel");r&&r.traverse(function(i){i.type!=="group"&&(a!=null&&(i.z=a),n!=null&&(i.zlevel=n),i.silent=t)})}function pm(r){var e=r.get("type"),t=r.getModel(e+"Style"),a;return e==="line"?(a=t.getLineStyle(),a.fill=null):e==="shadow"&&(a=t.getAreaStyle(),a.stroke=null),a}function DI(r,e,t,a,n){var i=t.get("value"),o=MI(i,e.axis,e.ecModel,t.get("seriesDataIndices"),{precision:t.get(["label","precision"]),formatter:t.get(["label","formatter"])}),s=t.getModel("label"),l=mi(s.get("padding")||0),u=s.getFont(),f=Tl(o,u),h=n.position,v=f.width+l[1]+l[3],c=f.height+l[0]+l[2],p=n.align;p==="right"&&(h[0]-=v),p==="center"&&(h[0]-=v/2);var d=n.verticalAlign;d==="bottom"&&(h[1]-=c),d==="middle"&&(h[1]-=c/2),MW(h,v,c,a);var g=s.get("backgroundColor");(!g||g==="auto")&&(g=e.get(["axisLine","lineStyle","color"])),r.label={x:h[0],y:h[1],style:Nt(s,{text:o,font:u,fill:s.getTextColor(),padding:l,backgroundColor:g}),z2:10}}function MW(r,e,t,a){var n=a.getWidth(),i=a.getHeight();r[0]=Math.min(r[0]+e,n)-e,r[1]=Math.min(r[1]+t,i)-t,r[0]=Math.max(r[0],0),r[1]=Math.max(r[1],0)}function MI(r,e,t,a,n){r=e.scale.parse(r);var i=e.scale.getLabel({value:r},{precision:n.precision}),o=n.formatter;if(o){var s={value:Ty(e,{value:r}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};D(a,function(l){var u=t.getSeriesByIndex(l.seriesIndex),f=l.dataIndexInside,h=u&&u.getDataParams(f);h&&s.seriesData.push(h)}),Y(o)?i=o.replace("{value}",i):K(o)&&(i=o(s))}return i}function dm(r,e,t){var a=Fe();return nn(a,a,t.rotation),Ir(a,a,t.position),Dr([r.dataToCoord(e),(t.labelOffset||0)+(t.labelDirection||1)*(t.labelMargin||0)],a)}function II(r,e,t,a,n,i){var o=Re.innerTextLayout(t.rotation,0,t.labelDirection);t.labelMargin=n.get(["label","margin"]),DI(e,a,n,i,{position:dm(a.axis,r,t),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function gm(r,e,t){return t=t||0,{x1:r[t],y1:r[1-t],x2:e[t],y2:e[1-t]}}function LI(r,e,t){return t=t||0,{x:r[t],y:r[1-t],width:e[t],height:e[1-t]}}function Wx(r,e,t,a,n,i){return{cx:r,cy:e,r0:t,r:a,startAngle:n,endAngle:i,clockwise:!0}}var IW=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.makeElOption=function(t,a,n,i,o){var s=n.axis,l=s.grid,u=i.get("type"),f=Ux(l,s).getOtherAxis(s).getGlobalExtent(),h=s.toGlobalCoord(s.dataToCoord(a,!0));if(u&&u!=="none"){var v=pm(i),c=LW[u](s,h,f);c.style=v,t.graphicKey=c.type,t.pointer=c}var p=Md(l.model,n);II(a,t,p,n,i,o)},e.prototype.getHandleTransform=function(t,a,n){var i=Md(a.axis.grid.model,a,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var o=dm(a.axis,t,i);return{x:o[0],y:o[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,a,n,i){var o=n.axis,s=o.grid,l=o.getGlobalExtent(!0),u=Ux(s,o).getOtherAxis(o).getGlobalExtent(),f=o.dim==="x"?0:1,h=[t.x,t.y];h[f]+=a[f],h[f]=Math.min(l[1],h[f]),h[f]=Math.max(l[0],h[f]);var v=(u[1]+u[0])/2,c=[v,v];c[f]=h[f];var p=[{verticalAlign:"middle"},{align:"center"}];return{x:h[0],y:h[1],rotation:t.rotation,cursorPoint:c,tooltipOption:p[f]}},e}(cm);function Ux(r,e){var t={};return t[e.dim+"AxisIndex"]=e.index,r.getCartesian(t)}var LW={line:function(r,e,t){var a=gm([e,t[0]],[e,t[1]],Yx(r));return{type:"Line",subPixelOptimize:!0,shape:a}},shadow:function(r,e,t){var a=Math.max(1,r.getBandWidth()),n=t[1]-t[0];return{type:"Rect",shape:LI([e-a/2,t[0]],[a,n],Yx(r))}}};function Yx(r){return r.dim==="x"?0:1}var PW=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="axisPointer",e.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,triggerEmphasis:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},e}(gt),va=bt(),RW=D;function PI(r,e,t){if(!yt.node){var a=e.getZr();va(a).records||(va(a).records={}),EW(a,e);var n=va(a).records[r]||(va(a).records[r]={});n.handler=t}}function EW(r,e){if(va(r).initialized)return;va(r).initialized=!0,t("click",lt(Xx,"click")),t("mousemove",lt(Xx,"mousemove")),t("globalout",OW);function t(a,n){r.on(a,function(i){var o=NW(e);RW(va(r).records,function(s){s&&n(s,i,o.dispatchAction)}),kW(o.pendings,e)})}}function kW(r,e){var t=r.showTip.length,a=r.hideTip.length,n;t?n=r.showTip[t-1]:a&&(n=r.hideTip[a-1]),n&&(n.dispatchAction=null,e.dispatchAction(n))}function OW(r,e,t){r.handler("leave",null,t)}function Xx(r,e,t,a){e.handler(r,t,a)}function NW(r){var e={showTip:[],hideTip:[]},t=function(a){var n=e[a.type];n?n.push(a):(a.dispatchAction=t,r.dispatchAction(a))};return{dispatchAction:t,pendings:e}}function qd(r,e){if(!yt.node){var t=e.getZr(),a=(va(t).records||{})[r];a&&(va(t).records[r]=null)}}var BW=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=a.getComponent("tooltip"),o=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";PI("axisPointer",n,function(s,l,u){o!=="none"&&(s==="leave"||o.indexOf(s)>=0)&&u({type:"updateAxisPointer",currTrigger:s,x:l&&l.offsetX,y:l&&l.offsetY})})},e.prototype.remove=function(t,a){qd("axisPointer",a)},e.prototype.dispose=function(t,a){qd("axisPointer",a)},e.type="axisPointer",e}(zt);function RI(r,e){var t=[],a=r.seriesIndex,n;if(a==null||!(n=e.getSeriesByIndex(a)))return{point:[]};var i=n.getData(),o=si(i,r);if(o==null||o<0||z(o))return{point:[]};var s=i.getItemGraphicEl(o),l=n.coordinateSystem;if(n.getTooltipPosition)t=n.getTooltipPosition(o)||[];else if(l&&l.dataToPoint)if(r.isStacked){var u=l.getBaseAxis(),f=l.getOtherAxis(u),h=f.dim,v=u.dim,c=h==="x"||h==="radius"?1:0,p=i.mapDimension(v),d=[];d[c]=i.get(p,o),d[1-c]=i.get(i.getCalculationInfo("stackResultDimension"),o),t=l.dataToPoint(d)||[]}else t=l.dataToPoint(i.getValues(G(l.dimensions,function(y){return i.mapDimension(y)}),o))||[];else if(s){var g=s.getBoundingRect().clone();g.applyTransform(s.transform),t=[g.x+g.width/2,g.y+g.height/2]}return{point:t,el:s}}var $x=bt();function VW(r,e,t){var a=r.currTrigger,n=[r.x,r.y],i=r,o=r.dispatchAction||X(t.dispatchAction,t),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lf(n)&&(n=RI({seriesIndex:i.seriesIndex,dataIndex:i.dataIndex},e).point);var l=lf(n),u=i.axesInfo,f=s.axesInfo,h=a==="leave"||lf(n),v={},c={},p={list:[],map:{}},d={showPointer:lt(GW,c),showTooltip:lt(FW,p)};D(s.coordSysMap,function(y,m){var _=l||y.containPoint(n);D(s.coordSysAxesInfo[m],function(S,b){var x=S.axis,w=YW(u,S);if(!h&&_&&(!u||w)){var T=w&&w.value;T==null&&!l&&(T=x.pointToData(n)),T!=null&&Zx(S,T,d,!1,v)}})});var g={};return D(f,function(y,m){var _=y.linkGroup;_&&!c[m]&&D(_.axesInfo,function(S,b){var x=c[b];if(S!==y&&x){var w=x.value;_.mapper&&(w=y.axis.scale.parse(_.mapper(w,qx(S),qx(y)))),g[y.key]=w}})}),D(g,function(y,m){Zx(f[m],y,d,!0,v)}),HW(c,f,v),WW(p,n,r,o),UW(f,o,t),v}}function Zx(r,e,t,a,n){var i=r.axis;if(!(i.scale.isBlank()||!i.containData(e))){if(!r.involveSeries){t.showPointer(r,e);return}var o=zW(e,r),s=o.payloadBatch,l=o.snapToValue;s[0]&&n.seriesIndex==null&&V(n,s[0]),!a&&r.snap&&i.containData(l)&&l!=null&&(e=l),t.showPointer(r,e,s),t.showTooltip(r,o,l)}}function zW(r,e){var t=e.axis,a=t.dim,n=r,i=[],o=Number.MAX_VALUE,s=-1;return D(e.seriesModels,function(l,u){var f=l.getData().mapDimensionsAll(a),h,v;if(l.getAxisTooltipData){var c=l.getAxisTooltipData(f,r,t);v=c.dataIndices,h=c.nestestValue}else{if(v=l.getData().indicesOfNearest(f[0],r,t.type==="category"?.5:null),!v.length)return;h=l.getData().get(f[0],v[0])}if(!(h==null||!isFinite(h))){var p=r-h,d=Math.abs(p);d<=o&&((d=0&&s<0)&&(o=d,s=p,n=h,i.length=0),D(v,function(g){i.push({seriesIndex:l.seriesIndex,dataIndexInside:g,dataIndex:l.getData().getRawIndex(g)})}))}}),{payloadBatch:i,snapToValue:n}}function GW(r,e,t,a){r[e.key]={value:t,payloadBatch:a}}function FW(r,e,t,a){var n=t.payloadBatch,i=e.axis,o=i.model,s=e.axisPointerModel;if(!(!e.triggerTooltip||!n.length)){var l=e.coordSys.model,u=hl(l),f=r.map[u];f||(f=r.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},r.list.push(f)),f.dataByAxis.push({axisDim:i.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:a,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:n.slice()})}}function HW(r,e,t){var a=t.axesInfo=[];D(e,function(n,i){var o=n.axisPointerModel.option,s=r[i];s?(!n.useHandle&&(o.status="show"),o.value=s.value,o.seriesDataIndices=(s.payloadBatch||[]).slice()):!n.useHandle&&(o.status="hide"),o.status==="show"&&a.push({axisDim:n.axis.dim,axisIndex:n.axis.model.componentIndex,value:o.value})})}function WW(r,e,t,a){if(lf(e)||!r.list.length){a({type:"hideTip"});return}var n=((r.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};a({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:t.tooltipOption,position:t.position,dataIndexInside:n.dataIndexInside,dataIndex:n.dataIndex,seriesIndex:n.seriesIndex,dataByCoordSys:r.list})}function UW(r,e,t){var a=t.getZr(),n="axisPointerLastHighlights",i=$x(a)[n]||{},o=$x(a)[n]={};D(r,function(u,f){var h=u.axisPointerModel.option;h.status==="show"&&u.triggerEmphasis&&D(h.seriesDataIndices,function(v){var c=v.seriesIndex+" | "+v.dataIndex;o[c]=v})});var s=[],l=[];D(i,function(u,f){!o[f]&&l.push(u)}),D(o,function(u,f){!i[f]&&s.push(u)}),l.length&&t.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&t.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}function YW(r,e){for(var t=0;t<(r||[]).length;t++){var a=r[t];if(e.axis.dim===a.axisDim&&e.axis.model.componentIndex===a.axisIndex)return a}}function qx(r){var e=r.axis.model,t={},a=t.axisDim=r.axis.dim;return t.axisIndex=t[a+"AxisIndex"]=e.componentIndex,t.axisName=t[a+"AxisName"]=e.name,t.axisId=t[a+"AxisId"]=e.id,t}function lf(r){return!r||r[0]==null||isNaN(r[0])||r[1]==null||isNaN(r[1])}function Hl(r){xi.registerAxisPointerClass("CartesianAxisPointer",IW),r.registerComponentModel(PW),r.registerComponentView(BW),r.registerPreprocessor(function(e){if(e){(!e.axisPointer||e.axisPointer.length===0)&&(e.axisPointer={});var t=e.axisPointer.link;t&&!z(t)&&(e.axisPointer.link=[t])}}),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,function(e,t){e.getComponent("axisPointer").coordSysAxesInfo=e5(e,t)}),r.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},VW)}function XW(r){pt(oM),pt(Hl)}var $W=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.makeElOption=function(t,a,n,i,o){var s=n.axis;s.dim==="angle"&&(this.animationThreshold=Math.PI/18);var l=s.polar,u=l.getOtherAxis(s),f=u.getExtent(),h=s.dataToCoord(a),v=i.get("type");if(v&&v!=="none"){var c=pm(i),p=qW[v](s,l,h,f);p.style=c,t.graphicKey=p.type,t.pointer=p}var d=i.get(["label","margin"]),g=ZW(a,n,i,l,d);DI(t,n,i,o,g)},e}(cm);function ZW(r,e,t,a,n){var i=e.axis,o=i.dataToCoord(r),s=a.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l=a.getRadiusAxis().getExtent(),u,f,h;if(i.dim==="radius"){var v=Fe();nn(v,v,s),Ir(v,v,[a.cx,a.cy]),u=Dr([o,-n],v);var c=e.getModel("axisLabel").get("rotate")||0,p=Re.innerTextLayout(s,c*Math.PI/180,-1);f=p.textAlign,h=p.textVerticalAlign}else{var d=l[1];u=a.coordToPoint([d+n,o]);var g=a.cx,y=a.cy;f=Math.abs(u[0]-g)/d<.3?"center":u[0]>g?"left":"right",h=Math.abs(u[1]-y)/d<.3?"middle":u[1]>y?"top":"bottom"}return{position:u,align:f,verticalAlign:h}}var qW={line:function(r,e,t,a){return r.dim==="angle"?{type:"Line",shape:gm(e.coordToPoint([a[0],t]),e.coordToPoint([a[1],t]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:t}}},shadow:function(r,e,t,a){var n=Math.max(1,r.getBandWidth()),i=Math.PI/180;return r.dim==="angle"?{type:"Sector",shape:Wx(e.cx,e.cy,a[0],a[1],(-t-n/2)*i,(-t+n/2)*i)}:{type:"Sector",shape:Wx(e.cx,e.cy,t-n/2,t+n/2,0,Math.PI*2)}}},KW=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.findAxisModel=function(t){var a,n=this.ecModel;return n.eachComponent(t,function(i){i.getCoordSysModel()===this&&(a=i)},this),a},e.type="polar",e.dependencies=["radiusAxis","angleAxis"],e.defaultOption={z:0,center:["50%","50%"],radius:"80%"},e}(gt),ym=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",jt).models[0]},e.type="polarAxis",e}(gt);$t(ym,Vo);var jW=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="angleAxis",e}(ym),JW=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="radiusAxis",e}(ym),mm=function(r){N(e,r);function e(t,a){return r.call(this,"radius",t,a)||this}return e.prototype.pointToData=function(t,a){return this.polar.pointToData(t,a)[this.dim==="radius"?0:1]},e}(dr);mm.prototype.dataToRadius=dr.prototype.dataToCoord;mm.prototype.radiusToData=dr.prototype.coordToData;var QW=bt(),_m=function(r){N(e,r);function e(t,a){return r.call(this,"angle",t,a||[0,360])||this}return e.prototype.pointToData=function(t,a){return this.polar.pointToData(t,a)[this.dim==="radius"?0:1]},e.prototype.calculateCategoryInterval=function(){var t=this,a=t.getLabelModel(),n=t.scale,i=n.getExtent(),o=n.count();if(i[1]-i[0]<1)return 0;var s=i[0],l=t.dataToCoord(s+1)-t.dataToCoord(s),u=Math.abs(l),f=Tl(s==null?"":s+"",a.getFont(),"center","top"),h=Math.max(f.height,7),v=h/u;isNaN(v)&&(v=1/0);var c=Math.max(0,Math.floor(v)),p=QW(t.model),d=p.lastAutoInterval,g=p.lastTickCount;return d!=null&&g!=null&&Math.abs(d-c)<=1&&Math.abs(g-o)<=1&&d>c?c=d:(p.lastTickCount=o,p.lastAutoInterval=c),c},e}(dr);_m.prototype.dataToAngle=dr.prototype.dataToCoord;_m.prototype.angleToData=dr.prototype.coordToData;var EI=["radius","angle"],t6=function(){function r(e){this.dimensions=EI,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new mm,this._angleAxis=new _m,this.axisPointerEnabled=!0,this.name=e||"",this._radiusAxis.polar=this._angleAxis.polar=this}return r.prototype.containPoint=function(e){var t=this.pointToCoord(e);return this._radiusAxis.contain(t[0])&&this._angleAxis.contain(t[1])},r.prototype.containData=function(e){return this._radiusAxis.containData(e[0])&&this._angleAxis.containData(e[1])},r.prototype.getAxis=function(e){var t="_"+e+"Axis";return this[t]},r.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},r.prototype.getAxesByScale=function(e){var t=[],a=this._angleAxis,n=this._radiusAxis;return a.scale.type===e&&t.push(a),n.scale.type===e&&t.push(n),t},r.prototype.getAngleAxis=function(){return this._angleAxis},r.prototype.getRadiusAxis=function(){return this._radiusAxis},r.prototype.getOtherAxis=function(e){var t=this._angleAxis;return e===t?this._radiusAxis:t},r.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},r.prototype.getTooltipAxes=function(e){var t=e!=null&&e!=="auto"?this.getAxis(e):this.getBaseAxis();return{baseAxes:[t],otherAxes:[this.getOtherAxis(t)]}},r.prototype.dataToPoint=function(e,t){return this.coordToPoint([this._radiusAxis.dataToRadius(e[0],t),this._angleAxis.dataToAngle(e[1],t)])},r.prototype.pointToData=function(e,t){var a=this.pointToCoord(e);return[this._radiusAxis.radiusToData(a[0],t),this._angleAxis.angleToData(a[1],t)]},r.prototype.pointToCoord=function(e){var t=e[0]-this.cx,a=e[1]-this.cy,n=this.getAngleAxis(),i=n.getExtent(),o=Math.min(i[0],i[1]),s=Math.max(i[0],i[1]);n.inverse?o=s-360:s=o+360;var l=Math.sqrt(t*t+a*a);t/=l,a/=l;for(var u=Math.atan2(-a,t)/Math.PI*180,f=us;)u+=f*360;return[l,u]},r.prototype.coordToPoint=function(e){var t=e[0],a=e[1]/180*Math.PI,n=Math.cos(a)*t+this.cx,i=-Math.sin(a)*t+this.cy;return[n,i]},r.prototype.getArea=function(){var e=this.getAngleAxis(),t=this.getRadiusAxis(),a=t.getExtent().slice();a[0]>a[1]&&a.reverse();var n=e.getExtent(),i=Math.PI/180,o=1e-4;return{cx:this.cx,cy:this.cy,r0:a[0],r:a[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:e.inverse,contain:function(s,l){var u=s-this.cx,f=l-this.cy,h=u*u+f*f,v=this.r,c=this.r0;return v!==c&&h-o<=v*v&&h+o>=c*c}}},r.prototype.convertToPixel=function(e,t,a){var n=Kx(t);return n===this?this.dataToPoint(a):null},r.prototype.convertFromPixel=function(e,t,a){var n=Kx(t);return n===this?this.pointToData(a):null},r}();function Kx(r){var e=r.seriesModel,t=r.polarModel;return t&&t.coordinateSystem||e&&e.coordinateSystem}function e6(r,e,t){var a=e.get("center"),n=t.getWidth(),i=t.getHeight();r.cx=W(a[0],n),r.cy=W(a[1],i);var o=r.getRadiusAxis(),s=Math.min(n,i)/2,l=e.get("radius");l==null?l=[0,"100%"]:z(l)||(l=[0,l]);var u=[W(l[0],s),W(l[1],s)];o.inverse?o.setExtent(u[1],u[0]):o.setExtent(u[0],u[1])}function r6(r,e){var t=this,a=t.getAngleAxis(),n=t.getRadiusAxis();if(a.scale.setExtent(1/0,-1/0),n.scale.setExtent(1/0,-1/0),r.eachSeries(function(s){if(s.coordinateSystem===t){var l=s.getData();D(Gf(l,"radius"),function(u){n.scale.unionExtentFromData(l,u)}),D(Gf(l,"angle"),function(u){a.scale.unionExtentFromData(l,u)})}}),hi(a.scale,a.model),hi(n.scale,n.model),a.type==="category"&&!a.onBand){var i=a.getExtent(),o=360/a.scale.count();a.inverse?i[1]+=o:i[1]-=o,a.setExtent(i[0],i[1])}}function a6(r){return r.mainType==="angleAxis"}function jx(r,e){var t;if(r.type=e.get("type"),r.scale=El(e),r.onBand=e.get("boundaryGap")&&r.type==="category",r.inverse=e.get("inverse"),a6(e)){r.inverse=r.inverse!==e.get("clockwise");var a=e.get("startAngle"),n=(t=e.get("endAngle"))!==null&&t!==void 0?t:a+(r.inverse?-360:360);r.setExtent(a,n)}e.axis=r,r.model=e}var n6={dimensions:EI,create:function(r,e){var t=[];return r.eachComponent("polar",function(a,n){var i=new t6(n+"");i.update=r6;var o=i.getRadiusAxis(),s=i.getAngleAxis(),l=a.findAxisModel("radiusAxis"),u=a.findAxisModel("angleAxis");jx(o,l),jx(s,u),e6(i,a,e),t.push(i),a.coordinateSystem=i,i.model=a}),r.eachSeries(function(a){if(a.get("coordinateSystem")==="polar"){var n=a.getReferringComponents("polar",jt).models[0];a.coordinateSystem=n.coordinateSystem}}),t}},i6=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function Nu(r,e,t){e[1]>e[0]&&(e=e.slice().reverse());var a=r.coordToPoint([e[0],t]),n=r.coordToPoint([e[1],t]);return{x1:a[0],y1:a[1],x2:n[0],y2:n[1]}}function Bu(r){var e=r.getRadiusAxis();return e.inverse?0:1}function Jx(r){var e=r[0],t=r[r.length-1];e&&t&&Math.abs(Math.abs(e.coord-t.coord)-360)<1e-4&&r.pop()}var o6=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.axisPointerClass="PolarAxisPointer",t}return e.prototype.render=function(t,a){if(this.group.removeAll(),!!t.get("show")){var n=t.axis,i=n.polar,o=i.getRadiusAxis().getExtent(),s=n.getTicksCoords(),l=n.getMinorTicksCoords(),u=G(n.getViewLabels(),function(f){f=rt(f);var h=n.scale,v=h.type==="ordinal"?h.getRawOrdinalNumber(f.tickValue):f.tickValue;return f.coord=n.dataToCoord(v),f});Jx(u),Jx(s),D(i6,function(f){t.get([f,"show"])&&(!n.scale.isBlank()||f==="axisLine")&&s6[f](this.group,t,i,s,l,o,u)},this)}},e.type="angleAxis",e}(xi),s6={axisLine:function(r,e,t,a,n,i){var o=e.getModel(["axisLine","lineStyle"]),s=t.getAngleAxis(),l=Math.PI/180,u=s.getExtent(),f=Bu(t),h=f?0:1,v,c=Math.abs(u[1]-u[0])===360?"Circle":"Arc";i[h]===0?v=new yi[c]({shape:{cx:t.cx,cy:t.cy,r:i[f],startAngle:-u[0]*l,endAngle:-u[1]*l,clockwise:s.inverse},style:o.getLineStyle(),z2:1,silent:!0}):v=new wo({shape:{cx:t.cx,cy:t.cy,r:i[f],r0:i[h]},style:o.getLineStyle(),z2:1,silent:!0}),v.style.fill=null,r.add(v)},axisTick:function(r,e,t,a,n,i){var o=e.getModel("axisTick"),s=(o.get("inside")?-1:1)*o.get("length"),l=i[Bu(t)],u=G(a,function(f){return new te({shape:Nu(t,[l,l+s],f.coord)})});r.add(Ue(u,{style:J(o.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(r,e,t,a,n,i){if(n.length){for(var o=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(o.get("inside")?-1:1)*s.get("length"),u=i[Bu(t)],f=[],h=0;hy?"left":"right",S=Math.abs(g[1]-m)/d<.3?"middle":g[1]>m?"top":"bottom";if(s&&s[p]){var b=s[p];tt(b)&&b.textStyle&&(c=new Ct(b.textStyle,l,l.ecModel))}var x=new St({silent:Re.isLabelSilent(e),style:Nt(c,{x:g[0],y:g[1],fill:c.getTextColor()||e.get(["axisLine","lineStyle","color"]),text:h.formattedLabel,align:_,verticalAlign:S})});if(r.add(x),f){var w=Re.makeAxisEventDataBase(e);w.targetType="axisLabel",w.value=h.rawLabel,nt(x).eventData=w}},this)},splitLine:function(r,e,t,a,n,i){var o=e.getModel("splitLine"),s=o.getModel("lineStyle"),l=s.get("color"),u=0;l=l instanceof Array?l:[l];for(var f=[],h=0;h=0?"p":"n",R=A;b&&(a[f][L]||(a[f][L]={p:A,n:A}),R=a[f][L][P]);var E=void 0,O=void 0,k=void 0,B=void 0;if(p.dim==="radius"){var F=p.dataToCoord(I)-A,H=l.dataToCoord(L);Math.abs(F)=B})}}})}function p6(r){var e={};D(r,function(a,n){var i=a.getData(),o=a.coordinateSystem,s=o.getBaseAxis(),l=OI(o,s),u=s.getExtent(),f=s.type==="category"?s.getBandWidth():Math.abs(u[1]-u[0])/i.count(),h=e[l]||{bandWidth:f,remainedWidth:f,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},v=h.stacks;e[l]=h;var c=kI(a);v[c]||h.autoWidthCount++,v[c]=v[c]||{width:0,maxWidth:0};var p=W(a.get("barWidth"),f),d=W(a.get("barMaxWidth"),f),g=a.get("barGap"),y=a.get("barCategoryGap");p&&!v[c].width&&(p=Math.min(h.remainedWidth,p),v[c].width=p,h.remainedWidth-=p),d&&(v[c].maxWidth=d),g!=null&&(h.gap=g),y!=null&&(h.categoryGap=y)});var t={};return D(e,function(a,n){t[n]={};var i=a.stacks,o=a.bandWidth,s=W(a.categoryGap,o),l=W(a.gap,1),u=a.remainedWidth,f=a.autoWidthCount,h=(u-s)/(f+(f-1)*l);h=Math.max(h,0),D(i,function(d,g){var y=d.maxWidth;y&&y=t.y&&e[1]<=t.y+t.height:a.contain(a.toLocalCoord(e[1]))&&e[0]>=t.y&&e[0]<=t.y+t.height},r.prototype.pointToData=function(e){var t=this.getAxis();return[t.coordToData(t.toLocalCoord(e[t.orient==="horizontal"?0:1]))]},r.prototype.dataToPoint=function(e){var t=this.getAxis(),a=this.getRect(),n=[],i=t.orient==="horizontal"?0:1;return e instanceof Array&&(e=e[0]),n[i]=t.toGlobalCoord(t.dataToCoord(+e)),n[1-i]=i===0?a.y+a.height/2:a.x+a.width/2,n},r.prototype.convertToPixel=function(e,t,a){var n=Qx(t);return n===this?this.dataToPoint(a):null},r.prototype.convertFromPixel=function(e,t,a){var n=Qx(t);return n===this?this.pointToData(a):null},r}();function Qx(r){var e=r.seriesModel,t=r.singleAxisModel;return t&&t.coordinateSystem||e&&e.coordinateSystem}function A6(r,e){var t=[];return r.eachComponent("singleAxis",function(a,n){var i=new T6(a,r,e);i.name="single_"+n,i.resize(a,e),a.coordinateSystem=i,t.push(i)}),r.eachSeries(function(a){if(a.get("coordinateSystem")==="singleAxis"){var n=a.getReferringComponents("singleAxis",jt).models[0];a.coordinateSystem=n&&n.coordinateSystem}}),t}var C6={create:A6,dimensions:NI},tb=["x","y"],D6=["width","height"],M6=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.makeElOption=function(t,a,n,i,o){var s=n.axis,l=s.coordinateSystem,u=ap(l,1-th(s)),f=l.dataToPoint(a)[0],h=i.get("type");if(h&&h!=="none"){var v=pm(i),c=I6[h](s,f,u);c.style=v,t.graphicKey=c.type,t.pointer=c}var p=Kd(n);II(a,t,p,n,i,o)},e.prototype.getHandleTransform=function(t,a,n){var i=Kd(a,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var o=dm(a.axis,t,i);return{x:o[0],y:o[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,a,n,i){var o=n.axis,s=o.coordinateSystem,l=th(o),u=ap(s,l),f=[t.x,t.y];f[l]+=a[l],f[l]=Math.min(u[1],f[l]),f[l]=Math.max(u[0],f[l]);var h=ap(s,1-l),v=(h[1]+h[0])/2,c=[v,v];return c[l]=f[l],{x:f[0],y:f[1],rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}},e}(cm),I6={line:function(r,e,t){var a=gm([e,t[0]],[e,t[1]],th(r));return{type:"Line",subPixelOptimize:!0,shape:a}},shadow:function(r,e,t){var a=r.getBandWidth(),n=t[1]-t[0];return{type:"Rect",shape:LI([e-a/2,t[0]],[a,n],th(r))}}};function th(r){return r.isHorizontal()?0:1}function ap(r,e){var t=r.getRect();return[t[tb[e]],t[tb[e]]+t[D6[e]]]}var L6=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="single",e}(zt);function P6(r){pt(Hl),xi.registerAxisPointerClass("SingleAxisPointer",M6),r.registerComponentView(L6),r.registerComponentView(x6),r.registerComponentModel(uf),go(r,"single",uf,uf.defaultOption),r.registerCoordinateSystem("single",C6)}var R6=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a,n){var i=Lo(t);r.prototype.init.apply(this,arguments),eb(t,i)},e.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),eb(this.option,t)},e.prototype.getCellSize=function(){return this.option.cellSize},e.type="calendar",e.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},e}(gt);function eb(r,e){var t=r.cellSize,a;z(t)?a=t:a=r.cellSize=[t,t],a.length===1&&(a[1]=a[0]);var n=G([0,1],function(i){return NE(e,i)&&(a[i]="auto"),a[i]!=null&&a[i]!=="auto"});tn(r,e,{type:"box",ignoreSize:n})}var E6=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=this.group;i.removeAll();var o=t.coordinateSystem,s=o.getRangeInfo(),l=o.getOrient(),u=a.getLocaleModel();this._renderDayRect(t,s,i),this._renderLines(t,s,l,i),this._renderYearText(t,s,l,i),this._renderMonthText(t,u,l,i),this._renderWeekText(t,u,s,l,i)},e.prototype._renderDayRect=function(t,a,n){for(var i=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),s=i.getCellWidth(),l=i.getCellHeight(),u=a.start.time;u<=a.end.time;u=i.getNextNDay(u,1).time){var f=i.dataToRect([u],!1).tl,h=new xt({shape:{x:f[0],y:f[1],width:s,height:l},cursor:"default",style:o});n.add(h)}},e.prototype._renderLines=function(t,a,n,i){var o=this,s=t.coordinateSystem,l=t.getModel(["splitLine","lineStyle"]).getLineStyle(),u=t.get(["splitLine","show"]),f=l.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=a.start,v=0;h.time<=a.end.time;v++){p(h.formatedDate),v===0&&(h=s.getDateInfo(a.start.y+"-"+a.start.m));var c=h.date;c.setMonth(c.getMonth()+1),h=s.getDateInfo(c)}p(s.getNextNDay(a.end.time,1).formatedDate);function p(d){o._firstDayOfMonth.push(s.getDateInfo(d)),o._firstDayPoints.push(s.dataToRect([d],!1).tl);var g=o._getLinePointsOfOneWeek(t,d,n);o._tlpoints.push(g[0]),o._blpoints.push(g[g.length-1]),u&&o._drawSplitline(g,l,i)}u&&this._drawSplitline(o._getEdgesPoints(o._tlpoints,f,n),l,i),u&&this._drawSplitline(o._getEdgesPoints(o._blpoints,f,n),l,i)},e.prototype._getEdgesPoints=function(t,a,n){var i=[t[0].slice(),t[t.length-1].slice()],o=n==="horizontal"?0:1;return i[0][o]=i[0][o]-a/2,i[1][o]=i[1][o]+a/2,i},e.prototype._drawSplitline=function(t,a,n){var i=new Ce({z2:20,shape:{points:t},style:a});n.add(i)},e.prototype._getLinePointsOfOneWeek=function(t,a,n){for(var i=t.coordinateSystem,o=i.getDateInfo(a),s=[],l=0;l<7;l++){var u=i.getNextNDay(o.time,l),f=i.dataToRect([u.time],!1);s[2*u.day]=f.tl,s[2*u.day+1]=f[n==="horizontal"?"bl":"tr"]}return s},e.prototype._formatterLabel=function(t,a){return Y(t)&&t?RE(t,a):K(t)?t(a):a.nameMap},e.prototype._yearTextPositionControl=function(t,a,n,i,o){var s=a[0],l=a[1],u=["center","bottom"];i==="bottom"?(l+=o,u=["center","top"]):i==="left"?s-=o:i==="right"?(s+=o,u=["center","top"]):l-=o;var f=0;return(i==="left"||i==="right")&&(f=Math.PI/2),{rotation:f,x:s,y:l,style:{align:u[0],verticalAlign:u[1]}}},e.prototype._renderYearText=function(t,a,n,i){var o=t.getModel("yearLabel");if(o.get("show")){var s=o.get("margin"),l=o.get("position");l||(l=n!=="horizontal"?"top":"left");var u=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],f=(u[0][0]+u[1][0])/2,h=(u[0][1]+u[1][1])/2,v=n==="horizontal"?0:1,c={top:[f,u[v][1]],bottom:[f,u[1-v][1]],left:[u[1-v][0],h],right:[u[v][0],h]},p=a.start.y;+a.end.y>+a.start.y&&(p=p+"-"+a.end.y);var d=o.get("formatter"),g={start:a.start.y,end:a.end.y,nameMap:p},y=this._formatterLabel(d,g),m=new St({z2:30,style:Nt(o,{text:y}),silent:o.get("silent")});m.attr(this._yearTextPositionControl(m,c[l],n,l,s)),i.add(m)}},e.prototype._monthTextPositionControl=function(t,a,n,i,o){var s="left",l="top",u=t[0],f=t[1];return n==="horizontal"?(f=f+o,a&&(s="center"),i==="start"&&(l="bottom")):(u=u+o,a&&(l="middle"),i==="start"&&(s="right")),{x:u,y:f,align:s,verticalAlign:l}},e.prototype._renderMonthText=function(t,a,n,i){var o=t.getModel("monthLabel");if(o.get("show")){var s=o.get("nameMap"),l=o.get("margin"),u=o.get("position"),f=o.get("align"),h=[this._tlpoints,this._blpoints];(!s||Y(s))&&(s&&(a=ad(s)||a),s=a.get(["time","monthAbbr"])||[]);var v=u==="start"?0:1,c=n==="horizontal"?0:1;l=u==="start"?-l:l;for(var p=f==="center",d=o.get("silent"),g=0;g=n.start.time&&a.times.end.time&&t.reverse(),t},r.prototype._getRangeInfo=function(e){var t=[this.getDateInfo(e[0]),this.getDateInfo(e[1])],a;t[0].time>t[1].time&&(a=!0,t.reverse());var n=Math.floor(t[1].time/np)-Math.floor(t[0].time/np)+1,i=new Date(t[0].time),o=i.getDate(),s=t[1].date.getDate();i.setDate(o+n-1);var l=i.getDate();if(l!==s)for(var u=i.getTime()-t[1].time>0?1:-1;(l=i.getDate())!==s&&(i.getTime()-t[1].time)*u>0;)n-=u,i.setDate(l-u);var f=Math.floor((n+t[0].day+6)/7),h=a?-f+1:f-1;return a&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:n,weeks:f,nthWeek:h,fweek:t[0].day,lweek:t[1].day}},r.prototype._getDateByWeeksAndDay=function(e,t,a){var n=this._getRangeInfo(a);if(e>n.weeks||e===0&&tn.lweek)return null;var i=(e-1)*7-n.fweek+t,o=new Date(n.start.time);return o.setDate(+n.start.d+i),this.getDateInfo(o)},r.create=function(e,t){var a=[];return e.eachComponent("calendar",function(n){var i=new r(n);a.push(i),n.coordinateSystem=i}),e.eachSeries(function(n){n.get("coordinateSystem")==="calendar"&&(n.coordinateSystem=a[n.get("calendarIndex")||0])}),a},r.dimensions=["time","value"],r}();function rb(r){var e=r.calendarModel,t=r.seriesModel,a=e?e.coordinateSystem:t?t.coordinateSystem:null;return a}function O6(r){r.registerComponentModel(R6),r.registerComponentView(E6),r.registerCoordinateSystem("calendar",k6)}function N6(r,e){var t=r.existing;if(e.id=r.keyInfo.id,!e.type&&t&&(e.type=t.type),e.parentId==null){var a=e.parentOption;a?e.parentId=a.id:t&&(e.parentId=t.parentId)}e.parentOption=null}function ab(r,e){var t;return D(e,function(a){r[a]!=null&&r[a]!=="auto"&&(t=!0)}),t}function B6(r,e,t){var a=V({},t),n=r[e],i=t.$action||"merge";i==="merge"?n?(ut(n,a,!0),tn(n,a,{ignoreSize:!0}),AA(t,n),Vu(t,n),Vu(t,n,"shape"),Vu(t,n,"style"),Vu(t,n,"extra"),t.clipPath=n.clipPath):r[e]=a:i==="replace"?r[e]=a:i==="remove"&&n&&(r[e]=null)}var BI=["transition","enterFrom","leaveTo"],V6=BI.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function Vu(r,e,t){if(t&&(!r[t]&&e[t]&&(r[t]={}),r=r[t],e=e[t]),!(!r||!e))for(var a=t?BI:V6,n=0;n=0;f--){var h=n[f],v=Qt(h.id,null),c=v!=null?o.get(v):null;if(c){var p=c.parent,y=ar(p),m=p===i?{width:s,height:l}:{width:y.width,height:y.height},_={},S=kh(c,h,m,null,{hv:h.hv,boundingMode:h.bounding},_);if(!ar(c).isNew&&S){for(var b=h.transition,x={},w=0;w=0)?x[T]=A:c[T]=A}Tt(c,x,t,0)}else c.attr(_)}}},e.prototype._clear=function(){var t=this,a=this._elMap;a.each(function(n){ff(n,ar(n).option,a,t._lastGraphicModel)}),this._elMap=Z()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(zt);function jd(r){var e=$(nb,r)?nb[r]:Dh(r),t=new e({});return ar(t).type=r,t}function ib(r,e,t,a){var n=jd(t);return e.add(n),a.set(r,n),ar(n).id=r,ar(n).isNew=!0,n}function ff(r,e,t,a){var n=r&&r.parent;n&&(r.type==="group"&&r.traverse(function(i){ff(i,e,t,a)}),jh(r,e,a),t.removeKey(ar(r).id))}function ob(r,e,t,a){r.isGroup||D([["cursor",fr.prototype.cursor],["zlevel",a||0],["z",t||0],["z2",0]],function(n){var i=n[0];$(e,i)?r[i]=st(e[i],n[1]):r[i]==null&&(r[i]=n[1])}),D(_t(e),function(n){if(n.indexOf("on")===0){var i=e[n];r[n]=K(i)?i:null}}),$(e,"draggable")&&(r.draggable=e.draggable),e.name!=null&&(r.name=e.name),e.id!=null&&(r.id=e.id)}function H6(r){return r=V({},r),D(["id","parentId","$action","hv","bounding","textContent","clipPath"].concat(TA),function(e){delete r[e]}),r}function W6(r,e,t){var a=nt(r).eventData;!r.silent&&!r.ignore&&!a&&(a=nt(r).eventData={componentType:"graphic",componentIndex:e.componentIndex,name:r.name}),a&&(a.info=t.info)}function U6(r){r.registerComponentModel(G6),r.registerComponentView(F6),r.registerPreprocessor(function(e){var t=e.graphic;z(t)?!t[0]||!t[0].elements?e.graphic=[{elements:t}]:e.graphic=[e.graphic[0]]:t&&!t.elements&&(e.graphic=[{elements:[t]}])})}var sb=["x","y","radius","angle","single"],Y6=["cartesian2d","polar","singleAxis"];function X6(r){var e=r.get("coordinateSystem");return vt(Y6,e)>=0}function Wa(r){return r+"Axis"}function $6(r,e){var t=Z(),a=[],n=Z();r.eachComponent({mainType:"dataZoom",query:e},function(f){n.get(f.uid)||s(f)});var i;do i=!1,r.eachComponent("dataZoom",o);while(i);function o(f){!n.get(f.uid)&&l(f)&&(s(f),i=!0)}function s(f){n.set(f.uid,!0),a.push(f),u(f)}function l(f){var h=!1;return f.eachTargetAxis(function(v,c){var p=t.get(v);p&&p[c]&&(h=!0)}),h}function u(f){f.eachTargetAxis(function(h,v){(t.get(h)||t.set(h,[]))[v]=!0})}return a}function VI(r){var e=r.ecModel,t={infoList:[],infoMap:Z()};return r.eachTargetAxis(function(a,n){var i=e.getComponent(Wa(a),n);if(i){var o=i.getCoordSysModel();if(o){var s=o.uid,l=t.infoMap.get(s);l||(l={model:o,axisModels:[]},t.infoList.push(l),t.infoMap.set(s,l)),l.axisModels.push(i)}}}),t}var ip=function(){function r(){this.indexList=[],this.indexMap=[]}return r.prototype.add=function(e){this.indexMap[e]||(this.indexList.push(e),this.indexMap[e]=!0)},r}(),yl=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._autoThrottle=!0,t._noTarget=!0,t._rangePropMode=["percent","percent"],t}return e.prototype.init=function(t,a,n){var i=lb(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var a=lb(t);ut(this.option,t,!0),ut(this.settledOption,a,!0),this._doInit(a)},e.prototype._doInit=function(t){var a=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var n=this.settledOption;D([["start","startValue"],["end","endValue"]],function(i,o){this._rangePropMode[o]==="value"&&(a[i[0]]=n[i[0]]=null)},this),this._resetTarget()},e.prototype._resetTarget=function(){var t=this.get("orient",!0),a=this._targetAxisInfoMap=Z(),n=this._fillSpecifiedTargetAxis(a);n?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(a,this._orient)),this._noTarget=!0,a.each(function(i){i.indexList.length&&(this._noTarget=!1)},this)},e.prototype._fillSpecifiedTargetAxis=function(t){var a=!1;return D(sb,function(n){var i=this.getReferringComponents(Wa(n),TP);if(i.specified){a=!0;var o=new ip;D(i.models,function(s){o.add(s.componentIndex)}),t.set(n,o)}},this),a},e.prototype._fillAutoTargetAxisByOrient=function(t,a){var n=this.ecModel,i=!0;if(i){var o=a==="vertical"?"y":"x",s=n.findComponents({mainType:o+"Axis"});l(s,o)}if(i){var s=n.findComponents({mainType:"singleAxis",filter:function(f){return f.get("orient",!0)===a}});l(s,"single")}function l(u,f){var h=u[0];if(h){var v=new ip;if(v.add(h.componentIndex),t.set(f,v),i=!1,f==="x"||f==="y"){var c=h.getReferringComponents("grid",jt).models[0];c&&D(u,function(p){h.componentIndex!==p.componentIndex&&c===p.getReferringComponents("grid",jt).models[0]&&v.add(p.componentIndex)})}}}i&&D(sb,function(u){if(i){var f=n.findComponents({mainType:Wa(u),filter:function(v){return v.get("type",!0)==="category"}});if(f[0]){var h=new ip;h.add(f[0].componentIndex),t.set(u,h),i=!1}}},this)},e.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis(function(a){!t&&(t=a)},this),t==="y"?"vertical":"horizontal"},e.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var a=this.ecModel.option;this.option.throttle=a.animation&&a.animationDurationUpdate>0?100:20}},e.prototype._updateRangeUse=function(t){var a=this._rangePropMode,n=this.get("rangeMode");D([["start","startValue"],["end","endValue"]],function(i,o){var s=t[i[0]]!=null,l=t[i[1]]!=null;s&&!l?a[o]="percent":!s&&l?a[o]="value":n?a[o]=n[o]:s&&(a[o]="percent")})},e.prototype.noTarget=function(){return this._noTarget},e.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis(function(a,n){t==null&&(t=this.ecModel.getComponent(Wa(a),n))},this),t},e.prototype.eachTargetAxis=function(t,a){this._targetAxisInfoMap.each(function(n,i){D(n.indexList,function(o){t.call(a,i,o)})})},e.prototype.getAxisProxy=function(t,a){var n=this.getAxisModel(t,a);if(n)return n.__dzAxisProxy},e.prototype.getAxisModel=function(t,a){var n=this._targetAxisInfoMap.get(t);if(n&&n.indexMap[a])return this.ecModel.getComponent(Wa(t),a)},e.prototype.setRawRange=function(t){var a=this.option,n=this.settledOption;D([["start","startValue"],["end","endValue"]],function(i){(t[i[0]]!=null||t[i[1]]!=null)&&(a[i[0]]=n[i[0]]=t[i[0]],a[i[1]]=n[i[1]]=t[i[1]])},this),this._updateRangeUse(t)},e.prototype.setCalculatedRange=function(t){var a=this.option;D(["start","startValue","end","endValue"],function(n){a[n]=t[n]})},e.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},e.prototype.getValueRange=function(t,a){if(t==null&&a==null){var n=this.findRepresentativeAxisProxy();if(n)return n.getDataValueWindow()}else return this.getAxisProxy(t,a).getDataValueWindow()},e.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var a,n=this._targetAxisInfoMap.keys(),i=0;io[1];if(_&&!S&&!b)return!0;_&&(g=!0),S&&(p=!0),b&&(d=!0)}return g&&p&&d})}else $i(f,function(c){if(i==="empty")l.setData(u=u.map(c,function(d){return s(d)?d:NaN}));else{var p={};p[c]=o,u.selectRange(p)}});$i(f,function(c){u.setApproximateExtent(o,c)})}});function s(l){return l>=o[0]&&l<=o[1]}},r.prototype._updateMinMaxSpan=function(){var e=this._minMaxSpan={},t=this._dataZoomModel,a=this._dataExtent;$i(["min","max"],function(n){var i=t.get(n+"Span"),o=t.get(n+"ValueSpan");o!=null&&(o=this.getAxisModel().axis.scale.parse(o)),o!=null?i=Dt(a[0]+o,a,[0,100],!0):i!=null&&(o=Dt(i,[0,100],a,!0)-a[0]),e[n+"Span"]=i,e[n+"ValueSpan"]=o},this)},r.prototype._setAxisModel=function(){var e=this.getAxisModel(),t=this._percentWindow,a=this._valueWindow;if(t){var n=wg(a,[0,500]);n=Math.min(n,20);var i=e.axis.scale.rawExtentInfo;t[0]!==0&&i.setDeterminedMinMax("min",+a[0].toFixed(n)),t[1]!==100&&i.setDeterminedMinMax("max",+a[1].toFixed(n)),i.freeze()}},r}();function j6(r,e,t){var a=[1/0,-1/0];$i(t,function(o){gB(a,o.getData(),e)});var n=r.getAxisModel(),i=rD(n.axis.scale,n,a).calculate();return[i.min,i.max]}var J6={getTargetSeries:function(r){function e(n){r.eachComponent("dataZoom",function(i){i.eachTargetAxis(function(o,s){var l=r.getComponent(Wa(o),s);n(o,s,l,i)})})}e(function(n,i,o,s){o.__dzAxisProxy=null});var t=[];e(function(n,i,o,s){o.__dzAxisProxy||(o.__dzAxisProxy=new K6(n,i,s,r),t.push(o.__dzAxisProxy))});var a=Z();return D(t,function(n){D(n.getTargetSeriesModels(),function(i){a.set(i.uid,i)})}),a},overallReset:function(r,e){r.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(a,n){t.getAxisProxy(a,n).reset(t)}),t.eachTargetAxis(function(a,n){t.getAxisProxy(a,n).filterData(t,e)})}),r.eachComponent("dataZoom",function(t){var a=t.findRepresentativeAxisProxy();if(a){var n=a.getDataPercentWindow(),i=a.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}})}};function Q6(r){r.registerAction("dataZoom",function(e,t){var a=$6(t,e);D(a,function(n){n.setRawRange({start:e.start,end:e.end,startValue:e.startValue,endValue:e.endValue})})})}var fb=!1;function xm(r){fb||(fb=!0,r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER,J6),Q6(r),r.registerSubTypeDefaulter("dataZoom",function(){return"slider"}))}function tU(r){r.registerComponentModel(Z6),r.registerComponentView(q6),xm(r)}var ir=function(){function r(){}return r}(),zI={};function Zi(r,e){zI[r]=e}function GI(r){return zI[r]}var eU=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.optionUpdated=function(){r.prototype.optionUpdated.apply(this,arguments);var t=this.ecModel;D(this.option.feature,function(a,n){var i=GI(n);i&&(i.getDefaultOption&&(i.defaultOption=i.getDefaultOption(t)),ut(a,i.defaultOption))})},e.type="toolbox",e.layoutMode={type:"box",ignoreSize:!0},e.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},e}(gt);function rU(r,e,t){var a=e.getBoxLayoutParams(),n=e.get("padding"),i={width:t.getWidth(),height:t.getHeight()},o=Jt(a,i,n);ei(e.get("orient"),r,e.get("itemGap"),o.width,o.height),kh(r,a,i,n)}function FI(r,e){var t=mi(e.get("padding")),a=e.getItemStyle(["color","opacity"]);return a.fill=e.get("backgroundColor"),r=new xt({shape:{x:r.x-t[3],y:r.y-t[0],width:r.width+t[1]+t[3],height:r.height+t[0]+t[2],r:e.get("borderRadius")},style:a,silent:!0,z2:-1}),r}var aU=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.render=function(t,a,n,i){var o=this.group;if(o.removeAll(),!t.get("show"))return;var s=+t.get("itemSize"),l=t.get("orient")==="vertical",u=t.get("feature")||{},f=this._features||(this._features={}),h=[];D(u,function(p,d){h.push(d)}),new ma(this._featureNames||[],h).add(v).update(v).remove(lt(v,null)).execute(),this._featureNames=h;function v(p,d){var g=h[p],y=h[d],m=u[g],_=new Ct(m,t,t.ecModel),S;if(i&&i.newTitle!=null&&i.featureName===g&&(m.title=i.newTitle),g&&!y){if(nU(g))S={onclick:_.option.onclick,featureName:g};else{var b=GI(g);if(!b)return;S=new b}f[g]=S}else if(S=f[y],!S)return;S.uid=Io("toolbox-feature"),S.model=_,S.ecModel=a,S.api=n;var x=S instanceof ir;if(!g&&y){x&&S.dispose&&S.dispose(a,n);return}if(!_.get("show")||x&&S.unusable){x&&S.remove&&S.remove(a,n);return}c(_,S,g),_.setIconStatus=function(w,T){var A=this.option,C=this.iconPaths;A.iconStatus=A.iconStatus||{},A.iconStatus[w]=T,C[w]&&(T==="emphasis"?ga:ya)(C[w])},S instanceof ir&&S.render&&S.render(_,a,n,i)}function c(p,d,g){var y=p.getModel("iconStyle"),m=p.getModel(["emphasis","iconStyle"]),_=d instanceof ir&&d.getIcons?d.getIcons():p.get("icon"),S=p.get("title")||{},b,x;Y(_)?(b={},b[g]=_):b=_,Y(S)?(x={},x[g]=S):x=S;var w=p.iconPaths={};D(b,function(T,A){var C=Do(T,{},{x:-s/2,y:-s/2,width:s,height:s});C.setStyle(y.getItemStyle());var M=C.ensureState("emphasis");M.style=m.getItemStyle();var I=new St({style:{text:x[A],align:m.get("textAlign"),borderRadius:m.get("textBorderRadius"),padding:m.get("textPadding"),fill:null,font:Wg({fontStyle:m.get("textFontStyle"),fontFamily:m.get("textFontFamily"),fontSize:m.get("textFontSize"),fontWeight:m.get("textFontWeight")},a)},ignore:!0});C.setTextContent(I),gi({el:C,componentModel:t,itemName:A,formatterParamsExtra:{title:x[A]}}),C.__title=x[A],C.on("mouseover",function(){var L=m.getItemStyle(),P=l?t.get("right")==null&&t.get("left")!=="right"?"right":"left":t.get("bottom")==null&&t.get("top")!=="bottom"?"bottom":"top";I.setStyle({fill:m.get("textFill")||L.fill||L.stroke||"#000",backgroundColor:m.get("textBackgroundColor")}),C.setTextConfig({position:m.get("textPosition")||P}),I.ignore=!t.get("showTitle"),n.enterEmphasis(this)}).on("mouseout",function(){p.get(["iconStatus",A])!=="emphasis"&&n.leaveEmphasis(this),I.hide()}),(p.get(["iconStatus",A])==="emphasis"?ga:ya)(C),o.add(C),C.on("click",X(d.onclick,d,a,n,A)),w[A]=C})}rU(o,t,n),o.add(FI(o.getBoundingRect(),t)),l||o.eachChild(function(p){var d=p.__title,g=p.ensureState("emphasis"),y=g.textConfig||(g.textConfig={}),m=p.getTextContent(),_=m&&m.ensureState("emphasis");if(_&&!K(_)&&d){var S=_.style||(_.style={}),b=Tl(d,St.makeFont(S)),x=p.x+o.x,w=p.y+o.y+s,T=!1;w+b.height>n.getHeight()&&(y.position="top",T=!0);var A=T?-5-b.height:s+10;x+b.width/2>n.getWidth()?(y.position=["100%",A],S.align="right"):x-b.width/2<0&&(y.position=[0,A],S.align="left")}})},e.prototype.updateView=function(t,a,n,i){D(this._features,function(o){o instanceof ir&&o.updateView&&o.updateView(o.model,a,n,i)})},e.prototype.remove=function(t,a){D(this._features,function(n){n instanceof ir&&n.remove&&n.remove(t,a)}),this.group.removeAll()},e.prototype.dispose=function(t,a){D(this._features,function(n){n instanceof ir&&n.dispose&&n.dispose(t,a)})},e.type="toolbox",e}(zt);function nU(r){return r.indexOf("my")===0}var iU=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.onclick=function(t,a){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",o=a.getZr().painter.getType()==="svg",s=o?"svg":n.get("type",!0)||"png",l=a.getConnectedDataURL({type:s,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")}),u=yt.browser;if(typeof MouseEvent=="function"&&(u.newEdge||!u.ie&&!u.edge)){var f=document.createElement("a");f.download=i+"."+s,f.target="_blank",f.href=l;var h=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});f.dispatchEvent(h)}else if(window.navigator.msSaveOrOpenBlob||o){var v=l.split(","),c=v[0].indexOf("base64")>-1,p=o?decodeURIComponent(v[1]):v[1];c&&(p=window.atob(p));var d=i+"."+s;if(window.navigator.msSaveOrOpenBlob){for(var g=p.length,y=new Uint8Array(g);g--;)y[g]=p.charCodeAt(g);var m=new Blob([y]);window.navigator.msSaveOrOpenBlob(m,d)}else{var _=document.createElement("iframe");document.body.appendChild(_);var S=_.contentWindow,b=S.document;b.open("image/svg+xml","replace"),b.write(p),b.close(),S.focus(),b.execCommand("SaveAs",!0,d),document.body.removeChild(_)}}else{var x=n.get("lang"),w='',T=window.open();T.document.write(w),T.document.title=i}},e.getDefaultOption=function(t){var a={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])};return a},e}(ir),hb="__ec_magicType_stack__",oU=[["line","bar"],["stack"]],sU=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.getIcons=function(){var t=this.model,a=t.get("icon"),n={};return D(t.get("type"),function(i){a[i]&&(n[i]=a[i])}),n},e.getDefaultOption=function(t){var a={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}};return a},e.prototype.onclick=function(t,a,n){var i=this.model,o=i.get(["seriesIndex",n]);if(vb[n]){var s={series:[]},l=function(h){var v=h.subType,c=h.id,p=vb[n](v,c,h,i);p&&(J(p,h.option),s.series.push(p));var d=h.coordinateSystem;if(d&&d.type==="cartesian2d"&&(n==="line"||n==="bar")){var g=d.getAxesByScale("ordinal")[0];if(g){var y=g.dim,m=y+"Axis",_=h.getReferringComponents(m,jt).models[0],S=_.componentIndex;s[m]=s[m]||[];for(var b=0;b<=S;b++)s[m][S]=s[m][S]||{};s[m][S].boundaryGap=n==="bar"}}};D(oU,function(h){vt(h,n)>=0&&D(h,function(v){i.setIconStatus(v,"normal")})}),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:o==null?null:{seriesIndex:o}},l);var u,f=n;n==="stack"&&(u=ut({stack:i.option.title.tiled,tiled:i.option.title.stack},i.option.title),i.get(["iconStatus",n])!=="emphasis"&&(f="tiled")),a.dispatchAction({type:"changeMagicType",currentType:f,newOption:s,newTitle:u,featureName:"magicType"})}},e}(ir),vb={line:function(r,e,t,a){if(r==="bar")return ut({id:e,type:"line",data:t.get("data"),stack:t.get("stack"),markPoint:t.get("markPoint"),markLine:t.get("markLine")},a.get(["option","line"])||{},!0)},bar:function(r,e,t,a){if(r==="line")return ut({id:e,type:"bar",data:t.get("data"),stack:t.get("stack"),markPoint:t.get("markPoint"),markLine:t.get("markLine")},a.get(["option","bar"])||{},!0)},stack:function(r,e,t,a){var n=t.get("stack")===hb;if(r==="line"||r==="bar")return a.setIconStatus("stack",n?"normal":"emphasis"),ut({id:e,stack:n?"":hb},a.get(["option","stack"])||{},!0)}};Rr({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(r,e){e.mergeOption(r.newOption)});var Jh=new Array(60).join("-"),_o=" ";function lU(r){var e={},t=[],a=[];return r.eachRawSeries(function(n){var i=n.coordinateSystem;if(i&&(i.type==="cartesian2d"||i.type==="polar")){var o=i.getBaseAxis();if(o.type==="category"){var s=o.dim+"_"+o.index;e[s]||(e[s]={categoryAxis:o,valueAxis:i.getOtherAxis(o),series:[]},a.push({axisDim:o.dim,axisIndex:o.index})),e[s].series.push(n)}else t.push(n)}else t.push(n)}),{seriesGroupByCategoryAxis:e,other:t,meta:a}}function uU(r){var e=[];return D(r,function(t,a){var n=t.categoryAxis,i=t.valueAxis,o=i.dim,s=[" "].concat(G(t.series,function(c){return c.name})),l=[n.model.getCategories()];D(t.series,function(c){var p=c.getRawData();l.push(c.getRawData().mapArray(p.mapDimension(o),function(d){return d}))});for(var u=[s.join(_o)],f=0;f=0)return!0}var Jd=new RegExp("["+_o+"]+","g");function cU(r){for(var e=r.split(/\n+/g),t=eh(e.shift()).split(Jd),a=[],n=G(t,function(l){return{name:l,data:[]}}),i=0;i=0;i--){var o=t[i];if(o[n])break}if(i<0){var s=r.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(s){var l=s.getPercentRange();t[0][n]={dataZoomId:n,start:l[0],end:l[1]}}}}),t.push(e)}function _U(r){var e=bm(r),t=e[e.length-1];e.length>1&&e.pop();var a={};return HI(t,function(n,i){for(var o=e.length-1;o>=0;o--)if(n=e[o][i],n){a[i]=n;break}}),a}function SU(r){WI(r).snapshots=null}function xU(r){return bm(r).length}function bm(r){var e=WI(r);return e.snapshots||(e.snapshots=[{}]),e.snapshots}var bU=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.onclick=function(t,a){SU(t),a.dispatchAction({type:"restore",from:this.uid})},e.getDefaultOption=function(t){var a={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:t.getLocaleModel().get(["toolbox","restore","title"])};return a},e}(ir);Rr({type:"restore",event:"restore",update:"prepareAndUpdate"},function(r,e){e.resetOption("recreate")});var wU=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"],wm=function(){function r(e,t,a){var n=this;this._targetInfoList=[];var i=cb(t,e);D(TU,function(o,s){(!a||!a.include||vt(a.include,s)>=0)&&o(i,n._targetInfoList)})}return r.prototype.setOutputRanges=function(e,t){return this.matchOutputRanges(e,t,function(a,n,i){if((a.coordRanges||(a.coordRanges=[])).push(n),!a.coordRange){a.coordRange=n;var o=op[a.brushType](0,i,n);a.__rangeOffset={offset:yb[a.brushType](o.values,a.range,[1,1]),xyMinMax:o.xyMinMax}}}),e},r.prototype.matchOutputRanges=function(e,t,a){D(e,function(n){var i=this.findTargetInfo(n,t);i&&i!==!0&&D(i.coordSyses,function(o){var s=op[n.brushType](1,o,n.range,!0);a(n,s.values,o,t)})},this)},r.prototype.setInputRanges=function(e,t){D(e,function(a){var n=this.findTargetInfo(a,t);if(a.range=a.range||[],n&&n!==!0){a.panelId=n.panelId;var i=op[a.brushType](0,n.coordSys,a.coordRange),o=a.__rangeOffset;a.range=o?yb[a.brushType](i.values,o.offset,AU(i.xyMinMax,o.xyMinMax)):i.values}},this)},r.prototype.makePanelOpts=function(e,t){return G(this._targetInfoList,function(a){var n=a.getPanelRect();return{panelId:a.panelId,defaultBrushType:t?t(a):null,clipPath:jM(n),isTargetByCursor:QM(n,e,a.coordSysModel),getLinearBrushOtherExtent:JM(n)}})},r.prototype.controlSeries=function(e,t,a){var n=this.findTargetInfo(e,a);return n===!0||n&&vt(n.coordSyses,t.coordinateSystem)>=0},r.prototype.findTargetInfo=function(e,t){for(var a=this._targetInfoList,n=cb(t,e),i=0;ir[1]&&r.reverse(),r}function cb(r,e){return ks(r,e,{includeMainTypes:wU})}var TU={grid:function(r,e){var t=r.xAxisModels,a=r.yAxisModels,n=r.gridModels,i=Z(),o={},s={};!t&&!a&&!n||(D(t,function(l){var u=l.axis.grid.model;i.set(u.id,u),o[u.id]=!0}),D(a,function(l){var u=l.axis.grid.model;i.set(u.id,u),s[u.id]=!0}),D(n,function(l){i.set(l.id,l),o[l.id]=!0,s[l.id]=!0}),i.each(function(l){var u=l.coordinateSystem,f=[];D(u.getCartesians(),function(h,v){(vt(t,h.getAxis("x").model)>=0||vt(a,h.getAxis("y").model)>=0)&&f.push(h)}),e.push({panelId:"grid--"+l.id,gridModel:l,coordSysModel:l,coordSys:f[0],coordSyses:f,getPanelRect:db.grid,xAxisDeclared:o[l.id],yAxisDeclared:s[l.id]})}))},geo:function(r,e){D(r.geoModels,function(t){var a=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:a,coordSyses:[a],getPanelRect:db.geo})})}},pb=[function(r,e){var t=r.xAxisModel,a=r.yAxisModel,n=r.gridModel;return!n&&t&&(n=t.axis.grid.model),!n&&a&&(n=a.axis.grid.model),n&&n===e.gridModel},function(r,e){var t=r.geoModel;return t&&t===e.geoModel}],db={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var r=this.coordSys,e=r.getBoundingRect().clone();return e.applyTransform($a(r)),e}},op={lineX:lt(gb,0),lineY:lt(gb,1),rect:function(r,e,t,a){var n=r?e.pointToData([t[0][0],t[1][0]],a):e.dataToPoint([t[0][0],t[1][0]],a),i=r?e.pointToData([t[0][1],t[1][1]],a):e.dataToPoint([t[0][1],t[1][1]],a),o=[Qd([n[0],i[0]]),Qd([n[1],i[1]])];return{values:o,xyMinMax:o}},polygon:function(r,e,t,a){var n=[[1/0,-1/0],[1/0,-1/0]],i=G(t,function(o){var s=r?e.pointToData(o,a):e.dataToPoint(o,a);return n[0][0]=Math.min(n[0][0],s[0]),n[1][0]=Math.min(n[1][0],s[1]),n[0][1]=Math.max(n[0][1],s[0]),n[1][1]=Math.max(n[1][1],s[1]),s});return{values:i,xyMinMax:n}}};function gb(r,e,t,a){var n=t.getAxis(["x","y"][r]),i=Qd(G([0,1],function(s){return e?n.coordToData(n.toLocalCoord(a[s]),!0):n.toGlobalCoord(n.dataToCoord(a[s]))})),o=[];return o[r]=i,o[1-r]=[NaN,NaN],{values:i,xyMinMax:o}}var yb={lineX:lt(mb,0),lineY:lt(mb,1),rect:function(r,e,t){return[[r[0][0]-t[0]*e[0][0],r[0][1]-t[0]*e[0][1]],[r[1][0]-t[1]*e[1][0],r[1][1]-t[1]*e[1][1]]]},polygon:function(r,e,t){return G(r,function(a,n){return[a[0]-t[0]*e[n][0],a[1]-t[1]*e[n][1]]})}};function mb(r,e,t,a){return[e[0]-a[r]*t[0],e[1]-a[r]*t[1]]}function AU(r,e){var t=_b(r),a=_b(e),n=[t[0]/a[0],t[1]/a[1]];return isNaN(n[0])&&(n[0]=1),isNaN(n[1])&&(n[1]=1),n}function _b(r){return r?[r[0][1]-r[0][0],r[1][1]-r[1][0]]:[NaN,NaN]}var tg=D,CU=_P("toolbox-dataZoom_"),DU=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.render=function(t,a,n,i){this._brushController||(this._brushController=new Ky(n.getZr()),this._brushController.on("brush",X(this._onBrush,this)).mount()),LU(t,a,this,i,n),IU(t,a)},e.prototype.onclick=function(t,a,n){MU[n].call(this)},e.prototype.remove=function(t,a){this._brushController&&this._brushController.unmount()},e.prototype.dispose=function(t,a){this._brushController&&this._brushController.dispose()},e.prototype._onBrush=function(t){var a=t.areas;if(!t.isEnd||!a.length)return;var n={},i=this.ecModel;this._brushController.updateCovers([]);var o=new wm(Tm(this.model),i,{include:["grid"]});o.matchOutputRanges(a,i,function(u,f,h){if(h.type==="cartesian2d"){var v=u.brushType;v==="rect"?(s("x",h,f[0]),s("y",h,f[1])):s({lineX:"x",lineY:"y"}[v],h,f)}}),mU(i,n),this._dispatchZoomAction(n);function s(u,f,h){var v=f.getAxis(u),c=v.model,p=l(u,c,i),d=p.findRepresentativeAxisProxy(c).getMinMaxSpan();(d.minValueSpan!=null||d.maxValueSpan!=null)&&(h=bi(0,h.slice(),v.scale.getExtent(),0,d.minValueSpan,d.maxValueSpan)),p&&(n[p.id]={dataZoomId:p.id,startValue:h[0],endValue:h[1]})}function l(u,f,h){var v;return h.eachComponent({mainType:"dataZoom",subType:"select"},function(c){var p=c.getAxisModel(u,f.componentIndex);p&&(v=c)}),v}},e.prototype._dispatchZoomAction=function(t){var a=[];tg(t,function(n,i){a.push(rt(n))}),a.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:a})},e.getDefaultOption=function(t){var a={show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocaleModel().get(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}};return a},e}(ir),MU={zoom:function(){var r=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:r})},back:function(){this._dispatchZoomAction(_U(this.ecModel))}};function Tm(r){var e={xAxisIndex:r.get("xAxisIndex",!0),yAxisIndex:r.get("yAxisIndex",!0),xAxisId:r.get("xAxisId",!0),yAxisId:r.get("yAxisId",!0)};return e.xAxisIndex==null&&e.xAxisId==null&&(e.xAxisIndex="all"),e.yAxisIndex==null&&e.yAxisId==null&&(e.yAxisIndex="all"),e}function IU(r,e){r.setIconStatus("back",xU(e)>1?"emphasis":"normal")}function LU(r,e,t,a,n){var i=t._isZoomActive;a&&a.type==="takeGlobalCursor"&&(i=a.key==="dataZoomSelect"?a.dataZoomSelectActive:!1),t._isZoomActive=i,r.setIconStatus("zoom",i?"emphasis":"normal");var o=new wm(Tm(r),e,{include:["grid"]}),s=o.makePanelOpts(n,function(l){return l.xAxisDeclared&&!l.yAxisDeclared?"lineX":!l.xAxisDeclared&&l.yAxisDeclared?"lineY":"rect"});t._brushController.setPanels(s).enableBrush(i&&s.length?{brushType:"auto",brushStyle:r.getModel("brushStyle").getItemStyle()}:!1)}HE("dataZoom",function(r){var e=r.getComponent("toolbox",0),t=["feature","dataZoom"];if(!e||e.get(t)==null)return;var a=e.getModel(t),n=[],i=Tm(a),o=ks(r,i);tg(o.xAxisModels,function(l){return s(l,"xAxis","xAxisIndex")}),tg(o.yAxisModels,function(l){return s(l,"yAxis","yAxisIndex")});function s(l,u,f){var h=l.componentIndex,v={type:"select",$fromToolbox:!0,filterMode:a.get("filterMode",!0)||"filter",id:CU+u+h};v[f]=h,n.push(v)}return n});function PU(r){r.registerComponentModel(eU),r.registerComponentView(aU),Zi("saveAsImage",iU),Zi("magicType",sU),Zi("dataView",gU),Zi("dataZoom",DU),Zi("restore",bU),pt(tU)}var RU=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="tooltip",e.dependencies=["axisPointer"],e.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},e}(gt);function UI(r){var e=r.get("confine");return e!=null?!!e:r.get("renderMode")==="richText"}function YI(r){if(yt.domSupported){for(var e=document.documentElement.style,t=0,a=r.length;t-1?(s+="top:50%",l+="translateY(-50%) rotate("+(u=i==="left"?-225:-45)+"deg)"):(s+="left:50%",l+="translateX(-50%) rotate("+(u=i==="top"?225:45)+"deg)");var f=u*Math.PI/180,h=o+n,v=h*Math.abs(Math.cos(f))+h*Math.abs(Math.sin(f)),c=Math.round(((v-Math.SQRT2*n)/2+Math.SQRT2*n-(v-h)/2)*100)/100;s+=";"+i+":-"+c+"px";var p=e+" solid "+n+"px;",d=["position:absolute;width:"+o+"px;height:"+o+"px;z-index:-1;",s+";"+l+";","border-bottom:"+p,"border-right:"+p,"background-color:"+a+";"];return'
'}function zU(r,e){var t="cubic-bezier(0.23,1,0.32,1)",a=" "+r/2+"s "+t,n="opacity"+a+",visibility"+a;return e||(a=" "+r+"s "+t,n+=yt.transformSupported?","+Am+a:",left"+a+",top"+a),OU+":"+n}function Sb(r,e,t){var a=r.toFixed(0)+"px",n=e.toFixed(0)+"px";if(!yt.transformSupported)return t?"top:"+n+";left:"+a+";":[["top",n],["left",a]];var i=yt.transform3dSupported,o="translate"+(i?"3d":"")+"("+a+","+n+(i?",0":"")+")";return t?"top:0;left:0;"+Am+":"+o+";":[["top",0],["left",0],[XI,o]]}function GU(r){var e=[],t=r.get("fontSize"),a=r.getTextColor();a&&e.push("color:"+a),e.push("font:"+r.getFont());var n=st(r.get("lineHeight"),Math.round(t*3/2));t&&e.push("line-height:"+n+"px");var i=r.get("textShadowColor"),o=r.get("textShadowBlur")||0,s=r.get("textShadowOffsetX")||0,l=r.get("textShadowOffsetY")||0;return i&&o&&e.push("text-shadow:"+s+"px "+l+"px "+o+"px "+i),D(["decoration","align"],function(u){var f=r.get(u);f&&e.push("text-"+u+":"+f)}),e.join(";")}function FU(r,e,t){var a=[],n=r.get("transitionDuration"),i=r.get("backgroundColor"),o=r.get("shadowBlur"),s=r.get("shadowColor"),l=r.get("shadowOffsetX"),u=r.get("shadowOffsetY"),f=r.getModel("textStyle"),h=rC(r,"html"),v=l+"px "+u+"px "+o+"px "+s;return a.push("box-shadow:"+v),e&&n&&a.push(zU(n,t)),i&&a.push("background-color:"+i),D(["width","color","radius"],function(c){var p="border-"+c,d=jg(p),g=r.get(d);g!=null&&a.push(p+":"+g+(c==="color"?"":"px"))}),a.push(GU(f)),h!=null&&a.push("padding:"+mi(h).join("px ")+"px"),a.join(";")+";"}function xb(r,e,t,a,n){var i=e&&e.painter;if(t){var o=i&&i.getViewportRoot();o&&UL(r,o,t,a,n)}else{r[0]=a,r[1]=n;var s=i&&i.getViewportRootOffset();s&&(r[0]+=s.offsetLeft,r[1]+=s.offsetTop)}r[2]=r[0]/e.getWidth(),r[3]=r[1]/e.getHeight()}var HU=function(){function r(e,t){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._alwaysShowContent=!1,this._firstShow=!0,this._longHide=!0,yt.wxa)return null;var a=document.createElement("div");a.domBelongToZr=!0,this.el=a;var n=this._zr=e.getZr(),i=t.appendTo,o=i&&(Y(i)?document.querySelector(i):ii(i)?i:K(i)&&i(e.getDom()));xb(this._styleCoord,n,o,e.getWidth()/2,e.getHeight()/2),(o||e.getDom()).appendChild(a),this._api=e,this._container=o;var s=this;a.onmouseenter=function(){s._enterable&&(clearTimeout(s._hideTimeout),s._show=!0),s._inContent=!0},a.onmousemove=function(l){if(l=l||window.event,!s._enterable){var u=n.handler,f=n.painter.getViewportRoot();tr(f,l,!0),u.dispatch("mousemove",l)}},a.onmouseleave=function(){s._inContent=!1,s._enterable&&s._show&&s.hideLater(s._hideDelay)}}return r.prototype.update=function(e){if(!this._container){var t=this._api.getDom(),a=kU(t,"position"),n=t.style;n.position!=="absolute"&&a!=="absolute"&&(n.position="relative")}var i=e.get("alwaysShowContent");i&&this._moveIfResized(),this._alwaysShowContent=i,this.el.className=e.get("className")||""},r.prototype.show=function(e,t){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var a=this.el,n=a.style,i=this._styleCoord;a.innerHTML?n.cssText=NU+FU(e,!this._firstShow,this._longHide)+Sb(i[0],i[1],!0)+("border-color:"+fi(t)+";")+(e.get("extraCssText")||"")+(";pointer-events:"+(this._enterable?"auto":"none")):n.display="none",this._show=!0,this._firstShow=!1,this._longHide=!1},r.prototype.setContent=function(e,t,a,n,i){var o=this.el;if(e==null){o.innerHTML="";return}var s="";if(Y(i)&&a.get("trigger")==="item"&&!UI(a)&&(s=VU(a,n,i)),Y(e))o.innerHTML=e+s;else if(e){o.innerHTML="",z(e)||(e=[e]);for(var l=0;l=0?this._tryShow(i,o):n==="leave"&&this._hide(o))},this))},e.prototype._keepShow=function(){var t=this._tooltipModel,a=this._ecModel,n=this._api,i=t.get("triggerOn");if(this._lastX!=null&&this._lastY!=null&&i!=="none"&&i!=="click"){var o=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!n.isDisposed()&&o.manuallyShowTip(t,a,n,{x:o._lastX,y:o._lastY,dataByCoordSys:o._lastDataByCoordSys})})}},e.prototype.manuallyShowTip=function(t,a,n,i){if(!(i.from===this.uid||yt.node||!n.getDom())){var o=Tb(i,n);this._ticket="";var s=i.dataByCoordSys,l=qU(i,a,n);if(l){var u=l.el.getBoundingRect().clone();u.applyTransform(l.el.transform),this._tryShow({offsetX:u.x+u.width/2,offsetY:u.y+u.height/2,target:l.el,position:i.position,positionDefault:"bottom"},o)}else if(i.tooltip&&i.x!=null&&i.y!=null){var f=UU;f.x=i.x,f.y=i.y,f.update(),nt(f).tooltipConfig={name:null,option:i.tooltip},this._tryShow({offsetX:i.x,offsetY:i.y,target:f},o)}else if(s)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:s,tooltipOption:i.tooltipOption},o);else if(i.seriesIndex!=null){if(this._manuallyAxisShowTip(t,a,n,i))return;var h=RI(i,a),v=h.point[0],c=h.point[1];v!=null&&c!=null&&this._tryShow({offsetX:v,offsetY:c,target:h.el,position:i.position,positionDefault:"bottom"},o)}else i.x!=null&&i.y!=null&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},o))}},e.prototype.manuallyHideTip=function(t,a,n,i){var o=this._tooltipContent;this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,i.from!==this.uid&&this._hide(Tb(i,n))},e.prototype._manuallyAxisShowTip=function(t,a,n,i){var o=i.seriesIndex,s=i.dataIndex,l=a.getComponent("axisPointer").coordSysAxesInfo;if(!(o==null||s==null||l==null)){var u=a.getSeriesByIndex(o);if(u){var f=u.getData(),h=fs([f.getItemModel(s),u,(u.coordinateSystem||{}).model],this._tooltipModel);if(h.get("trigger")==="axis")return n.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:s,position:i.position}),!0}}},e.prototype._tryShow=function(t,a){var n=t.target,i=this._tooltipModel;if(i){this._lastX=t.offsetX,this._lastY=t.offsetY;var o=t.dataByCoordSys;if(o&&o.length)this._showAxisTooltip(o,t);else if(n){var s=nt(n);if(s.ssrType==="legend")return;this._lastDataByCoordSys=null;var l,u;Zn(n,function(f){if(nt(f).dataIndex!=null)return l=f,!0;if(nt(f).tooltipConfig!=null)return u=f,!0},!0),l?this._showSeriesItemTooltip(t,l,a):u?this._showComponentItemTooltip(t,u,a):this._hide(a)}else this._lastDataByCoordSys=null,this._hide(a)}},e.prototype._showOrMove=function(t,a){var n=t.get("showDelay");a=X(a,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(a,n):a()},e.prototype._showAxisTooltip=function(t,a){var n=this._ecModel,i=this._tooltipModel,o=[a.offsetX,a.offsetY],s=fs([a.tooltipOption],i),l=this._renderMode,u=[],f=se("section",{blocks:[],noHeader:!0}),h=[],v=new Yv;D(t,function(m){D(m.dataByAxis,function(_){var S=n.getComponent(_.axisDim+"Axis",_.axisIndex),b=_.value;if(!(!S||b==null)){var x=MI(b,S.axis,n,_.seriesDataIndices,_.valueLabelOpt),w=se("section",{header:x,noHeader:!sr(x),sortBlocks:!0,blocks:[]});f.blocks.push(w),D(_.seriesDataIndices,function(T){var A=n.getSeriesByIndex(T.seriesIndex),C=T.dataIndexInside,M=A.getDataParams(C);if(!(M.dataIndex<0)){M.axisDim=_.axisDim,M.axisIndex=_.axisIndex,M.axisType=_.axisType,M.axisId=_.axisId,M.axisValue=Ty(S.axis,{value:b}),M.axisValueLabel=x,M.marker=v.makeTooltipMarker("item",fi(M.color),l);var I=f_(A.formatTooltip(C,!0,null)),L=I.frag;if(L){var P=fs([A],i).get("valueFormatter");w.blocks.push(P?V({valueFormatter:P},L):L)}I.text&&h.push(I.text),u.push(M)}})}})}),f.blocks.reverse(),h.reverse();var c=a.position,p=s.get("order"),d=g_(f,v,l,p,n.get("useUTC"),s.get("textStyle"));d&&h.unshift(d);var g=l==="richText"?` + +`:"
",y=h.join(g);this._showOrMove(s,function(){this._updateContentNotChangedOnAxis(t,u)?this._updatePosition(s,c,o[0],o[1],this._tooltipContent,u):this._showTooltipContent(s,y,u,Math.random()+"",o[0],o[1],c,null,v)})},e.prototype._showSeriesItemTooltip=function(t,a,n){var i=this._ecModel,o=nt(a),s=o.seriesIndex,l=i.getSeriesByIndex(s),u=o.dataModel||l,f=o.dataIndex,h=o.dataType,v=u.getData(h),c=this._renderMode,p=t.positionDefault,d=fs([v.getItemModel(f),u,l&&(l.coordinateSystem||{}).model],this._tooltipModel,p?{position:p}:null),g=d.get("trigger");if(!(g!=null&&g!=="item")){var y=u.getDataParams(f,h),m=new Yv;y.marker=m.makeTooltipMarker("item",fi(y.color),c);var _=f_(u.formatTooltip(f,!1,h)),S=d.get("order"),b=d.get("valueFormatter"),x=_.frag,w=x?g_(b?V({valueFormatter:b},x):x,m,c,S,i.get("useUTC"),d.get("textStyle")):_.text,T="item_"+u.name+"_"+f;this._showOrMove(d,function(){this._showTooltipContent(d,w,y,T,t.offsetX,t.offsetY,t.position,t.target,m)}),n({type:"showTip",dataIndexInside:f,dataIndex:v.getRawIndex(f),seriesIndex:s,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,a,n){var i=this._renderMode==="html",o=nt(a),s=o.tooltipConfig,l=s.option||{},u=l.encodeHTMLContent;if(Y(l)){var f=l;l={content:f,formatter:f},u=!0}u&&i&&l.content&&(l=rt(l),l.content=Se(l.content));var h=[l],v=this._ecModel.getComponent(o.componentMainType,o.componentIndex);v&&h.push(v),h.push({formatter:l.content});var c=t.positionDefault,p=fs(h,this._tooltipModel,c?{position:c}:null),d=p.get("content"),g=Math.random()+"",y=new Yv;this._showOrMove(p,function(){var m=rt(p.get("formatterParams")||{});this._showTooltipContent(p,d,m,g,t.offsetX,t.offsetY,t.position,a,y)}),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,a,n,i,o,s,l,u,f){if(this._ticket="",!(!t.get("showContent")||!t.get("show"))){var h=this._tooltipContent;h.setEnterable(t.get("enterable"));var v=t.get("formatter");l=l||t.get("position");var c=a,p=this._getNearestPoint([o,s],n,t.get("trigger"),t.get("borderColor")),d=p.color;if(v)if(Y(v)){var g=t.ecModel.get("useUTC"),y=z(n)?n[0]:n,m=y&&y.axisType&&y.axisType.indexOf("time")>=0;c=v,m&&(c=Pl(y.axisValue,c,g)),c=Jg(c,n,!0)}else if(K(v)){var _=X(function(S,b){S===this._ticket&&(h.setContent(b,f,t,d,l),this._updatePosition(t,l,o,s,h,n,u))},this);this._ticket=i,c=v(n,i,_)}else c=v;h.setContent(c,f,t,d,l),h.show(t,d),this._updatePosition(t,l,o,s,h,n,u)}},e.prototype._getNearestPoint=function(t,a,n,i){if(n==="axis"||z(a))return{color:i||(this._renderMode==="html"?"#fff":"none")};if(!z(a))return{color:i||a.color||a.borderColor}},e.prototype._updatePosition=function(t,a,n,i,o,s,l){var u=this._api.getWidth(),f=this._api.getHeight();a=a||t.get("position");var h=o.getSize(),v=t.get("align"),c=t.get("verticalAlign"),p=l&&l.getBoundingRect().clone();if(l&&p.applyTransform(l.transform),K(a)&&(a=a([n,i],s,o.el,p,{viewSize:[u,f],contentSize:h.slice()})),z(a))n=W(a[0],u),i=W(a[1],f);else if(tt(a)){var d=a;d.width=h[0],d.height=h[1];var g=Jt(d,{width:u,height:f});n=g.x,i=g.y,v=null,c=null}else if(Y(a)&&l){var y=ZU(a,p,h,t.get("borderWidth"));n=y[0],i=y[1]}else{var y=XU(n,i,o,u,f,v?null:20,c?null:20);n=y[0],i=y[1]}if(v&&(n-=Ab(v)?h[0]/2:v==="right"?h[0]:0),c&&(i-=Ab(c)?h[1]/2:c==="bottom"?h[1]:0),UI(t)){var y=$U(n,i,o,u,f);n=y[0],i=y[1]}o.moveTo(n,i)},e.prototype._updateContentNotChangedOnAxis=function(t,a){var n=this._lastDataByCoordSys,i=this._cbParamsList,o=!!n&&n.length===t.length;return o&&D(n,function(s,l){var u=s.dataByAxis||[],f=t[l]||{},h=f.dataByAxis||[];o=o&&u.length===h.length,o&&D(u,function(v,c){var p=h[c]||{},d=v.seriesDataIndices||[],g=p.seriesDataIndices||[];o=o&&v.value===p.value&&v.axisType===p.axisType&&v.axisId===p.axisId&&d.length===g.length,o&&D(d,function(y,m){var _=g[m];o=o&&y.seriesIndex===_.seriesIndex&&y.dataIndex===_.dataIndex}),i&&D(v.seriesDataIndices,function(y){var m=y.seriesIndex,_=a[m],S=i[m];_&&S&&S.data!==_.data&&(o=!1)})})}),this._lastDataByCoordSys=t,this._cbParamsList=a,!!o},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,a){yt.node||!a.getDom()||(nl(this,"_updatePosition"),this._tooltipContent.dispose(),qd("itemTooltip",a))},e.type="tooltip",e}(zt);function fs(r,e,t){var a=e.ecModel,n;t?(n=new Ct(t,a,a),n=new Ct(e.option,n,a)):n=e;for(var i=r.length-1;i>=0;i--){var o=r[i];o&&(o instanceof Ct&&(o=o.get("tooltip",!0)),Y(o)&&(o={formatter:o}),o&&(n=new Ct(o,n,a)))}return n}function Tb(r,e){return r.dispatchAction||X(e.dispatchAction,e)}function XU(r,e,t,a,n,i,o){var s=t.getSize(),l=s[0],u=s[1];return i!=null&&(r+l+i+2>a?r-=l+i:r+=i),o!=null&&(e+u+o>n?e-=u+o:e+=o),[r,e]}function $U(r,e,t,a,n){var i=t.getSize(),o=i[0],s=i[1];return r=Math.min(r+o,a)-o,e=Math.min(e+s,n)-s,r=Math.max(r,0),e=Math.max(e,0),[r,e]}function ZU(r,e,t,a){var n=t[0],i=t[1],o=Math.ceil(Math.SQRT2*a)+8,s=0,l=0,u=e.width,f=e.height;switch(r){case"inside":s=e.x+u/2-n/2,l=e.y+f/2-i/2;break;case"top":s=e.x+u/2-n/2,l=e.y-i-o;break;case"bottom":s=e.x+u/2-n/2,l=e.y+f+o;break;case"left":s=e.x-n-o,l=e.y+f/2-i/2;break;case"right":s=e.x+u+o,l=e.y+f/2-i/2}return[s,l]}function Ab(r){return r==="center"||r==="middle"}function qU(r,e,t){var a=Mg(r).queryOptionMap,n=a.keys()[0];if(!(!n||n==="series")){var i=Al(e,n,a.get(n),{useDefault:!1,enableAll:!1,enableNone:!1}),o=i.models[0];if(o){var s=t.getViewOfComponentModel(o),l;if(s.group.traverse(function(u){var f=nt(u).tooltipConfig;if(f&&f.name===r.name)return l=u,!0}),l)return{componentMainType:n,componentIndex:o.componentIndex,el:l}}}}function KU(r){pt(Hl),r.registerComponentModel(RU),r.registerComponentView(YU),r.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},Xt),r.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},Xt)}var jU=["rect","polygon","keep","clear"];function JU(r,e){var t=Rt(r?r.brush:[]);if(t.length){var a=[];D(t,function(l){var u=l.hasOwnProperty("toolbox")?l.toolbox:[];u instanceof Array&&(a=a.concat(u))});var n=r&&r.toolbox;z(n)&&(n=n[0]),n||(n={feature:{}},r.toolbox=[n]);var i=n.feature||(n.feature={}),o=i.brush||(i.brush={}),s=o.type||(o.type=[]);s.push.apply(s,a),QU(s),e&&!s.length&&s.push.apply(s,jU)}}function QU(r){var e={};D(r,function(t){e[t]=1}),r.length=0,D(e,function(t,a){r.push(a)})}var Cb=D;function Db(r){if(r){for(var e in r)if(r.hasOwnProperty(e))return!0}}function eg(r,e,t){var a={};return Cb(e,function(i){var o=a[i]=n();Cb(r[i],function(s,l){if(ie.isValidType(l)){var u={type:l,visual:s};t&&t(u,i),o[l]=new ie(u),l==="opacity"&&(u=rt(u),u.type="colorAlpha",o.__hidden.__alphaForOpacity=new ie(u))}})}),a;function n(){var i=function(){};i.prototype.__hidden=i.prototype;var o=new i;return o}}function ZI(r,e,t){var a;D(t,function(n){e.hasOwnProperty(n)&&Db(e[n])&&(a=!0)}),a&&D(t,function(n){e.hasOwnProperty(n)&&Db(e[n])?r[n]=rt(e[n]):delete r[n]})}function t8(r,e,t,a,n,i){var o={};D(r,function(h){var v=ie.prepareVisualTypes(e[h]);o[h]=v});var s;function l(h){return ly(t,s,h)}function u(h,v){vC(t,s,h,v)}t.each(f);function f(h,v){s=h;var c=t.getRawDataItem(s);if(!(c&&c.visualMap===!1))for(var p=a.call(n,h),d=e[p],g=o[p],y=0,m=g.length;ye[0][1]&&(e[0][1]=i[0]),i[1]e[1][1]&&(e[1][1]=i[1])}return e&&Rb(e)}};function Rb(r){return new ht(r[0][0],r[1][0],r[0][1]-r[0][0],r[1][1]-r[1][0])}var l8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a){this.ecModel=t,this.api=a,this.model,(this._brushController=new Ky(a.getZr())).on("brush",X(this._onBrush,this)).mount()},e.prototype.render=function(t,a,n,i){this.model=t,this._updateController(t,a,n,i)},e.prototype.updateTransform=function(t,a,n,i){qI(a),this._updateController(t,a,n,i)},e.prototype.updateVisual=function(t,a,n,i){this.updateTransform(t,a,n,i)},e.prototype.updateView=function(t,a,n,i){this._updateController(t,a,n,i)},e.prototype._updateController=function(t,a,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},e.prototype.dispose=function(){this._brushController.dispose()},e.prototype._onBrush=function(t){var a=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:a,areas:rt(n),$from:a}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:a,areas:rt(n),$from:a})},e.type="brush",e}(zt),u8="#ddd",f8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.areas=[],t.brushOption={},t}return e.prototype.optionUpdated=function(t,a){var n=this.option;!a&&ZI(n,t,["inBrush","outOfBrush"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:u8},i.hasOwnProperty("liftZ")||(i.liftZ=5)},e.prototype.setAreas=function(t){t&&(this.areas=G(t,function(a){return Eb(this.option,a)},this))},e.prototype.setBrushOption=function(t){this.brushOption=Eb(this.option,t),this.brushType=this.brushOption.brushType},e.type="brush",e.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],e.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},e}(gt);function Eb(r,e){return ut({brushType:r.brushType,brushMode:r.brushMode,transformable:r.transformable,brushStyle:new Ct(r.brushStyle).getItemStyle(),removeOnClick:r.removeOnClick,z:r.z},e,!0)}var h8=["rect","polygon","lineX","lineY","keep","clear"],v8=function(r){N(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.render=function(t,a,n){var i,o,s;a.eachComponent({mainType:"brush"},function(l){i=l.brushType,o=l.brushOption.brushMode||"single",s=s||!!l.areas.length}),this._brushType=i,this._brushMode=o,D(t.get("type",!0),function(l){t.setIconStatus(l,(l==="keep"?o==="multiple":l==="clear"?s:l===i)?"emphasis":"normal")})},e.prototype.updateView=function(t,a,n){this.render(t,a,n)},e.prototype.getIcons=function(){var t=this.model,a=t.get("icon",!0),n={};return D(t.get("type",!0),function(i){a[i]&&(n[i]=a[i])}),n},e.prototype.onclick=function(t,a,n){var i=this._brushType,o=this._brushMode;n==="clear"?(a.dispatchAction({type:"axisAreaSelect",intervals:[]}),a.dispatchAction({type:"brush",command:"clear",areas:[]})):a.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:n==="keep"?i:i===n?!1:n,brushMode:n==="keep"?o==="multiple"?"single":"multiple":o}})},e.getDefaultOption=function(t){var a={show:!0,type:h8.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])};return a},e}(ir);function c8(r){r.registerComponentView(l8),r.registerComponentModel(f8),r.registerPreprocessor(JU),r.registerVisual(r.PRIORITY.VISUAL.BRUSH,a8),r.registerAction({type:"brush",event:"brush",update:"updateVisual"},function(e,t){t.eachComponent({mainType:"brush",query:e},function(a){a.setAreas(e.areas)})}),r.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},Xt),r.registerAction({type:"brushEnd",event:"brushEnd",update:"none"},Xt),Zi("brush",v8)}var p8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.layoutMode={type:"box",ignoreSize:!0},t}return e.type="title",e.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},e}(gt),d8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){if(this.group.removeAll(),!!t.get("show")){var i=this.group,o=t.getModel("textStyle"),s=t.getModel("subtextStyle"),l=t.get("textAlign"),u=st(t.get("textBaseline"),t.get("textVerticalAlign")),f=new St({style:Nt(o,{text:t.get("text"),fill:o.getTextColor()},{disableBox:!0}),z2:10}),h=f.getBoundingRect(),v=t.get("subtext"),c=new St({style:Nt(s,{text:v,fill:s.getTextColor(),y:h.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),d=t.get("sublink"),g=t.get("triggerEvent",!0);f.silent=!p&&!g,c.silent=!d&&!g,p&&f.on("click",function(){If(p,"_"+t.get("target"))}),d&&c.on("click",function(){If(d,"_"+t.get("subtarget"))}),nt(f).eventData=nt(c).eventData=g?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(f),v&&i.add(c);var y=i.getBoundingRect(),m=t.getBoxLayoutParams();m.width=y.width,m.height=y.height;var _=Jt(m,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));l||(l=t.get("left")||t.get("right"),l==="middle"&&(l="center"),l==="right"?_.x+=_.width:l==="center"&&(_.x+=_.width/2)),u||(u=t.get("top")||t.get("bottom"),u==="center"&&(u="middle"),u==="bottom"?_.y+=_.height:u==="middle"&&(_.y+=_.height/2),u=u||"top"),i.x=_.x,i.y=_.y,i.markRedraw();var S={align:l,verticalAlign:u};f.setStyle(S),c.setStyle(S),y=i.getBoundingRect();var b=_.margin,x=t.getItemStyle(["color","opacity"]);x.fill=t.get("backgroundColor");var w=new xt({shape:{x:y.x-b[3],y:y.y-b[0],width:y.width+b[1]+b[3],height:y.height+b[0]+b[2],r:t.get("borderRadius")},style:x,subPixelOptimize:!0,silent:!0});i.add(w)}},e.type="title",e}(zt);function g8(r){r.registerComponentModel(p8),r.registerComponentView(d8)}var kb=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.layoutMode="box",t}return e.prototype.init=function(t,a,n){this.mergeDefaultAndTheme(t,n),this._initData()},e.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),this._initData()},e.prototype.setCurrentIndex=function(t){t==null&&(t=this.option.currentIndex);var a=this._data.count();this.option.loop?t=(t%a+a)%a:(t>=a&&(t=a-1),t<0&&(t=0)),this.option.currentIndex=t},e.prototype.getCurrentIndex=function(){return this.option.currentIndex},e.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},e.prototype.setPlayState=function(t){this.option.autoPlay=!!t},e.prototype.getPlayState=function(){return!!this.option.autoPlay},e.prototype._initData=function(){var t=this.option,a=t.data||[],n=t.axisType,i=this._names=[],o;n==="category"?(o=[],D(a,function(u,f){var h=Qt(xo(u),""),v;tt(u)?(v=rt(u),v.value=f):v=f,o.push(v),i.push(h)})):o=a;var s={category:"ordinal",time:"time",value:"number"}[n]||"number",l=this._data=new xe([{name:"value",type:s}],this);l.initData(o,i)},e.prototype.getData=function(){return this._data},e.prototype.getCategories=function(){if(this.get("axisType")==="category")return this._names.slice()},e.type="timeline",e.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},e}(gt),KI=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="timeline.slider",e.defaultOption=sn(kb.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),e}(kb);$t(KI,Nh.prototype);var y8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="timeline",e}(zt),m8=function(r){N(e,r);function e(t,a,n,i){var o=r.call(this,t,a,n)||this;return o.type=i||"value",o}return e.prototype.getLabelModel=function(){return this.model.getModel("label")},e.prototype.isHorizontal=function(){return this.model.get("orient")==="horizontal"},e}(dr),lp=Math.PI,Ob=bt(),_8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a){this.api=a},e.prototype.render=function(t,a,n){if(this.model=t,this.api=n,this.ecModel=a,this.group.removeAll(),t.get("show",!0)){var i=this._layout(t,n),o=this._createGroup("_mainGroup"),s=this._createGroup("_labelGroup"),l=this._axis=this._createAxis(i,t);t.formatTooltip=function(u){var f=l.scale.getLabel({value:u});return se("nameValue",{noName:!0,value:f})},D(["AxisLine","AxisTick","Control","CurrentPointer"],function(u){this["_render"+u](i,o,l,t)},this),this._renderAxisLabel(i,s,l,t),this._position(i,t)}this._doPlayStop(),this._updateTicksStatus()},e.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},e.prototype.dispose=function(){this._clearTimer()},e.prototype._layout=function(t,a){var n=t.get(["label","position"]),i=t.get("orient"),o=x8(t,a),s;n==null||n==="auto"?s=i==="horizontal"?o.y+o.height/2=0||s==="+"?"left":"right"},u={horizontal:s>=0||s==="+"?"top":"bottom",vertical:"middle"},f={horizontal:0,vertical:lp/2},h=i==="vertical"?o.height:o.width,v=t.getModel("controlStyle"),c=v.get("show",!0),p=c?v.get("itemSize"):0,d=c?v.get("itemGap"):0,g=p+d,y=t.get(["label","rotate"])||0;y=y*lp/180;var m,_,S,b=v.get("position",!0),x=c&&v.get("showPlayBtn",!0),w=c&&v.get("showPrevBtn",!0),T=c&&v.get("showNextBtn",!0),A=0,C=h;b==="left"||b==="bottom"?(x&&(m=[0,0],A+=g),w&&(_=[A,0],A+=g),T&&(S=[C-p,0],C-=g)):(x&&(m=[C-p,0],C-=g),w&&(_=[0,0],A+=g),T&&(S=[C-p,0],C-=g));var M=[A,C];return t.get("inverse")&&M.reverse(),{viewRect:o,mainLength:h,orient:i,rotation:f[i],labelRotation:y,labelPosOpt:s,labelAlign:t.get(["label","align"])||l[i],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||u[i],playPosition:m,prevBtnPosition:_,nextBtnPosition:S,axisExtent:M,controlSize:p,controlGap:d}},e.prototype._position=function(t,a){var n=this._mainGroup,i=this._labelGroup,o=t.viewRect;if(t.orient==="vertical"){var s=Fe(),l=o.x,u=o.y+o.height;Ir(s,s,[-l,-u]),nn(s,s,-lp/2),Ir(s,s,[l,u]),o=o.clone(),o.applyTransform(s)}var f=m(o),h=m(n.getBoundingRect()),v=m(i.getBoundingRect()),c=[n.x,n.y],p=[i.x,i.y];p[0]=c[0]=f[0][0];var d=t.labelPosOpt;if(d==null||Y(d)){var g=d==="+"?0:1;_(c,h,f,1,g),_(p,v,f,1,1-g)}else{var g=d>=0?0:1;_(c,h,f,1,g),p[1]=c[1]+d}n.setPosition(c),i.setPosition(p),n.rotation=i.rotation=t.rotation,y(n),y(i);function y(S){S.originX=f[0][0]-S.x,S.originY=f[1][0]-S.y}function m(S){return[[S.x,S.x+S.width],[S.y,S.y+S.height]]}function _(S,b,x,w,T){S[w]+=x[w][T]-b[w][T]}},e.prototype._createAxis=function(t,a){var n=a.getData(),i=a.get("axisType"),o=S8(a,i);o.getTicks=function(){return n.mapArray(["value"],function(u){return{value:u}})};var s=n.getDataExtent("value");o.setExtent(s[0],s[1]),o.calcNiceTicks();var l=new m8("value",o,t.axisExtent,i);return l.model=a,l},e.prototype._createGroup=function(t){var a=this[t]=new at;return this.group.add(a),a},e.prototype._renderAxisLine=function(t,a,n,i){var o=n.getExtent();if(i.get(["lineStyle","show"])){var s=new te({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:V({lineCap:"round"},i.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});a.add(s);var l=this._progressLine=new te({shape:{x1:o[0],x2:this._currentPointer?this._currentPointer.x:o[0],y1:0,y2:0},style:J({lineCap:"round",lineWidth:s.style.lineWidth},i.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});a.add(l)}},e.prototype._renderAxisTick=function(t,a,n,i){var o=this,s=i.getData(),l=n.scale.getTicks();this._tickSymbols=[],D(l,function(u){var f=n.dataToCoord(u.value),h=s.getItemModel(u.value),v=h.getModel("itemStyle"),c=h.getModel(["emphasis","itemStyle"]),p=h.getModel(["progress","itemStyle"]),d={x:f,y:0,onclick:X(o._changeTimeline,o,u.value)},g=Nb(h,v,a,d);g.ensureState("emphasis").style=c.getItemStyle(),g.ensureState("progress").style=p.getItemStyle(),Xa(g);var y=nt(g);h.get("tooltip")?(y.dataIndex=u.value,y.dataModel=i):y.dataIndex=y.dataModel=null,o._tickSymbols.push(g)})},e.prototype._renderAxisLabel=function(t,a,n,i){var o=this,s=n.getLabelModel();if(s.get("show")){var l=i.getData(),u=n.getViewLabels();this._tickLabels=[],D(u,function(f){var h=f.tickValue,v=l.getItemModel(h),c=v.getModel("label"),p=v.getModel(["emphasis","label"]),d=v.getModel(["progress","label"]),g=n.dataToCoord(f.tickValue),y=new St({x:g,y:0,rotation:t.labelRotation-t.rotation,onclick:X(o._changeTimeline,o,h),silent:!1,style:Nt(c,{text:f.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});y.ensureState("emphasis").style=Nt(p),y.ensureState("progress").style=Nt(d),a.add(y),Xa(y),Ob(y).dataIndex=h,o._tickLabels.push(y)})}},e.prototype._renderControl=function(t,a,n,i){var o=t.controlSize,s=t.rotation,l=i.getModel("controlStyle").getItemStyle(),u=i.getModel(["emphasis","controlStyle"]).getItemStyle(),f=i.getPlayState(),h=i.get("inverse",!0);v(t.nextBtnPosition,"next",X(this._changeTimeline,this,h?"-":"+")),v(t.prevBtnPosition,"prev",X(this._changeTimeline,this,h?"+":"-")),v(t.playPosition,f?"stop":"play",X(this._handlePlayClick,this,!f),!0);function v(c,p,d,g){if(c){var y=Lr(st(i.get(["controlStyle",p+"BtnSize"]),o),o),m=[0,-y/2,y,y],_=b8(i,p+"Icon",m,{x:c[0],y:c[1],originX:o/2,originY:0,rotation:g?-s:0,rectHover:!0,style:l,onclick:d});_.ensureState("emphasis").style=u,a.add(_),Xa(_)}}},e.prototype._renderCurrentPointer=function(t,a,n,i){var o=i.getData(),s=i.getCurrentIndex(),l=o.getItemModel(s).getModel("checkpointStyle"),u=this,f={onCreate:function(h){h.draggable=!0,h.drift=X(u._handlePointerDrag,u),h.ondragend=X(u._handlePointerDragend,u),Bb(h,u._progressLine,s,n,i,!0)},onUpdate:function(h){Bb(h,u._progressLine,s,n,i)}};this._currentPointer=Nb(l,l,this._mainGroup,{},this._currentPointer,f)},e.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},e.prototype._handlePointerDrag=function(t,a,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},e.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},e.prototype._pointerChangeTimeline=function(t,a){var n=this._toAxisCoord(t)[0],i=this._axis,o=Ye(i.getExtent().slice());n>o[1]&&(n=o[1]),n=0&&(o[i]=+o[i].toFixed(v)),[o,h]}var up={min:lt(Fu,"min"),max:lt(Fu,"max"),average:lt(Fu,"average"),median:lt(Fu,"median")};function ml(r,e){if(e){var t=r.getData(),a=r.coordinateSystem,n=a&&a.dimensions;if(!M8(e)&&!z(e.coord)&&z(n)){var i=jI(e,t,a,r);if(e=rt(e),e.type&&up[e.type]&&i.baseAxis&&i.valueAxis){var o=vt(n,i.baseAxis.dim),s=vt(n,i.valueAxis.dim),l=up[e.type](t,i.baseDataDim,i.valueDataDim,o,s);e.coord=l[0],e.value=l[1]}else e.coord=[e.xAxis!=null?e.xAxis:e.radiusAxis,e.yAxis!=null?e.yAxis:e.angleAxis]}if(e.coord==null||!z(n))e.coord=[];else for(var u=e.coord,f=0;f<2;f++)up[u[f]]&&(u[f]=Dm(t,t.mapDimension(n[f]),u[f]));return e}}function jI(r,e,t,a){var n={};return r.valueIndex!=null||r.valueDim!=null?(n.valueDataDim=r.valueIndex!=null?e.getDimension(r.valueIndex):r.valueDim,n.valueAxis=t.getAxis(I8(a,n.valueDataDim)),n.baseAxis=t.getOtherAxis(n.valueAxis),n.baseDataDim=e.mapDimension(n.baseAxis.dim)):(n.baseAxis=a.getBaseAxis(),n.valueAxis=t.getOtherAxis(n.baseAxis),n.baseDataDim=e.mapDimension(n.baseAxis.dim),n.valueDataDim=e.mapDimension(n.valueAxis.dim)),n}function I8(r,e){var t=r.getData().getDimensionInfo(e);return t&&t.coordDim}function _l(r,e){return r&&r.containData&&e.coord&&!ag(e)?r.containData(e.coord):!0}function L8(r,e,t){return r&&r.containZone&&e.coord&&t.coord&&!ag(e)&&!ag(t)?r.containZone(e.coord,t.coord):!0}function JI(r,e){return r?function(t,a,n,i){var o=i<2?t.coord&&t.coord[i]:t.value;return qa(o,e[i])}:function(t,a,n,i){return qa(t.value,e[i])}}function Dm(r,e,t){if(t==="average"){var a=0,n=0;return r.each(e,function(i,o){isNaN(i)||(a+=i,n++)}),a/n}else return t==="median"?r.getMedian(e):r.getDataExtent(e)[t==="max"?1:0]}var fp=bt(),Mm=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(){this.markerGroupMap=Z()},e.prototype.render=function(t,a,n){var i=this,o=this.markerGroupMap;o.each(function(s){fp(s).keep=!1}),a.eachSeries(function(s){var l=ba.getMarkerModelFromSeries(s,i.type);l&&i.renderSeries(s,l,a,n)}),o.each(function(s){!fp(s).keep&&i.group.remove(s.group)})},e.prototype.markKeep=function(t){fp(t).keep=!0},e.prototype.toggleBlurSeries=function(t,a){var n=this;D(t,function(i){var o=ba.getMarkerModelFromSeries(i,n.type);if(o){var s=o.getData();s.eachItemGraphicEl(function(l){l&&(a?WT(l):Og(l))})}})},e.type="marker",e}(zt);function zb(r,e,t){var a=e.coordinateSystem;r.each(function(n){var i=r.getItemModel(n),o,s=W(i.get("x"),t.getWidth()),l=W(i.get("y"),t.getHeight());if(!isNaN(s)&&!isNaN(l))o=[s,l];else if(e.getMarkerPosition)o=e.getMarkerPosition(r.getValues(r.dimensions,n));else if(a){var u=r.get(a.dimensions[0],n),f=r.get(a.dimensions[1],n);o=a.dataToPoint([u,f])}isNaN(s)||(o[0]=s),isNaN(l)||(o[1]=l),r.setItemLayout(n,o)})}var P8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.updateTransform=function(t,a,n){a.eachSeries(function(i){var o=ba.getMarkerModelFromSeries(i,"markPoint");o&&(zb(o.getData(),i,n),this.markerGroupMap.get(i.id).updateLayout())},this)},e.prototype.renderSeries=function(t,a,n,i){var o=t.coordinateSystem,s=t.id,l=t.getData(),u=this.markerGroupMap,f=u.get(s)||u.set(s,new Ol),h=R8(o,t,a);a.setData(h),zb(a.getData(),t,i),h.each(function(v){var c=h.getItemModel(v),p=c.getShallow("symbol"),d=c.getShallow("symbolSize"),g=c.getShallow("symbolRotate"),y=c.getShallow("symbolOffset"),m=c.getShallow("symbolKeepAspect");if(K(p)||K(d)||K(g)||K(y)){var _=a.getRawValue(v),S=a.getDataParams(v);K(p)&&(p=p(_,S)),K(d)&&(d=d(_,S)),K(g)&&(g=g(_,S)),K(y)&&(y=y(_,S))}var b=c.getModel("itemStyle").getItemStyle(),x=Rl(l,"color");b.fill||(b.fill=x),h.setItemVisual(v,{symbol:p,symbolSize:d,symbolRotate:g,symbolOffset:y,symbolKeepAspect:m,style:b})}),f.updateData(h),this.group.add(f.group),h.eachItemGraphicEl(function(v){v.traverse(function(c){nt(c).dataModel=a})}),this.markKeep(f),f.group.silent=a.get("silent")||t.get("silent")},e.type="markPoint",e}(Mm);function R8(r,e,t){var a;r?a=G(r&&r.dimensions,function(s){var l=e.getData().getDimensionInfo(e.getData().mapDimension(s))||{};return V(V({},l),{name:s,ordinalMeta:null})}):a=[{name:"value",type:"float"}];var n=new xe(a,t),i=G(t.get("data"),lt(ml,e));r&&(i=At(i,lt(_l,r)));var o=JI(!!r,a);return n.initData(i,null,o),n}function E8(r){r.registerComponentModel(D8),r.registerComponentView(P8),r.registerPreprocessor(function(e){Cm(e.series,"markPoint")&&(e.markPoint=e.markPoint||{})})}var k8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.createMarkerModelFromSeries=function(t,a,n){return new e(t,a,n)},e.type="markLine",e.defaultOption={z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},e}(ba),Hu=bt(),O8=function(r,e,t,a){var n=r.getData(),i;if(z(a))i=a;else{var o=a.type;if(o==="min"||o==="max"||o==="average"||o==="median"||a.xAxis!=null||a.yAxis!=null){var s=void 0,l=void 0;if(a.yAxis!=null||a.xAxis!=null)s=e.getAxis(a.yAxis!=null?"y":"x"),l=ae(a.yAxis,a.xAxis);else{var u=jI(a,n,e,r);s=u.valueAxis;var f=Sy(n,u.valueDataDim);l=Dm(n,f,o)}var h=s.dim==="x"?0:1,v=1-h,c=rt(a),p={coord:[]};c.type=null,c.coord=[],c.coord[v]=-1/0,p.coord[v]=1/0;var d=t.get("precision");d>=0&&wt(l)&&(l=+l.toFixed(Math.min(d,20))),c.coord[h]=p.coord[h]=l,i=[c,p,{type:o,valueIndex:a.valueIndex,value:l}]}else i=[]}var g=[ml(r,i[0]),ml(r,i[1]),V({},i[2])];return g[2].type=g[2].type||null,ut(g[2],g[0]),ut(g[2],g[1]),g};function rh(r){return!isNaN(r)&&!isFinite(r)}function Gb(r,e,t,a){var n=1-r,i=a.dimensions[r];return rh(e[n])&&rh(t[n])&&e[r]===t[r]&&a.getAxis(i).containData(e[r])}function N8(r,e){if(r.type==="cartesian2d"){var t=e[0].coord,a=e[1].coord;if(t&&a&&(Gb(1,t,a,r)||Gb(0,t,a,r)))return!0}return _l(r,e[0])&&_l(r,e[1])}function hp(r,e,t,a,n){var i=a.coordinateSystem,o=r.getItemModel(e),s,l=W(o.get("x"),n.getWidth()),u=W(o.get("y"),n.getHeight());if(!isNaN(l)&&!isNaN(u))s=[l,u];else{if(a.getMarkerPosition)s=a.getMarkerPosition(r.getValues(r.dimensions,e));else{var f=i.dimensions,h=r.get(f[0],e),v=r.get(f[1],e);s=i.dataToPoint([h,v])}if(Si(i,"cartesian2d")){var c=i.getAxis("x"),p=i.getAxis("y"),f=i.dimensions;rh(r.get(f[0],e))?s[0]=c.toGlobalCoord(c.getExtent()[t?0:1]):rh(r.get(f[1],e))&&(s[1]=p.toGlobalCoord(p.getExtent()[t?0:1]))}isNaN(l)||(s[0]=l),isNaN(u)||(s[1]=u)}r.setItemLayout(e,s)}var B8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.updateTransform=function(t,a,n){a.eachSeries(function(i){var o=ba.getMarkerModelFromSeries(i,"markLine");if(o){var s=o.getData(),l=Hu(o).from,u=Hu(o).to;l.each(function(f){hp(l,f,!0,i,n),hp(u,f,!1,i,n)}),s.each(function(f){s.setItemLayout(f,[l.getItemLayout(f),u.getItemLayout(f)])}),this.markerGroupMap.get(i.id).updateLayout()}},this)},e.prototype.renderSeries=function(t,a,n,i){var o=t.coordinateSystem,s=t.id,l=t.getData(),u=this.markerGroupMap,f=u.get(s)||u.set(s,new qy);this.group.add(f.group);var h=V8(o,t,a),v=h.from,c=h.to,p=h.line;Hu(a).from=v,Hu(a).to=c,a.setData(p);var d=a.get("symbol"),g=a.get("symbolSize"),y=a.get("symbolRotate"),m=a.get("symbolOffset");z(d)||(d=[d,d]),z(g)||(g=[g,g]),z(y)||(y=[y,y]),z(m)||(m=[m,m]),h.from.each(function(S){_(v,S,!0),_(c,S,!1)}),p.each(function(S){var b=p.getItemModel(S).getModel("lineStyle").getLineStyle();p.setItemLayout(S,[v.getItemLayout(S),c.getItemLayout(S)]),b.stroke==null&&(b.stroke=v.getItemVisual(S,"style").fill),p.setItemVisual(S,{fromSymbolKeepAspect:v.getItemVisual(S,"symbolKeepAspect"),fromSymbolOffset:v.getItemVisual(S,"symbolOffset"),fromSymbolRotate:v.getItemVisual(S,"symbolRotate"),fromSymbolSize:v.getItemVisual(S,"symbolSize"),fromSymbol:v.getItemVisual(S,"symbol"),toSymbolKeepAspect:c.getItemVisual(S,"symbolKeepAspect"),toSymbolOffset:c.getItemVisual(S,"symbolOffset"),toSymbolRotate:c.getItemVisual(S,"symbolRotate"),toSymbolSize:c.getItemVisual(S,"symbolSize"),toSymbol:c.getItemVisual(S,"symbol"),style:b})}),f.updateData(p),h.line.eachItemGraphicEl(function(S){nt(S).dataModel=a,S.traverse(function(b){nt(b).dataModel=a})});function _(S,b,x){var w=S.getItemModel(b);hp(S,b,x,t,i);var T=w.getModel("itemStyle").getItemStyle();T.fill==null&&(T.fill=Rl(l,"color")),S.setItemVisual(b,{symbolKeepAspect:w.get("symbolKeepAspect"),symbolOffset:st(w.get("symbolOffset",!0),m[x?0:1]),symbolRotate:st(w.get("symbolRotate",!0),y[x?0:1]),symbolSize:st(w.get("symbolSize"),g[x?0:1]),symbol:st(w.get("symbol",!0),d[x?0:1]),style:T})}this.markKeep(f),f.group.silent=a.get("silent")||t.get("silent")},e.type="markLine",e}(Mm);function V8(r,e,t){var a;r?a=G(r&&r.dimensions,function(u){var f=e.getData().getDimensionInfo(e.getData().mapDimension(u))||{};return V(V({},f),{name:u,ordinalMeta:null})}):a=[{name:"value",type:"float"}];var n=new xe(a,t),i=new xe(a,t),o=new xe([],t),s=G(t.get("data"),lt(O8,e,r,t));r&&(s=At(s,lt(N8,r)));var l=JI(!!r,a);return n.initData(G(s,function(u){return u[0]}),null,l),i.initData(G(s,function(u){return u[1]}),null,l),o.initData(G(s,function(u){return u[2]})),o.hasItemOption=!0,{from:n,to:i,line:o}}function z8(r){r.registerComponentModel(k8),r.registerComponentView(B8),r.registerPreprocessor(function(e){Cm(e.series,"markLine")&&(e.markLine=e.markLine||{})})}var G8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.createMarkerModelFromSeries=function(t,a,n){return new e(t,a,n)},e.type="markArea",e.defaultOption={z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},e}(ba),Wu=bt(),F8=function(r,e,t,a){var n=a[0],i=a[1];if(!(!n||!i)){var o=ml(r,n),s=ml(r,i),l=o.coord,u=s.coord;l[0]=ae(l[0],-1/0),l[1]=ae(l[1],-1/0),u[0]=ae(u[0],1/0),u[1]=ae(u[1],1/0);var f=hh([{},o,s]);return f.coord=[o.coord,s.coord],f.x0=o.x,f.y0=o.y,f.x1=s.x,f.y1=s.y,f}};function ah(r){return!isNaN(r)&&!isFinite(r)}function Fb(r,e,t,a){var n=1-r;return ah(e[n])&&ah(t[n])}function H8(r,e){var t=e.coord[0],a=e.coord[1],n={coord:t,x:e.x0,y:e.y0},i={coord:a,x:e.x1,y:e.y1};return Si(r,"cartesian2d")?t&&a&&(Fb(1,t,a)||Fb(0,t,a))?!0:L8(r,n,i):_l(r,n)||_l(r,i)}function Hb(r,e,t,a,n){var i=a.coordinateSystem,o=r.getItemModel(e),s,l=W(o.get(t[0]),n.getWidth()),u=W(o.get(t[1]),n.getHeight());if(!isNaN(l)&&!isNaN(u))s=[l,u];else{if(a.getMarkerPosition){var f=r.getValues(["x0","y0"],e),h=r.getValues(["x1","y1"],e),v=i.clampData(f),c=i.clampData(h),p=[];t[0]==="x0"?p[0]=v[0]>c[0]?h[0]:f[0]:p[0]=v[0]>c[0]?f[0]:h[0],t[1]==="y0"?p[1]=v[1]>c[1]?h[1]:f[1]:p[1]=v[1]>c[1]?f[1]:h[1],s=a.getMarkerPosition(p,t,!0)}else{var d=r.get(t[0],e),g=r.get(t[1],e),y=[d,g];i.clampData&&i.clampData(y,y),s=i.dataToPoint(y,!0)}if(Si(i,"cartesian2d")){var m=i.getAxis("x"),_=i.getAxis("y"),d=r.get(t[0],e),g=r.get(t[1],e);ah(d)?s[0]=m.toGlobalCoord(m.getExtent()[t[0]==="x0"?0:1]):ah(g)&&(s[1]=_.toGlobalCoord(_.getExtent()[t[1]==="y0"?0:1]))}isNaN(l)||(s[0]=l),isNaN(u)||(s[1]=u)}return s}var Wb=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],W8=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.updateTransform=function(t,a,n){a.eachSeries(function(i){var o=ba.getMarkerModelFromSeries(i,"markArea");if(o){var s=o.getData();s.each(function(l){var u=G(Wb,function(h){return Hb(s,l,h,i,n)});s.setItemLayout(l,u);var f=s.getItemGraphicEl(l);f.setShape("points",u)})}},this)},e.prototype.renderSeries=function(t,a,n,i){var o=t.coordinateSystem,s=t.id,l=t.getData(),u=this.markerGroupMap,f=u.get(s)||u.set(s,{group:new at});this.group.add(f.group),this.markKeep(f);var h=U8(o,t,a);a.setData(h),h.each(function(v){var c=G(Wb,function(T){return Hb(h,v,T,t,i)}),p=o.getAxis("x").scale,d=o.getAxis("y").scale,g=p.getExtent(),y=d.getExtent(),m=[p.parse(h.get("x0",v)),p.parse(h.get("x1",v))],_=[d.parse(h.get("y0",v)),d.parse(h.get("y1",v))];Ye(m),Ye(_);var S=!(g[0]>m[1]||g[1]_[1]||y[1]<_[0]),b=!S;h.setItemLayout(v,{points:c,allClipped:b});var x=h.getItemModel(v).getModel("itemStyle").getItemStyle(),w=Rl(l,"color");x.fill||(x.fill=w,Y(x.fill)&&(x.fill=Zs(x.fill,.4))),x.stroke||(x.stroke=w),h.setItemVisual(v,"style",x)}),h.diff(Wu(f).data).add(function(v){var c=h.getItemLayout(v);if(!c.allClipped){var p=new Te({shape:{points:c.points}});h.setItemGraphicEl(v,p),f.group.add(p)}}).update(function(v,c){var p=Wu(f).data.getItemGraphicEl(c),d=h.getItemLayout(v);d.allClipped?p&&f.group.remove(p):(p?Tt(p,{shape:{points:d.points}},a,v):p=new Te({shape:{points:d.points}}),h.setItemGraphicEl(v,p),f.group.add(p))}).remove(function(v){var c=Wu(f).data.getItemGraphicEl(v);f.group.remove(c)}).execute(),h.eachItemGraphicEl(function(v,c){var p=h.getItemModel(c),d=h.getItemVisual(c,"style");v.useStyle(h.getItemVisual(c,"style")),pe(v,oe(p),{labelFetcher:a,labelDataIndex:c,defaultText:h.getName(c)||"",inheritColor:Y(d.fill)?Zs(d.fill,1):"#000"}),ce(v,p),Wt(v,null,null,p.get(["emphasis","disabled"])),nt(v).dataModel=a}),Wu(f).data=h,f.group.silent=a.get("silent")||t.get("silent")},e.type="markArea",e}(Mm);function U8(r,e,t){var a,n,i=["x0","y0","x1","y1"];if(r){var o=G(r&&r.dimensions,function(u){var f=e.getData(),h=f.getDimensionInfo(f.mapDimension(u))||{};return V(V({},h),{name:u,ordinalMeta:null})});n=G(i,function(u,f){return{name:u,type:o[f%2].type}}),a=new xe(n,t)}else n=[{name:"value",type:"float"}],a=new xe(n,t);var s=G(t.get("data"),lt(F8,e,r,t));r&&(s=At(s,lt(H8,r)));var l=r?function(u,f,h,v){var c=u.coord[Math.floor(v/2)][v%2];return qa(c,n[v])}:function(u,f,h,v){return qa(u.value,n[v])};return a.initData(s,null,l),a.hasItemOption=!0,a}function Y8(r){r.registerComponentModel(G8),r.registerComponentView(W8),r.registerPreprocessor(function(e){Cm(e.series,"markArea")&&(e.markArea=e.markArea||{})})}var X8=function(r,e){if(e==="all")return{type:"all",title:r.getLocaleModel().get(["legend","selector","all"])};if(e==="inverse")return{type:"inverse",title:r.getLocaleModel().get(["legend","selector","inverse"])}},ng=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.layoutMode={type:"box",ignoreSize:!0},t}return e.prototype.init=function(t,a,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{},this._updateSelector(t)},e.prototype.mergeOption=function(t,a){r.prototype.mergeOption.call(this,t,a),this._updateSelector(t)},e.prototype._updateSelector=function(t){var a=t.selector,n=this.ecModel;a===!0&&(a=t.selector=["all","inverse"]),z(a)&&D(a,function(i,o){Y(i)&&(i={type:i}),a[o]=ut(i,X8(n,i.type))})},e.prototype.optionUpdated=function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&this.get("selectedMode")==="single"){for(var a=!1,n=0;n=0},e.prototype.getOrient=function(){return this.get("orient")==="vertical"?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},e}(gt),Fi=lt,ig=D,Uu=at,QI=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.newlineDisabled=!1,t}return e.prototype.init=function(){this.group.add(this._contentGroup=new Uu),this.group.add(this._selectorGroup=new Uu),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,a,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),!!t.get("show",!0)){var o=t.get("align"),s=t.get("orient");(!o||o==="auto")&&(o=t.get("left")==="right"&&s==="vertical"?"right":"left");var l=t.get("selector",!0),u=t.get("selectorPosition",!0);l&&(!u||u==="auto")&&(u=s==="horizontal"?"end":"start"),this.renderInner(o,t,a,n,l,s,u);var f=t.getBoxLayoutParams(),h={width:n.getWidth(),height:n.getHeight()},v=t.get("padding"),c=Jt(f,h,v),p=this.layoutInner(t,o,c,i,l,u),d=Jt(J({width:p.width,height:p.height},f),h,v);this.group.x=d.x-p.x,this.group.y=d.y-p.y,this.group.markRedraw(),this.group.add(this._backgroundEl=FI(p,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,a,n,i,o,s,l){var u=this.getContentGroup(),f=Z(),h=a.get("selectedMode"),v=[];n.eachRawSeries(function(c){!c.get("legendHoverLink")&&v.push(c.id)}),ig(a.getData(),function(c,p){var d=c.get("name");if(!this.newlineDisabled&&(d===""||d===` +`)){var g=new Uu;g.newline=!0,u.add(g);return}var y=n.getSeriesByName(d)[0];if(!f.get(d))if(y){var m=y.getData(),_=m.getVisual("legendLineStyle")||{},S=m.getVisual("legendIcon"),b=m.getVisual("style"),x=this._createItem(y,d,p,c,a,t,_,b,S,h,i);x.on("click",Fi(Ub,d,null,i,v)).on("mouseover",Fi(og,y.name,null,i,v)).on("mouseout",Fi(sg,y.name,null,i,v)),n.ssr&&x.eachChild(function(w){var T=nt(w);T.seriesIndex=y.seriesIndex,T.dataIndex=p,T.ssrType="legend"}),f.set(d,!0)}else n.eachRawSeries(function(w){if(!f.get(d)&&w.legendVisualProvider){var T=w.legendVisualProvider;if(!T.containName(d))return;var A=T.indexOfName(d),C=T.getItemVisual(A,"style"),M=T.getItemVisual(A,"legendIcon"),I=Pe(C.fill);I&&I[3]===0&&(I[3]=.2,C=V(V({},C),{fill:Cr(I,"rgba")}));var L=this._createItem(w,d,p,c,a,t,{},C,M,h,i);L.on("click",Fi(Ub,null,d,i,v)).on("mouseover",Fi(og,null,d,i,v)).on("mouseout",Fi(sg,null,d,i,v)),n.ssr&&L.eachChild(function(P){var R=nt(P);R.seriesIndex=w.seriesIndex,R.dataIndex=p,R.ssrType="legend"}),f.set(d,!0)}},this)},this),o&&this._createSelector(o,a,i,s,l)},e.prototype._createSelector=function(t,a,n,i,o){var s=this.getSelectorGroup();ig(t,function(u){var f=u.type,h=new St({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:f==="all"?"legendAllSelect":"legendInverseSelect",legendId:a.id})}});s.add(h);var v=a.getModel("selectorLabel"),c=a.getModel(["emphasis","selectorLabel"]);pe(h,{normal:v,emphasis:c},{defaultText:u.title}),Xa(h)})},e.prototype._createItem=function(t,a,n,i,o,s,l,u,f,h,v){var c=t.visualDrawType,p=o.get("itemWidth"),d=o.get("itemHeight"),g=o.isSelected(a),y=i.get("symbolRotate"),m=i.get("symbolKeepAspect"),_=i.get("icon");f=_||f||"roundRect";var S=$8(f,i,l,u,c,g,v),b=new Uu,x=i.getModel("textStyle");if(K(t.getLegendIcon)&&(!_||_==="inherit"))b.add(t.getLegendIcon({itemWidth:p,itemHeight:d,icon:f,iconRotate:y,itemStyle:S.itemStyle,lineStyle:S.lineStyle,symbolKeepAspect:m}));else{var w=_==="inherit"&&t.getData().getVisual("symbol")?y==="inherit"?t.getData().getVisual("symbolRotate"):y:0;b.add(Z8({itemWidth:p,itemHeight:d,icon:f,iconRotate:w,itemStyle:S.itemStyle,symbolKeepAspect:m}))}var T=s==="left"?p+5:-5,A=s,C=o.get("formatter"),M=a;Y(C)&&C?M=C.replace("{name}",a??""):K(C)&&(M=C(a));var I=g?x.getTextColor():i.get("inactiveColor");b.add(new St({style:Nt(x,{text:M,x:T,y:d/2,fill:I,align:A,verticalAlign:"middle"},{inheritColor:I})}));var L=new xt({shape:b.getBoundingRect(),style:{fill:"transparent"}}),P=i.getModel("tooltip");return P.get("show")&&gi({el:L,componentModel:o,itemName:a,itemTooltipOption:P.option}),b.add(L),b.eachChild(function(R){R.silent=!0}),L.silent=!h,this.getContentGroup().add(b),Xa(b),b.__legendDataIndex=n,b},e.prototype.layoutInner=function(t,a,n,i,o,s){var l=this.getContentGroup(),u=this.getSelectorGroup();ei(t.get("orient"),l,t.get("itemGap"),n.width,n.height);var f=l.getBoundingRect(),h=[-f.x,-f.y];if(u.markRedraw(),l.markRedraw(),o){ei("horizontal",u,t.get("selectorItemGap",!0));var v=u.getBoundingRect(),c=[-v.x,-v.y],p=t.get("selectorButtonGap",!0),d=t.getOrient().index,g=d===0?"width":"height",y=d===0?"height":"width",m=d===0?"y":"x";s==="end"?c[d]+=f[g]+p:h[d]+=v[g]+p,c[1-d]+=f[y]/2-v[y]/2,u.x=c[0],u.y=c[1],l.x=h[0],l.y=h[1];var _={x:0,y:0};return _[g]=f[g]+p+v[g],_[y]=Math.max(f[y],v[y]),_[m]=Math.min(0,v[m]+c[1-d]),_}else return l.x=h[0],l.y=h[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(zt);function $8(r,e,t,a,n,i,o){function s(g,y){g.lineWidth==="auto"&&(g.lineWidth=y.lineWidth>0?2:0),ig(g,function(m,_){g[_]==="inherit"&&(g[_]=y[_])})}var l=e.getModel("itemStyle"),u=l.getItemStyle(),f=r.lastIndexOf("empty",0)===0?"fill":"stroke",h=l.getShallow("decal");u.decal=!h||h==="inherit"?a.decal:co(h,o),u.fill==="inherit"&&(u.fill=a[n]),u.stroke==="inherit"&&(u.stroke=a[f]),u.opacity==="inherit"&&(u.opacity=(n==="fill"?a:t).opacity),s(u,a);var v=e.getModel("lineStyle"),c=v.getLineStyle();if(s(c,t),u.fill==="auto"&&(u.fill=a.fill),u.stroke==="auto"&&(u.stroke=a.fill),c.stroke==="auto"&&(c.stroke=a.fill),!i){var p=e.get("inactiveBorderWidth"),d=u[f];u.lineWidth=p==="auto"?a.lineWidth>0&&d?2:0:u.lineWidth,u.fill=e.get("inactiveColor"),u.stroke=e.get("inactiveBorderColor"),c.stroke=v.get("inactiveColor"),c.lineWidth=v.get("inactiveWidth")}return{itemStyle:u,lineStyle:c}}function Z8(r){var e=r.icon||"roundRect",t=qt(e,0,0,r.itemWidth,r.itemHeight,r.itemStyle.fill,r.symbolKeepAspect);return t.setStyle(r.itemStyle),t.rotation=(r.iconRotate||0)*Math.PI/180,t.setOrigin([r.itemWidth/2,r.itemHeight/2]),e.indexOf("empty")>-1&&(t.style.stroke=t.style.fill,t.style.fill="#fff",t.style.lineWidth=2),t}function Ub(r,e,t,a){sg(r,e,t,a),t.dispatchAction({type:"legendToggleSelect",name:r??e}),og(r,e,t,a)}function tL(r){for(var e=r.getZr().storage.getDisplayList(),t,a=0,n=e.length;an[o],g=[-c.x,-c.y];a||(g[i]=f[u]);var y=[0,0],m=[-p.x,-p.y],_=st(t.get("pageButtonGap",!0),t.get("itemGap",!0));if(d){var S=t.get("pageButtonPosition",!0);S==="end"?m[i]+=n[o]-p[o]:y[i]+=p[o]+_}m[1-i]+=c[s]/2-p[s]/2,f.setPosition(g),h.setPosition(y),v.setPosition(m);var b={x:0,y:0};if(b[o]=d?n[o]:c[o],b[s]=Math.max(c[s],p[s]),b[l]=Math.min(0,p[l]+m[1-i]),h.__rectSize=n[o],d){var x={x:0,y:0};x[o]=Math.max(n[o]-p[o]-_,0),x[s]=b[s],h.setClipPath(new xt({shape:x})),h.__rectSize=x[o]}else v.eachChild(function(T){T.attr({invisible:!0,silent:!0})});var w=this._getPageInfo(t);return w.pageIndex!=null&&Tt(f,{x:w.contentPosition[0],y:w.contentPosition[1]},d?t:null),this._updatePageInfoView(t,w),b},e.prototype._pageGo=function(t,a,n){var i=this._getPageInfo(a)[t];i!=null&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:a.id})},e.prototype._updatePageInfoView=function(t,a){var n=this._controllerGroup;D(["pagePrev","pageNext"],function(f){var h=f+"DataIndex",v=a[h]!=null,c=n.childOfName(f);c&&(c.setStyle("fill",v?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),c.cursor=v?"pointer":"default")});var i=n.childOfName("pageText"),o=t.get("pageFormatter"),s=a.pageIndex,l=s!=null?s+1:0,u=a.pageCount;i&&o&&i.setStyle("text",Y(o)?o.replace("{current}",l==null?"":l+"").replace("{total}",u==null?"":u+""):o({current:l,total:u}))},e.prototype._getPageInfo=function(t){var a=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,o=t.getOrient().index,s=vp[o],l=cp[o],u=this._findTargetItemIndex(a),f=n.children(),h=f[u],v=f.length,c=v?1:0,p={contentPosition:[n.x,n.y],pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!h)return p;var d=S(h);p.contentPosition[o]=-d.s;for(var g=u+1,y=d,m=d,_=null;g<=v;++g)_=S(f[g]),(!_&&m.e>y.s+i||_&&!b(_,y.s))&&(m.i>y.i?y=m:y=_,y&&(p.pageNextDataIndex==null&&(p.pageNextDataIndex=y.i),++p.pageCount)),m=_;for(var g=u-1,y=d,m=d,_=null;g>=-1;--g)_=S(f[g]),(!_||!b(m,_.s))&&y.i=w&&x.s<=w+i}},e.prototype._findTargetItemIndex=function(t){if(!this._showController)return 0;var a,n=this.getContentGroup(),i;return n.eachChild(function(o,s){var l=o.__legendDataIndex;i==null&&l!=null&&(i=s),l===t&&(a=s)}),a??i},e.type="legend.scroll",e}(QI);function Q8(r){r.registerAction("legendScroll","legendscroll",function(e,t){var a=e.scrollDataIndex;a!=null&&t.eachComponent({mainType:"legend",subType:"scroll",query:e},function(n){n.setScrollDataIndex(a)})})}function tY(r){pt(eL),r.registerComponentModel(j8),r.registerComponentView(J8),Q8(r)}function eY(r){pt(eL),pt(tY)}var rY=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="dataZoom.inside",e.defaultOption=sn(yl.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(yl),Im=bt();function aY(r,e,t){Im(r).coordSysRecordMap.each(function(a){var n=a.dataZoomInfoMap.get(e.uid);n&&(n.getRange=t)})}function nY(r,e){for(var t=Im(r).coordSysRecordMap,a=t.keys(),n=0;na[t+e]&&(e=s),n=n&&o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function uY(r){r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER,function(e,t){var a=Im(t),n=a.coordSysRecordMap||(a.coordSysRecordMap=Z());n.each(function(i){i.dataZoomInfoMap=null}),e.eachComponent({mainType:"dataZoom",subType:"inside"},function(i){var o=VI(i);D(o.infoList,function(s){var l=s.model.uid,u=n.get(l)||n.set(l,iY(t,s.model)),f=u.dataZoomInfoMap||(u.dataZoomInfoMap=Z());f.set(i.uid,{dzReferCoordSysInfo:s,model:i,getRange:null})})}),n.each(function(i){var o=i.controller,s,l=i.dataZoomInfoMap;if(l){var u=l.keys()[0];u!=null&&(s=l.get(u))}if(!s){rL(n,i);return}var f=lY(l);o.enable(f.controlType,f.opt),o.setPointerChecker(i.containsPoint),ko(i,"dispatchAction",s.model.get("throttle",!0),"fixRate")})})}var fY=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type="dataZoom.inside",t}return e.prototype.render=function(t,a,n){if(r.prototype.render.apply(this,arguments),t.noTarget()){this._clear();return}this.range=t.getPercentRange(),aY(n,t,{pan:X(pp.pan,this),zoom:X(pp.zoom,this),scrollMove:X(pp.scrollMove,this)})},e.prototype.dispose=function(){this._clear(),r.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){nY(this.api,this.dataZoomModel),this.range=null},e.type="dataZoom.inside",e}(Sm),pp={zoom:function(r,e,t,a){var n=this.range,i=n.slice(),o=r.axisModels[0];if(o){var s=dp[e](null,[a.originX,a.originY],o,t,r),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(i[1]-i[0])+i[0],u=Math.max(1/a.scale,0);i[0]=(i[0]-l)*u+l,i[1]=(i[1]-l)*u+l;var f=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();if(bi(0,i,[0,100],0,f.minSpan,f.maxSpan),this.range=i,n[0]!==i[0]||n[1]!==i[1])return i}},pan:Zb(function(r,e,t,a,n,i){var o=dp[a]([i.oldX,i.oldY],[i.newX,i.newY],e,n,t);return o.signal*(r[1]-r[0])*o.pixel/o.pixelLength}),scrollMove:Zb(function(r,e,t,a,n,i){var o=dp[a]([0,0],[i.scrollDelta,i.scrollDelta],e,n,t);return o.signal*(r[1]-r[0])*i.scrollDelta})};function Zb(r){return function(e,t,a,n){var i=this.range,o=i.slice(),s=e.axisModels[0];if(s){var l=r(o,s,e,t,a,n);if(bi(l,o,[0,100],"all"),this.range=o,i[0]!==o[0]||i[1]!==o[1])return o}}}var dp={grid:function(r,e,t,a,n){var i=t.axis,o={},s=n.model.coordinateSystem.getRect();return r=r||[0,0],i.dim==="x"?(o.pixel=e[0]-r[0],o.pixelLength=s.width,o.pixelStart=s.x,o.signal=i.inverse?1:-1):(o.pixel=e[1]-r[1],o.pixelLength=s.height,o.pixelStart=s.y,o.signal=i.inverse?-1:1),o},polar:function(r,e,t,a,n){var i=t.axis,o={},s=n.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return r=r?s.pointToCoord(r):[0,0],e=s.pointToCoord(e),t.mainType==="radiusAxis"?(o.pixel=e[0]-r[0],o.pixelLength=l[1]-l[0],o.pixelStart=l[0],o.signal=i.inverse?1:-1):(o.pixel=e[1]-r[1],o.pixelLength=u[1]-u[0],o.pixelStart=u[0],o.signal=i.inverse?-1:1),o},singleAxis:function(r,e,t,a,n){var i=t.axis,o=n.model.coordinateSystem.getRect(),s={};return r=r||[0,0],i.orient==="horizontal"?(s.pixel=e[0]-r[0],s.pixelLength=o.width,s.pixelStart=o.x,s.signal=i.inverse?1:-1):(s.pixel=e[1]-r[1],s.pixelLength=o.height,s.pixelStart=o.y,s.signal=i.inverse?-1:1),s}};function aL(r){xm(r),r.registerComponentModel(rY),r.registerComponentView(fY),uY(r)}var hY=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="dataZoom.slider",e.layoutMode="box",e.defaultOption=sn(yl.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleLabel:{show:!0},handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),e}(yl),cs=xt,qb=7,vY=1,gp=30,cY=7,ps="horizontal",Kb="vertical",pY=5,dY=["line","bar","candlestick","scatter"],gY={easing:"cubicOut",duration:100,delay:0},yY=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._displayables={},t}return e.prototype.init=function(t,a){this.api=a,this._onBrush=X(this._onBrush,this),this._onBrushEnd=X(this._onBrushEnd,this)},e.prototype.render=function(t,a,n,i){if(r.prototype.render.apply(this,arguments),ko(this,"_dispatchZoomAction",t.get("throttle"),"fixRate"),this._orient=t.getOrient(),t.get("show")===!1){this.group.removeAll();return}if(t.noTarget()){this._clear(),this.group.removeAll();return}(!i||i.type!=="dataZoom"||i.from!==this.uid)&&this._buildView(),this._updateView()},e.prototype.dispose=function(){this._clear(),r.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){nl(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},e.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var a=this._displayables.sliderGroup=new at;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(a),this._positionGroup()},e.prototype._resetLocation=function(){var t=this.dataZoomModel,a=this.api,n=t.get("brushSelect"),i=n?cY:0,o=this._findCoordRect(),s={width:a.getWidth(),height:a.getHeight()},l=this._orient===ps?{right:s.width-o.x-o.width,top:s.height-gp-qb-i,width:o.width,height:gp}:{right:qb,top:o.y,width:gp,height:o.height},u=Lo(t.option);D(["right","top","width","height"],function(h){u[h]==="ph"&&(u[h]=l[h])});var f=Jt(u,s);this._location={x:f.x,y:f.y},this._size=[f.width,f.height],this._orient===Kb&&this._size.reverse()},e.prototype._positionGroup=function(){var t=this.group,a=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),o=i&&i.get("inverse"),s=this._displayables.sliderGroup,l=(this._dataShadowInfo||{}).otherAxisInverse;s.attr(n===ps&&!o?{scaleY:l?1:-1,scaleX:1}:n===ps&&o?{scaleY:l?1:-1,scaleX:-1}:n===Kb&&!o?{scaleY:l?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:l?-1:1,scaleX:-1,rotation:Math.PI/2});var u=t.getBoundingRect([s]);t.x=a.x-u.x,t.y=a.y-u.y,t.markRedraw()},e.prototype._getViewExtent=function(){return[0,this._size[0]]},e.prototype._renderBackground=function(){var t=this.dataZoomModel,a=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new cs({silent:!0,shape:{x:0,y:0,width:a[0],height:a[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var o=new cs({shape:{x:0,y:0,width:a[0],height:a[1]},style:{fill:"transparent"},z2:0,onclick:X(this._onClickPanel,this)}),s=this.api.getZr();i?(o.on("mousedown",this._onBrushStart,this),o.cursor="crosshair",s.on("mousemove",this._onBrush),s.on("mouseup",this._onBrushEnd)):(s.off("mousemove",this._onBrush),s.off("mouseup",this._onBrushEnd)),n.add(o)},e.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],!t)return;var a=this._size,n=this._shadowSize||[],i=t.series,o=i.getRawData(),s=i.getShadowDim&&i.getShadowDim(),l=s&&o.getDimensionInfo(s)?i.getShadowDim():t.otherDim;if(l==null)return;var u=this._shadowPolygonPts,f=this._shadowPolylinePts;if(o!==this._shadowData||l!==this._shadowDim||a[0]!==n[0]||a[1]!==n[1]){var h=o.getDataExtent(l),v=(h[1]-h[0])*.3;h=[h[0]-v,h[1]+v];var c=[0,a[1]],p=[0,a[0]],d=[[a[0],0],[0,0]],g=[],y=p[1]/(o.count()-1),m=0,_=Math.round(o.count()/a[0]),S;o.each([l],function(A,C){if(_>0&&C%_){m+=y;return}var M=A==null||isNaN(A)||A==="",I=M?0:Dt(A,h,c,!0);M&&!S&&C?(d.push([d[d.length-1][0],0]),g.push([g[g.length-1][0],0])):!M&&S&&(d.push([m,0]),g.push([m,0])),d.push([m,I]),g.push([m,I]),m+=y,S=M}),u=this._shadowPolygonPts=d,f=this._shadowPolylinePts=g}this._shadowData=o,this._shadowDim=l,this._shadowSize=[a[0],a[1]];var b=this.dataZoomModel;function x(A){var C=b.getModel(A?"selectedDataBackground":"dataBackground"),M=new at,I=new Te({shape:{points:u},segmentIgnoreThreshold:1,style:C.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),L=new Ce({shape:{points:f},segmentIgnoreThreshold:1,style:C.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return M.add(I),M.add(L),M}for(var w=0;w<3;w++){var T=x(w===1);this._displayables.sliderGroup.add(T),this._displayables.dataShadowSegs.push(T)}},e.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,a=t.get("showDataShadow");if(a!==!1){var n,i=this.ecModel;return t.eachTargetAxis(function(o,s){var l=t.getAxisProxy(o,s).getTargetSeriesModels();D(l,function(u){if(!n&&!(a!==!0&&vt(dY,u.get("type"))<0)){var f=i.getComponent(Wa(o),s).axis,h=mY(o),v,c=u.coordinateSystem;h!=null&&c.getOtherAxis&&(v=c.getOtherAxis(f).inverse),h=u.getData().mapDimension(h),n={thisAxis:f,series:u,thisDim:o,otherDim:h,otherAxisInverse:v}}},this)},this),n}},e.prototype._renderHandle=function(){var t=this.group,a=this._displayables,n=a.handles=[null,null],i=a.handleLabels=[null,null],o=this._displayables.sliderGroup,s=this._size,l=this.dataZoomModel,u=this.api,f=l.get("borderRadius")||0,h=l.get("brushSelect"),v=a.filler=new cs({silent:h,style:{fill:l.get("fillerColor")},textConfig:{position:"inside"}});o.add(v),o.add(new cs({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:s[0],height:s[1],r:f},style:{stroke:l.get("dataBackgroundColor")||l.get("borderColor"),lineWidth:vY,fill:"rgba(0,0,0,0)"}})),D([0,1],function(_){var S=l.get("handleIcon");!Rf[S]&&S.indexOf("path://")<0&&S.indexOf("image://")<0&&(S="path://"+S);var b=qt(S,-1,0,2,2,null,!0);b.attr({cursor:jb(this._orient),draggable:!0,drift:X(this._onDragMove,this,_),ondragend:X(this._onDragEnd,this),onmouseover:X(this._showDataInfo,this,!0),onmouseout:X(this._showDataInfo,this,!1),z2:5});var x=b.getBoundingRect(),w=l.get("handleSize");this._handleHeight=W(w,this._size[1]),this._handleWidth=x.width/x.height*this._handleHeight,b.setStyle(l.getModel("handleStyle").getItemStyle()),b.style.strokeNoScale=!0,b.rectHover=!0,b.ensureState("emphasis").style=l.getModel(["emphasis","handleStyle"]).getItemStyle(),Xa(b);var T=l.get("handleColor");T!=null&&(b.style.fill=T),o.add(n[_]=b);var A=l.getModel("textStyle"),C=l.get("handleLabel")||{},M=C.show||!1;t.add(i[_]=new St({silent:!0,invisible:!M,style:Nt(A,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:A.getTextColor(),font:A.getFont()}),z2:10}))},this);var c=v;if(h){var p=W(l.get("moveHandleSize"),s[1]),d=a.moveHandle=new xt({style:l.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:s[1]-.5,height:p}}),g=p*.8,y=a.moveHandleIcon=qt(l.get("moveHandleIcon"),-g/2,-g/2,g,g,"#fff",!0);y.silent=!0,y.y=s[1]+p/2-.5,d.ensureState("emphasis").style=l.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var m=Math.min(s[1]/2,Math.max(p,10));c=a.moveZone=new xt({invisible:!0,shape:{y:s[1]-m,height:p+m}}),c.on("mouseover",function(){u.enterEmphasis(d)}).on("mouseout",function(){u.leaveEmphasis(d)}),o.add(d),o.add(y),o.add(c)}c.attr({draggable:!0,cursor:jb(this._orient),drift:X(this._onDragMove,this,"all"),ondragstart:X(this._showDataInfo,this,!0),ondragend:X(this._onDragEnd,this),onmouseover:X(this._showDataInfo,this,!0),onmouseout:X(this._showDataInfo,this,!1)})},e.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),a=this._getViewExtent();this._handleEnds=[Dt(t[0],[0,100],a,!0),Dt(t[1],[0,100],a,!0)]},e.prototype._updateInterval=function(t,a){var n=this.dataZoomModel,i=this._handleEnds,o=this._getViewExtent(),s=n.findRepresentativeAxisProxy().getMinMaxSpan(),l=[0,100];bi(a,i,o,n.get("zoomLock")?"all":t,s.minSpan!=null?Dt(s.minSpan,l,o,!0):null,s.maxSpan!=null?Dt(s.maxSpan,l,o,!0):null);var u=this._range,f=this._range=Ye([Dt(i[0],o,l,!0),Dt(i[1],o,l,!0)]);return!u||u[0]!==f[0]||u[1]!==f[1]},e.prototype._updateView=function(t){var a=this._displayables,n=this._handleEnds,i=Ye(n.slice()),o=this._size;D([0,1],function(c){var p=a.handles[c],d=this._handleHeight;p.attr({scaleX:d/2,scaleY:d/2,x:n[c]+(c?-1:1),y:o[1]/2-d/2})},this),a.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:o[1]});var s={x:i[0],width:i[1]-i[0]};a.moveHandle&&(a.moveHandle.setShape(s),a.moveZone.setShape(s),a.moveZone.getBoundingRect(),a.moveHandleIcon&&a.moveHandleIcon.attr("x",s.x+s.width/2));for(var l=a.dataShadowSegs,u=[0,i[0],i[1],o[0]],f=0;fa[0]||n[1]<0||n[1]>a[1])){var i=this._handleEnds,o=(i[0]+i[1])/2,s=this._updateInterval("all",n[0]-o);this._updateView(),s&&this._dispatchZoomAction(!1)}},e.prototype._onBrushStart=function(t){var a=t.offsetX,n=t.offsetY;this._brushStart=new ft(a,n),this._brushing=!0,this._brushStartTime=+new Date},e.prototype._onBrushEnd=function(t){if(this._brushing){var a=this._displayables.brushRect;if(this._brushing=!1,!!a){a.attr("ignore",!0);var n=a.shape,i=+new Date;if(!(i-this._brushStartTime<200&&Math.abs(n.width)<5)){var o=this._getViewExtent(),s=[0,100];this._range=Ye([Dt(n.x,o,s,!0),Dt(n.x+n.width,o,s,!0)]),this._handleEnds=[n.x,n.x+n.width],this._updateView(),this._dispatchZoomAction(!1)}}}},e.prototype._onBrush=function(t){this._brushing&&(da(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},e.prototype._updateBrushRect=function(t,a){var n=this._displayables,i=this.dataZoomModel,o=n.brushRect;o||(o=n.brushRect=new cs({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(o)),o.attr("ignore",!1);var s=this._brushStart,l=this._displayables.sliderGroup,u=l.transformCoordToLocal(t,a),f=l.transformCoordToLocal(s.x,s.y),h=this._size;u[0]=Math.max(Math.min(h[0],u[0]),0),o.setShape({x:f[0],y:0,width:u[0]-f[0],height:h[1]})},e.prototype._dispatchZoomAction=function(t){var a=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?gY:null,start:a[0],end:a[1]})},e.prototype._findCoordRect=function(){var t,a=VI(this.dataZoomModel).infoList;if(!t&&a.length){var n=a[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),o=this.api.getHeight();t={x:i*.2,y:o*.2,width:i*.6,height:o*.6}}return t},e.type="dataZoom.slider",e}(Sm);function mY(r){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[r]}function jb(r){return r==="vertical"?"ns-resize":"ew-resize"}function nL(r){r.registerComponentModel(hY),r.registerComponentView(yY),xm(r)}function _Y(r){pt(aL),pt(nL)}var iL={get:function(r,e,t){var a=rt((SY[r]||{})[e]);return t&&z(a)?a[a.length-1]:a}},SY={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},Jb=ie.mapVisual,xY=ie.eachVisual,bY=z,Qb=D,wY=Ye,TY=Dt,nh=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.stateList=["inRange","outOfRange"],t.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],t.layoutMode={type:"box",ignoreSize:!0},t.dataBound=[-1/0,1/0],t.targetVisuals={},t.controllerVisuals={},t}return e.prototype.init=function(t,a,n){this.mergeDefaultAndTheme(t,n)},e.prototype.optionUpdated=function(t,a){var n=this.option;!a&&ZI(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},e.prototype.resetVisual=function(t){var a=this.stateList;t=X(t,this),this.controllerVisuals=eg(this.option.controller,a,t),this.targetVisuals=eg(this.option.target,a,t)},e.prototype.getItemSymbol=function(){return null},e.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,a=[];return t==null||t==="all"?this.ecModel.eachSeries(function(n,i){a.push(i)}):a=Rt(t),a},e.prototype.eachTargetSeries=function(t,a){D(this.getTargetSeriesIndices(),function(n){var i=this.ecModel.getSeriesByIndex(n);i&&t.call(a,i)},this)},e.prototype.isTargetSeries=function(t){var a=!1;return this.eachTargetSeries(function(n){n===t&&(a=!0)}),a},e.prototype.formatValueText=function(t,a,n){var i=this.option,o=i.precision,s=this.dataBound,l=i.formatter,u;n=n||["<",">"],z(t)&&(t=t.slice(),u=!0);var f=a?t:u?[h(t[0]),h(t[1])]:h(t);if(Y(l))return l.replace("{value}",u?f[0]:f).replace("{value2}",u?f[1]:f);if(K(l))return u?l(t[0],t[1]):l(t);if(u)return t[0]===s[0]?n[0]+" "+f[1]:t[1]===s[1]?n[1]+" "+f[0]:f[0]+" - "+f[1];return f;function h(v){return v===s[0]?"min":v===s[1]?"max":(+v).toFixed(Math.min(o,20))}},e.prototype.resetExtent=function(){var t=this.option,a=wY([t.min,t.max]);this._dataExtent=a},e.prototype.getDataDimensionIndex=function(t){var a=this.option.dimension;if(a!=null)return t.getDimensionIndex(a);for(var n=t.dimensions,i=n.length-1;i>=0;i--){var o=n[i],s=t.getDimensionInfo(o);if(!s.isCalculationCoord)return s.storeDimIndex}},e.prototype.getExtent=function(){return this._dataExtent.slice()},e.prototype.completeVisualOption=function(){var t=this.ecModel,a=this.option,n={inRange:a.inRange,outOfRange:a.outOfRange},i=a.target||(a.target={}),o=a.controller||(a.controller={});ut(i,n),ut(o,n);var s=this.isCategory();l.call(this,i),l.call(this,o),u.call(this,i,"inRange","outOfRange"),f.call(this,o);function l(h){bY(a.color)&&!h.inRange&&(h.inRange={color:a.color.slice().reverse()}),h.inRange=h.inRange||{color:t.get("gradientColor")}}function u(h,v,c){var p=h[v],d=h[c];p&&!d&&(d=h[c]={},Qb(p,function(g,y){if(ie.isValidType(y)){var m=iL.get(y,"inactive",s);m!=null&&(d[y]=m,y==="color"&&!d.hasOwnProperty("opacity")&&!d.hasOwnProperty("colorAlpha")&&(d.opacity=[0,0]))}}))}function f(h){var v=(h.inRange||{}).symbol||(h.outOfRange||{}).symbol,c=(h.inRange||{}).symbolSize||(h.outOfRange||{}).symbolSize,p=this.get("inactiveColor"),d=this.getItemSymbol(),g=d||"roundRect";Qb(this.stateList,function(y){var m=this.itemSize,_=h[y];_||(_=h[y]={color:s?p:[p]}),_.symbol==null&&(_.symbol=v&&rt(v)||(s?g:[g])),_.symbolSize==null&&(_.symbolSize=c&&rt(c)||(s?m[0]:[m[0],m[0]])),_.symbol=Jb(_.symbol,function(x){return x==="none"?g:x});var S=_.symbolSize;if(S!=null){var b=-1/0;xY(S,function(x){x>b&&(b=x)}),_.symbolSize=Jb(S,function(x){return TY(x,[0,b],[0,m[0]],!0)})}},this)}},e.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},e.prototype.isCategory=function(){return!!this.option.categories},e.prototype.setSelected=function(t){},e.prototype.getSelected=function(){return null},e.prototype.getValueState=function(t){return null},e.prototype.getVisualMeta=function(t){return null},e.type="visualMap",e.dependencies=["series"],e.defaultOption={show:!0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333"}},e}(gt),tw=[20,140],AY=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.optionUpdated=function(t,a){r.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual(function(n){n.mappingMethod="linear",n.dataExtent=this.getExtent()}),this._resetRange()},e.prototype.resetItemSize=function(){r.prototype.resetItemSize.apply(this,arguments);var t=this.itemSize;(t[0]==null||isNaN(t[0]))&&(t[0]=tw[0]),(t[1]==null||isNaN(t[1]))&&(t[1]=tw[1])},e.prototype._resetRange=function(){var t=this.getExtent(),a=this.option.range;!a||a.auto?(t.auto=1,this.option.range=t):z(a)&&(a[0]>a[1]&&a.reverse(),a[0]=Math.max(a[0],t[0]),a[1]=Math.min(a[1],t[1]))},e.prototype.completeVisualOption=function(){r.prototype.completeVisualOption.apply(this,arguments),D(this.stateList,function(t){var a=this.option.controller[t].symbolSize;a&&a[0]!==a[1]&&(a[0]=a[1]/3)},this)},e.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},e.prototype.getSelected=function(){var t=this.getExtent(),a=Ye((this.get("range")||[]).slice());return a[0]>t[1]&&(a[0]=t[1]),a[1]>t[1]&&(a[1]=t[1]),a[0]=n[1]||t<=a[1])?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var a=[];return this.eachTargetSeries(function(n){var i=[],o=n.getData();o.each(this.getDataDimensionIndex(o),function(s,l){t[0]<=s&&s<=t[1]&&i.push(l)},this),a.push({seriesId:n.id,dataIndex:i})},this),a},e.prototype.getVisualMeta=function(t){var a=ew(this,"outOfRange",this.getExtent()),n=ew(this,"inRange",this.option.range.slice()),i=[];function o(c,p){i.push({value:c,color:t(c,p)})}for(var s=0,l=0,u=n.length,f=a.length;lt[1])break;i.push({color:this.getControllerVisual(l,"color",a),offset:s/n})}return i.push({color:this.getControllerVisual(t[1],"color",a),offset:1}),i},e.prototype._createBarPoints=function(t,a){var n=this.visualMapModel.itemSize;return[[n[0]-a[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-a[1],t[1]]]},e.prototype._createBarGroup=function(t){var a=this._orient,n=this.visualMapModel.get("inverse");return new at(a==="horizontal"&&!n?{scaleX:t==="bottom"?1:-1,rotation:Math.PI/2}:a==="horizontal"&&n?{scaleX:t==="bottom"?-1:1,rotation:-Math.PI/2}:a==="vertical"&&!n?{scaleX:t==="left"?1:-1,scaleY:-1}:{scaleX:t==="left"?1:-1})},e.prototype._updateHandle=function(t,a){if(this._useHandle){var n=this._shapes,i=this.visualMapModel,o=n.handleThumbs,s=n.handleLabels,l=i.itemSize,u=i.getExtent(),f=this._applyTransform("left",n.mainGroup);CY([0,1],function(h){var v=o[h];v.setStyle("fill",a.handlesColor[h]),v.y=t[h];var c=zr(t[h],[0,l[1]],u,!0),p=this.getControllerVisual(c,"symbolSize");v.scaleX=v.scaleY=p/l[0],v.x=l[0]-p/2;var d=Dr(n.handleLabelPoints[h],$a(v,this.group));if(this._orient==="horizontal"){var g=f==="left"||f==="top"?(l[0]-p)/2:(l[0]-p)/-2;d[1]+=g}s[h].setStyle({x:d[0],y:d[1],text:i.formatValueText(this._dataInterval[h]),verticalAlign:"middle",align:this._orient==="vertical"?this._applyTransform("left",n.mainGroup):"center"})},this)}},e.prototype._showIndicator=function(t,a,n,i){var o=this.visualMapModel,s=o.getExtent(),l=o.itemSize,u=[0,l[1]],f=this._shapes,h=f.indicator;if(h){h.attr("invisible",!1);var v={convertOpacityToAlpha:!0},c=this.getControllerVisual(t,"color",v),p=this.getControllerVisual(t,"symbolSize"),d=zr(t,s,u,!0),g=l[0]-p/2,y={x:h.x,y:h.y};h.y=d,h.x=g;var m=Dr(f.indicatorLabelPoint,$a(h,this.group)),_=f.indicatorLabel;_.attr("invisible",!1);var S=this._applyTransform("left",f.mainGroup),b=this._orient,x=b==="horizontal";_.setStyle({text:(n||"")+o.formatValueText(a),verticalAlign:x?S:"middle",align:x?"center":S});var w={x:g,y:d,style:{fill:c}},T={style:{x:m[0],y:m[1]}};if(o.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var A={duration:100,easing:"cubicInOut",additive:!0};h.x=y.x,h.y=y.y,h.animateTo(w,A),_.animateTo(T,A)}else h.attr(w),_.attr(T);this._firstShowIndicator=!1;var C=this._shapes.handleLabels;if(C)for(var M=0;Mo[1]&&(h[1]=1/0),a&&(h[0]===-1/0?this._showIndicator(f,h[1],"< ",l):h[1]===1/0?this._showIndicator(f,h[0],"> ",l):this._showIndicator(f,f,"≈ ",l));var v=this._hoverLinkDataIndices,c=[];(a||iw(n))&&(c=this._hoverLinkDataIndices=n.findTargetDataIndices(h));var p=bP(v,c);this._dispatchHighDown("downplay",hf(p[0],n)),this._dispatchHighDown("highlight",hf(p[1],n))}},e.prototype._hoverLinkFromSeriesMouseOver=function(t){var a;if(Zn(t.target,function(l){var u=nt(l);if(u.dataIndex!=null)return a=u,!0},!0),!!a){var n=this.ecModel.getSeriesByIndex(a.seriesIndex),i=this.visualMapModel;if(i.isTargetSeries(n)){var o=n.getData(a.dataType),s=o.getStore().get(i.getDataDimensionIndex(o),a.dataIndex);isNaN(s)||this._showIndicator(s,s)}}},e.prototype._hideIndicator=function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0);var a=this._shapes.handleLabels;if(a)for(var n=0;n=0&&(i.dimension=o,a.push(i))}}),r.getData().setVisual("visualMeta",a)}}];function kY(r,e,t,a){for(var n=e.targetVisuals[a],i=ie.prepareVisualTypes(n),o={color:Rl(r.getData(),"color")},s=0,l=i.length;s0:e.splitNumber>0)||e.calculable)?"continuous":"piecewise"}),r.registerAction(PY,RY),D(EY,function(e){r.registerVisual(r.PRIORITY.VISUAL.COMPONENT,e)}),r.registerPreprocessor(OY))}function uL(r){r.registerComponentModel(AY),r.registerComponentView(IY),lL(r)}var NY=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._pieceList=[],t}return e.prototype.optionUpdated=function(t,a){r.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var n=this._mode=this._determineMode();this._pieceList=[],BY[this._mode].call(this,this._pieceList),this._resetSelected(t,a);var i=this.option.categories;this.resetVisual(function(o,s){n==="categories"?(o.mappingMethod="category",o.categories=rt(i)):(o.dataExtent=this.getExtent(),o.mappingMethod="piecewise",o.pieceList=G(this._pieceList,function(l){return l=rt(l),s!=="inRange"&&(l.visual=null),l}))})},e.prototype.completeVisualOption=function(){var t=this.option,a={},n=ie.listVisualTypes(),i=this.isCategory();D(t.pieces,function(s){D(n,function(l){s.hasOwnProperty(l)&&(a[l]=1)})}),D(a,function(s,l){var u=!1;D(this.stateList,function(f){u=u||o(t,f,l)||o(t.target,f,l)},this),!u&&D(this.stateList,function(f){(t[f]||(t[f]={}))[l]=iL.get(l,f==="inRange"?"active":"inactive",i)})},this);function o(s,l,u){return s&&s[l]&&s[l].hasOwnProperty(u)}r.prototype.completeVisualOption.apply(this,arguments)},e.prototype._resetSelected=function(t,a){var n=this.option,i=this._pieceList,o=(a?n:t).selected||{};if(n.selected=o,D(i,function(l,u){var f=this.getSelectedMapKey(l);o.hasOwnProperty(f)||(o[f]=!0)},this),n.selectedMode==="single"){var s=!1;D(i,function(l,u){var f=this.getSelectedMapKey(l);o[f]&&(s?o[f]=!1:s=!0)},this)}},e.prototype.getItemSymbol=function(){return this.get("itemSymbol")},e.prototype.getSelectedMapKey=function(t){return this._mode==="categories"?t.value+"":t.index+""},e.prototype.getPieceList=function(){return this._pieceList},e.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},e.prototype.setSelected=function(t){this.option.selected=rt(t)},e.prototype.getValueState=function(t){var a=ie.findPieceIndex(t,this._pieceList);return a!=null&&this.option.selected[this.getSelectedMapKey(this._pieceList[a])]?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var a=[],n=this._pieceList;return this.eachTargetSeries(function(i){var o=[],s=i.getData();s.each(this.getDataDimensionIndex(s),function(l,u){var f=ie.findPieceIndex(l,n);f===t&&o.push(u)},this),a.push({seriesId:i.id,dataIndex:o})},this),a},e.prototype.getRepresentValue=function(t){var a;if(this.isCategory())a=t.value;else if(t.value!=null)a=t.value;else{var n=t.interval||[];a=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return a},e.prototype.getVisualMeta=function(t){if(this.isCategory())return;var a=[],n=["",""],i=this;function o(f,h){var v=i.getRepresentValue({interval:f});h||(h=i.getValueState(v));var c=t(v,h);f[0]===-1/0?n[0]=c:f[1]===1/0?n[1]=c:a.push({value:f[0],color:c},{value:f[1],color:c})}var s=this._pieceList.slice();if(!s.length)s.push({interval:[-1/0,1/0]});else{var l=s[0].interval[0];l!==-1/0&&s.unshift({interval:[-1/0,l]}),l=s[s.length-1].interval[1],l!==1/0&&s.push({interval:[l,1/0]})}var u=-1/0;return D(s,function(f){var h=f.interval;h&&(h[0]>u&&o([u,h[0]],"outOfRange"),o(h.slice()),u=h[1])},this),{stops:a,outerColors:n}},e.type="visualMap.piecewise",e.defaultOption=sn(nh.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),e}(nh),BY={splitNumber:function(r){var e=this.option,t=Math.min(e.precision,20),a=this.getExtent(),n=e.splitNumber;n=Math.max(parseInt(n,10),1),e.splitNumber=n;for(var i=(a[1]-a[0])/n;+i.toFixed(t)!==i&&t<5;)t++;e.precision=t,i=+i.toFixed(t),e.minOpen&&r.push({interval:[-1/0,a[0]],close:[0,0]});for(var o=0,s=a[0];o","≥"][a[0]]];t.text=t.text||this.formatValueText(t.value!=null?t.value:t.interval,!1,n)},this)}};function uw(r,e){var t=r.inverse;(r.orient==="vertical"?!t:t)&&e.reverse()}var VY=function(r){N(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.doRender=function(){var t=this.group;t.removeAll();var a=this.visualMapModel,n=a.get("textGap"),i=a.textStyleModel,o=i.getFont(),s=i.getTextColor(),l=this._getItemAlign(),u=a.itemSize,f=this._getViewData(),h=f.endsText,v=ae(a.get("showLabel",!0),!h),c=!a.get("selectedMode");h&&this._renderEndsText(t,h[0],u,v,l),D(f.viewPieceList,function(p){var d=p.piece,g=new at;g.onclick=X(this._onItemClick,this,d),this._enableHoverLink(g,p.indexInModelPieceList);var y=a.getRepresentValue(d);if(this._createItemSymbol(g,y,[0,0,u[0],u[1]],c),v){var m=this.visualMapModel.getValueState(y);g.add(new St({style:{x:l==="right"?-n:u[0]+n,y:u[1]/2,text:d.text,verticalAlign:"middle",align:l,font:o,fill:s,opacity:m==="outOfRange"?.5:1},silent:c}))}t.add(g)},this),h&&this._renderEndsText(t,h[1],u,v,l),ei(a.get("orient"),t,a.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},e.prototype._enableHoverLink=function(t,a){var n=this;t.on("mouseover",function(){return i("highlight")}).on("mouseout",function(){return i("downplay")});var i=function(o){var s=n.visualMapModel;s.option.hoverLink&&n.api.dispatchAction({type:o,batch:hf(s.findTargetDataIndices(a),s)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,a=t.option;if(a.orient==="vertical")return sL(t,this.api,t.itemSize);var n=a.align;return(!n||n==="auto")&&(n="left"),n},e.prototype._renderEndsText=function(t,a,n,i,o){if(a){var s=new at,l=this.visualMapModel.textStyleModel;s.add(new St({style:Nt(l,{x:i?o==="right"?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?o:"center",text:a})})),t.add(s)}},e.prototype._getViewData=function(){var t=this.visualMapModel,a=G(t.getPieceList(),function(s,l){return{piece:s,indexInModelPieceList:l}}),n=t.get("text"),i=t.get("orient"),o=t.get("inverse");return(i==="horizontal"?o:!o)?a.reverse():n&&(n=n.slice().reverse()),{viewPieceList:a,endsText:n}},e.prototype._createItemSymbol=function(t,a,n,i){var o=qt(this.getControllerVisual(a,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(a,"color"));o.silent=i,t.add(o)},e.prototype._onItemClick=function(t){var a=this.visualMapModel,n=a.option,i=n.selectedMode;if(i){var o=rt(n.selected),s=a.getSelectedMapKey(t);i==="single"||i===!0?(o[s]=!0,D(o,function(l,u){o[u]=u===s})):o[s]=!o[s],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}},e.type="visualMap.piecewise",e}(oL);function fL(r){r.registerComponentModel(NY),r.registerComponentView(VY),lL(r)}function zY(r){pt(uL),pt(fL)}var GY={label:{enabled:!0},decal:{show:!1}},fw=bt(),FY={};function HY(r,e){var t=r.getModel("aria");if(!t.get("enabled"))return;var a=rt(GY);ut(a.label,r.getLocaleModel().get("aria"),!1),ut(t.option,a,!1),n(),i();function n(){var u=t.getModel("decal"),f=u.get("show");if(f){var h=Z();r.eachSeries(function(v){if(!v.isColorBySeries()){var c=h.get(v.type);c||(c={},h.set(v.type,c)),fw(v).scope=c}}),r.eachRawSeries(function(v){if(r.isSeriesFiltered(v))return;if(K(v.enableAriaDecal)){v.enableAriaDecal();return}var c=v.getData();if(v.isColorBySeries()){var m=od(v.ecModel,v.name,FY,r.getSeriesCount()),_=c.getVisual("decal");c.setVisual("decal",S(_,m))}else{var p=v.getRawData(),d={},g=fw(v).scope;c.each(function(b){var x=c.getRawIndex(b);d[x]=b});var y=p.count();p.each(function(b){var x=d[b],w=p.getName(b)||b+"",T=od(v.ecModel,w,g,y),A=c.getItemVisual(x,"decal");c.setItemVisual(x,"decal",S(A,T))})}function S(b,x){var w=b?V(V({},x),b):x;return w.dirty=!0,w}})}}function i(){var u=e.getZr().dom;if(u){var f=r.getLocaleModel().get("aria"),h=t.getModel("label");if(h.option=J(h.option,f),!!h.get("enabled")){if(u.setAttribute("role","img"),h.get("description")){u.setAttribute("aria-label",h.get("description"));return}var v=r.getSeriesCount(),c=h.get(["data","maxCount"])||10,p=h.get(["series","maxCount"])||10,d=Math.min(v,p),g;if(!(v<1)){var y=s();if(y){var m=h.get(["general","withTitle"]);g=o(m,{title:y})}else g=h.get(["general","withoutTitle"]);var _=[],S=v>1?h.get(["series","multiple","prefix"]):h.get(["series","single","prefix"]);g+=o(S,{seriesCount:v}),r.eachSeries(function(T,A){if(A1?h.get(["series","multiple",I]):h.get(["series","single",I]),C=o(C,{seriesId:T.seriesIndex,seriesName:T.get("name"),seriesType:l(T.subType)});var L=T.getData();if(L.count()>c){var P=h.get(["data","partialData"]);C+=o(P,{displayCnt:c})}else C+=h.get(["data","allData"]);for(var R=h.get(["data","separator","middle"]),E=h.get(["data","separator","end"]),O=h.get(["data","excludeDimensionId"]),k=[],B=0;B":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},YY=function(){function r(e){var t=this._condVal=Y(e)?new RegExp(e):kw(e)?e:null;if(t==null){var a="";Mt(a)}}return r.prototype.evaluate=function(e){var t=typeof e;return Y(t)?this._condVal.test(e):wt(t)?this._condVal.test(e+""):!1},r}(),XY=function(){function r(){}return r.prototype.evaluate=function(){return this.value},r}(),$Y=function(){function r(){}return r.prototype.evaluate=function(){for(var e=this.children,t=0;t2&&a.push(n),n=[L,P]}function f(L,P,R,E){Ji(L,R)&&Ji(P,E)||n.push(L,P,R,E,R,E)}function h(L,P,R,E,O,k){var B=Math.abs(P-L),F=Math.tan(B/4)*4/3,H=PT:M2&&a.push(n),a}function ug(r,e,t,a,n,i,o,s,l,u){if(Ji(r,t)&&Ji(e,a)&&Ji(n,o)&&Ji(i,s)){l.push(o,s);return}var f=2/u,h=f*f,v=o-r,c=s-e,p=Math.sqrt(v*v+c*c);v/=p,c/=p;var d=t-r,g=a-e,y=n-o,m=i-s,_=d*d+g*g,S=y*y+m*m;if(_=0&&T=0){l.push(o,s);return}var A=[],C=[];Ja(r,t,n,o,.5,A),Ja(e,a,i,s,.5,C),ug(A[0],C[0],A[1],C[1],A[2],C[2],A[3],C[3],l,u),ug(A[4],C[4],A[5],C[5],A[6],C[6],A[7],C[7],l,u)}function s7(r,e){var t=lg(r),a=[];e=e||1;for(var n=0;n0)for(var u=0;uMath.abs(u),h=vL([l,u],f?0:1,e),v=(f?s:u)/h.length,c=0;cn,o=vL([a,n],i?0:1,e),s=i?"width":"height",l=i?"height":"width",u=i?"x":"y",f=i?"y":"x",h=r[s]/o.length,v=0;v1?null:new ft(d*l+r,d*u+e)}function f7(r,e,t){var a=new ft;ft.sub(a,t,e),a.normalize();var n=new ft;ft.sub(n,r,e);var i=n.dot(a);return i}function Wi(r,e){var t=r[r.length-1];t&&t[0]===e[0]&&t[1]===e[1]||r.push(e)}function h7(r,e,t){for(var a=r.length,n=[],i=0;io?(u.x=f.x=s+i/2,u.y=l,f.y=l+o):(u.y=f.y=l+o/2,u.x=s,f.x=s+i),h7(e,u,f)}function ih(r,e,t,a){if(t===1)a.push(e);else{var n=Math.floor(t/2),i=r(e);ih(r,i[0],n,a),ih(r,i[1],t-n,a)}return a}function v7(r,e){for(var t=[],a=0;a0;u/=2){var f=0,h=0;(r&u)>0&&(f=1),(e&u)>0&&(h=1),s+=u*u*(3*f^h),h===0&&(f===1&&(r=u-1-r,e=u-1-e),l=r,r=e,e=l)}return s}function lh(r){var e=1/0,t=1/0,a=-1/0,n=-1/0,i=G(r,function(s){var l=s.getBoundingRect(),u=s.getComputedTransform(),f=l.x+l.width/2+(u?u[4]:0),h=l.y+l.height/2+(u?u[5]:0);return e=Math.min(f,e),t=Math.min(h,t),a=Math.max(f,a),n=Math.max(h,n),[f,h]}),o=G(i,function(s,l){return{cp:s,z:x7(s[0],s[1],e,t,a,n),path:r[l]}});return o.sort(function(s,l){return s.z-l.z}).map(function(s){return s.path})}function dL(r){return d7(r.path,r.count)}function fg(){return{fromIndividuals:[],toIndividuals:[],count:0}}function b7(r,e,t){var a=[];function n(b){for(var x=0;x=0;n--)if(!t[n].many.length){var l=t[s].many;if(l.length<=1)if(s)s=0;else return t;var i=l.length,u=Math.ceil(i/2);t[n].many=l.slice(u,i),t[s].many=l.slice(0,u),s++}return t}var T7={clone:function(r){for(var e=[],t=1-Math.pow(1-r.path.style.opacity,1/r.count),a=0;a0))return;var s=a.getModel("universalTransition").get("delay"),l=Object.assign({setToFinal:!0},o),u,f;_w(r)&&(u=r,f=e),_w(e)&&(u=e,f=r);function h(y,m,_,S,b){var x=y.many,w=y.one;if(x.length===1&&!b){var T=m?x[0]:w,A=m?w:x[0];if(oh(T))h({many:[T],one:A},!0,_,S,!0);else{var C=s?J({delay:s(_,S)},l):l;Pm(T,A,C),i(T,A,T,A,C)}}else for(var M=J({dividePath:T7[t],individualDelay:s&&function(O,k,B,F){return s(O+_,S)}},l),I=m?b7(x,w,M):w7(w,x,M),L=I.fromIndividuals,P=I.toIndividuals,R=L.length,E=0;Ee.length,c=u?Sw(f,u):Sw(v?e:r,[v?r:e]),p=0,d=0;dgL))for(var i=a.getIndices(),o=0;o0&&x.group.traverse(function(T){T instanceof mt&&!T.animators.length&&T.animateFrom({style:{opacity:0}},w)})})}function Aw(r){var e=r.getModel("universalTransition").get("seriesKey");return e||r.id}function Cw(r){return z(r)?r.sort().join(","):r}function Na(r){if(r.hostModel)return r.hostModel.getModel("universalTransition").get("divideShape")}function P7(r,e){var t=Z(),a=Z(),n=Z();return D(r.oldSeries,function(i,o){var s=r.oldDataGroupIds[o],l=r.oldData[o],u=Aw(i),f=Cw(u);a.set(f,{dataGroupId:s,data:l}),z(u)&&D(u,function(h){n.set(h,{key:f,dataGroupId:s,data:l})})}),D(e.updatedSeries,function(i){if(i.isUniversalTransitionEnabled()&&i.isAnimationEnabled()){var o=i.get("dataGroupId"),s=i.getData(),l=Aw(i),u=Cw(l),f=a.get(u);if(f)t.set(u,{oldSeries:[{dataGroupId:f.dataGroupId,divide:Na(f.data),data:f.data}],newSeries:[{dataGroupId:o,divide:Na(s),data:s}]});else if(z(l)){var h=[];D(l,function(p){var d=a.get(p);d.data&&h.push({dataGroupId:d.dataGroupId,divide:Na(d.data),data:d.data})}),h.length&&t.set(u,{oldSeries:h,newSeries:[{dataGroupId:o,data:s,divide:Na(s)}]})}else{var v=n.get(l);if(v){var c=t.get(v.key);c||(c={oldSeries:[{dataGroupId:v.dataGroupId,data:v.data,divide:Na(v.data)}],newSeries:[]},t.set(v.key,c)),c.newSeries.push({dataGroupId:o,data:s,divide:Na(s)})}}}}),t}function Dw(r,e){for(var t=0;t=0&&n.push({dataGroupId:e.oldDataGroupIds[s],data:e.oldData[s],divide:Na(e.oldData[s]),groupIdDim:o.dimension})}),D(Rt(r.to),function(o){var s=Dw(t.updatedSeries,o);if(s>=0){var l=t.updatedSeries[s].getData();i.push({dataGroupId:e.oldDataGroupIds[s],data:l,divide:Na(l),groupIdDim:o.dimension})}}),n.length>0&&i.length>0&&yL(n,i,a)}function E7(r){r.registerUpdateLifecycle("series:beforeupdate",function(e,t,a){D(Rt(a.seriesTransition),function(n){D(Rt(n.to),function(i){for(var o=a.updatedSeries,s=0;s81_!itTT%&fM`8Do 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 literal 0 HcmV?d00001 diff --git a/web/dist/assets/fontawesome-webfont.CDK5bt4p.woff b/web/dist/assets/fontawesome-webfont.CDK5bt4p.woff new file mode 100644 index 0000000000000000000000000000000000000000..400014a4b06eee3d0c0d54402a47ab2601b2862b GIT binary patch literal 98024 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/web/dist/assets/fontawesome-webfont.CQDK8MU3.ttf b/web/dist/assets/fontawesome-webfont.CQDK8MU3.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0m + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/dist/assets/fontawesome-webfont.G5YE5S7X.eot b/web/dist/assets/fontawesome-webfont.G5YE5S7X.eot new file mode 100644 index 0000000000000000000000000000000000000000..e9f60ca953f93e35eab4108bd414bc02ddcf3928 GIT binary patch literal 165742 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 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

5q!RY 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:B.options.id,limit:999}).then(t=>{let o=t.data;k.value=o;const u={};for(const p of o){const i=p.key;p.value?u[i]=p.value:[5,12,11,14].indexOf(p.form_item_type)!==-1?u[i]=p.value||[]:u[i]=p.value}n.value=Object.assign({},u)})},K=t=>{const o=Object.keys(n.value),u=Object.values(n.value);for(const p in k.value){const i=k.value[p];o.forEach((g,w)=>{if(g===i.key&&(i.value=u[w],["img","imgs"].indexOf(i.form_item_type_label)>-1)){for(const h of i.rule)if(h.required&&i.value===null){x(i.title+"不能为空");return}}})}t&&t.validate(p=>{if(p)pe(k.value).then(i=>{fe("保存成功"),C&&C()});else return console.log("error submit!!"),!1})},J=t=>{L=t.url,z.value=!0},ee=t=>{if(typeof t!="string")return;const o=t.toLowerCase();return o.endsWith(".png")||o.endsWith(".jpeg")||o.endsWith(".jpg")||o.endsWith(".png")||o.endsWith(".bmp")},A=(t,o,u,p)=>{const{code:i,msg:g}=t;if(i===2e3){const{url:w}=t.data,{name:h}=o;if(!ee(h))x("只允许上传图片");else{const O=n[p];(!O||O==="")&&(n[p]=[]);const N={name:h,url:Y()+w};n[p].push(N)}}else x("上传失败,"+JSON.stringify(g))},G=()=>{x("上传失败")},q=()=>{x("超过文件上传数量")},F=(t,o,u)=>{var p=0;n[u].map((i,g)=>{i.uid===t.uid&&(p=g)}),n[u].splice(p,1)},le=t=>{ie(t.id).then(o=>{})},oe=t=>{k.value[t].edit=!0,k.value[t].new_key=k.value[t].key},C=ge("refreshView"),ae=t=>{t.key=JSON.parse(JSON.stringify(t.new_key)),ce(t).then(o=>{C&&C()})};return Ve(B.options,t=>{t&&t.id&&Z()},{immediate:!0}),(t,o)=>{const u=c("el-col"),p=c("el-row"),i=c("el-input"),g=c("el-input-number"),w=c("el-date-picker"),h=c("el-option"),H=c("el-select"),O=c("el-checkbox"),N=c("el-checkbox-group"),te=c("el-radio"),ne=c("el-radio-group"),M=c("el-switch"),P=c("el-upload"),Q=c("el-dialog"),se=c("table-selector"),I=c("el-button"),re=c("el-popconfirm"),X=c("el-form-item"),de=c("el-form");return r(),m("div",null,[d(p,{gutter:20},{default:s(()=>[d(u,{span:4},{default:s(()=>o[1]||(o[1]=[y("变量标题")])),_:1}),d(u,{span:4},{default:s(()=>o[2]||(o[2]=[y("变量名")])),_:1}),d(u,{span:10},{default:s(()=>o[3]||(o[3]=[y("变量值")])),_:1}),d(u,{span:2,offset:1},{default:s(()=>o[4]||(o[4]=[y("是否前端配置")])),_:1}),d(u,{span:3},{default:s(()=>o[5]||(o[5]=[y("操作")])),_:1})]),_:1}),d(de,{ref_key:"formRef",ref:E,model:a(n),"label-width":"0px","label-position":"left",style:{"margin-top":"20px"}},{default:s(()=>[(r(!0),m(S,null,j(a(k),(e,f)=>(r(),_(X,{prop:["array"].indexOf(e.form_item_type_label)>-1?"":e.key,key:f,rules:e.rule||[]},{default:s(()=>[d(u,{span:4},{default:s(()=>[e.edit?(r(),_(i,{key:0,modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,style:{display:"inline-block",width:"200px"},placeholder:"请输入标题"},null,8,["modelValue","onUpdate:modelValue"])):(r(),m("span",we,U(e.title),1))]),_:2},1024),d(u,{span:4},{default:s(()=>[e.edit?(r(),_(i,{key:0,modelValue:e.new_key,"onUpdate:modelValue":l=>e.new_key=l,style:{width:"200px"},placeholder:"请输入变量key"},{default:s(()=>[b("template",xe,[b("span",Ce,U(D.editableTabsItem.key),1)])]),_:2},1032,["modelValue","onUpdate:modelValue"])):(r(),m("span",Oe,U(D.editableTabsItem.key)+"."+U(e.key),1))]),_:2},1024),d(u,{span:10},{default:s(()=>[["text","textarea"].indexOf(e.form_item_type_label)>-1?(r(),_(i,{key:f,type:e.form_item_type_label,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},null,8,["type","modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="number"?(r(),_(g,{key:f+1,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,min:0},null,8,["modelValue","onUpdate:modelValue"])):["datetime","date","time"].indexOf(e.form_item_type_label)>-1?(r(),_(w,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,key:f+2,type:e.form_item_type_label,placeholder:e.placeholder},null,8,["modelValue","onUpdate:modelValue","type","placeholder"])):e.form_item_type_label==="select"?(r(),_(H,{key:f+3,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},{default:s(()=>[(r(!0),m(S,null,j(a($)(e.setting)||[],l=>(r(),_(h,{key:l.value,label:l.label,value:l.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="checkbox"?(r(),_(N,{key:f+4,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder},{default:s(()=>[(r(!0),m(S,null,j(a($)(e.setting)||[],l=>(r(),_(O,{key:l.value,label:l.value,value:l.value},{default:s(()=>[y(U(l.label),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="radio"?(r(),_(ne,{key:f+5,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},{default:s(()=>[(r(!0),m(S,null,j(a($)(e.setting)||[],l=>(r(),_(te,{key:l.value,label:l.value,value:l.value},{default:s(()=>[y(U(l.label),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="switch"?(r(),_(M,{key:f+6,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,"inactive-value":!1,"active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue","onUpdate:modelValue"])):["img","imgs"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+7},[d(P,{action:a(R),headers:a(T),name:"file",accept:"image/*","on-preview":J,"on-success":(l,V,W)=>{A(l,V,W,e.key)},"on-error":G,"on-exceed":q,"before-remove":(l,V)=>{F(l,V,e.key)},multiple:e.form_item_type_label!=="img",limit:e.form_item_type_label==="img"?1:5,ref_for:!0,ref:"imgUpload_"+e.key,"data-keyname":e.key,"file-list":e.value?e.value:[],"list-type":"picture-card"},{default:s(()=>o[6]||(o[6]=[b("i",{class:"el-icon-plus"},null,-1),b("div",{slot:"tip",class:"el-upload__tip"},"请选取图片,并且只能上传jpg/png文件",-1)])),_:2},1032,["action","headers","on-success","before-remove","multiple","limit","data-keyname","file-list"]),d(Q,{visible:a(z)},{default:s(()=>[b("img",{width:"100%",src:a(L),alt:""},null,8,Ie)]),_:1},8,["visible"])])):["file"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+8},[d(P,{action:a(R),headers:a(T),name:"file","on-preview":J,"on-success":(l,V,W)=>{A(l,V,W,e.key)},"on-error":G,"on-exceed":q,"before-remove":(l,V)=>{F(l,V,e.key)},limit:5,ref_for:!0,ref:"fileUpload_"+e.key,"data-keyname":e.key,"file-list":e.value,"list-type":"picture-card"},{default:s(()=>o[7]||(o[7]=[b("i",{class:"el-icon-plus"},null,-1),b("div",{slot:"tip",class:"el-upload__tip"},"请选取图片,并且只能上传jpg/png文件",-1)])),_:2},1032,["action","headers","on-success","before-remove","data-keyname","file-list"]),d(Q,{visible:a(z)},{default:s(()=>[b("img",{width:"100%",src:a(L),alt:""},null,8,Se)]),_:1},8,["visible"])])):["foreignkey","manytomany"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+9},[d(se,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,"el-props":{pagination:!0,columns:e.setting.searchField},dict:{url:"/api/system/system_config/get_table_data/"+e.id+"/",value:e.setting.primarykey,label:e.setting.field},pagination:!0,multiple:e.form_item_type_label==="manytomany"},null,8,["modelValue","onUpdate:modelValue","el-props","dict","multiple"])])):e.form_item_type_label==="array"?(r(),m("div",{key:f+10},[d(ve,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l},null,8,["modelValue","onUpdate:modelValue"])])):he("",!0)]),_:2},1024),d(u,{span:2,offset:1},{default:s(()=>[d(M,{modelValue:e.status,"onUpdate:modelValue":l=>e.status=l,"active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),d(u,{span:3},{default:s(()=>[e.edit?(r(),_(I,{key:0,size:"mini",type:"primary",icon:a(me),onClick:l=>ae(e)},{default:s(()=>o[8]||(o[8]=[y("保存")])),_:2},1032,["icon","onClick"])):(r(),_(I,{key:1,size:"mini",type:"primary",icon:a(ye),onClick:l=>oe(f)},null,8,["icon","onClick"])),d(re,{title:"确定删除该条数据吗?",onConfirm:l=>le(e)},{reference:s(()=>[d(I,{size:"mini",type:"danger",icon:a(ke)},null,8,["icon"])]),_:2},1032,["onConfirm"])]),_:2},1024)]),_:2},1032,["prop","rules"]))),128)),d(X,null,{default:s(()=>[d(I,{type:"primary",onClick:o[0]||(o[0]=e=>K(E.value))},{default:s(()=>o[9]||(o[9]=[y("确定")])),_:1})]),_:1})]),_:1},8,["model"])])}}}),Be=Ue(je,[["__scopeId","data-v-3e69e1a0"]]);export{Be as default}; diff --git a/web/dist/assets/formatTime.in1fXasu.js b/web/dist/assets/formatTime.in1fXasu.js new file mode 100644 index 0000000000..e623a2cc14 --- /dev/null +++ b/web/dist/assets/formatTime.in1fXasu.js @@ -0,0 +1 @@ +function c(t,e){let r=t.getDay(),l=a(t),n=Math.floor((t.getMonth()+3)/3).toString();const g={"Y+":t.getFullYear().toString(),"m+":(t.getMonth()+1).toString(),"d+":t.getDate().toString(),"H+":t.getHours().toString(),"M+":t.getMinutes().toString(),"S+":t.getSeconds().toString(),"q+":n},i={0:"日",1:"一",2:"二",3:"三",4:"四",5:"五",6:"六"},u={1:"一",2:"二",3:"三",4:"四"};/(W+)/.test(e)&&(e=e.replace(RegExp.$1,RegExp.$1.length>1?RegExp.$1.length>2?"星期"+i[r]:"周"+i[r]:i[r])),/(Q+)/.test(e)&&(e=e.replace(RegExp.$1,RegExp.$1.length==4?"第"+u[n]+"季度":u[n])),/(Z+)/.test(e)&&(e=e.replace(RegExp.$1,RegExp.$1.length==3?"第"+l+"周":l+""));for(let s in g){let p=new RegExp("("+s+")").exec(e);p&&(e=e.replace(p[1],RegExp.$1.length==1?g[s]:g[s].padStart(RegExp.$1.length,"0")))}return e}function a(t){let e=new Date(t.getTime()),r=e.getDay()||7;e.setDate(e.getDate()-r+1+5);let l=new Date(e.getFullYear(),0,1),n=l.getDay(),g=1;n!=0&&(g=7-n+1),l=new Date(e.getFullYear(),0,1+g);let i=Math.ceil((e.valueOf()-l.valueOf())/864e5);return Math.ceil(i/7)}function o(t){let e=new Date(t).getHours();return e<6?"凌晨好":e<9?"早上好":e<12?"上午好":e<14?"中午好":e<17?"下午好":e<19?"傍晚好":e<22?"晚上好":"夜里好"}export{o as a,c as f}; diff --git a/web/dist/assets/fs-cropper-8eb4add2.Dy2wapzG.js b/web/dist/assets/fs-cropper-8eb4add2.Dy2wapzG.js new file mode 100644 index 0000000000..37c5e079cf --- /dev/null +++ b/web/dist/assets/fs-cropper-8eb4add2.Dy2wapzG.js @@ -0,0 +1,11 @@ +import{w as Ie,aA as Gt,$ as St,y as Ct,a0 as Wt,z as X,a1 as Et,a8 as Rt,a7 as Dt,a5 as te,Z as Ht,a3 as ee,x as Pe,a6 as Ue,aq as _e,Y as $e,D as F,F as Mt,az as ie}from"./vue.Cw4Y52yh.js";import{a7 as qe,B as Fe,a8 as Qe}from"./index.CkCcWuPb.js";/*! +* Cropper.js v1.6.2 +* https://fengyuanchen.github.io/cropperjs +* +* Copyright 2015-present Chen Fengyuan +* Released under the MIT license +* +* Date: 2024-04-21T07:43:05.335Z +*/function ae(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),i.push.apply(i,a)}return i}function be(t){for(var e=1;et.length)&&(e=t.length);for(var i=0,a=new Array(e);i

',ui=Number.isNaN||_.isNaN;function f(t){return typeof t=="number"&&!ui(t)}var ge=function(t){return t>0&&t<1/0};function Lt(t){return typeof t>"u"}function G(t){return Xt(t)==="object"&&t!==null}var di=Object.prototype.hasOwnProperty;function rt(t){if(!G(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&di.call(i,"isPrototypeOf")}catch{return!1}}function S(t){return typeof t=="function"}var mi=Array.prototype.slice;function Te(t){return Array.from?Array.from(t):mi.call(t)}function O(t,e){return t&&S(e)&&(Array.isArray(t)||f(t.length)?Te(t).forEach(function(i,a){e.call(t,i,a,t)}):G(t)&&Object.keys(t).forEach(function(i){e.call(t,t[i],i,t)})),t}var C=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),a=1;a0&&i.forEach(function(r){G(r)&&Object.keys(r).forEach(function(n){t[n]=r[n]})}),t},fi=/\.\d*(?:0|9){12}\d*$/;function ot(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return fi.test(t)?Math.round(t*e)/e:t}var gi=/^width|height|left|top|marginLeft|marginTop$/;function Z(t,e){var i=t.style;O(e,function(a,r){gi.test(r)&&f(a)&&(a="".concat(a,"px")),i[r]=a})}function vi(t,e){return t.classList?t.classList.contains(e):t.className.indexOf(e)>-1}function T(t,e){if(e){if(f(t.length)){O(t,function(a){T(a,e)});return}if(t.classList){t.classList.add(e);return}var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function U(t,e){if(e){if(f(t.length)){O(t,function(i){U(i,e)});return}if(t.classList){t.classList.remove(e);return}t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,""))}}function nt(t,e,i){if(e){if(f(t.length)){O(t,function(a){nt(a,e,i)});return}i?T(t,e):U(t,e)}}var wi=/([a-z\d])([A-Z])/g;function Jt(t){return t.replace(wi,"$1-$2").toLowerCase()}function Ft(t,e){return G(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(Jt(e)))}function wt(t,e,i){G(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(Jt(e)),i)}function bi(t,e){if(G(t[e]))try{delete t[e]}catch{t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch{t.dataset[e]=void 0}else t.removeAttribute("data-".concat(Jt(e)))}var Ne=/\s\s*/,Se=function(){var t=!1;if(zt){var e=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(r){e=r}});_.addEventListener("test",i,a),_.removeEventListener("test",i,a)}return t}();function I(t,e,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=i;e.trim().split(Ne).forEach(function(n){if(!Se){var o=t.listeners;o&&o[n]&&o[n][i]&&(r=o[n][i],delete o[n][i],Object.keys(o[n]).length===0&&delete o[n],Object.keys(o).length===0&&delete t.listeners)}t.removeEventListener(n,r,a)})}function A(t,e,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=i;e.trim().split(Ne).forEach(function(n){if(a.once&&!Se){var o=t.listeners,l=o===void 0?{}:o;r=function(){delete l[n][i],t.removeEventListener(n,r,a);for(var c=arguments.length,s=new Array(c),h=0;hMath.abs(i)&&(i=g)})}),i}function kt(t,e){var i=t.pageX,a=t.pageY,r={endX:i,endY:a};return e?r:be({startX:i,startY:a},r)}function Ci(t){var e=0,i=0,a=0;return O(t,function(r){var n=r.startX,o=r.startY;e+=n,i+=o,a+=1}),e/=a,i/=a,{pageX:e,pageY:i}}function V(t){var e=t.aspectRatio,i=t.height,a=t.width,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",n=ge(a),o=ge(i);if(n&&o){var l=i*e;r==="contain"&&l>a||r==="cover"&&l90?{width:c,height:l}:{width:l,height:c}}function Mi(t,e,i,a){var r=e.aspectRatio,n=e.naturalWidth,o=e.naturalHeight,l=e.rotate,c=l===void 0?0:l,s=e.scaleX,h=s===void 0?1:s,p=e.scaleY,g=p===void 0?1:p,m=i.aspectRatio,b=i.naturalWidth,w=i.naturalHeight,M=a.fillColor,k=M===void 0?"transparent":M,y=a.imageSmoothingEnabled,R=y===void 0?!0:y,N=a.imageSmoothingQuality,u=N===void 0?"low":N,v=a.maxWidth,B=v===void 0?1/0:v,E=a.maxHeight,H=E===void 0?1/0:E,P=a.minWidth,$=P===void 0?0:P,L=a.minHeight,Y=L===void 0?0:L,j=document.createElement("canvas"),z=j.getContext("2d"),tt=V({aspectRatio:m,width:B,height:H}),ht=V({aspectRatio:m,width:$,height:Y},"cover"),et=Math.min(tt.width,Math.max(ht.width,b)),lt=Math.min(tt.height,Math.max(ht.height,w)),bt=V({aspectRatio:r,width:B,height:H}),yt=V({aspectRatio:r,width:$,height:Y},"cover"),ct=Math.min(bt.width,Math.max(yt.width,n)),it=Math.min(bt.height,Math.max(yt.height,o)),Tt=[-ct/2,-it/2,ct,it];return j.width=ot(et),j.height=ot(lt),z.fillStyle=k,z.fillRect(0,0,et,lt),z.save(),z.translate(et/2,lt/2),z.rotate(c*Math.PI/180),z.scale(h,g),z.imageSmoothingEnabled=R,z.imageSmoothingQuality=u,z.drawImage.apply(z,[t].concat(xe(Tt.map(function(Nt){return Math.floor(ot(Nt))})))),z.restore(),j}var Ee=String.fromCharCode;function Bi(t,e,i){var a="";i+=e;for(var r=e;r0;)i.push(Ee.apply(null,Te(r.subarray(0,a)))),r=r.subarray(a);return"data:".concat(e,";base64,").concat(btoa(i.join("")))}function Ti(t){var e=new DataView(t),i;try{var a,r,n;if(e.getUint8(0)===255&&e.getUint8(1)===216)for(var o=e.byteLength,l=2;l+1=8&&(n=s+p)}}}if(n){var g=e.getUint16(n,a),m,b;for(b=0;b=0?r:Oe),height:Math.max(i.offsetHeight,n>=0?n:ze)};this.containerData=o,Z(a,{width:o.width,height:o.height}),T(t,W),U(a,W)},initCanvas:function(){var t=this.containerData,e=this.imageData,i=this.options.viewMode,a=Math.abs(e.rotate)%180===90,r=a?e.naturalHeight:e.naturalWidth,n=a?e.naturalWidth:e.naturalHeight,o=r/n,l=t.width,c=t.height;t.height*o>t.width?i===3?l=t.height*o:c=t.width/o:i===3?c=t.width/o:l=t.height*o;var s={aspectRatio:o,naturalWidth:r,naturalHeight:n,width:l,height:c};this.canvasData=s,this.limited=i===1||i===2,this.limitCanvas(!0,!0),s.width=Math.min(Math.max(s.width,s.minWidth),s.maxWidth),s.height=Math.min(Math.max(s.height,s.minHeight),s.maxHeight),s.left=(t.width-s.width)/2,s.top=(t.height-s.height)/2,s.oldLeft=s.left,s.oldTop=s.top,this.initialCanvasData=C({},s)},limitCanvas:function(t,e){var i=this.options,a=this.containerData,r=this.canvasData,n=this.cropBoxData,o=i.viewMode,l=r.aspectRatio,c=this.cropped&&n;if(t){var s=Number(i.minCanvasWidth)||0,h=Number(i.minCanvasHeight)||0;o>1?(s=Math.max(s,a.width),h=Math.max(h,a.height),o===3&&(h*l>s?s=h*l:h=s/l)):o>0&&(s?s=Math.max(s,c?n.width:0):h?h=Math.max(h,c?n.height:0):c&&(s=n.width,h=n.height,h*l>s?s=h*l:h=s/l));var p=V({aspectRatio:l,width:s,height:h});s=p.width,h=p.height,r.minWidth=s,r.minHeight=h,r.maxWidth=1/0,r.maxHeight=1/0}if(e)if(o>(c?0:1)){var g=a.width-r.width,m=a.height-r.height;r.minLeft=Math.min(0,g),r.minTop=Math.min(0,m),r.maxLeft=Math.max(0,g),r.maxTop=Math.max(0,m),c&&this.limited&&(r.minLeft=Math.min(n.left,n.left+(n.width-r.width)),r.minTop=Math.min(n.top,n.top+(n.height-r.height)),r.maxLeft=n.left,r.maxTop=n.top,o===2&&(r.width>=a.width&&(r.minLeft=Math.min(0,g),r.maxLeft=Math.max(0,g)),r.height>=a.height&&(r.minTop=Math.min(0,m),r.maxTop=Math.max(0,m))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=a.width,r.maxTop=a.height},renderCanvas:function(t,e){var i=this.canvasData,a=this.imageData;if(e){var r=Di({width:a.naturalWidth*Math.abs(a.scaleX||1),height:a.naturalHeight*Math.abs(a.scaleY||1),degree:a.rotate||0}),n=r.width,o=r.height,l=i.width*(n/i.naturalWidth),c=i.height*(o/i.naturalHeight);i.left-=(l-i.width)/2,i.top-=(c-i.height)/2,i.width=l,i.height=c,i.aspectRatio=n/o,i.naturalWidth=n,i.naturalHeight=o,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heighte.width?r.height=r.width/i:r.width=r.height*i),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*a),r.height=Math.max(r.minHeight,r.height*a),r.left=e.left+(e.width-r.width)/2,r.top=e.top+(e.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=C({},r)},limitCropBox:function(t,e){var i=this.options,a=this.containerData,r=this.canvasData,n=this.cropBoxData,o=this.limited,l=i.aspectRatio;if(t){var c=Number(i.minCropBoxWidth)||0,s=Number(i.minCropBoxHeight)||0,h=o?Math.min(a.width,r.width,r.width+r.left,a.width-r.left):a.width,p=o?Math.min(a.height,r.height,r.height+r.top,a.height-r.top):a.height;c=Math.min(c,a.width),s=Math.min(s,a.height),l&&(c&&s?s*l>c?s=c/l:c=s*l:c?s=c/l:s&&(c=s*l),p*l>h?p=h/l:h=p*l),n.minWidth=Math.min(c,h),n.minHeight=Math.min(s,p),n.maxWidth=h,n.maxHeight=p}e&&(o?(n.minLeft=Math.max(0,r.left),n.minTop=Math.max(0,r.top),n.maxLeft=Math.min(a.width,r.left+r.width)-n.width,n.maxTop=Math.min(a.height,r.top+r.height)-n.height):(n.minLeft=0,n.minTop=0,n.maxLeft=a.width-n.width,n.maxTop=a.height-n.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=e.width&&i.height>=e.height?De:Vt),Z(this.cropBox,C({width:i.width,height:i.height},gt({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),st(this.element,Pt,this.getData())}},Wi={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,a=e?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",n=document.createElement("img");if(e&&(n.crossOrigin=e),n.src=a,n.alt=r,this.viewBox.appendChild(n),this.viewBoxImage=n,!!i){var o=i;typeof i=="string"?o=t.ownerDocument.querySelectorAll(i):i.querySelector&&(o=[i]),this.previews=o,O(o,function(l){var c=document.createElement("img");wt(l,Bt,{width:l.offsetWidth,height:l.offsetHeight,html:l.innerHTML}),e&&(c.crossOrigin=e),c.src=a,c.alt=r,c.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',l.innerHTML="",l.appendChild(c)})}},resetPreview:function(){O(this.previews,function(t){var e=Ft(t,Bt);Z(t,{width:e.width,height:e.height}),t.innerHTML=e.html,bi(t,Bt)})},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,a=i.width,r=i.height,n=t.width,o=t.height,l=i.left-e.left-t.left,c=i.top-e.top-t.top;!this.cropped||this.disabled||(Z(this.viewBoxImage,C({width:n,height:o},gt(C({translateX:-l,translateY:-c},t)))),O(this.previews,function(s){var h=Ft(s,Bt),p=h.width,g=h.height,m=p,b=g,w=1;a&&(w=p/a,b=r*w),r&&b>g&&(w=g/r,m=a*w,b=g),Z(s,{width:m,height:b}),Z(s.getElementsByTagName("img")[0],C({width:n*w,height:o*w},gt(C({translateX:-l*w,translateY:-c*w},t))))}))}},Ei={bind:function(){var t=this.element,e=this.options,i=this.cropper;S(e.cropstart)&&A(t,$t,e.cropstart),S(e.cropmove)&&A(t,_t,e.cropmove),S(e.cropend)&&A(t,Ut,e.cropend),S(e.crop)&&A(t,Pt,e.crop),S(e.zoom)&&A(t,qt,e.zoom),A(i,he,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&A(i,de,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&A(i,se,this.onDblclick=this.dblclick.bind(this)),A(t.ownerDocument,le,this.onCropMove=this.cropMove.bind(this)),A(t.ownerDocument,ce,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&A(window,ue,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;S(e.cropstart)&&I(t,$t,e.cropstart),S(e.cropmove)&&I(t,_t,e.cropmove),S(e.cropend)&&I(t,Ut,e.cropend),S(e.crop)&&I(t,Pt,e.crop),S(e.zoom)&&I(t,qt,e.zoom),I(i,he,this.onCropStart),e.zoomable&&e.zoomOnWheel&&I(i,de,this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&I(i,se,this.onDblclick),I(t.ownerDocument,le,this.onCropMove),I(t.ownerDocument,ce,this.onCropEnd),e.responsive&&I(window,ue,this.onResize)}},Ri={resize:function(){if(!this.disabled){var t=this.options,e=this.container,i=this.containerData,a=e.offsetWidth/i.width,r=e.offsetHeight/i.height,n=Math.abs(a-1)>Math.abs(r-1)?a:r;if(n!==1){var o,l;t.restore&&(o=this.getCanvasData(),l=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(O(o,function(c,s){o[s]=c*n})),this.setCropBoxData(O(l,function(c,s){l[s]=c*n})))}}},dblclick:function(){this.disabled||this.options.dragMode===ke||this.setDragMode(vi(this.dragBox,jt)?Be:Kt)},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){e.wheeling=!1},50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||(t.type==="mousedown"||t.type==="pointerdown"&&t.pointerType==="mouse")&&(f(e)&&e!==1||f(i)&&i!==0||t.ctrlKey))){var a=this.options,r=this.pointers,n;t.changedTouches?O(t.changedTouches,function(o){r[o.identifier]=kt(o)}):r[t.pointerId||0]=kt(t),Object.keys(r).length>1&&a.zoomable&&a.zoomOnTouch?n=Me:n=Ft(t.target,vt),si.test(n)&&st(this.element,$t,{originalEvent:t,action:n})!==!1&&(t.preventDefault(),this.action=n,this.cropping=!1,n===Ce&&(this.cropping=!0,T(this.dragBox,Ot)))}},cropMove:function(t){var e=this.action;if(!(this.disabled||!e)){var i=this.pointers;t.preventDefault(),st(this.element,_t,{originalEvent:t,action:e})!==!1&&(t.changedTouches?O(t.changedTouches,function(a){C(i[a.identifier]||{},kt(a,!0))}):C(i[t.pointerId||0]||{},kt(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?O(t.changedTouches,function(a){delete i[a.identifier]}):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,nt(this.dragBox,Ot,this.cropped&&this.options.modal)),st(this.element,Ut,{originalEvent:t,action:e}))}}},Hi={change:function(t){var e=this.options,i=this.canvasData,a=this.containerData,r=this.cropBoxData,n=this.pointers,o=this.action,l=e.aspectRatio,c=r.left,s=r.top,h=r.width,p=r.height,g=c+h,m=s+p,b=0,w=0,M=a.width,k=a.height,y=!0,R;!l&&t.shiftKey&&(l=h&&p?h/p:1),this.limited&&(b=r.minLeft,w=r.minTop,M=b+Math.min(a.width,i.width,i.left+i.width),k=w+Math.min(a.height,i.height,i.top+i.height));var N=n[Object.keys(n)[0]],u={x:N.endX-N.startX,y:N.endY-N.startY},v=function(B){switch(B){case K:g+u.x>M&&(u.x=M-g);break;case J:c+u.xk&&(u.y=k-m);break}};switch(o){case Vt:c+=u.x,s+=u.y;break;case K:if(u.x>=0&&(g>=M||l&&(s<=w||m>=k))){y=!1;break}v(K),h+=u.x,h<0&&(o=J,h=-h,c-=h),l&&(p=h/l,s+=(r.height-p)/2);break;case Q:if(u.y<=0&&(s<=w||l&&(c<=b||g>=M))){y=!1;break}v(Q),p-=u.y,s+=u.y,p<0&&(o=at,p=-p,s-=p),l&&(h=p*l,c+=(r.width-h)/2);break;case J:if(u.x<=0&&(c<=b||l&&(s<=w||m>=k))){y=!1;break}v(J),h-=u.x,c+=u.x,h<0&&(o=K,h=-h,c-=h),l&&(p=h/l,s+=(r.height-p)/2);break;case at:if(u.y>=0&&(m>=k||l&&(c<=b||g>=M))){y=!1;break}v(at),p+=u.y,p<0&&(o=Q,p=-p,s-=p),l&&(h=p*l,c+=(r.width-h)/2);break;case ut:if(l){if(u.y<=0&&(s<=w||g>=M)){y=!1;break}v(Q),p-=u.y,s+=u.y,h=p*l}else v(Q),v(K),u.x>=0?gw&&(p-=u.y,s+=u.y):(p-=u.y,s+=u.y);h<0&&p<0?(o=ft,p=-p,h=-h,s-=p,c-=h):h<0?(o=dt,h=-h,c-=h):p<0&&(o=mt,p=-p,s-=p);break;case dt:if(l){if(u.y<=0&&(s<=w||c<=b)){y=!1;break}v(Q),p-=u.y,s+=u.y,h=p*l,c+=r.width-h}else v(Q),v(J),u.x<=0?c>b?(h-=u.x,c+=u.x):u.y<=0&&s<=w&&(y=!1):(h-=u.x,c+=u.x),u.y<=0?s>w&&(p-=u.y,s+=u.y):(p-=u.y,s+=u.y);h<0&&p<0?(o=mt,p=-p,h=-h,s-=p,c-=h):h<0?(o=ut,h=-h,c-=h):p<0&&(o=ft,p=-p,s-=p);break;case ft:if(l){if(u.x<=0&&(c<=b||m>=k)){y=!1;break}v(J),h-=u.x,c+=u.x,p=h/l}else v(at),v(J),u.x<=0?c>b?(h-=u.x,c+=u.x):u.y>=0&&m>=k&&(y=!1):(h-=u.x,c+=u.x),u.y>=0?m=0&&(g>=M||m>=k)){y=!1;break}v(K),h+=u.x,p=h/l}else v(at),v(K),u.x>=0?g=0&&m>=k&&(y=!1):h+=u.x,u.y>=0?m0?o=u.y>0?mt:ut:u.x<0&&(c-=h,o=u.y>0?ft:dt),u.y<0&&(s-=p),this.cropped||(U(this.cropBox,W),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}y&&(r.width=h,r.height=p,r.left=c,r.top=s,this.action=o,this.renderCropBox()),O(n,function(B){B.startX=B.endX,B.startY=B.endY})}},Li={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&T(this.dragBox,Ot),U(this.cropBox,W),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=C({},this.initialImageData),this.canvasData=C({},this.initialCanvasData),this.cropBoxData=C({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(C(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),U(this.dragBox,Ot),T(this.cropBox,W)),this},replace:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,O(this.previews,function(i){i.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,U(this.cropper,ne)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,T(this.cropper,ne)),this},destroy:function(){var t=this.element;return t[x]?(t[x]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.canvasData,a=i.left,r=i.top;return this.moveTo(Lt(t)?t:a+Number(t),Lt(e)?e:r+Number(e))},moveTo:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.canvasData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(f(t)&&(i.left=t,a=!0),f(e)&&(i.top=e,a=!0),a&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=Number(t),t<0?t=1/(1-t):t=1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var a=this.options,r=this.canvasData,n=r.width,o=r.height,l=r.naturalWidth,c=r.naturalHeight;if(t=Number(t),t>=0&&this.ready&&!this.disabled&&a.zoomable){var s=l*t,h=c*t;if(st(this.element,qt,{ratio:t,oldRatio:n/l,originalEvent:i})===!1)return this;if(i){var p=this.pointers,g=We(this.cropper),m=p&&Object.keys(p).length?Ci(p):{pageX:i.pageX,pageY:i.pageY};r.left-=(s-n)*((m.pageX-g.left-r.left)/n),r.top-=(h-o)*((m.pageY-g.top-r.top)/o)}else rt(e)&&f(e.x)&&f(e.y)?(r.left-=(s-n)*((e.x-r.left)/n),r.top-=(h-o)*((e.y-r.top)/o)):(r.left-=(s-n)/2,r.top-=(h-o)/2);r.width=s,r.height=h,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),f(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,f(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(f(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.imageData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(f(t)&&(i.scaleX=t,a=!0),f(e)&&(i.scaleY=e,a=!0),a&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.options,i=this.imageData,a=this.canvasData,r=this.cropBoxData,n;if(this.ready&&this.cropped){n={x:r.left-a.left,y:r.top-a.top,width:r.width,height:r.height};var o=i.width/i.naturalWidth;if(O(n,function(s,h){n[h]=s/o}),t){var l=Math.round(n.y+n.height),c=Math.round(n.x+n.width);n.x=Math.round(n.x),n.y=Math.round(n.y),n.width=c-n.x,n.height=l-n.y}}else n={x:0,y:0,width:0,height:0};return e.rotatable&&(n.rotate=i.rotate||0),e.scalable&&(n.scaleX=i.scaleX||1,n.scaleY=i.scaleY||1),n},setData:function(t){var e=this.options,i=this.imageData,a=this.canvasData,r={};if(this.ready&&!this.disabled&&rt(t)){var n=!1;e.rotatable&&f(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,n=!0),e.scalable&&(f(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,n=!0),f(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,n=!0)),n&&this.renderCanvas(!0,!0);var o=i.width/i.naturalWidth;f(t.x)&&(r.left=t.x*o+a.left),f(t.y)&&(r.top=t.y*o+a.top),f(t.width)&&(r.width=t.width*o),f(t.height)&&(r.height=t.height*o),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?C({},this.containerData):{}},getImageData:function(){return this.sized?C({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&O(["left","top","width","height","naturalWidth","naturalHeight"],function(i){e[i]=t[i]}),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&rt(t)&&(f(t.left)&&(e.left=t.left),f(t.top)&&(e.top=t.top),f(t.width)?(e.width=t.width,e.height=t.width/i):f(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,e;return this.ready&&this.cropped&&(e={left:t.left,top:t.top,width:t.width,height:t.height}),e||{}},setCropBoxData:function(t){var e=this.cropBoxData,i=this.options.aspectRatio,a,r;return this.ready&&this.cropped&&!this.disabled&&rt(t)&&(f(t.left)&&(e.left=t.left),f(t.top)&&(e.top=t.top),f(t.width)&&t.width!==e.width&&(a=!0,e.width=t.width),f(t.height)&&t.height!==e.height&&(r=!0,e.height=t.height),i&&(a?e.height=e.width/i:r&&(e.width=e.height*i)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=Mi(this.image,this.imageData,e,t);if(!this.cropped)return i;var a=this.getData(t.rounded),r=a.x,n=a.y,o=a.width,l=a.height,c=i.width/Math.floor(e.naturalWidth);c!==1&&(r*=c,n*=c,o*=c,l*=c);var s=o/l,h=V({aspectRatio:s,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),p=V({aspectRatio:s,width:t.minWidth||0,height:t.minHeight||0},"cover"),g=V({aspectRatio:s,width:t.width||(c!==1?i.width:o),height:t.height||(c!==1?i.height:l)}),m=g.width,b=g.height;m=Math.min(h.width,Math.max(p.width,m)),b=Math.min(h.height,Math.max(p.height,b));var w=document.createElement("canvas"),M=w.getContext("2d");w.width=ot(m),w.height=ot(b),M.fillStyle=t.fillColor||"transparent",M.fillRect(0,0,m,b);var k=t.imageSmoothingEnabled,y=k===void 0?!0:k,R=t.imageSmoothingQuality;M.imageSmoothingEnabled=y,R&&(M.imageSmoothingQuality=R);var N=i.width,u=i.height,v=r,B=n,E,H,P,$,L,Y;v<=-o||v>N?(v=0,E=0,P=0,L=0):v<=0?(P=-v,v=0,E=Math.min(N,o+v),L=E):v<=N&&(P=0,E=Math.min(o,N-v),L=E),E<=0||B<=-l||B>u?(B=0,H=0,$=0,Y=0):B<=0?($=-B,B=0,H=Math.min(u,l+B),Y=H):B<=u&&($=0,H=Math.min(l,u-B),Y=H);var j=[v,B,E,H];if(L>0&&Y>0){var z=m/o;j.push(P*z,$*z,L*z,Y*z)}return M.drawImage.apply(M,[i].concat(xe(j.map(function(tt){return Math.floor(ot(tt))})))),w},setAspectRatio:function(t){var e=this.options;return!this.disabled&&!Lt(t)&&(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,a=this.face;if(this.ready&&!this.disabled){var r=t===Kt,n=e.movable&&t===Be;t=r||n?t:ke,e.dragMode=t,wt(i,vt,t),nt(i,jt,r),nt(i,It,n),e.cropBoxMovable||(wt(a,vt,t),nt(a,jt,r),nt(a,It,n))}return this}},Yi=_.Cropper,Re=function(){function t(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(Ve(this,t),!e||!ci.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=C({},fe,rt(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return Ke(t,[{key:"init",value:function(){var e=this.element,i=e.tagName.toLowerCase(),a;if(!e[x]){if(e[x]=this,i==="img"){if(this.isImg=!0,a=e.getAttribute("src")||"",this.originalUrl=a,!a)return;a=e.src}else i==="canvas"&&window.HTMLCanvasElement&&(a=e.toDataURL());this.load(a)}}},{key:"load",value:function(e){var i=this;if(e){this.url=e,this.imageData={};var a=this.element,r=this.options;if(!r.rotatable&&!r.scalable&&(r.checkOrientation=!1),!r.checkOrientation||!window.ArrayBuffer){this.clone();return}if(hi.test(e)){li.test(e)?this.read(Oi(e)):this.clone();return}var n=new XMLHttpRequest,o=this.clone.bind(this);this.reloading=!0,this.xhr=n,n.onabort=o,n.onerror=o,n.ontimeout=o,n.onprogress=function(){n.getResponseHeader("content-type")!==me&&n.abort()},n.onload=function(){i.read(n.response)},n.onloadend=function(){i.reloading=!1,i.xhr=null},r.checkCrossOrigin&&ve(e)&&a.crossOrigin&&(e=we(e)),n.open("GET",e,!0),n.responseType="arraybuffer",n.withCredentials=a.crossOrigin==="use-credentials",n.send()}}},{key:"read",value:function(e){var i=this.options,a=this.imageData,r=Ti(e),n=0,o=1,l=1;if(r>1){this.url=zi(e,me);var c=Ni(r);n=c.rotate,o=c.scaleX,l=c.scaleY}i.rotatable&&(a.rotate=n),i.scalable&&(a.scaleX=o,a.scaleY=l),this.clone()}},{key:"clone",value:function(){var e=this.element,i=this.url,a=e.crossOrigin,r=i;this.options.checkCrossOrigin&&ve(i)&&(a||(a="anonymous"),r=we(i)),this.crossOrigin=a,this.crossOriginUrl=r;var n=document.createElement("img");a&&(n.crossOrigin=a),n.src=r||i,n.alt=e.alt||"The image to crop",this.image=n,n.onload=this.start.bind(this),n.onerror=this.stop.bind(this),T(n,oe),e.parentNode.insertBefore(n,e.nextSibling)}},{key:"start",value:function(){var e=this,i=this.image;i.onload=null,i.onerror=null,this.sizing=!0;var a=_.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(_.navigator.userAgent),r=function(l,c){C(e.imageData,{naturalWidth:l,naturalHeight:c,aspectRatio:l/c}),e.initialImageData=C({},e.imageData),e.sizing=!1,e.sized=!0,e.build()};if(i.naturalWidth&&!a){r(i.naturalWidth,i.naturalHeight);return}var n=document.createElement("img"),o=document.body||document.documentElement;this.sizingImage=n,n.onload=function(){r(n.width,n.height),a||o.removeChild(n)},n.src=i.src,a||(n.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",o.appendChild(n))}},{key:"stop",value:function(){var e=this.image;e.onload=null,e.onerror=null,e.parentNode.removeChild(e),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var e=this.element,i=this.options,a=this.image,r=e.parentNode,n=document.createElement("div");n.innerHTML=pi;var o=n.querySelector(".".concat(x,"-container")),l=o.querySelector(".".concat(x,"-canvas")),c=o.querySelector(".".concat(x,"-drag-box")),s=o.querySelector(".".concat(x,"-crop-box")),h=s.querySelector(".".concat(x,"-face"));this.container=r,this.cropper=o,this.canvas=l,this.dragBox=c,this.cropBox=s,this.viewBox=o.querySelector(".".concat(x,"-view-box")),this.face=h,l.appendChild(a),T(e,W),r.insertBefore(o,e.nextSibling),U(a,oe),this.initPreview(),this.bind(),i.initialAspectRatio=Math.max(0,i.initialAspectRatio)||NaN,i.aspectRatio=Math.max(0,i.aspectRatio)||NaN,i.viewMode=Math.max(0,Math.min(3,Math.round(i.viewMode)))||0,T(s,W),i.guides||T(s.getElementsByClassName("".concat(x,"-dashed")),W),i.center||T(s.getElementsByClassName("".concat(x,"-center")),W),i.background&&T(o,"".concat(x,"-bg")),i.highlight||T(h,ai),i.cropBoxMovable&&(T(h,It),wt(h,vt,Vt)),i.cropBoxResizable||(T(s.getElementsByClassName("".concat(x,"-line")),W),T(s.getElementsByClassName("".concat(x,"-point")),W)),this.render(),this.ready=!0,this.setDragMode(i.dragMode),i.autoCrop&&this.crop(),this.setData(i.data),S(i.ready)&&A(e,pe,i.ready,{once:!0}),st(e,pe)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var e=this.cropper.parentNode;e&&e.removeChild(this.cropper),U(this.element,W)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=Yi,t}},{key:"setDefaults",value:function(e){C(fe,rt(e)&&e)}}])}();C(Re.prototype,Si,Wi,Ei,Ri,Hi,Li);const Xi=typeof window>"u"?[String,Array]:[String,Array,Element,NodeList],Ai={render(){const t=this.crossorigin||void 0;return ie("div",{style:this.containerStyle},[ie("img",{ref:"img",src:this.src,alt:this.alt||"image",style:[{"max-width":"100%"},this.imgStyle],crossorigin:t})])},props:{containerStyle:Object,src:{type:String,default:""},alt:String,imgStyle:Object,viewMode:Number,dragMode:String,initialAspectRatio:Number,aspectRatio:Number,data:Object,preview:Xi,responsive:{type:Boolean,default:!0},restore:{type:Boolean,default:!0},checkCrossOrigin:{type:Boolean,default:!0},checkOrientation:{type:Boolean,default:!0},crossorigin:{type:String},modal:{type:Boolean,default:!0},guides:{type:Boolean,default:!0},center:{type:Boolean,default:!0},highlight:{type:Boolean,default:!0},background:{type:Boolean,default:!0},autoCrop:{type:Boolean,default:!0},autoCropArea:Number,movable:{type:Boolean,default:!0},rotatable:{type:Boolean,default:!0},scalable:{type:Boolean,default:!0},zoomable:{type:Boolean,default:!0},zoomOnTouch:{type:Boolean,default:!0},zoomOnWheel:{type:Boolean,default:!0},wheelZoomRatio:Number,cropBoxMovable:{type:Boolean,default:!0},cropBoxResizable:{type:Boolean,default:!0},toggleDragModeOnDblclick:{type:Boolean,default:!0},minCanvasWidth:Number,minCanvasHeight:Number,minCropBoxWidth:Number,minCropBoxHeight:Number,minContainerWidth:Number,minContainerHeight:Number,ready:Function,cropstart:Function,cropmove:Function,cropend:Function,crop:Function,zoom:Function},mounted(){const{containerStyle:t,src:e,alt:i,imgStyle:a,...r}=this.$options.props,n={};for(const o in r)this[o]!==void 0&&(n[o]=this[o]);this.cropper=new Re(this.$refs.img,n)},methods:{reset(){return this.cropper.reset()},clear(){return this.cropper.clear()},initCrop(){return this.cropper.crop()},replace(t,e=!1){return this.cropper.replace(t,e)},enable(){return this.cropper.enable()},disable(){return this.cropper.disable()},destroy(){return this.cropper.destroy()},move(t,e){return this.cropper.move(t,e)},moveTo(t,e=t){return this.cropper.moveTo(t,e)},relativeZoom(t,e){return this.cropper.zoom(t,e)},zoomTo(t,e){return this.cropper.zoomTo(t,e)},rotate(t){return this.cropper.rotate(t)},rotateTo(t){return this.cropper.rotateTo(t)},scaleX(t){return this.cropper.scaleX(t)},scaleY(t){return this.cropper.scaleY(t)},scale(t,e=t){return this.cropper.scale(t,e)},getData(t=!1){return this.cropper.getData(t)},setData(t){return this.cropper.setData(t)},getContainerData(){return this.cropper.getContainerData()},getImageData(){return this.cropper.getImageData()},getCanvasData(){return this.cropper.getCanvasData()},setCanvasData(t){return this.cropper.setCanvasData(t)},getCropBoxData(){return this.cropper.getCropBoxData()},setCropBoxData(t){return this.cropper.setCropBoxData(t)},getCroppedCanvas(t={}){return this.cropper.getCroppedCanvas(t)},setAspectRatio(t){return this.cropper.setAspectRatio(t)},setDragMode(t){return this.cropper.setDragMode(t)}}},ji=Ie({name:"FsCropper",components:{VueCropper:Ai},props:{title:{type:String},cropperHeight:{type:[String,Number]},dialogWidth:{type:[String,Number],default:"50%"},maxSize:{type:Number,default:5},uploadTip:{type:String},cropper:{type:Object},accept:{type:String,default:".jpg, .jpeg, .png, .gif, .webp"},output:{type:String,default:"blob"},compressQuality:{type:Number,default:.8}},emits:["cancel","done","ready"],setup(t,e){const{ui:i}=Fe(),{t:a}=Qe(),r=F(!1),n=F(),o=F(),l=F(!1),c=F(),s=F(),h=F(),p=F({x:1,y:1});function g(){r.value=!1}function m(){R(),e.emit("cancel")}const b=i.dialog.buildOnClosedBind(m),w=i.dialog.customClass,M=Mt(()=>({...b,[w]:"fs-cropper-dialog",...i.formWrapper.buildWidthBind(i.dialog.name,"960px"),...i.formWrapper.buildInitBind(i.dialog.name),title:t.title||a("fs.extends.cropper.title")}));function k(d){r.value=!0,d!=null&&d!==""&&(c.value=d)}function y(){r.value=!1}function R(){l.value=!1,o.value!=null&&(o.value.value=null,o.value=null),n.value!=null&&n.value.clear()}function N(){return n.value}const u={cropper:N(),zoom:xt,clear:R,close:y,open:k};function v(d){e.emit("ready",{event:d,...u})}function B(d){return d.preventDefault(),!1}function E(){o.value.click()}function H(d){return d.type.indexOf("image")===-1?(i.message.warn("请选择合适的文件类型"),!1):t.maxSize>0&&d.size/1024/1024>t.maxSize?(i.message.warn(`图片大小超出最大限制(${t.maxSize}MB),请重新选择.`),!1):!0}function P(d){const D=d.target.files[0];if(D.type.indexOf("image/")===-1){i.message.warn("Please select an image file");return}if(typeof FileReader=="function"){const q=new FileReader;q.onload=pt=>{c.value=pt.target.result,n.value.replace(pt.target.result)},q.readAsDataURL(D)}else i.message.error("Sorry, FileReader API not supported")}function $(d){d.preventDefault();const D=d.target.files||d.dataTransfer.files;if(D==null)return;l.value=!0;const q=D[0];H(q)&&(h.value=q,P(d))}function L(d,D){return D==null&&(D=t.compressQuality),n.value.getCroppedCanvas().toDataURL(d,D)}async function Y(d,D){return D==null&&(D=t.compressQuality),new Promise((q,pt)=>{function Ae(je){q(je)}n.value.getCroppedCanvas().toBlob(Ae,d,D)})}function j(d){e.emit("done",d)}async function z(d){const D={file:d};if(t.output==="all"){const q=await Y(d.type),pt=L(d.type);D.blob=q,D.dataUrl=pt,j(D);return}if(t.output==="blob"){D.blob=await Y(d.type),j(D);return}t.output==="dataUrl"&&(D.dataUrl=L(d.type),j(D))}async function tt(){if(!l.value){i.message.warn("请先选择图片");return}await z(h.value),r.value=!1}function ht(){n.value.scaleX(p.value.x*=-1)}function et(){n.value.scaleY(p.value.y*=-1)}function lt(){s.value=JSON.stringify(n.value.getCropBoxData(),null,4)}function bt(){s.value=JSON.stringify(n.value.getData(),null,4)}function yt(d,D){n.value.move(d,D)}function ct(){n.value.reset()}function it(d){n.value.rotate(d)}function Tt(){n.value.setCropBoxData(JSON.parse(s.value))}function Nt(){n.value.setData(JSON.parse(s.value))}function He(){o.value.click()}function xt(d){n.value.relativeZoom(d)}const Le=Mt(()=>{const d="small";return[{size:d,round:!0,icon:i.icons.edit,text:a("fs.extends.cropper.reChoose"),onClick(){E()}},{size:d,round:!0,text:a("fs.extends.cropper.flipX"),onClick(){ht()}},{size:d,round:!0,text:a("fs.extends.cropper.flipY"),onClick(){et()}},{size:d,round:!0,icon:i.icons.zoomIn,onClick(){xt(.1)}},{size:d,round:!0,icon:i.icons.zoomOut,onClick(){xt(-.1)}},{size:d,round:!0,icon:i.icons.refreshLeft,onClick(){it(90)}},{size:d,round:!0,icon:i.icons.refreshRight,onClick(){it(-90)}},{size:d,round:!0,icon:i.icons.refresh,text:a("fs.extends.cropper.reset"),onClick(){ct()}}]}),Ye=Mt(()=>({title:a("fs.extends.cropper.title"),preview:a("fs.extends.cropper.preview"),cancel:a("fs.extends.cropper.cancel"),confirm:a("fs.extends.cropper.confirm"),chooseImage:a("fs.extends.cropper.chooseImage")})),Xe=Mt(()=>t.uploadTip!=null&&t.uploadTip!==""?t.uploadTip:t.maxSize>0?`${a("fs.extends.cropper.onlySupport")} ${t.accept.replace(/,/g,"、")}, + ${a("fs.extends.cropper.sizeLimit")} ${t.maxSize}M`:`${a("fs.extends.cropper.onlySupport")}${t.accept},${a("fs.extends.cropper.sizeNoLimit")}`);return{ui:i,cropperRef:n,fileInputRef:o,dialogVisible:r,dialogBinding:M,isLoaded:l,imgSrc:c,data:s,file:h,scale:p,computedButtons:Le,handleClose:g,setData:Nt,handleClosed:m,close:y,showFileChooser:He,zoom:xt,setCropBoxData:Tt,rotate:it,reset:ct,move:yt,getData:bt,getCropBoxData:lt,flipY:et,flipX:ht,doCropper:tt,doOutput:z,getCropImageBlob:Y,getCropImageDataUrl:L,handleChange:$,setImage:P,checkFile:H,handleClick:E,preventDefault:B,open:k,clear:R,getCropperRef:N,ready:v,computedTexts:Ye,computedUploadTip:Xe}},data(){return{}},computed:{_cropper(){const t={aspectRatio:1,ready:this.ready};return this.cropper==null?t:Object.assign(t,this.cropper)},_cropperHeight(){let t=this.cropperHeight;return t==null&&(t=document.documentElement.clientHeight*.55,t<270&&(t=270)),typeof t=="number"?t+"px":t},_dialogWidth(){let t=this.dialogWidth;return t==null&&(t="50%"),typeof t=="number"?t+"px":t}}}),Ii={class:"fs-cropper-dialog-wrap"},Pi=["accept"],Ui={class:"fs-cropper-dialog__choose fs-cropper-dialog_left"},_i={class:"fs-cropper-dialog__edit fs-cropper-dialog_left"},$i={class:"fs-cropper-dialog__edit-area"},qi={class:"tool-bar"},Fi={class:"fs-cropper-dialog__preview"},Qi={class:"fs-cropper-dialog__preview-title"},Zi={class:"dialog-footer"};function Vi(t,e,i,a,r,n){const o=Gt("fs-button"),l=Gt("vue-cropper");return Ct(),St(ee(t.ui.dialog.name),Ht({ref:"cropperDialogRef",[t.ui.dialog.visible]:t.dialogVisible,["onUpdate:"+t.ui.dialog.visible]:e[2]||(e[2]=c=>t.dialogVisible=c),"append-to-body":"",width:"900px","close-on-click-modal":!0},t.dialogBinding,{"destroy-on-close":!1}),{footer:Wt(()=>[X("div",Zi,[Dt(o,{size:"small",text:t.computedTexts.cancel,onClick:t.handleClose},null,8,["text","onClick"]),Dt(o,{type:"primary",size:"small",text:t.computedTexts.confirm,onClick:e[1]||(e[1]=c=>t.doCropper())},null,8,["text"])])]),default:Wt(()=>[X("div",Ii,[Et(X("input",{ref:"fileInputRef",type:"file",accept:t.accept,onChange:e[0]||(e[0]=(...c)=>t.handleChange&&t.handleChange(...c))},null,40,Pi),[[Rt,!1]]),Et(X("div",Ui,[Dt(o,{round:"",text:t.computedTexts.chooseImage,onClick:t.showFileChooser},null,8,["text","onClick"]),X("p",null,te(t.computedUploadTip),1)],512),[[Rt,!t.isLoaded]]),Et(X("div",_i,[X("div",$i,[Dt(l,Ht({ref:"cropperRef",src:t.imgSrc,preview:".preview",style:{height:t._cropperHeight}},t._cropper),null,16,["src","style"])]),X("div",qi,[(Ct(),St(ee(t.ui.buttonGroup.name),null,{default:Wt(()=>[(Ct(!0),Pe(Ue,null,_e(t.computedButtons,(c,s)=>(Ct(),St(o,Ht({key:s,ref_for:!0},c),null,16))),128))]),_:1}))])],512),[[Rt,t.isLoaded]]),X("div",Fi,[X("span",Qi,te(t.computedTexts.preview),1),e[3]||(e[3]=X("div",{class:"fs-cropper-dialog__preview-120 preview"},null,-1)),X("div",{class:$e(["fs-cropper-dialog__preview-65 preview",{round:t._cropper.aspectRatio===1}])},null,2)])])]),_:1},16)}const Gi=qe(ji,[["render",Vi]]);export{Gi as default}; diff --git a/web/dist/assets/fs-cropper-uploader-a4003ae3.Co0sTjIx.js b/web/dist/assets/fs-cropper-uploader-a4003ae3.Co0sTjIx.js new file mode 100644 index 0000000000..efb751d683 --- /dev/null +++ b/web/dist/assets/fs-cropper-uploader-a4003ae3.Co0sTjIx.js @@ -0,0 +1 @@ +import{a7 as L,B as G,a1 as Y}from"./index.CkCcWuPb.js";import{w as Z,aA as R,x as c,y as l,z as m,a7 as g,$ as w,a0 as T,a2 as h,a6 as J,aq as K,a3 as S,Z as M,Y as z,D as d,H as X,F as ee,af as te,B as ae}from"./vue.Cw4Y52yh.js";const oe=Z({name:"FsCropperUploader",props:{disabled:{},modelValue:{type:[String,Object,Array]},img:{},type:{type:String},uploadTip:{type:String},title:String,cropperHeight:{type:[String,Number]},dialogWidth:{type:[String,Number],default:"50%"},maxSize:{type:Number,default:5},limit:{type:Number,default:1},accept:{type:String,default:".jpg, .jpeg, .png, .gif, .webp"},cropper:{type:Object},uploader:{type:Object},compressQuality:{type:Number,default:.8},buildUrl:{type:Function,default:async function(e){return typeof e=="object"?e.url:e}},valueType:{type:String,default:"url"}},emits:["update:modelValue","change","ready"],setup(e,n){const{ui:b}=G(),f=d(),I=d(),C=d(),s=d([]),p=b.formItem.injectFormItemContext();let y=e.modelValue;r(e.modelValue);async function r(t){const a=[];if(t==null||t===""){s.value=a;return}if(typeof t=="string")a.push({url:await e.buildUrl(t),value:t,status:"done"});else if(Array.isArray(t))for(const o of t)a.push({url:await e.buildUrl(o),value:o,status:"done"});else if(typeof t=="object")a.push({url:await e.buildUrl(t),value:t,status:"done"});else for(const o of t)a.push({url:await e.buildUrl(o),value:o,status:"done"});s.value=a}function v(){e.disabled||(C.value=void 0,f.value.clear(),f.value.open())}function P(t){s.value.splice(t,1),j()}function A(){const t=s.value;if(t&&t.length>0){for(const a of t)if(a.status==="uploading")return!0}return!1}async function D(t){const a=t.blob,o=t.dataUrl,B=t.file.name,Q=new File([a],B,{type:a.type}),u=te({url:void 0,dataUrl:o,status:"uploading",progress:0}),W=i=>{u.progress=i.percent},F=i=>{u.status="error",u.message="文件上传出错:"+i.message,console.error(i)},$={file:Q,onProgress:W,onError:F,fileName:B};s.value.push(u);try{const i=await V($);let N=i;e.valueType!=="object"&&(N=i[e.valueType]),u.url=await e.buildUrl(N),u.value=N,u.status="done",j()}catch(i){F(i)}}async function V(t){t.options=e.uploader||{};const{getUploaderImpl:a}=Y();let o=await a(t.options.type);if(o==null)throw new Error("Sorry,The component is not ready yet");return await(o==null?void 0:o.upload(t))}async function j(){const t=[];for(const o of s.value)typeof o=="string"?t.push(o):t.push(o.value);let a=t;e.limit===1&&(a=t&&t.length>0?t[0]:void 0),y=a,n.emit("update:modelValue",a),await p.onChange(),await p.onBlur()}function x(t){return t.dataUrl?t.dataUrl:t.url}const U=d(!1),k=d();function q(t){U.value=!0,k.value=x(t)}function H(){U.value=!1,k.value=null}X(()=>e.modelValue,async t=>{n.emit("change",t),t!==y&&await r(t)});const O=ae();function _(t){n.emit("ready",{uploaderRef:O,...t})}const E=ee(()=>({...e}));return{ui:b,cropperRef:f,uploaderImplRef:I,indexRef:C,listRef:s,addNewImage:v,hasUploading:A,cropComplete:D,doUpload:V,removeImage:P,getImageSrc:x,previewUrl:k,previewVisible:U,preview:q,closePreview:H,doReady:_,computedProps:E}}}),re={class:"image-list"},le={class:"image-slot"},se={class:"delete"},ie={key:0,class:"status-uploading"},ne={key:1,class:"status-done"},pe={class:"fs-cropper-preview-content"},ue=["src"];function ce(e,n,b,f,I,C){const s=R("fs-loading"),p=R("fs-icon"),y=R("fs-cropper");return l(),c("div",{class:z(["fs-cropper-uploader",{"is-disabled":e.computedProps.disabled}])},[m("div",re,[(l(),w(S(e.ui.imageGroup.name),null,{default:T(()=>[(l(!0),c(J,null,K(e.listRef,(r,v)=>(l(),c("div",{key:v,class:"image-item"},[(l(),w(S(e.ui.image.name),M({class:"image",src:e.getImageSrc(r),ref_for:!0},e.computedProps.img),{placeholder:T(()=>[m("div",le,[g(s,{loading:!0})])]),_:2},1040,["src"])),m("div",se,[e.computedProps.disabled?h("",!0):(l(),w(p,{key:0,icon:e.ui.icons.remove,onClick:P=>e.removeImage(v)},null,8,["icon","onClick"])),g(p,{icon:e.ui.icons.search,onClick:P=>e.preview(r)},null,8,["icon","onClick"])]),r.status==="uploading"?(l(),c("div",ie,[(l(),w(S(e.ui.progress.name),{type:"circle",percentage:r.progress,width:70},null,8,["percentage"]))])):r.status==="done"?(l(),c("div",ne,[g(p,{icon:e.ui.icons.check,class:"status-down-icon"},null,8,["icon"])])):h("",!0)]))),128)),e.computedProps.limit<=0||e.computedProps.limit>e.listRef.length?(l(),c("div",{key:0,class:"image-item image-plus",onClick:n[0]||(n[0]=(...r)=>e.addNewImage&&e.addNewImage(...r))},[g(p,{icon:e.ui.icons.plus,class:"cropper-uploader-icon"},null,8,["icon"])])):h("",!0)]),_:1}))]),g(y,{ref:"cropperRef",title:e.computedProps.title,"cropper-height":e.computedProps.cropperHeight,"dialog-width":e.computedProps.dialogWidth,accept:e.computedProps.accept,"upload-tip":e.computedProps.uploadTip,"max-size":e.computedProps.maxSize,cropper:e.computedProps.cropper,"compress-quality":e.computedProps.compressQuality,output:"all",onDone:e.cropComplete,onReady:e.doReady},null,8,["title","cropper-height","dialog-width","accept","upload-tip","max-size","cropper","compress-quality","onDone","onReady"]),m("div",{class:z(["fs-cropper-preview",{open:e.previewVisible}]),onClick:n[1]||(n[1]=(...r)=>e.closePreview&&e.closePreview(...r))},[m("div",pe,[e.previewUrl?(l(),c("img",{key:0,src:e.previewUrl,class:"preview-image"},null,8,ue)):h("",!0)])],2)],2)}const ge=L(oe,[["render",ce]]);export{ge as default}; diff --git a/web/dist/assets/fs-file-uploader-1c0076b5.BrqWgCRO.js b/web/dist/assets/fs-file-uploader-1c0076b5.BrqWgCRO.js new file mode 100644 index 0000000000..52f7079424 --- /dev/null +++ b/web/dist/assets/fs-file-uploader-1c0076b5.BrqWgCRO.js @@ -0,0 +1 @@ +import{a7 as pe,B as de,a8 as me,a2 as P,a3 as ye,a1 as we}from"./index.CkCcWuPb.js";import{w as ve,x as ge,y as w,$ as z,a2 as he,a0 as $,a3 as C,as as be,at as xe,Z as H,z as Le,Y as Ue,D as y,F as v,H as Te,P as Fe}from"./vue.Cw4Y52yh.js";const Re=ve({name:"FsFileUploader",inheritAttrs:!1,props:{modelValue:{},limit:{type:Number},sizeLimit:{type:[Number,Object]},pixelLimit:{type:Object,required:!1},showLimitTip:{type:Boolean,default:!0},buildUrl:{default(){return l=>l}},buildUrls:{},button:{type:Object},listType:{type:String},beforeUpload:{type:Function},beforeUploadRequest:{type:Function},uploader:{type:Object},preview:{type:Object},valueType:{type:String,default:"url"},getFileName:{}},emits:["change","update:modelValue","success","exceed","remove"],setup(l,r){const{ui:a}=de(),{t:c}=me(),n=y([]),g=y(),p=y(),K=v(()=>l.getFileName||(async e=>{if(typeof e!="string")return console.warn("获取文件名失败,请配置getFileName"),e;const t=e.substring(e.lastIndexOf("/")+1),i=t.indexOf("?");return i>=0?t.substring(0,i):t}));function h(e){return l.valueType==="object"?e:e[l.valueType]}function Y(e){const t=[];for(let i of e)t.push(h(i));return t}async function Z(e){const t=[];for(let i of e){let o;typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i instanceof Date?(o={url:void 0,key:i,value:i},l.valueType!=="object"&&(o[l.valueType]=i)):o=i,o[a.upload.id]||(o[a.upload.id]=Math.random()+""),o.status||(o.status=a.upload.status.success),t.push(o)}await j(t);for(const i of t)if(!i.name){const o=i.url||i.value;i.name=await K.value(o,i)}return t}async function B(e){const t=[];for(let i of e){const o=i.response||i.fsRes,s={size:i.size,name:i.name,uid:i.uid,...o??i};t.push(s)}return await j(t),Y(t)}async function b(e){const t=[];if(e==null||e.length===0){n.value=t;return}if(e instanceof Array)for(let o of e)t.push(o);else t.push(e);const i=await Z(t);N(i)}async function G(){await S.onChange(),await S.onBlur()}async function V(e){let t=await J(e);O(t),Fe(async()=>{await G()})}async function J(e){if(e==null||e.length===0)return l.limit===1?null:[];if(l.limit===1)return(await B(e))[0];const t=[];for(let i of e)a.upload.isSuccess(i)&&t.push(i);return await B(t)}async function j(e){let t=e.filter(i=>i.url==null);if(l.buildUrls){const i=t.map(s=>h(s)),o=await l.buildUrls(i);for(let s=0;sl.modelValue,async e=>{I(e),e!==g.value&&await b(e)}),b(l.modelValue);function Q(){return n.value.filter(e=>e.status===a.upload.status.uploading).length>0}function d(e,t){N(t),V(t)}function x(e,t,i){r.emit("success",{res:e,file:t,fileList:i}),d(t,i)}function k(e){let t;return e>1024*1024*1024?t=(e/(1024*1024*1024)).toFixed(2)+"G":e>1024*1024?t=(e/(1024*1024)).toFixed(2)+"M":t=Math.round(e/1024)+"K",t}const E=(e=!1)=>{const t=e?a.upload.limitAdd:0;return l.limit>0&&n.value.length>=l.limit+t};function W(){l.showLimitTip&&a.message.warn(c("fs.extends.fileUploader.limitTip",[l.limit]))}function X(){if(E(!0))throw W(),r.emit("exceed",{fileList:n.value,limit:l.limit}),new Error("文件数量超限")}function ee(e){if(l.sizeLimit!=null){let t=l.sizeLimit,i=null;if(typeof l.sizeLimit=="number"?i=(o,s)=>{const f=k(s),u=k(e.size);a.message.warn(c("fs.extends.fileUploader.sizeLimitTip",[f,u]))}:(t=l.sizeLimit.limit,i=l.sizeLimit.tip),e.size>t){let o="文件大小超过限制,当前文件大小:"+e.size/1024+"k";throw i(e.size,t),new Error(o)}}}const te=e=>{let t=0,i=0,o="";if(l.pixelLimit)Array.isArray(l.pixelLimit)?(t=l.pixelLimit[0],i=l.pixelLimit[1]||l.pixelLimit[0]||0,o=l.pixelLimit[2]||""):typeof l.pixelLimit=="object"&&(t=l.pixelLimit.width||0,i=l.pixelLimit.height||0,o=l.pixelLimit.tip||"");else return Promise.resolve(!0);let s=o||c("fs.extends.fileUploader.pixelLimitTip",[t,i]);return new Promise((f,u)=>{let D=new FileReader;D.onload=fe=>{var M;let _=(M=fe.target)==null?void 0:M.result,m=new Image;m.onload=function(){t&&m.width>t||i&&m.height>i?(a.message.warn(s),u(s)):f(!0)},m.onerror=function(Ce){a.message.warn(c("fs.extends.fileUploader.loadError")),u(c("fs.extends.fileUploader.loadError"))},_&&(m.src=_)},D.readAsDataURL(e)})},L=async(e,t=n.value)=>{if(l.beforeUpload&&await l.beforeUpload({file:e,fileList:n.value})===!1)return!1;try{X(),ee(e),T()&&await te(e)}catch{return!1}};function N(e){n.value=e}async function ie(e){e.options=l.uploader||{};const{getUploaderImpl:t}=we();let i=await t(e.options.type);if(i==null)throw a.message.warn("Sorry,The uploader component is not ready yet"),new Error("Sorry,The component is not ready yet");return await(i==null?void 0:i.upload(e))}async function U(e){l.beforeUploadRequest&&await l.beforeUploadRequest(e);const{file:t,onProgress:i,onSuccess:o,onError:s}=e,f={file:t,fileName:t.name,onProgress:i};try{const u=await ie(f);o(u)}catch(u){console.error("上传失败",u),s(u)}}const le=v(()=>se()?{is:"FsIcon",icon:a.icons.plus}:{is:"FsButton",icon:a.icons.upload,text:c("fs.extends.fileUploader.text"),...l.button}),q=y(!1),A=y(),oe=v(()=>({...a.dialog.footer(),...l.preview}));function ae(e){return new Promise((t,i)=>{const o=new FileReader;o.readAsDataURL(e),o.onload=()=>t(o.result),o.onerror=s=>i(s)})}function T(){return l.listType===a.upload.typeImageCard||l.listType===a.upload.typeImage}function se(){return l.listType===a.upload.typeImageCard}const F=async e=>{var t,i;if(!T()){let o;e.url?o=e.url:a.type==="antdv"?o=(t=e.response)==null?void 0:t.url:a.type==="element"?o=(i=e.fsRes)==null?void 0:i.url:o=e.url,window.open(o,"_blank")}!e.url&&!e.preview&&e.originFileObj&&(e.preview=await ae(e.originFileObj)),A.value=e.url||e.preview,q.value=!0};function re(){const e={customRequest:U,beforeUpload:L,limit:l.limit,listType:l.listType,onChange:t=>{const{file:i,fileList:o}=t;d(i,o),i.status==="done"&&x(i.response,i,o)},onPreview:F};return l.limit!=null&&r.attrs.maxCount==null&&(e.maxCount=l.limit),e}function ne(){return{action:"",listType:l.listType,limit:l.limit,beforeUpload:L,httpRequest:U,onExceed:e=>{r.emit("exceed",e,n)},onRemove:(e,t)=>{d(e,t),r.emit("remove",e,t)},onChange:(e,t)=>{d(e,t)},onSuccess:(e,t,i)=>{e!=null&&(t.response=e,t.fsRes=e,x(e,t,i))},onPreview:F}}const R={};function ue(){function e(t){let i=t.value||t;i=ye(i);for(let o of i){const s=R[o.id];s&&P(o,s)}return i}return{action:"",limit:l.limit,listType:l.listType,onBeforeUpload:async({file:t,fileList:i})=>L(t,i),customRequest:t=>{const i=t.file;U({...t,file:i.file,onSuccess:async o=>{const s=l.valueType==="object"?o:o[l.valueType];o.url=await l.buildUrl(s),P(i,o),R[i.id]={...o,fsRes:o},t.onFinish(i)},onProgress:o=>{t.onProgress(o)}})},onExceed:t=>{r.emit("exceed",t)},onRemove:t=>{r.emit("remove",t)},onChange:t=>{const{event:i,file:o,fileList:s}=t,f=e(s);d(o,[...f])},onFinish:t=>{const i=R[t.id];i&&P(t,i);const o=e(n);x(i,t,o)},onPreview:F}}const ce=v(()=>{let e=null;return a.type==="antdv"?e=re():a.type==="element"?e=ne():e=ue(),{...e,...r.attrs}});return{ui:a,fileList:n,fileUploaderRef:p,initValue:b,onChange:I,onInput:O,hasUploading:Q,isPicture:T,computedFileSelectBtn:le,previewVisible:q,previewImage:A,computedPreview:oe,computedOnLimit:E,computedBinding:ce,emitValue:V}}}),Pe=["src"];function ze(l,r,a,c,n,g){return w(),ge("div",{class:Ue(["fs-file-uploader",{"fs-file-uploader-limit":l.computedOnLimit()}])},[(w(),z(C(l.ui.upload.name),H({ref:"fileUploaderRef","file-list":l.fileList,"onUpdate:fileList":r[0]||(r[0]=p=>l.fileList=p)},l.computedBinding),{default:$(()=>[(w(),z(C(l.computedFileSelectBtn.is),be(xe(l.computedFileSelectBtn)),null,16))]),_:1},16,["file-list"])),l.isPicture()?(w(),z(C(l.ui.dialog.name),H({key:0,[l.ui.dialog.visible]:l.previewVisible,["onUpdate:"+l.ui.dialog.visible]:r[1]||(r[1]=p=>l.previewVisible=p)},l.computedPreview),{default:$(()=>[Le("img",{style:{"max-width":"100%","max-height":"100%"},src:l.previewImage},null,8,Pe)]),_:1},16)):he("",!0)],2)}const je=pe(Re,[["render",ze]]);export{je as default}; diff --git a/web/dist/assets/fs-files-format-d3f2439b.8v7-IHF2.js b/web/dist/assets/fs-files-format-d3f2439b.8v7-IHF2.js new file mode 100644 index 0000000000..36ba771797 --- /dev/null +++ b/web/dist/assets/fs-files-format-d3f2439b.8v7-IHF2.js @@ -0,0 +1 @@ +import{a7 as k,B as V}from"./index.CkCcWuPb.js";import{w,x as s,y as t,a6 as d,aq as p,z as g,a5 as y,Z as n,$ as x,a0 as B,a3 as P,F as v,D as U,H as _}from"./vue.Cw4Y52yh.js";const C=w({name:"FsFilesFormat",props:{modelValue:{},color:{default:""},type:{default:"tag"},a:{},tag:{},buildUrl:{},buildUrls:{},getFileName:{}},setup(a,b){const{ui:i}=V(),f=v(()=>a.getFileName||function(e){return typeof e!="string"?(console.warn("获取文件名失败,请配置getFileName"),e):(e==null?void 0:e.lastIndexOf("/"))>=0?e.substring(e.lastIndexOf("/")+1):e});function u(e){return{url:void 0,value:e,name:f.value(e),color:a.color}}async function m(e){if(a.buildUrls){const r=e.map(o=>o.value),h=await a.buildUrls(r);for(let o=0;oa.modelValue,async()=>{c.value=await l()},{immediate:!0});const F=v(()=>({...a}));return{ui:i,itemsRef:c,computedProps:F}}}),N={class:"fs-files-format"},R=["href"],D=["href"];function O(a,b,i,f,u,m){return t(),s("div",N,[a.computedProps.type==="text"?(t(!0),s(d,{key:0},p(a.itemsRef,l=>(t(),s("span",{key:l.url,class:"fs-files-item"},[g("a",n({href:l.url,target:"_blank",ref_for:!0},a.computedProps.a),y(l.name),17,R)]))),128)):(t(!0),s(d,{key:1},p(a.itemsRef,l=>(t(),x(P(a.ui.tag.name),n({key:l.url,class:"fs-tag-item",color:l.color,ref_for:!0},a.computedProps.tag),{default:B(()=>[g("a",n({href:l.url,target:"_blank",ref_for:!0},a.computedProps.a),y(l.name),17,D)]),_:2},1040,["color"]))),128))])}const q=k(C,[["render",O]]);export{q as default}; diff --git a/web/dist/assets/fs-uploader-070ca0b5.C2RU4GoG.js b/web/dist/assets/fs-uploader-070ca0b5.C2RU4GoG.js new file mode 100644 index 0000000000..843b28342d --- /dev/null +++ b/web/dist/assets/fs-uploader-070ca0b5.C2RU4GoG.js @@ -0,0 +1 @@ +import{a1 as p,a9 as r}from"./index.CkCcWuPb.js";import{w as n}from"./vue.Cw4Y52yh.js";const m=n({name:"FsUploader",props:{type:{}},setup(e){async function t(){const{getDefaultType:a}=p(),o=e.type||a();return await r(o)}return{getUploaderRef:t}}});export{m as default}; diff --git a/web/dist/assets/header.D3A4TWO0.js b/web/dist/assets/header.D3A4TWO0.js new file mode 100644 index 0000000000..32022e90c8 --- /dev/null +++ b/web/dist/assets/header.D3A4TWO0.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.DTNB1H71.js","assets/index.CkCcWuPb.js","assets/vue.Cw4Y52yh.js","assets/index.DvQZPXXd.css","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/index.DPJ4CiP8.css"])))=>i.map(i=>d[i]); +import{b as n,_}from"./index.CkCcWuPb.js";import{w as a,aR as c,aA as i,a1 as u,a8 as l,G as e,$ as d,y as p,a0 as m,a7 as f,aP as h}from"./vue.Cw4Y52yh.js";const w=a({name:"layoutHeader"}),x=a({...w,setup(v){const s=h(()=>_(()=>import("./index.DTNB1H71.js"),__vite__mapDeps([0,1,2,3,4,5]))),o=n(),{isTagsViewCurrenFull:t}=c(o);return(C,R)=>{const r=i("el-header");return u((p(),d(r,{class:"layout-header"},{default:m(()=>[f(e(s))]),_:1},512)),[[l,!e(t)]])}}});export{x as default}; diff --git a/web/dist/assets/headerImage.BUBciz5F.png b/web/dist/assets/headerImage.BUBciz5F.png new file mode 100644 index 0000000000000000000000000000000000000000..d3eb252d438ae5228742ca42639018f440513111 GIT binary patch literal 9356 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
+ + + diff --git a/web/dist/version-build b/web/dist/version-build new file mode 100644 index 0000000000..a0e325b1f8 --- /dev/null +++ b/web/dist/version-build @@ -0,0 +1 @@ +3.1.0.1743305378762 \ No newline at end of file -- Gitee From ce821933c5e9d0dd9cc3015a725cbb91e5b45a72 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sun, 30 Mar 2025 11:41:50 +0800 Subject: [PATCH 11/31] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker_env/web/DockerfileBuild | 1 + web/dist/version-build | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docker_env/web/DockerfileBuild b/docker_env/web/DockerfileBuild index 6768e6c393..b5c64d8a7e 100644 --- a/docker_env/web/DockerfileBuild +++ b/docker_env/web/DockerfileBuild @@ -2,3 +2,4 @@ FROM node:22.12-alpine WORKDIR / COPY ./web/package.json . RUN yarn install --registry=https://registry.npmmirror.com +RUN npm install -g vite diff --git a/web/dist/version-build b/web/dist/version-build index a0e325b1f8..c5c344f671 100644 --- a/web/dist/version-build +++ b/web/dist/version-build @@ -1 +1 @@ -3.1.0.1743305378762 \ No newline at end of file +3.1.0.1743306062174 \ No newline at end of file -- Gitee From 2a9f4daeee9d6a934c7090a6cd32c3358cc84495 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sun, 30 Mar 2025 15:12:07 +0800 Subject: [PATCH 12/31] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 28 ++++++++++++++-------------- init.sh | 8 ++++---- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8fd739fefb..26a14d1afc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: - dvadmin3-web: - container_name: dvadmin3-web + xxibears-erp-web: + container_name: xxibears-erp-web ports: - "8080:8080" build: @@ -19,17 +19,17 @@ services: network: ipv4_address: 177.10.0.11 - dvadmin3-django: + xxibears-erp-django: build: context: . dockerfile: ./docker_env/django/Dockerfile - container_name: dvadmin3-django + container_name: xxibears-erp-django working_dir: /backend depends_on: - - dvadmin3-mysql + - xxibears-erp-mysql environment: PYTHONUNBUFFERED: 1 - DATABASE_HOST: dvadmin3-mysql + DATABASE_HOST: xxibears-erp-mysql TZ: Asia/Shanghai volumes: - ./backend:/backend @@ -43,9 +43,9 @@ services: network: ipv4_address: 177.10.0.12 - dvadmin3-mysql: + xxibears-erp-mysql: image: mysql:8.0 - container_name: dvadmin3-mysql + container_name: xxibears-erp-mysql privileged: true restart: always ports: @@ -68,17 +68,17 @@ services: ipv4_address: 177.10.0.13 - dvadmin3-celery: + xxibears-erp-celery: build: context: . dockerfile: ./docker_env/celery/Dockerfile - container_name: dvadmin3-celery + container_name: xxibears-erp-celery working_dir: /backend depends_on: - - dvadmin3-mysql + - xxibears-erp-mysql environment: PYTHONUNBUFFERED: 1 - DATABASE_HOST: dvadmin3-mysql + DATABASE_HOST: xxibears-erp-mysql TZ: Asia/Shanghai volumes: - ./backend:/backend @@ -89,9 +89,9 @@ services: ipv4_address: 177.10.0.14 - dvadmin3-redis: + xxibears-erp-redis: image: redis:6.2.6-alpine # 指定服务镜像,最好是与之前下载的redis配置文件保持一致 - container_name: dvadmin3-redis # 容器名称 + container_name: xxibears-erp-redis # 容器名称 restart: always environment: - TZ=Asia/Shanghai # 设置时区 diff --git a/init.sh b/init.sh index ab828cb56d..21f78ee1c4 100644 --- a/init.sh +++ b/init.sh @@ -56,11 +56,11 @@ i=1 while [ $i -le 8 ]; do if check_mysql || check_redis; then echo "正在迁移数据..." - docker exec dvadmin3-django python3 manage.py makemigrations - docker exec dvadmin3-django python3 manage.py migrate + docker exec xxibears-erp-django python3 manage.py makemigrations + docker exec xxibears-erp-django python3 manage.py migrate echo "正在初始化数据..." - docker exec dvadmin3-django python3 manage.py init - echo "欢迎使用dvadmin3项目" + docker exec xxibears-erp-django python3 manage.py init + echo "欢迎使用小西熊生产ERP项目" echo "登录地址:http://ip:8080" echo "如访问不到,请检查防火墙配置" exit 0 -- Gitee From 9f170431820cb1165c53f5838f47bc4020728a04 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sun, 30 Mar 2025 15:16:13 +0800 Subject: [PATCH 13/31] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 26a14d1afc..c247b6f674 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -44,7 +44,7 @@ services: ipv4_address: 177.10.0.12 xxibears-erp-mysql: - image: mysql:8.0 + image: crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-mysql container_name: xxibears-erp-mysql privileged: true restart: always @@ -90,7 +90,7 @@ services: xxibears-erp-redis: - image: redis:6.2.6-alpine # 指定服务镜像,最好是与之前下载的redis配置文件保持一致 + image: crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-redis # 指定服务镜像,最好是与之前下载的redis配置文件保持一致 container_name: xxibears-erp-redis # 容器名称 restart: always environment: -- Gitee From 1b38689c1595357562f93c0a9afa342b4bd5c618 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sun, 30 Mar 2025 15:46:24 +0800 Subject: [PATCH 14/31] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c247b6f674..2faf261251 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: xxibears-erp-web: - container_name: xxibears-erp-web +# container_name: xxibears-erp-web ports: - "8080:8080" build: @@ -23,7 +23,7 @@ services: build: context: . dockerfile: ./docker_env/django/Dockerfile - container_name: xxibears-erp-django +# container_name: xxibears-erp-django working_dir: /backend depends_on: - xxibears-erp-mysql @@ -44,7 +44,7 @@ services: ipv4_address: 177.10.0.12 xxibears-erp-mysql: - image: crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-mysql + image: crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-mysql:8.0 container_name: xxibears-erp-mysql privileged: true restart: always @@ -52,7 +52,7 @@ services: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD} - MYSQL_DATABASE: "django-vue3-admin" + MYSQL_DATABASE: "xxibears" TZ: Asia/Shanghai command: --wait_timeout=31536000 @@ -72,7 +72,7 @@ services: build: context: . dockerfile: ./docker_env/celery/Dockerfile - container_name: xxibears-erp-celery + container_name: celery working_dir: /backend depends_on: - xxibears-erp-mysql @@ -90,7 +90,7 @@ services: xxibears-erp-redis: - image: crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-redis # 指定服务镜像,最好是与之前下载的redis配置文件保持一致 + image: crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-redis:7.4.2 # 指定服务镜像,最好是与之前下载的redis配置文件保持一致 container_name: xxibears-erp-redis # 容器名称 restart: always environment: -- Gitee From d6fc80c4cf26bbfd251a426ac7c418b0f9589b73 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sun, 30 Mar 2025 15:56:11 +0800 Subject: [PATCH 15/31] =?UTF-8?q?=E5=9B=9E=E6=BB=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2faf261251..f716e2d4bc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: xxibears-erp-web: -# container_name: xxibears-erp-web + container_name: xxibears-erp-web ports: - "8080:8080" build: @@ -23,7 +23,7 @@ services: build: context: . dockerfile: ./docker_env/django/Dockerfile -# container_name: xxibears-erp-django + container_name: xxibears-erp-django working_dir: /backend depends_on: - xxibears-erp-mysql @@ -72,7 +72,7 @@ services: build: context: . dockerfile: ./docker_env/celery/Dockerfile - container_name: celery + container_name: xxibears-erp-celery working_dir: /backend depends_on: - xxibears-erp-mysql -- Gitee From 6acd87695bb16dc2e5b9814b314aafd79f447eab Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Mon, 31 Mar 2025 11:49:14 +0800 Subject: [PATCH 16/31] =?UTF-8?q?=E8=A7=A3=E5=86=B3celery=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E4=BB=A5root=E7=94=A8=E6=88=B7=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker_env/celery/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/docker_env/celery/Dockerfile b/docker_env/celery/Dockerfile index e4c68335cd..ff0fc28563 100644 --- a/docker_env/celery/Dockerfile +++ b/docker_env/celery/Dockerfile @@ -3,5 +3,6 @@ WORKDIR /backend COPY ./backend/ . RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt +RUN export C_FORCE_ROOT="true" CMD ["celery", "-A", "application", "worker", "-B", "--loglevel=info"] -- Gitee From 6688e2b07e57ce353aa2b76efdeb5d45b0aa64c9 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Mon, 31 Mar 2025 11:50:33 +0800 Subject: [PATCH 17/31] =?UTF-8?q?=E8=A7=A3=E5=86=B3celery=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E4=BB=A5root=E7=94=A8=E6=88=B7=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker_env/README.md | 1 - web/src/views/system/downloadCenter/crud.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docker_env/README.md b/docker_env/README.md index f281ab5e7a..a298244a2c 100644 --- a/docker_env/README.md +++ b/docker_env/README.md @@ -62,4 +62,3 @@ docker-compose restart docker-compose up -d --build ~~~ - diff --git a/web/src/views/system/downloadCenter/crud.tsx b/web/src/views/system/downloadCenter/crud.tsx index af839cf9e8..e65997d340 100644 --- a/web/src/views/system/downloadCenter/crud.tsx +++ b/web/src/views/system/downloadCenter/crud.tsx @@ -149,7 +149,7 @@ export const createCrudOptions = function ({ crudExpose }: { crudExpose: CrudExp } }, update_datetime: { - title: '创建时间', + title: '更新时间', column: { width: 160 } -- Gitee From 537237aaad9bfc005c71cb8d9941e31f6db08f05 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Sun, 6 Apr 2025 09:58:25 +0800 Subject: [PATCH 18/31] update --- docker_env/celery/Dockerfile | 1 - init.sh | 2 +- .../CrudPatronModelViewSet/crud.tsx | 18 +++++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/docker_env/celery/Dockerfile b/docker_env/celery/Dockerfile index ff0fc28563..e4c68335cd 100644 --- a/docker_env/celery/Dockerfile +++ b/docker_env/celery/Dockerfile @@ -3,6 +3,5 @@ WORKDIR /backend COPY ./backend/ . RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt -RUN export C_FORCE_ROOT="true" CMD ["celery", "-A", "application", "worker", "-B", "--loglevel=info"] diff --git a/init.sh b/init.sh index 21f78ee1c4..3f75e1fdb1 100644 --- a/init.sh +++ b/init.sh @@ -71,5 +71,5 @@ while [ $i -le 8 ]; do i=$((i+1)) done -echo "尝试 5 次后,MySQL 或 REDIS服务仍未运行" +echo "尝试 8 次后,MySQL 或 REDIS服务仍未运行" exit 1 diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx b/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx index e67fc84bb6..79753e5670 100644 --- a/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx @@ -30,7 +30,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud return await api.exportData(query) }; - console.log(123123, crudExpose) + console.log('这个位置是全局数据:', crudExpose) return { crudOptions: { @@ -318,9 +318,11 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud }, //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 valueBuilder(context) { // 将行数据转化为表单组件所需要的值 - context.form.images.forEach((item, index) => { - context.form.images[index] = getBaseURL(item) // 拼接图片地址 - }) + if (context.mode !== 'add') { + context.form.images.forEach((item, index) => { + context.form.images[index] = getBaseURL(item) // 拼接图片地址 + }) + } }, rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), helper: "最多可上传10个图片" @@ -351,9 +353,11 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud }, //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 valueBuilder(context) { // 将行数据转化为表单组件所需要的值 - context.form.files.forEach((item, index) => { - context.form.files[index] = getBaseURL(item) // 拼接图片地址 - }) + if (context.mode !== 'add') { + context.form.images.forEach((item, index) => { + context.form.images[index] = getBaseURL(item) // 拼接图片地址 + }) + } }, rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), helper: "最大可上传5个文件" -- Gitee From e106107958907c95542f7a303bcf847147607abf Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Fri, 11 Apr 2025 15:13:56 +0800 Subject: [PATCH 19/31] =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=B5=81=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/application/settings.py | 5 + backend/application/urls.py | 7 +- backend/apps/crud_patron/models.py | 103 ++++- backend/apps/crud_patron/serializers.py | 29 +- backend/apps/crud_patron/urls.py | 3 + backend/apps/crud_patron/views.py | 49 ++- backend/apps/finance/__init__.py | 0 backend/apps/finance/admin.py | 3 + backend/apps/finance/apps.py | 6 + backend/apps/finance/migrations/__init__.py | 0 backend/apps/finance/models.py | 4 + backend/apps/finance/tests.py | 3 + backend/apps/finance/urls.py | 19 + backend/apps/finance/views.py | 3 + backend/apps/inventory/__init__.py | 0 backend/apps/inventory/admin.py | 3 + backend/apps/inventory/apps.py | 6 + backend/apps/inventory/migrations/__init__.py | 0 backend/apps/inventory/models.py | 184 ++++++++ backend/apps/inventory/serializers.py | 88 ++++ backend/apps/inventory/tests.py | 3 + backend/apps/inventory/urls.py | 29 ++ backend/apps/inventory/views.py | 174 ++++++++ backend/apps/product/__init__.py | 0 backend/apps/product/admin.py | 3 + backend/apps/product/apps.py | 6 + backend/apps/product/migrations/__init__.py | 0 backend/apps/product/models.py | 26 ++ backend/apps/product/tests.py | 3 + backend/apps/product/urls.py | 19 + backend/apps/product/views.py | 3 + backend/apps/production/__init__.py | 0 backend/apps/production/admin.py | 3 + backend/apps/production/apps.py | 6 + .../apps/production/migrations/__init__.py | 0 backend/apps/production/models.py | 26 ++ backend/apps/production/serializers.py | 19 + backend/apps/production/tests.py | 3 + backend/apps/production/urls.py | 21 + backend/apps/production/views.py | 26 ++ backend/apps/utils/random_code.py | 61 +++ backend/conf/env.py | 4 + .../plugins/__MACOSX/._dvadmin3-flow-backend | Bin 0 -> 163 bytes .../__MACOSX/dvadmin3-flow-backend/._.git | Bin 0 -> 163 bytes .../dvadmin3-flow-backend/._.gitignore | Bin 0 -> 163 bytes .../__MACOSX/dvadmin3-flow-backend/._LICENSE | Bin 0 -> 163 bytes .../dvadmin3-flow-backend/._MANIFEST.in | Bin 0 -> 163 bytes .../dvadmin3-flow-backend/._README.md | Bin 0 -> 163 bytes .../dvadmin3-flow-backend/.___init__.py | Bin 0 -> 163 bytes .../dvadmin3-flow-backend/._dvadmin3_flow | Bin 0 -> 163 bytes .../dvadmin3-flow-backend/._pyproject.toml | Bin 0 -> 163 bytes .../__MACOSX/dvadmin3-flow-backend/._setup.py | Bin 0 -> 163 bytes .../dvadmin3_flow/.___init__.py | Bin 0 -> 163 bytes .../dvadmin3_flow/._apps.py | Bin 0 -> 163 bytes .../dvadmin3_flow/._base_model.py | Bin 0 -> 163 bytes .../dvadmin3_flow/._fixtures | Bin 0 -> 163 bytes .../dvadmin3_flow/._migrations | Bin 0 -> 163 bytes .../dvadmin3_flow/._models.py | Bin 0 -> 163 bytes .../dvadmin3_flow/._settings.py | Bin 0 -> 163 bytes .../dvadmin3_flow/._urls.py | Bin 0 -> 163 bytes .../dvadmin3_flow/._views | Bin 0 -> 163 bytes .../dvadmin3_flow/fixtures/.___init__.py | Bin 0 -> 163 bytes .../dvadmin3_flow/fixtures/._init_menu.json | Bin 0 -> 163 bytes .../dvadmin3_flow/fixtures/._initialize.py | Bin 0 -> 163 bytes .../dvadmin3_flow/views/.___init__.py | Bin 0 -> 163 bytes .../dvadmin3_flow/views/._flow_data.py | Bin 0 -> 163 bytes .../dvadmin3_flow/views/._flow_info.py | Bin 0 -> 163 bytes .../dvadmin3_flow/views/._flow_record.py | Bin 0 -> 163 bytes backend/plugins/dvadmin3-flow-backend | 1 + ...1\346\265\201\346\217\222\344\273\266.zip" | Bin 0 -> 113319 bytes .../crud_patron/ContractModelViewSet/api.ts | 50 +++ .../crud_patron/ContractModelViewSet/crud.tsx | 188 +++++++++ .../ContractModelViewSet/index.vue | 56 +++ .../CrudPatronAddressModelViewSet/crud.tsx | 79 ++-- .../CrudPatronModelViewSet/crud.tsx | 34 +- .../CrudPatronModelViewSet/free/crud.tsx | 4 +- .../crud_patron/SellOrderModelViewSet/api.ts | 50 +++ .../SellOrderModelViewSet/crud.tsx | 394 ++++++++++++++++++ .../SellOrderModelViewSet/index.vue | 56 +++ .../FinishedProductModelViewSet/api.ts | 50 +++ .../FinishedProductModelViewSet/crud.tsx | 293 +++++++++++++ .../FinishedProductModelViewSet/index.vue | 56 +++ .../InAndOutRecordModelViewSet/api.ts | 50 +++ .../InAndOutRecordModelViewSet/crud.tsx | 273 ++++++++++++ .../InAndOutRecordModelViewSet/index.vue | 56 +++ .../inventory/MaterielModelViewSet/api.ts | 50 +++ .../inventory/MaterielModelViewSet/crud.tsx | 293 +++++++++++++ .../inventory/MaterielModelViewSet/index.vue | 56 +++ .../ProductAssemblyModelViewSet/api.ts | 50 +++ .../ProductAssemblyModelViewSet/crud.tsx | 293 +++++++++++++ .../ProductAssemblyModelViewSet/index.vue | 56 +++ .../inventory/RawMaterialModelViewSet/api.ts | 50 +++ .../RawMaterialModelViewSet/crud.tsx | 293 +++++++++++++ .../RawMaterialModelViewSet/index.vue | 56 +++ .../SemiFinishedProductModelViewSet/api.ts | 50 +++ .../SemiFinishedProductModelViewSet/crud.tsx | 293 +++++++++++++ .../SemiFinishedProductModelViewSet/index.vue | 56 +++ .../inventory/StashManageModelViewSet/api.ts | 50 +++ .../StashManageModelViewSet/crud.tsx | 161 +++++++ .../StashManageModelViewSet/index.vue | 56 +++ .../TransferRecordModelViewSet/api.ts | 50 +++ .../TransferRecordModelViewSet/crud.tsx | 275 ++++++++++++ .../TransferRecordModelViewSet/index.vue | 56 +++ .../production/SampleCostModelViewSet/api.ts | 50 +++ .../SampleCostModelViewSet/crud.tsx | 203 +++++++++ .../SampleCostModelViewSet/index.vue | 56 +++ 106 files changed, 5146 insertions(+), 47 deletions(-) create mode 100644 backend/apps/finance/__init__.py create mode 100644 backend/apps/finance/admin.py create mode 100644 backend/apps/finance/apps.py create mode 100644 backend/apps/finance/migrations/__init__.py create mode 100644 backend/apps/finance/models.py create mode 100644 backend/apps/finance/tests.py create mode 100644 backend/apps/finance/urls.py create mode 100644 backend/apps/finance/views.py create mode 100644 backend/apps/inventory/__init__.py create mode 100644 backend/apps/inventory/admin.py create mode 100644 backend/apps/inventory/apps.py create mode 100644 backend/apps/inventory/migrations/__init__.py create mode 100644 backend/apps/inventory/models.py create mode 100644 backend/apps/inventory/serializers.py create mode 100644 backend/apps/inventory/tests.py create mode 100644 backend/apps/inventory/urls.py create mode 100644 backend/apps/inventory/views.py create mode 100644 backend/apps/product/__init__.py create mode 100644 backend/apps/product/admin.py create mode 100644 backend/apps/product/apps.py create mode 100644 backend/apps/product/migrations/__init__.py create mode 100644 backend/apps/product/models.py create mode 100644 backend/apps/product/tests.py create mode 100644 backend/apps/product/urls.py create mode 100644 backend/apps/product/views.py create mode 100644 backend/apps/production/__init__.py create mode 100644 backend/apps/production/admin.py create mode 100644 backend/apps/production/apps.py create mode 100644 backend/apps/production/migrations/__init__.py create mode 100644 backend/apps/production/models.py create mode 100644 backend/apps/production/serializers.py create mode 100644 backend/apps/production/tests.py create mode 100644 backend/apps/production/urls.py create mode 100644 backend/apps/production/views.py create mode 100644 backend/apps/utils/random_code.py create mode 100644 backend/plugins/__MACOSX/._dvadmin3-flow-backend create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._.git create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._.gitignore create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._LICENSE create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._MANIFEST.in create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._README.md create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/.___init__.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._dvadmin3_flow create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._pyproject.toml create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._setup.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/.___init__.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._apps.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._base_model.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._fixtures create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._migrations create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._models.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._settings.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._urls.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._views create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/fixtures/.___init__.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/fixtures/._init_menu.json create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/fixtures/._initialize.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/views/.___init__.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/views/._flow_data.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/views/._flow_info.py create mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/views/._flow_record.py create mode 160000 backend/plugins/dvadmin3-flow-backend create mode 100644 "backend/plugins/dvadmin3-folw\345\220\216\345\217\260\345\256\241\346\211\271\346\265\201\346\217\222\344\273\266.zip" create mode 100644 web/src/views/crud_patron/ContractModelViewSet/api.ts create mode 100644 web/src/views/crud_patron/ContractModelViewSet/crud.tsx create mode 100644 web/src/views/crud_patron/ContractModelViewSet/index.vue create mode 100644 web/src/views/crud_patron/SellOrderModelViewSet/api.ts create mode 100644 web/src/views/crud_patron/SellOrderModelViewSet/crud.tsx create mode 100644 web/src/views/crud_patron/SellOrderModelViewSet/index.vue create mode 100644 web/src/views/inventory/FinishedProductModelViewSet/api.ts create mode 100644 web/src/views/inventory/FinishedProductModelViewSet/crud.tsx create mode 100644 web/src/views/inventory/FinishedProductModelViewSet/index.vue create mode 100644 web/src/views/inventory/InAndOutRecordModelViewSet/api.ts create mode 100644 web/src/views/inventory/InAndOutRecordModelViewSet/crud.tsx create mode 100644 web/src/views/inventory/InAndOutRecordModelViewSet/index.vue create mode 100644 web/src/views/inventory/MaterielModelViewSet/api.ts create mode 100644 web/src/views/inventory/MaterielModelViewSet/crud.tsx create mode 100644 web/src/views/inventory/MaterielModelViewSet/index.vue create mode 100644 web/src/views/inventory/ProductAssemblyModelViewSet/api.ts create mode 100644 web/src/views/inventory/ProductAssemblyModelViewSet/crud.tsx create mode 100644 web/src/views/inventory/ProductAssemblyModelViewSet/index.vue create mode 100644 web/src/views/inventory/RawMaterialModelViewSet/api.ts create mode 100644 web/src/views/inventory/RawMaterialModelViewSet/crud.tsx create mode 100644 web/src/views/inventory/RawMaterialModelViewSet/index.vue create mode 100644 web/src/views/inventory/SemiFinishedProductModelViewSet/api.ts create mode 100644 web/src/views/inventory/SemiFinishedProductModelViewSet/crud.tsx create mode 100644 web/src/views/inventory/SemiFinishedProductModelViewSet/index.vue create mode 100644 web/src/views/inventory/StashManageModelViewSet/api.ts create mode 100644 web/src/views/inventory/StashManageModelViewSet/crud.tsx create mode 100644 web/src/views/inventory/StashManageModelViewSet/index.vue create mode 100644 web/src/views/inventory/TransferRecordModelViewSet/api.ts create mode 100644 web/src/views/inventory/TransferRecordModelViewSet/crud.tsx create mode 100644 web/src/views/inventory/TransferRecordModelViewSet/index.vue create mode 100644 web/src/views/production/SampleCostModelViewSet/api.ts create mode 100644 web/src/views/production/SampleCostModelViewSet/crud.tsx create mode 100644 web/src/views/production/SampleCostModelViewSet/index.vue diff --git a/backend/application/settings.py b/backend/application/settings.py index 5f658f3bd3..06f90e0679 100644 --- a/backend/application/settings.py +++ b/backend/application/settings.py @@ -65,6 +65,10 @@ INSTALLED_APPS = [ # 自定义应用 My_Apps = [ 'apps.crud_patron', # 客户管理 + 'apps.product', # 产品管理 + 'apps.inventory', # 库存管理 + 'apps.production', # 生产管理 + 'apps.finance', # 财务管理 ] INSTALLED_APPS += My_Apps @@ -418,4 +422,5 @@ from dvadmin3_celery.settings import * # celery 异步任务 #from dvadmin_social_auth.settings import * #from dvadmin_uniapp.settings import * # ... +from dvadmin3_flow.settings import * # 审批流组件 # ********** 一键导入插件配置结束 ********** diff --git a/backend/application/urls.py b/backend/application/urls.py index 78e816dada..ea096cf08d 100644 --- a/backend/application/urls.py +++ b/backend/application/urls.py @@ -124,7 +124,12 @@ urlpatterns = ( #添加如下内容,把自己的路由单独写出来,这样方便与dvadmin3的官方路由作区分 My_Urls = ( [ #这里的crud_demo是指django创建的应用名称crud_demo - path('',include('apps.crud_patron.urls')),] + path('',include('apps.crud_patron.urls')), + path('',include('apps.inventory.urls')), + path('',include('apps.product.urls')), + path('',include('apps.production.urls')), + path('',include('apps.finance.urls')), + ] ) # 这里把自己的路径单独出来,后面再追加在一起 diff --git a/backend/apps/crud_patron/models.py b/backend/apps/crud_patron/models.py index 616241fdd8..2932719902 100644 --- a/backend/apps/crud_patron/models.py +++ b/backend/apps/crud_patron/models.py @@ -3,12 +3,18 @@ from django.db import models # Create your models here. from dvadmin.utils.models import CoreModel, table_prefix from dvadmin.system.models import Users, Dictionary, FileList +from apps.product.models import ProductModel +from apps.production.models import SampleCostModel +from apps.utils.random_code import sell_order_id, contract_order_id, sample_order_id class CrudPatronAddressModel(CoreModel): + """ + 收件人信息表 + """ name = models.CharField(max_length=255, verbose_name="收件人名称", help_text="收件人名称") mobile = models.CharField(max_length=255, verbose_name="收件人手机", help_text="收件人手机") - address = models.CharField(max_length=255, verbose_name="收件地址", help_text="收件地址") + address = models.CharField(max_length=255, verbose_name="详细地址", help_text="详细地址") note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") def __str__(self): @@ -22,7 +28,11 @@ class CrudPatronAddressModel(CoreModel): class CrudPatronModel(CoreModel): + """ + 客户管理表 + """ username = models.CharField(max_length=255, verbose_name="客户名称", null=True, blank=True, help_text="客户名称") + code = models.CharField(max_length=255, verbose_name="客户代号", null=True, blank=True, help_text="客户代号") phone = models.CharField(max_length=255, verbose_name="联系电话", null=True, blank=True, help_text="联系电话") email = models.EmailField(max_length=255, verbose_name="邮箱地址", null=True, blank=True, help_text="邮箱地址") age = models.IntegerField(verbose_name="年龄", null=True, blank=True, help_text="年龄") @@ -59,3 +69,94 @@ class CrudPatronModel(CoreModel): verbose_name = '客户管理表' verbose_name_plural = verbose_name ordering = ('-create_datetime',) + + +class ContractModel(CoreModel): + """ + 合同管理表 + """ + contract_ids = models.CharField(max_length=255, verbose_name="合同编号", null=True, blank=True, help_text="合同编号") + contract_type = models.CharField(max_length=255, verbose_name="合同类型", help_text="合同类型") + contract_remark = models.TextField(verbose_name="合同备注", null=True, blank=True, help_text="合同备注") + contract_file = models.JSONField(verbose_name="附件", null=True, blank=True, help_text="附件") + contract_user = models.ForeignKey(CrudPatronModel, on_delete=models.CASCADE, null=True, blank=True, verbose_name="合同客户", help_text="合同客户") + + class Meta: + db_table = table_prefix + 'crud_contract' + verbose_name = '合同管理表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.contract_ids}" + + def save(self, *args, **kwargs): + if not self.contract_ids: + self.contract_ids = contract_order_id() + super().save(*args, **kwargs) + + +class SellOrderModel(CoreModel): + """ + 销售订单表 + """ + order_ids = models.CharField(max_length=255, verbose_name="订单编号", null=True, blank=True, help_text="订单编号") + order_type = models.CharField(max_length=255, verbose_name="订单类型", help_text="订单类型") + order_status = models.CharField(max_length=255, verbose_name="订单状态", null=True, blank=True, help_text="订单状态") + order_remark = models.TextField(verbose_name="订单备注", null=True, blank=True, help_text="订单备注") + order_user = models.ForeignKey(CrudPatronModel, on_delete=models.CASCADE, verbose_name="订单客户", null=True, blank=True, help_text="订单客户") + order_file = models.JSONField(verbose_name="附件", null=True, blank=True, help_text="附件") + order_payment_method = models.CharField(max_length=255, verbose_name="付款方式", null=True, blank=True, help_text="付款方式") + order_payment_remark = models.CharField(max_length=255, verbose_name="付款备注", null=True, blank=True, help_text="付款备注") + order_transport = models.CharField(max_length=255, verbose_name="运输方式", null=True, blank=True, help_text="运输方式") + order_discount = models.FloatField(max_length=255, verbose_name="折扣", null=True, blank=True, help_text="折扣") + order_discount_reason = models.CharField(max_length=255, verbose_name="折扣理由", null=True, blank=True, help_text="折扣理由") + order_delivery_date = models.CharField(max_length=255, verbose_name="交货日期", help_text="交货日期") + order_contract = models.ManyToManyField(ContractModel, verbose_name="合同", blank=True, db_constraint=False, help_text="合同") + order_product = models.ManyToManyField(ProductModel, verbose_name="产品信息", blank=True, db_constraint=False, help_text="产品信息") + + class Meta: + db_table = table_prefix + 'crud_sell_order' + verbose_name = '销售订单表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.order_ids}" + + def save(self, *args, **kwargs): + if not self.order_ids: + self.order_ids = sell_order_id() + super().save(*args, **kwargs) + + +# 样品单 +class SampleOrderModel(CoreModel): + """ + 样品单 + """ + order_ids = models.CharField(max_length=255, verbose_name="样品编号", null=True, blank=True, help_text="样品编号") + order_type = models.CharField(max_length=255, verbose_name="样品类型", help_text="样品类型") + order_status = models.CharField(max_length=255, verbose_name="样品状态", null=True, blank=True, help_text="样品状态") + order_user = models.ForeignKey(CrudPatronModel, on_delete=models.CASCADE, verbose_name="订单客户", null=True, blank=True, help_text="订单客户") + order_payment_method = models.CharField(max_length=255, verbose_name="付款方式", null=True, blank=True, help_text="付款方式") + order_payment_remark = models.CharField(max_length=255, verbose_name="付款备注", null=True, blank=True, help_text="付款备注") + order_transport = models.CharField(max_length=255, verbose_name="运输方式", null=True, blank=True, help_text="运输方式") + order_product = models.TextField(verbose_name="样品信息", help_text="样品信息") + order_file = models.JSONField(verbose_name="附件", null=True, blank=True, help_text="附件") + order_sample = models.ManyToManyField(SampleCostModel, verbose_name="样品成本", blank=True, db_constraint=False, help_text="样品成本") + order_remark = models.TextField(verbose_name="订单备注", null=True, blank=True, help_text="订单备注") + + class Meta: + db_table = table_prefix + 'crud_sample_order' + verbose_name = '样品单' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.order_ids}" + + def save(self, *args, **kwargs): + if not self.order_ids: + self.order_ids = sample_order_id() + super().save(*args, **kwargs) diff --git a/backend/apps/crud_patron/serializers.py b/backend/apps/crud_patron/serializers.py index 2ba89f2514..c4be4014ee 100644 --- a/backend/apps/crud_patron/serializers.py +++ b/backend/apps/crud_patron/serializers.py @@ -8,9 +8,10 @@ @Version: 1.0 """ -from .models import CrudPatronModel, CrudPatronAddressModel +from .models import CrudPatronModel, CrudPatronAddressModel, SellOrderModel, ContractModel from dvadmin.utils.serializers import CustomModelSerializer from rest_framework import serializers +from django.forms.models import model_to_dict class CrudPatronAddressModelExportImportSerializer(CustomModelSerializer): @@ -137,3 +138,29 @@ class CrudPatronModelCreateUpdateSerializer(CustomModelSerializer): # 仅当新建时添加关联(更新时已存在关联) instance.addressee.add(address) + + +class SellOrderModelSerializer(CustomModelSerializer): + + class Meta: + model = SellOrderModel + fields = "__all__" + + def get_order_contract(self, obj): + """ 结构化合同字段 """ + return [ + model_to_dict(item) for item in obj.order_contract.all() + ] + + def get_order_product(self, obj): + """ 结构化产品信息字段 """ + return [ + model_to_dict(item) for item in obj.order_product.all() + ] + + +class ContractModelSerializer(CustomModelSerializer): + + class Meta: + model = ContractModel + fields = "__all__" diff --git a/backend/apps/crud_patron/urls.py b/backend/apps/crud_patron/urls.py index 6b6c2809ae..5822a96489 100644 --- a/backend/apps/crud_patron/urls.py +++ b/backend/apps/crud_patron/urls.py @@ -12,11 +12,14 @@ from rest_framework.routers import SimpleRouter from .views import CrudPatronModelViewSet, CrudPatronAddressModelViewSet +from .views import SellOrderModelViewSet, ContractModelViewSet router = SimpleRouter() # 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudPatronViewSet router.register("api/CrudPatronModelViewSet", CrudPatronModelViewSet) router.register("api/CrudPatronAddressModelViewSet", CrudPatronAddressModelViewSet) +router.register("api/SellOrderModelViewSet", SellOrderModelViewSet) +router.register("api/ContractModelViewSet", ContractModelViewSet) urlpatterns = [ ] diff --git a/backend/apps/crud_patron/views.py b/backend/apps/crud_patron/views.py index fc32d9816f..ad30a14f89 100644 --- a/backend/apps/crud_patron/views.py +++ b/backend/apps/crud_patron/views.py @@ -1,10 +1,12 @@ from django.shortcuts import render # Create your views here. -from .models import CrudPatronModel, CrudPatronAddressModel +from .models import CrudPatronModel, CrudPatronAddressModel, SellOrderModel, ContractModel from .serializers import CrudPatronModelSerializer, CrudPatronModelCreateUpdateSerializer from .serializers import CrudPatronModelExportSerializer, CrudPatronModelImportSerializer from .serializers import CrudPatronAddressModelSerializer, CrudPatronAddressModelExportImportSerializer +from .serializers import SellOrderModelSerializer +from .serializers import ContractModelSerializer from dvadmin.utils.viewset import CustomModelViewSet @@ -78,3 +80,48 @@ class CrudPatronAddressModelViewSet(CustomModelViewSet): import_serializer_class = CrudPatronAddressModelExportImportSerializer import_field_dict = data_dict + +class SellOrderModelViewSet(CustomModelViewSet): + """ + 销售订单 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = SellOrderModel.objects.all() + serializer_class = SellOrderModelSerializer + create_serializer_class = SellOrderModelSerializer + update_serializer_class = SellOrderModelSerializer + + # data_dict = { + # "name": "收件人名称", + # "mobile": "收件人手机", + # "address": "收件地址", + # "note": "备注", + # } + # + # # 导出序列化器 + # export_serializer_class = CrudPatronAddressModelExportImportSerializer + # export_field_label = data_dict + # + # # 导入序列化器 + # import_serializer_class = CrudPatronAddressModelExportImportSerializer + # import_field_dict = data_dict + + +class ContractModelViewSet(CustomModelViewSet): + """ + 合同 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = ContractModel.objects.all() + serializer_class = ContractModelSerializer + create_serializer_class = ContractModelSerializer + update_serializer_class = ContractModelSerializer + diff --git a/backend/apps/finance/__init__.py b/backend/apps/finance/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/finance/admin.py b/backend/apps/finance/admin.py new file mode 100644 index 0000000000..8c38f3f3da --- /dev/null +++ b/backend/apps/finance/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/apps/finance/apps.py b/backend/apps/finance/apps.py new file mode 100644 index 0000000000..242a67c8f1 --- /dev/null +++ b/backend/apps/finance/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class FinanceConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "apps.finance" diff --git a/backend/apps/finance/migrations/__init__.py b/backend/apps/finance/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/finance/models.py b/backend/apps/finance/models.py new file mode 100644 index 0000000000..9fc9d680dd --- /dev/null +++ b/backend/apps/finance/models.py @@ -0,0 +1,4 @@ +from django.db import models + +# Create your models here. +from dvadmin.utils.models import CoreModel, table_prefix diff --git a/backend/apps/finance/tests.py b/backend/apps/finance/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/backend/apps/finance/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/apps/finance/urls.py b/backend/apps/finance/urls.py new file mode 100644 index 0000000000..fe4bcb7979 --- /dev/null +++ b/backend/apps/finance/urls.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/16 10:07 +@File: urls.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + + +from rest_framework.routers import SimpleRouter + +router = SimpleRouter() +# 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudPatronViewSet + +urlpatterns = [ +] +urlpatterns += router.urls \ No newline at end of file diff --git a/backend/apps/finance/views.py b/backend/apps/finance/views.py new file mode 100644 index 0000000000..91ea44a218 --- /dev/null +++ b/backend/apps/finance/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/backend/apps/inventory/__init__.py b/backend/apps/inventory/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/inventory/admin.py b/backend/apps/inventory/admin.py new file mode 100644 index 0000000000..8c38f3f3da --- /dev/null +++ b/backend/apps/inventory/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/apps/inventory/apps.py b/backend/apps/inventory/apps.py new file mode 100644 index 0000000000..c6aac5f577 --- /dev/null +++ b/backend/apps/inventory/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class InventoryConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "apps.inventory" diff --git a/backend/apps/inventory/migrations/__init__.py b/backend/apps/inventory/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/inventory/models.py b/backend/apps/inventory/models.py new file mode 100644 index 0000000000..5ca59d0032 --- /dev/null +++ b/backend/apps/inventory/models.py @@ -0,0 +1,184 @@ +from django.db import models + +# Create your models here. +from dvadmin.utils.models import CoreModel, table_prefix +from apps.utils.random_code import assembly_product_code, finished_product_code, semi_finished_product_code +from apps.utils.random_code import materiel_code, raw_material_code + + +class StashManageModel(CoreModel): + """ + 仓库管理 + """ + stash_name = models.CharField(max_length=255, verbose_name="仓库名称", help_text="仓库名称") + stash_address = models.TextField(verbose_name="仓库地址", null=True, blank=True, help_text="仓库地址") + stash_position = models.CharField(max_length=255, verbose_name="仓位", help_text="仓位") + stash_note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") + + class Meta: + db_table = table_prefix + 'crud_stash_manage' + verbose_name = '仓库管理表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.stash_name}" + + +class InAndOutRecordModel(CoreModel): + """ + 入库出库记录表 + """ + in_or_out = models.CharField(max_length=255, verbose_name="出入库类型", help_text="出入库类型") + in_or_out_aim = models.CharField(max_length=255, verbose_name="进出来源与目的", help_text="进出来源与目的") + in_or_out_code = models.CharField(max_length=255, verbose_name="商品编号", help_text="商品编号") + in_or_out_name = models.CharField(max_length=255, verbose_name="商品名称", null=True, blank=True, help_text="商品名称") + in_or_out_type = models.CharField(max_length=255, verbose_name="商品类型", null=True, blank=True, help_text="商品类型") + in_or_out_number = models.IntegerField(verbose_name="出入库数量", help_text="出入库数量") + in_or_out_unit = models.CharField(max_length=255, verbose_name="单位", help_text="单位") + in_or_out_stash = models.ForeignKey(StashManageModel, on_delete=models.CASCADE, verbose_name="仓位", null=True, blank=True, help_text="仓位") + in_or_out_note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") + + class Meta: + db_table = table_prefix + 'crud_in_and_out_record' + verbose_name = '出入库记录表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.in_or_out}" + + +class TransferRecordModel(CoreModel): + """ + 库间调拨记录表 + """ + transfer_aim = models.CharField(max_length=255, verbose_name="调拨来源与目的", help_text="调拨来源与目的") + transfer_out_stash = models.ForeignKey(StashManageModel, on_delete=models.CASCADE, verbose_name="调出仓名称", help_text="调出仓名称", related_name='transfer_out_stash') + transfer_code = models.CharField(max_length=255, verbose_name="商品编号", help_text="商品编号") + transfer_name = models.CharField(max_length=255, verbose_name="商品名称", null=True, blank=True, help_text="商品名称") + transfer_product_type = models.CharField(max_length=255, verbose_name="商品类型", null=True, blank=True, help_text="商品类型") + transfer_number = models.IntegerField(verbose_name="调拨数量", help_text="调拨数量") + transfer_unit = models.CharField(max_length=255, verbose_name="单位", help_text="单位") + transfer_in_stash = models.ForeignKey(StashManageModel, on_delete=models.CASCADE, verbose_name="调进仓名称", help_text="调进仓名称", related_name='transfer_in_stash') + transfer_note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") + + class Meta: + db_table = table_prefix + 'crud_transfer_record' + verbose_name = '库间调拨记录表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.transfer_code}" + + +class ProductShareModel(models.Model): + """ + 商品共享字段 + """ + code = models.CharField(max_length=255, verbose_name="编号", help_text="编号") + specification = models.CharField(max_length=255, verbose_name="规格", help_text="规格") + name = models.CharField(max_length=255, verbose_name="名称", help_text="名称") + number = models.IntegerField(verbose_name="数量", help_text="数量") + unit = models.CharField(max_length=255, verbose_name="单位", help_text="单位") + price = models.FloatField(max_length=255, verbose_name="单价", help_text="单价") + note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") + images = models.JSONField(verbose_name="图片", null=True, help_text="图片") + stash = models.ForeignKey(StashManageModel, on_delete=models.CASCADE, verbose_name="所属仓位", help_text="所属仓位") + + +class AssemblyProductModel(ProductShareModel, CoreModel): + """ + 组合商品 + """ + class Meta: + db_table = table_prefix + 'crud_product_assembly' + verbose_name = '组合商品' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.code}" + + def save(self, *args, **kwargs): + if not self.code: + self.code = assembly_product_code() + super().save(*args, **kwargs) + + +class FinishedProductModel(ProductShareModel, CoreModel): + """ + 成品商品 + """ + class Meta: + db_table = table_prefix + 'crud_product_finished' + verbose_name = '成品商品' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.code}" + + def save(self, *args, **kwargs): + if not self.code: + self.code = finished_product_code() + super().save(*args, **kwargs) + + +class SemiFinishedProductModel(ProductShareModel, CoreModel): + """ + 半成品商品 + """ + class Meta: + db_table = table_prefix + 'crud_product_semi_finished' + verbose_name = '半成品商品' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.code}" + + def save(self, *args, **kwargs): + if not self.code: + self.code = semi_finished_product_code() + super().save(*args, **kwargs) + + +class MaterielModel(ProductShareModel, CoreModel): + """ + 物料 + """ + class Meta: + db_table = table_prefix + 'crud_product_materiel' + verbose_name = '物料' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.code}" + + def save(self, *args, **kwargs): + if not self.code: + self.code = materiel_code() + super().save(*args, **kwargs) + + +class RawMaterialModel(ProductShareModel, CoreModel): + """ + 原材料 + """ + class Meta: + db_table = table_prefix + 'crud_product_raw_material' + verbose_name = '原材料' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.code}" + + def save(self, *args, **kwargs): + if not self.code: + self.code = raw_material_code() + super().save(*args, **kwargs) + diff --git a/backend/apps/inventory/serializers.py b/backend/apps/inventory/serializers.py new file mode 100644 index 0000000000..f052351ced --- /dev/null +++ b/backend/apps/inventory/serializers.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/16 09:59 +@File: serializers.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + +from .models import StashManageModel, InAndOutRecordModel, TransferRecordModel +from .models import AssemblyProductModel, FinishedProductModel, SemiFinishedProductModel, MaterielModel, RawMaterialModel +from dvadmin.utils.serializers import CustomModelSerializer +from rest_framework import serializers +from django.forms.models import model_to_dict + + +class StashManageModelSerializer(CustomModelSerializer): + """ + 仓库管理序列化器 + """ + class Meta: + model = StashManageModel + fields = "__all__" # 指定需要序列化的字段 + + +class InAndOutRecordModelSerializer(CustomModelSerializer): + """ + 入库出库记录序列化器 + """ + class Meta: + model = InAndOutRecordModel + fields = "__all__" # 指定需要序列化的字段 + + +class TransferRecordModelSerializer(CustomModelSerializer): + """ + 调拨记录序列化器 + """ + class Meta: + model = TransferRecordModel + fields = "__all__" # 指定需要序列化的字段 + + +class AssemblyProductModelSerializer(CustomModelSerializer): + """ + 组合商品序列化器 + """ + class Meta: + model = AssemblyProductModel + fields = "__all__" # 指定需要序列化的字段 + + +class FinishedProductModelSerializer(CustomModelSerializer): + """ + 成品序列化器 + """ + class Meta: + model = FinishedProductModel + fields = "__all__" # 指定需要序列化的字段 + + +class SemiFinishedProductModelSerializer(CustomModelSerializer): + """ + 产品半成品序列化器 + """ + class Meta: + model = SemiFinishedProductModel + fields = "__all__" # 指定需要序列化的字段 + + +class MaterielModelSerializer(CustomModelSerializer): + """ + 物料序列化器 + """ + class Meta: + model = MaterielModel + fields = "__all__" # 指定需要序列化的字段 + + +class RawMaterialModelSerializer(CustomModelSerializer): + """ + 原料序列化器 + """ + class Meta: + model = RawMaterialModel + fields = "__all__" # 指定需要序列化的字段 + diff --git a/backend/apps/inventory/tests.py b/backend/apps/inventory/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/backend/apps/inventory/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/apps/inventory/urls.py b/backend/apps/inventory/urls.py new file mode 100644 index 0000000000..2820c3b4b8 --- /dev/null +++ b/backend/apps/inventory/urls.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/16 10:07 +@File: urls.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + + +from rest_framework.routers import SimpleRouter +from .views import StashManageModelViewSet, InAndOutRecordModelViewSet, TransferRecordModelViewSet +from .views import AssemblyProductModelViewSet, FinishedProductModelViewSet, SemiFinishedProductModelViewSet, MaterielModelViewSet, RawMaterialModelViewSet + +router = SimpleRouter() +# 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudPatronViewSet +router.register("api/StashManageModelViewSet", StashManageModelViewSet) +router.register("api/InAndOutRecordModelViewSet", InAndOutRecordModelViewSet) +router.register("api/TransferRecordModelViewSet", TransferRecordModelViewSet) +router.register("api/ProductAssemblyModelViewSet", AssemblyProductModelViewSet) +router.register("api/FinishedProductModelViewSet", FinishedProductModelViewSet) +router.register("api/SemiFinishedProductModelViewSet", SemiFinishedProductModelViewSet) +router.register("api/MaterielModelViewSet", MaterielModelViewSet) +router.register("api/RawMaterialModelViewSet", RawMaterialModelViewSet) + +urlpatterns = [ +] +urlpatterns += router.urls \ No newline at end of file diff --git a/backend/apps/inventory/views.py b/backend/apps/inventory/views.py new file mode 100644 index 0000000000..01f083880d --- /dev/null +++ b/backend/apps/inventory/views.py @@ -0,0 +1,174 @@ +from django.shortcuts import render + +# Create your views here. +from dvadmin.utils.viewset import CustomModelViewSet +from .models import StashManageModel, InAndOutRecordModel, TransferRecordModel +from .models import AssemblyProductModel, FinishedProductModel, SemiFinishedProductModel, MaterielModel, RawMaterialModel +from .serializers import StashManageModelSerializer +from .serializers import InAndOutRecordModelSerializer +from .serializers import TransferRecordModelSerializer +from .serializers import AssemblyProductModelSerializer +from .serializers import FinishedProductModelSerializer +from .serializers import SemiFinishedProductModelSerializer +from .serializers import MaterielModelSerializer +from .serializers import RawMaterialModelSerializer + + +class StashManageModelViewSet(CustomModelViewSet): + """ + 仓库管理 + list: + 仓库管理列表数据 + create: + 创建仓库管理 + update: + 更新仓库管理 + retrieve: + 获取仓库管理详情 + destroy: + 删除仓库管理 + """ + queryset = StashManageModel.objects.all() + serializer_class = StashManageModelSerializer + create_serializer_class = StashManageModelSerializer + update_serializer_class = StashManageModelSerializer + + +class InAndOutRecordModelViewSet(CustomModelViewSet): + """ + 入库出库记录 + list: + 入库出库记录列表数据 + create: + 创建入库出库记录 + update: + 更新入库出库记录 + retrieve: + 获取入库出库记录详情 + destroy: + 删除入库出库记录 + """ + queryset = InAndOutRecordModel.objects.all() + serializer_class = InAndOutRecordModelSerializer + create_serializer_class = InAndOutRecordModelSerializer + update_serializer_class = InAndOutRecordModelSerializer + + +class TransferRecordModelViewSet(CustomModelViewSet): + """ + 调拨记录 + list: + 调拨记录列表数据 + create: + 创建调拨记录 + update: + 更新调拨记录 + retrieve: + 获取调拨记录详情 + destroy: + 删除调拨记录 + """ + queryset = TransferRecordModel.objects.all() + serializer_class = TransferRecordModelSerializer + create_serializer_class = TransferRecordModelSerializer + update_serializer_class = TransferRecordModelSerializer + + +class AssemblyProductModelViewSet(CustomModelViewSet): + """ + 组合商品 + list: + 组合商品列表数据 + create: + 创建组合商品 + update: + 更新组合商品 + retrieve: + 获取组合商品详情 + destroy: + 删除组合商品 + """ + queryset = AssemblyProductModel.objects.all() + serializer_class = AssemblyProductModelSerializer + create_serializer_class = AssemblyProductModelSerializer + update_serializer_class = AssemblyProductModelSerializer + + +class FinishedProductModelViewSet(CustomModelViewSet): + """ + 成品商品 + list: + 成品商品列表数据 + create: + 创建成品商品 + update: + 更新成品商品 + retrieve: + 获取成品商品详情 + destroy: + 删除成品商品 + """ + queryset = FinishedProductModel.objects.all() + serializer_class = FinishedProductModelSerializer + create_serializer_class = FinishedProductModelSerializer + update_serializer_class = FinishedProductModelSerializer + + +class SemiFinishedProductModelViewSet(CustomModelViewSet): + """ + 半成品商品 + list: + 半成品商品列表数据 + create: + 创建半成品商品 + update: + 更新半成品商品 + retrieve: + 获取半成品商品详情 + destroy: + 删除半成品商品 + """ + queryset = SemiFinishedProductModel.objects.all() + serializer_class = SemiFinishedProductModelSerializer + create_serializer_class = SemiFinishedProductModelSerializer + update_serializer_class = SemiFinishedProductModelSerializer + + +class MaterielModelViewSet(CustomModelViewSet): + """ + 物料 + list: + 物料列表数据 + create: + 创建物料 + update: + 更新物料 + retrieve: + 获取物料详情 + destroy: + 删除物料 + """ + queryset = MaterielModel.objects.all() + serializer_class = MaterielModelSerializer + create_serializer_class = MaterielModelSerializer + update_serializer_class = MaterielModelSerializer + + +class RawMaterialModelViewSet(CustomModelViewSet): + """ + 原料 + list: + 原料列表数据 + create: + 创建原料 + update: + 更新原料 + retrieve: + 获取原料详情 + destroy: + 删除原料 + """ + queryset = RawMaterialModel.objects.all() + serializer_class = RawMaterialModelSerializer + create_serializer_class = RawMaterialModelSerializer + update_serializer_class = RawMaterialModelSerializer diff --git a/backend/apps/product/__init__.py b/backend/apps/product/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/product/admin.py b/backend/apps/product/admin.py new file mode 100644 index 0000000000..8c38f3f3da --- /dev/null +++ b/backend/apps/product/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/apps/product/apps.py b/backend/apps/product/apps.py new file mode 100644 index 0000000000..824c1364ff --- /dev/null +++ b/backend/apps/product/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ProductConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "apps.product" diff --git a/backend/apps/product/migrations/__init__.py b/backend/apps/product/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/product/models.py b/backend/apps/product/models.py new file mode 100644 index 0000000000..861a605545 --- /dev/null +++ b/backend/apps/product/models.py @@ -0,0 +1,26 @@ +from random import choices + +from django.db import models + +# Create your models here. +from dvadmin.utils.models import CoreModel, table_prefix +from apps.inventory.models import StashManageModel + + +class ProductModel(CoreModel): + """ + 产品表 + """ + product_stash = models.ForeignKey(StashManageModel, on_delete=models.CASCADE, verbose_name="产品仓位", null=True, blank=True, help_text="产品仓位") + product_images = models.JSONField(verbose_name="图片墙", null=True, blank=True, help_text="图片墙") + product_file = models.JSONField(verbose_name="附件", null=True, blank=True, help_text="附件") + product_note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") + + class Meta: + db_table = table_prefix + 'product_model' + verbose_name = 'BOM表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.product_ids}" diff --git a/backend/apps/product/tests.py b/backend/apps/product/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/backend/apps/product/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/apps/product/urls.py b/backend/apps/product/urls.py new file mode 100644 index 0000000000..fe4bcb7979 --- /dev/null +++ b/backend/apps/product/urls.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/16 10:07 +@File: urls.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + + +from rest_framework.routers import SimpleRouter + +router = SimpleRouter() +# 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudPatronViewSet + +urlpatterns = [ +] +urlpatterns += router.urls \ No newline at end of file diff --git a/backend/apps/product/views.py b/backend/apps/product/views.py new file mode 100644 index 0000000000..91ea44a218 --- /dev/null +++ b/backend/apps/product/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/backend/apps/production/__init__.py b/backend/apps/production/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/production/admin.py b/backend/apps/production/admin.py new file mode 100644 index 0000000000..8c38f3f3da --- /dev/null +++ b/backend/apps/production/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/apps/production/apps.py b/backend/apps/production/apps.py new file mode 100644 index 0000000000..5bdc7cb5f2 --- /dev/null +++ b/backend/apps/production/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ProductionConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "apps.production" diff --git a/backend/apps/production/migrations/__init__.py b/backend/apps/production/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/apps/production/models.py b/backend/apps/production/models.py new file mode 100644 index 0000000000..922cc756fc --- /dev/null +++ b/backend/apps/production/models.py @@ -0,0 +1,26 @@ +from django.db import models + +# Create your models here. +from dvadmin.utils.models import CoreModel, table_prefix + + +# 样品成本 +class SampleCostModel(CoreModel): + """ + 样品成本 + """ + sample_name = models.CharField(max_length=255, verbose_name="名称", help_text="名称") + sample_specification = models.CharField(max_length=255, verbose_name="规格", help_text="规格") + sample_number = models.IntegerField(verbose_name="数量", help_text="数量") + sample_price = models.FloatField(verbose_name="单价", help_text="单价") + sample_total_price = models.FloatField(verbose_name="总价", help_text="总价") + sample_note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") + + class Meta: + db_table = table_prefix + 'crud_sample_cost' + verbose_name = '样品成本表' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def __str__(self): + return f"{self.name}" diff --git a/backend/apps/production/serializers.py b/backend/apps/production/serializers.py new file mode 100644 index 0000000000..cb9ffee256 --- /dev/null +++ b/backend/apps/production/serializers.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/4/11 11:54 +@File: serializers.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + +from .models import SampleCostModel +from dvadmin.utils.serializers import CustomModelSerializer + + +class SampleCostModelSerializer(CustomModelSerializer): + class Meta: + model = SampleCostModel + fields = "__all__" # 指定需要序列化的字段 + diff --git a/backend/apps/production/tests.py b/backend/apps/production/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/backend/apps/production/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/apps/production/urls.py b/backend/apps/production/urls.py new file mode 100644 index 0000000000..13fad214bc --- /dev/null +++ b/backend/apps/production/urls.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/3/16 10:07 +@File: urls.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + + +from rest_framework.routers import SimpleRouter +from .views import SampleCostModelViewSet + +router = SimpleRouter() +# 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudPatronViewSet +router.register("api/SampleCostModelViewSet", SampleCostModelViewSet) + +urlpatterns = [ +] +urlpatterns += router.urls \ No newline at end of file diff --git a/backend/apps/production/views.py b/backend/apps/production/views.py new file mode 100644 index 0000000000..cf573abd52 --- /dev/null +++ b/backend/apps/production/views.py @@ -0,0 +1,26 @@ +from django.shortcuts import render + +# Create your views here. +from .models import SampleCostModel +from .serializers import SampleCostModelSerializer +from dvadmin.utils.viewset import CustomModelViewSet + + +class SampleCostModelViewSet(CustomModelViewSet): + """ + 样本成本 + list: + 样本成本列表数据 + create: + 创建样本成本 + update: + 更新样本成本 + retrieve: + 获取样本成本详情 + destroy: + 删除样本成本 + """ + queryset = SampleCostModel.objects.all() + serializer_class = SampleCostModelSerializer + create_serializer_class = SampleCostModelSerializer + update_serializer_class = SampleCostModelSerializer diff --git a/backend/apps/utils/random_code.py b/backend/apps/utils/random_code.py new file mode 100644 index 0000000000..e086b314dd --- /dev/null +++ b/backend/apps/utils/random_code.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +""" +@Time: 2025/4/7 11:17 +@File: random_code.py +@IDE: PyCharm +@Auth: Kendrick.Kc.Guan +@Email: 509556985@qq.com +@Version: 1.0 +""" + + +import random +import string + + +def assembly_product_code(n: int = 16): + """ 组合商品编号 - 字母加数字组成16位随机数 """ + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for _ in range(n)) + + +def finished_product_code(n: int = 16): + """ 成品商品编号 - 字母加数字组成16位随机数 """ + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for _ in range(n)) + + +def semi_finished_product_code(n: int = 16): + """ 半成品编号 - 字母加数字组成16位随机数 """ + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for _ in range(n)) + + +def materiel_code(n: int = 16): + """ 物料编号 - 字母加数字组成16位随机数 """ + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for _ in range(n)) + + +def raw_material_code(n: int = 16): + """ 原材料编号 - 字母加数字组成16位随机数 """ + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for _ in range(n)) + + +def contract_order_id(n: int = 16): + """ 合同编号 - 字母加数字组成16位随机数 """ + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for _ in range(n)) + + +def sell_order_id(n: int = 16): + """ 销售订单编号 - 字母加数字组成16位随机数 """ + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for _ in range(n)) + + +def sample_order_id(n: int = 16): + """ 样品单编号 - 字母加数字组成16位随机数 """ + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for _ in range(n)) \ No newline at end of file diff --git a/backend/conf/env.py b/backend/conf/env.py index 16ebbfe353..3531ed508a 100644 --- a/backend/conf/env.py +++ b/backend/conf/env.py @@ -16,6 +16,7 @@ DATABASE_NAME = 'xxibears' # mysql 时使用 # 数据库地址 改为自己数据库地址 DATABASE_HOST = '192.168.0.252' +# DATABASE_HOST = '177.10.0.13' # 正式环境使用 # # 数据库端口 DATABASE_PORT = 3306 # # 数据库用户名 @@ -32,15 +33,18 @@ REDIS_DB = 1 CELERY_BROKER_DB = 3 REDIS_PASSWORD = 'xxibears@666' REDIS_HOST = '192.168.0.252' +# REDIS_HOST = '177.10.0.15' # 正式环境使用 REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' # ================================================= # # ****************** 功能 启停 ******************* # # ================================================= # DEBUG = True +# DEBUG = False # 正式环境建议关闭 # 启动登录详细概略获取(通过调用api获取ip详细地址。如果是内网,关闭即可) ENABLE_LOGIN_ANALYSIS_LOG = True # 登录接口 /api/token/ 是否需要验证码认证,用于测试,正式环境建议取消 LOGIN_NO_CAPTCHA_AUTH = True +# LOGIN_NO_CAPTCHA_AUTH = False # 正式环境建议取消 # ================================================= # # ****************** 其他 配置 ******************* # # ================================================= # diff --git a/backend/plugins/__MACOSX/._dvadmin3-flow-backend b/backend/plugins/__MACOSX/._dvadmin3-flow-backend new file mode 100644 index 0000000000000000000000000000000000000000..f752be5071d73bf1c3e40fe00292b0e4846a7ee8 GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S 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 { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { // 合同 + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export:{ + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('ContractModelViewSet:Export'), + text:"导出",//按钮文字 + title:"导出",//鼠标停留显示的信息 + click(){ + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('ContractModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 130, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('ContractModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('ContractModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('ContractModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('ContractModelViewSet:Delete') + }, + }, + }, + columns: { + contract_ids: { + title: '合同编号', + type: 'text', + search: { + show: true + }, + column: { + sortable: 'custom', + }, + form: { + show: true, + component: { + placeholder: '合同编号自动生成,无需输入.', + }, + }, + addForm: { + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + } + }, + contract_type: { + title: '合同类型', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('contract_type'), + }), + form: { + rules: [{ required: true, message: '合同类型必选', trigger: 'change' }], + component: { + filterable: true, + placeholder: '请输入合同类型', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + contract_remark: { + title: '合同备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + component: { + placeholder: '请输入合同备注', + }, + }, + }, + contract_user: { + title: '合同客户', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + url: '/api/CrudPatronModelViewSet/', + label: 'username', + value: 'id' + }), + form: { + component: { + filterable: true, + placeholder: '请选择合同客户', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + contract_file: { + title: "上传合同", + type: "file-uploader", + form: { + component: { + limit: 1, + uploader: { + type: "form", + }, + accept: ".pdf,.zip,.7z,.rar", + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最大可上传1个文件(建议使用密码加密后上传)" + }, + column: { + show: false, + component: { + async buildUrl(value) { + return getBaseURL(value); + }, + } + } + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/crud_patron/ContractModelViewSet/index.vue b/web/src/views/crud_patron/ContractModelViewSet/index.vue new file mode 100644 index 0000000000..1f7f459814 --- /dev/null +++ b/web/src/views/crud_patron/ContractModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/crud_patron/CrudPatronAddressModelViewSet/crud.tsx b/web/src/views/crud_patron/CrudPatronAddressModelViewSet/crud.tsx index b9998b7935..659466e14c 100644 --- a/web/src/views/crud_patron/CrudPatronAddressModelViewSet/crud.tsx +++ b/web/src/views/crud_patron/CrudPatronAddressModelViewSet/crud.tsx @@ -26,7 +26,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud return await api.exportData(query) }; - return { + return { // 客户地址管理 crudOptions: { request: { pageRequest, @@ -97,13 +97,13 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud mobile: { title: '手机号码', type: 'input', - search: { show: true }, + search: { show: true }, column: { minWidth: 50, //最小列宽 }, form: { - component:{ - placeholder:"请输入", + component: { + placeholder: "请输入", }, rules: [ { required: true, message: '手机号码必填' }, @@ -119,38 +119,49 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud ], }, }, + // territory: { + // title: "地域", + // search: { show: true }, + // type: "dict-cascader", + // dict: dict({ + // isTree: true, + // url: "/api/system/area/?page=1&limit=999", + // value: "id", + // label: "name", + // }) + // }, address: { - title: '收件地址', - type: 'textarea', - search: { show: true }, - column: { - show: false, - minWidth: 120, - sortable: 'custom', - }, - form: { - rules: [{ required: false }], - component: { - placeholder: '请输入收件地址', - }, - }, - }, + title: '详细地址', + type: 'textarea', + search: { show: true }, + column: { + show: false, + minWidth: 120, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入详细地址', + }, + }, + }, note: { - title: '备注', - type: 'textarea', - search: { show: true }, - column: { - show: false, - minWidth: 120, - sortable: 'custom', - }, - form: { - rules: [{ required: false }], - component: { - placeholder: '请输入备注', - }, - }, - }, + title: '备注', + type: 'textarea', + search: { show: true }, + column: { + show: false, + minWidth: 120, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入备注', + }, + }, + }, }, }, diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx b/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx index 79753e5670..49b6746432 100644 --- a/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/crud.tsx @@ -32,7 +32,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud console.log('这个位置是全局数据:', crudExpose) - return { + return { // 客户管理 crudOptions: { request: { pageRequest, @@ -103,6 +103,25 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud }, }, }, + code: { + title: '客户代号', + type: 'text', + search: { + show: true, + component: { + placeholder: '客户代号', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '客户代号', + }, + }, + }, open_order_name: { title: '开单名称', type: 'text', @@ -173,8 +192,9 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud sortable: 'custom', }, form: { - rules: [{ required: false }], + value: 0, component: { + min: 0, placeholder: '请输入客户年龄', }, }, @@ -259,8 +279,8 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud data: dictionary('express'), }), form: { - rules: [{ required: false }], component: { + filterable: true, placeholder: '请输入默认物流', }, }, @@ -318,7 +338,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud }, //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 valueBuilder(context) { // 将行数据转化为表单组件所需要的值 - if (context.mode !== 'add') { + if (context.mode !== 'add' && context.form.images !== null) { context.form.images.forEach((item, index) => { context.form.images[index] = getBaseURL(item) // 拼接图片地址 }) @@ -353,9 +373,9 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud }, //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 valueBuilder(context) { // 将行数据转化为表单组件所需要的值 - if (context.mode !== 'add') { - context.form.images.forEach((item, index) => { - context.form.images[index] = getBaseURL(item) // 拼接图片地址 + if (context.mode !== 'add' && context.form.files !== null) { + context.form.files.forEach((item, index) => { + context.form.files[index] = getBaseURL(item) // 拼接图片地址 }) } }, diff --git a/web/src/views/crud_patron/CrudPatronModelViewSet/free/crud.tsx b/web/src/views/crud_patron/CrudPatronModelViewSet/free/crud.tsx index cfd89c8207..3a274628d3 100644 --- a/web/src/views/crud_patron/CrudPatronModelViewSet/free/crud.tsx +++ b/web/src/views/crud_patron/CrudPatronModelViewSet/free/crud.tsx @@ -89,7 +89,7 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti }, }, address: { - title: '收件地址', + title: '详细地址', type: 'textarea', form: { component:{ @@ -99,7 +99,7 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti rules: [ { required: true, - message: '收件地址必填项', + message: '详细地址必填项', }, ], }, diff --git a/web/src/views/crud_patron/SellOrderModelViewSet/api.ts b/web/src/views/crud_patron/SellOrderModelViewSet/api.ts new file mode 100644 index 0000000000..6b5e823704 --- /dev/null +++ b/web/src/views/crud_patron/SellOrderModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/SellOrderModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/crud_patron/SellOrderModelViewSet/crud.tsx b/web/src/views/crud_patron/SellOrderModelViewSet/crud.tsx new file mode 100644 index 0000000000..da35ac5407 --- /dev/null +++ b/web/src/views/crud_patron/SellOrderModelViewSet/crud.tsx @@ -0,0 +1,394 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { getBaseURL } from '/@/utils/baseUrl'; +import { createUploaderRules } from "@fast-crud/fast-extends"; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; +import { url } from 'inspector'; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { // 销售订单 + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('SellOrderModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('SellOrderModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 130, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('SellOrderModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('SellOrderModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('SellOrderModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('SellOrderModelViewSet:Delete') + }, + }, + }, + columns: { + order_ids: { + title: '订单编号', + type: 'text', + search: { + show: true + }, + column: { + sortable: 'custom', + }, + form: { + show: true, + component: { + placeholder: '订单编号自动生成,无需输入.', + }, + }, + addForm: { + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + } + }, + order_type: { + title: '订单类型', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('order_type'), + }), + form: { + rules: [{ required: true, message: '订单类型必选', trigger: 'change' }], + component: { + filterable: true, + placeholder: '请输入订单类型', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + order_contract: { + title: '关联合同', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + url: '/api/ContractModelViewSet/', + label: 'contract_ids', + value: 'id' + }), + form: { + component: { + filterable: true, + placeholder: '请选择合同', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + order_status: { + title: '订单状态', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('order_status'), + }), + form: { + component: { + filterable: true, + placeholder: '请输入订单状态', + }, + }, + addForm: { + show: false, + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + order_user: { + title: '订单客户', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + url: '/api/CrudPatronModelViewSet/', + label: 'code', + value: 'id' + }), + form: { + component: { + filterable: true, + placeholder: '请选择订单客户', + }, + helper: { + text: "未找到客户时,需先在销售订单->客户管理中添加客户", + } + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + order_payment_method: { + title: '付款方式', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入付款方式', + }, + }, + column: { + sortable: 'custom', + }, + form: { + component: { + placeholder: '请输入付款方式', + }, + }, + }, + order_payment_remark: { + title: '付款备注', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入付款备注', + }, + }, + column: { + sortable: 'custom', + }, + form: { + component: { + placeholder: '请输入付款备注', + }, + }, + }, + order_transport: { + title: '运输方式', + type: 'dict-select', + search: { + show: true, + component: { + filterable: true, + placeholder: '请选择运输方式', + }, + }, + column: { + sortable: 'custom', + }, + dict: dict({ + data: dictionary('transport'), + }), + form: { + component: { + placeholder: '请选择运输方式', + }, + }, + }, + order_discount: { + title: "折扣", + type: "number", + column: { + sortable: 'custom', + }, + form: { + value: 0, + component: { + min: 0, + max: 10, + step: 0.1 + } + } + }, + order_delivery_date: { + title: "交货日期", + type: "date", + form: { + component: { + //输入输出值格式化 + valueFormat: "YYYY-MM-DD HH:mm:ss", + on: { + change(context) { + console.log("选择的交货日期: ", context); + } + } + } + } + }, + order_discount_reason: { + title: '折扣理由', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入折扣理由', + }, + }, + column: { + sortable: 'custom', + }, + form: { + component: { + placeholder: '请输入折扣理由', + }, + }, + }, + order_remark: { + title: '订单备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入订单备注', + }, + }, + }, + order_file: { + title: "上传附件", + type: "file-uploader", + form: { + component: { + limit: 1, + uploader: { + type: "form", + }, + accept: ".pdf,.zip,.7z,.rar", + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 + if (context.mode !== 'add') { + context.form.order_file.forEach((item, index) => { + context.form.order_file[index] = getBaseURL(item) // 拼接图片地址 + }) + } + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最大可上传1个文件" + }, + column: { + show: false, + component: { + async buildUrl(value) { + return getBaseURL(value); + }, + } + } + }, + }, + form: { + row: { gutter: 20 }, + group: { + groupType: "tabs", //collapse, tabs + accordion: false, + groups: { + base: { + slots: { + label: (scope) => { + return ( + + + 订单基础 + + ); + } + }, + icon: "el-icon-goods", + columns: ["order_ids", "order_type", "order_status", "order_remark", "order_user"] + }, + delivery: { + label: "交付条款", + icon: "el-icon-price-tag", + columns: ["order_payment_method", "order_payment_remark", "order_transport", "order_discount", "order_discount_reason", "order_delivery_date", "order_contract"] + }, + contract: { + label: "附件", + collapsed: true, //默认折叠 + icon: "el-icon-warning-outline", + columns: ["order_file"] + }, + bom: { + label: "BOM", + collapsed: true, //默认折叠 + icon: "el-icon-warning-outline", + columns: ["order_product"] + } + } + } + } + }, + }; +} \ No newline at end of file diff --git a/web/src/views/crud_patron/SellOrderModelViewSet/index.vue b/web/src/views/crud_patron/SellOrderModelViewSet/index.vue new file mode 100644 index 0000000000..b5eddb9829 --- /dev/null +++ b/web/src/views/crud_patron/SellOrderModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/inventory/FinishedProductModelViewSet/api.ts b/web/src/views/inventory/FinishedProductModelViewSet/api.ts new file mode 100644 index 0000000000..8a8d57db62 --- /dev/null +++ b/web/src/views/inventory/FinishedProductModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/FinishedProductModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/inventory/FinishedProductModelViewSet/crud.tsx b/web/src/views/inventory/FinishedProductModelViewSet/crud.tsx new file mode 100644 index 0000000000..9efae51b02 --- /dev/null +++ b/web/src/views/inventory/FinishedProductModelViewSet/crud.tsx @@ -0,0 +1,293 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { getBaseURL } from '/@/utils/baseUrl'; +import { createUploaderRules } from "@fast-crud/fast-extends"; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; +import { url } from 'inspector'; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { // 销售订单 + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('FinishedProductModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('FinishedProductModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 130, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('FinishedProductModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('FinishedProductModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('FinishedProductModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('FinishedProductModelViewSet:Delete') + }, + }, + }, + columns: { + code: { + title: '编号', + type: 'text', + search: { + show: true + }, + column: { + sortable: 'custom', + }, + form: { + show: true, + component: { + placeholder: '编号自动生成,无需输入.', + }, + }, + addForm: { + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + } + }, + specification: { + title: '规格', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入规格', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入规格', + }, + }, + }, + name: { + title: '名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入名称', + }, + }, + }, + number: { + title: '数量', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入数量', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '数量必填' }], + component: { + min: 0, + placeholder: '请输入数量', + }, + }, + }, + transfer_unit: { + title: '单位', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请输入单位', + }, + }, + dict: dict({ + data:dictionary('weight_unit'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '单位必选' }], + component: { + placeholder: '请输入单位', + }, + }, + }, + price: { + title: '单价', + type: '', + search: { + show: false, + component: { + placeholder: '请输入单价', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '单价必填' }], + component: { + min: 0, + max: 10, + step: 0.1, + placeholder: '请输入单价', + }, + }, + }, + stash: { + title: '所属仓位', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入所属仓位', + }, + }, + dict: dict({ + url: '/api/StashManageModelViewSet/', + label: 'stash_position', + value: 'id', + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '所属仓位必选' }], + component: { + placeholder: '请输入所属仓位', + }, + }, + }, + note: { + title: '备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入订单备注', + }, + }, + }, + images: { + title: "照片墙", + type: "image-uploader", + form: { + col:{span:24}, + component: { + limit: 10, + uploader: { + type: "form", + }, + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 + if (context.mode !== 'add' && context.form.images !== null) { + context.form.images.forEach((item, index) => { + context.form.images[index] = getBaseURL(item) // 拼接图片地址 + }) + } + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最多可上传10个图片" + }, + column: { + component: { + // 列显示 + async buildUrl(value) { + return getBaseURL(value); + }, + // 列放大预览 + async buildPreviewUrl({ url, index }: any) { + return url + "?preview=600x600"; + } + } + } + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/inventory/FinishedProductModelViewSet/index.vue b/web/src/views/inventory/FinishedProductModelViewSet/index.vue new file mode 100644 index 0000000000..5b2e1daeac --- /dev/null +++ b/web/src/views/inventory/FinishedProductModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/inventory/InAndOutRecordModelViewSet/api.ts b/web/src/views/inventory/InAndOutRecordModelViewSet/api.ts new file mode 100644 index 0000000000..ef52c511c8 --- /dev/null +++ b/web/src/views/inventory/InAndOutRecordModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/InAndOutRecordModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/inventory/InAndOutRecordModelViewSet/crud.tsx b/web/src/views/inventory/InAndOutRecordModelViewSet/crud.tsx new file mode 100644 index 0000000000..96c09b5caf --- /dev/null +++ b/web/src/views/inventory/InAndOutRecordModelViewSet/crud.tsx @@ -0,0 +1,273 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet} from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { request } from '/@/utils/service'; +import {auth} from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; + +//此处为crudOptions配置 +export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export:{ + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('InAndOutRecordModelViewSet:Export'), + text:"导出",//按钮文字 + title:"导出",//鼠标停留显示的信息 + click(){ + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('InAndOutRecordModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('InAndOutRecordModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('InAndOutRecordModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('InAndOutRecordModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('InAndOutRecordModelViewSet:Delete') + }, + }, + }, + columns: { + in_or_out: { + title: '出入库类型', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请选择出入库类型', + }, + }, + dict: dict({ + data:dictionary('in_or_out_type'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '出入库类型必选' }], + component: { + placeholder: '请选择出入库类型', + }, + }, + }, + in_or_out_aim: { + title: '进出来源与目的', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入进出来源与目的', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '进出来源与目的必填' }], + component: { + placeholder: '请输入进出来源与目的', + }, + }, + }, + in_or_out_code: { + title: '商品编号', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入商品编号', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '商品编号必填' }], + component: { + placeholder: '请输入商品编号', + }, + }, + }, + in_or_out_name: { + title: '商品名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入商品名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入商品名称', + }, + }, + }, + in_or_out_type: { + title: '商品类型', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入商品类型', + }, + }, + dict: dict({ + data:dictionary('product_type'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入商品类型', + }, + }, + }, + in_or_out_number: { + title: '出入库数量', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入出入库数量', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '出入库数量必填' }], + component: { + min: 0, + placeholder: '请输入出入库数量', + }, + }, + }, + in_or_out_unit: { + title: '单位', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请输入单位', + }, + }, + dict: dict({ + data:dictionary('weight_unit'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '单位必选' }], + component: { + placeholder: '请输入单位', + }, + }, + }, + in_or_out_stash: { + title: '仓位', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入仓位', + }, + }, + dict: dict({ + url: '/api/StashManageModelViewSet/', + label: 'stash_position', + value: 'id', + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入仓位', + }, + }, + }, + in_or_out_note: { + title: '备注', + type: 'textarea', + search: { + show: false, + component: { + placeholder: '请输入备注', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入备注', + }, + }, + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/inventory/InAndOutRecordModelViewSet/index.vue b/web/src/views/inventory/InAndOutRecordModelViewSet/index.vue new file mode 100644 index 0000000000..4bbe0c2d7b --- /dev/null +++ b/web/src/views/inventory/InAndOutRecordModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/inventory/MaterielModelViewSet/api.ts b/web/src/views/inventory/MaterielModelViewSet/api.ts new file mode 100644 index 0000000000..4e221d9ac9 --- /dev/null +++ b/web/src/views/inventory/MaterielModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/MaterielModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/inventory/MaterielModelViewSet/crud.tsx b/web/src/views/inventory/MaterielModelViewSet/crud.tsx new file mode 100644 index 0000000000..e063bcc548 --- /dev/null +++ b/web/src/views/inventory/MaterielModelViewSet/crud.tsx @@ -0,0 +1,293 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { getBaseURL } from '/@/utils/baseUrl'; +import { createUploaderRules } from "@fast-crud/fast-extends"; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; +import { url } from 'inspector'; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { // 销售订单 + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('MaterielModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('MaterielModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 130, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('MaterielModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('MaterielModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('MaterielModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('MaterielModelViewSet:Delete') + }, + }, + }, + columns: { + code: { + title: '编号', + type: 'text', + search: { + show: true + }, + column: { + sortable: 'custom', + }, + form: { + show: true, + component: { + placeholder: '编号自动生成,无需输入.', + }, + }, + addForm: { + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + } + }, + specification: { + title: '规格', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入规格', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入规格', + }, + }, + }, + name: { + title: '名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入名称', + }, + }, + }, + number: { + title: '数量', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入数量', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '数量必填' }], + component: { + min: 0, + placeholder: '请输入数量', + }, + }, + }, + transfer_unit: { + title: '单位', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请输入单位', + }, + }, + dict: dict({ + data:dictionary('weight_unit'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '单位必选' }], + component: { + placeholder: '请输入单位', + }, + }, + }, + price: { + title: '单价', + type: '', + search: { + show: false, + component: { + placeholder: '请输入单价', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '单价必填' }], + component: { + min: 0, + max: 10, + step: 0.1, + placeholder: '请输入单价', + }, + }, + }, + stash: { + title: '所属仓位', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入所属仓位', + }, + }, + dict: dict({ + url: '/api/StashManageModelViewSet/', + label: 'stash_position', + value: 'id', + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '所属仓位必选' }], + component: { + placeholder: '请输入所属仓位', + }, + }, + }, + note: { + title: '备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入订单备注', + }, + }, + }, + images: { + title: "照片墙", + type: "image-uploader", + form: { + col:{span:24}, + component: { + limit: 10, + uploader: { + type: "form", + }, + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 + if (context.mode !== 'add' && context.form.images !== null) { + context.form.images.forEach((item, index) => { + context.form.images[index] = getBaseURL(item) // 拼接图片地址 + }) + } + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最多可上传10个图片" + }, + column: { + component: { + // 列显示 + async buildUrl(value) { + return getBaseURL(value); + }, + // 列放大预览 + async buildPreviewUrl({ url, index }: any) { + return url + "?preview=600x600"; + } + } + } + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/inventory/MaterielModelViewSet/index.vue b/web/src/views/inventory/MaterielModelViewSet/index.vue new file mode 100644 index 0000000000..be4a21496b --- /dev/null +++ b/web/src/views/inventory/MaterielModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/inventory/ProductAssemblyModelViewSet/api.ts b/web/src/views/inventory/ProductAssemblyModelViewSet/api.ts new file mode 100644 index 0000000000..e44df6c65a --- /dev/null +++ b/web/src/views/inventory/ProductAssemblyModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/ProductAssemblyModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/inventory/ProductAssemblyModelViewSet/crud.tsx b/web/src/views/inventory/ProductAssemblyModelViewSet/crud.tsx new file mode 100644 index 0000000000..0a9c1dad5a --- /dev/null +++ b/web/src/views/inventory/ProductAssemblyModelViewSet/crud.tsx @@ -0,0 +1,293 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { getBaseURL } from '/@/utils/baseUrl'; +import { createUploaderRules } from "@fast-crud/fast-extends"; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; +import { url } from 'inspector'; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { // 销售订单 + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('ProductAssemblyModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('ProductAssemblyModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 130, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('ProductAssemblyModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('ProductAssemblyModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('ProductAssemblyModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('ProductAssemblyModelViewSet:Delete') + }, + }, + }, + columns: { + code: { + title: '编号', + type: 'text', + search: { + show: true + }, + column: { + sortable: 'custom', + }, + form: { + show: true, + component: { + placeholder: '编号自动生成,无需输入.', + }, + }, + addForm: { + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + } + }, + specification: { + title: '规格', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入规格', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入规格', + }, + }, + }, + name: { + title: '名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入名称', + }, + }, + }, + number: { + title: '数量', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入数量', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '数量必填' }], + component: { + min: 0, + placeholder: '请输入数量', + }, + }, + }, + transfer_unit: { + title: '单位', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请输入单位', + }, + }, + dict: dict({ + data:dictionary('weight_unit'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '单位必选' }], + component: { + placeholder: '请输入单位', + }, + }, + }, + price: { + title: '单价', + type: '', + search: { + show: false, + component: { + placeholder: '请输入单价', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '单价必填' }], + component: { + min: 0, + max: 10, + step: 0.1, + placeholder: '请输入单价', + }, + }, + }, + stash: { + title: '所属仓位', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入所属仓位', + }, + }, + dict: dict({ + url: '/api/StashManageModelViewSet/', + label: 'stash_position', + value: 'id', + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '所属仓位必选' }], + component: { + placeholder: '请输入所属仓位', + }, + }, + }, + note: { + title: '备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入订单备注', + }, + }, + }, + images: { + title: "照片墙", + type: "image-uploader", + form: { + col:{span:24}, + component: { + limit: 10, + uploader: { + type: "form", + }, + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 + if (context.mode !== 'add' && context.form.images !== null) { + context.form.images.forEach((item, index) => { + context.form.images[index] = getBaseURL(item) // 拼接图片地址 + }) + } + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最多可上传10个图片" + }, + column: { + component: { + // 列显示 + async buildUrl(value) { + return getBaseURL(value); + }, + // 列放大预览 + async buildPreviewUrl({ url, index }: any) { + return url + "?preview=600x600"; + } + } + } + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/inventory/ProductAssemblyModelViewSet/index.vue b/web/src/views/inventory/ProductAssemblyModelViewSet/index.vue new file mode 100644 index 0000000000..fd7a514251 --- /dev/null +++ b/web/src/views/inventory/ProductAssemblyModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/inventory/RawMaterialModelViewSet/api.ts b/web/src/views/inventory/RawMaterialModelViewSet/api.ts new file mode 100644 index 0000000000..834ca47865 --- /dev/null +++ b/web/src/views/inventory/RawMaterialModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/RawMaterialModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/inventory/RawMaterialModelViewSet/crud.tsx b/web/src/views/inventory/RawMaterialModelViewSet/crud.tsx new file mode 100644 index 0000000000..07d6d64e70 --- /dev/null +++ b/web/src/views/inventory/RawMaterialModelViewSet/crud.tsx @@ -0,0 +1,293 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { getBaseURL } from '/@/utils/baseUrl'; +import { createUploaderRules } from "@fast-crud/fast-extends"; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; +import { url } from 'inspector'; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { // 销售订单 + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('RawMaterialModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('RawMaterialModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 130, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('RawMaterialModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('RawMaterialModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('RawMaterialModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('RawMaterialModelViewSet:Delete') + }, + }, + }, + columns: { + code: { + title: '编号', + type: 'text', + search: { + show: true + }, + column: { + sortable: 'custom', + }, + form: { + show: true, + component: { + placeholder: '编号自动生成,无需输入.', + }, + }, + addForm: { + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + } + }, + specification: { + title: '规格', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入规格', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入规格', + }, + }, + }, + name: { + title: '名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入名称', + }, + }, + }, + number: { + title: '数量', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入数量', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '数量必填' }], + component: { + min: 0, + placeholder: '请输入数量', + }, + }, + }, + transfer_unit: { + title: '单位', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请输入单位', + }, + }, + dict: dict({ + data:dictionary('weight_unit'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '单位必选' }], + component: { + placeholder: '请输入单位', + }, + }, + }, + price: { + title: '单价', + type: '', + search: { + show: false, + component: { + placeholder: '请输入单价', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '单价必填' }], + component: { + min: 0, + max: 10, + step: 0.1, + placeholder: '请输入单价', + }, + }, + }, + stash: { + title: '所属仓位', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入所属仓位', + }, + }, + dict: dict({ + url: '/api/StashManageModelViewSet/', + label: 'stash_position', + value: 'id', + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '所属仓位必选' }], + component: { + placeholder: '请输入所属仓位', + }, + }, + }, + note: { + title: '备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入订单备注', + }, + }, + }, + images: { + title: "照片墙", + type: "image-uploader", + form: { + col:{span:24}, + component: { + limit: 10, + uploader: { + type: "form", + }, + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 + if (context.mode !== 'add' && context.form.images !== null) { + context.form.images.forEach((item, index) => { + context.form.images[index] = getBaseURL(item) // 拼接图片地址 + }) + } + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最多可上传10个图片" + }, + column: { + component: { + // 列显示 + async buildUrl(value) { + return getBaseURL(value); + }, + // 列放大预览 + async buildPreviewUrl({ url, index }: any) { + return url + "?preview=600x600"; + } + } + } + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/inventory/RawMaterialModelViewSet/index.vue b/web/src/views/inventory/RawMaterialModelViewSet/index.vue new file mode 100644 index 0000000000..66d99be1b5 --- /dev/null +++ b/web/src/views/inventory/RawMaterialModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/inventory/SemiFinishedProductModelViewSet/api.ts b/web/src/views/inventory/SemiFinishedProductModelViewSet/api.ts new file mode 100644 index 0000000000..b9fde5bfb6 --- /dev/null +++ b/web/src/views/inventory/SemiFinishedProductModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/SemiFinishedProductModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/inventory/SemiFinishedProductModelViewSet/crud.tsx b/web/src/views/inventory/SemiFinishedProductModelViewSet/crud.tsx new file mode 100644 index 0000000000..277a6d00dc --- /dev/null +++ b/web/src/views/inventory/SemiFinishedProductModelViewSet/crud.tsx @@ -0,0 +1,293 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { getBaseURL } from '/@/utils/baseUrl'; +import { createUploaderRules } from "@fast-crud/fast-extends"; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; +import { url } from 'inspector'; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { // 销售订单 + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('SemiFinishedProductModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('SemiFinishedProductModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 130, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('SemiFinishedProductModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('SemiFinishedProductModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('SemiFinishedProductModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('SemiFinishedProductModelViewSet:Delete') + }, + }, + }, + columns: { + code: { + title: '编号', + type: 'text', + search: { + show: true + }, + column: { + sortable: 'custom', + }, + form: { + show: true, + component: { + placeholder: '编号自动生成,无需输入.', + }, + }, + addForm: { + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + } + }, + specification: { + title: '规格', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入规格', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入规格', + }, + }, + }, + name: { + title: '名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '规格必填' }], + component: { + placeholder: '请输入名称', + }, + }, + }, + number: { + title: '数量', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入数量', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '数量必填' }], + component: { + min: 0, + placeholder: '请输入数量', + }, + }, + }, + transfer_unit: { + title: '单位', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请输入单位', + }, + }, + dict: dict({ + data:dictionary('weight_unit'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '单位必选' }], + component: { + placeholder: '请输入单位', + }, + }, + }, + price: { + title: '单价', + type: '', + search: { + show: false, + component: { + placeholder: '请输入单价', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '单价必填' }], + component: { + min: 0, + max: 10, + step: 0.1, + placeholder: '请输入单价', + }, + }, + }, + stash: { + title: '所属仓位', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入所属仓位', + }, + }, + dict: dict({ + url: '/api/StashManageModelViewSet/', + label: 'stash_position', + value: 'id', + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '所属仓位必选' }], + component: { + placeholder: '请输入所属仓位', + }, + }, + }, + note: { + title: '备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入订单备注', + }, + }, + }, + images: { + title: "照片墙", + type: "image-uploader", + form: { + col:{span:24}, + component: { + limit: 10, + uploader: { + type: "form", + }, + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 + if (context.mode !== 'add' && context.form.images !== null) { + context.form.images.forEach((item, index) => { + context.form.images[index] = getBaseURL(item) // 拼接图片地址 + }) + } + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最多可上传10个图片" + }, + column: { + component: { + // 列显示 + async buildUrl(value) { + return getBaseURL(value); + }, + // 列放大预览 + async buildPreviewUrl({ url, index }: any) { + return url + "?preview=600x600"; + } + } + } + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/inventory/SemiFinishedProductModelViewSet/index.vue b/web/src/views/inventory/SemiFinishedProductModelViewSet/index.vue new file mode 100644 index 0000000000..9d1f8a16bc --- /dev/null +++ b/web/src/views/inventory/SemiFinishedProductModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/inventory/StashManageModelViewSet/api.ts b/web/src/views/inventory/StashManageModelViewSet/api.ts new file mode 100644 index 0000000000..50308686de --- /dev/null +++ b/web/src/views/inventory/StashManageModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/StashManageModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/inventory/StashManageModelViewSet/crud.tsx b/web/src/views/inventory/StashManageModelViewSet/crud.tsx new file mode 100644 index 0000000000..88612f4659 --- /dev/null +++ b/web/src/views/inventory/StashManageModelViewSet/crud.tsx @@ -0,0 +1,161 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet} from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { request } from '/@/utils/service'; +import {auth} from "/@/utils/authFunction"; + +//此处为crudOptions配置 +export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export:{ + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('StashManageModelViewSet:Export'), + text:"导出",//按钮文字 + title:"导出",//鼠标停留显示的信息 + click(){ + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('StashManageModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('StashManageModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('StashManageModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('StashManageModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('StashManageModelViewSet:Delete') + }, + }, + }, + columns: { + stash_name: { + title: '仓库名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入仓库名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true }], + component: { + placeholder: '请输入仓库名称', + }, + }, + }, + stash_address: { + title: '仓库地址', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入仓库地址', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入仓库地址', + }, + }, + }, + stash_position: { + title: '仓位', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入仓位', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入仓位', + }, + }, + }, + stash_note: { + title: '备注', + type: 'textarea', + search: { + show: false, + component: { + placeholder: '请输入备注', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入备注', + }, + }, + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/inventory/StashManageModelViewSet/index.vue b/web/src/views/inventory/StashManageModelViewSet/index.vue new file mode 100644 index 0000000000..b4fc42e323 --- /dev/null +++ b/web/src/views/inventory/StashManageModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/inventory/TransferRecordModelViewSet/api.ts b/web/src/views/inventory/TransferRecordModelViewSet/api.ts new file mode 100644 index 0000000000..dcd91ae25e --- /dev/null +++ b/web/src/views/inventory/TransferRecordModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/TransferRecordModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/inventory/TransferRecordModelViewSet/crud.tsx b/web/src/views/inventory/TransferRecordModelViewSet/crud.tsx new file mode 100644 index 0000000000..0ff20ff490 --- /dev/null +++ b/web/src/views/inventory/TransferRecordModelViewSet/crud.tsx @@ -0,0 +1,275 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet} from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { request } from '/@/utils/service'; +import {auth} from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; + +//此处为crudOptions配置 +export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export:{ + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('TransferRecordModelViewSet:Export'), + text:"导出",//按钮文字 + title:"导出",//鼠标停留显示的信息 + click(){ + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('TransferRecordModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('TransferRecordModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('TransferRecordModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('TransferRecordModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('TransferRecordModelViewSet:Delete') + }, + }, + }, + columns: { + transfer_aim: { + title: '调拨来源与目的', + type: 'text', + search: { + show: false, + component: { + placeholder: '请输入调拨来源与目的', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '调拨来源与目的必填' }], + component: { + placeholder: '请输入调拨来源与目的', + }, + }, + }, + transfer_out_stash: { + title: '调出仓名称', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入调出仓名称', + }, + }, + dict: dict({ + url: '/api/StashManageModelViewSet/', + label: 'stash_position', + value: 'id', + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '调出仓名称必选' }], + component: { + placeholder: '请输入调出仓名称', + }, + }, + }, + transfer_code: { + title: '商品编号', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入商品编号', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '商品编号必填' }], + component: { + placeholder: '请输入商品编号', + }, + }, + }, + transfer_name: { + title: '商品名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入商品名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入商品名称', + }, + }, + }, + transfer_product_type: { + title: '商品类型', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入商品类型', + }, + }, + dict: dict({ + data:dictionary('product_type'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入商品类型', + }, + }, + }, + transfer_number: { + title: '调拨数量', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入调拨数量', + }, + }, + column: { + sortable: 'custom', + }, + form: { + value: 1, + rules: [{ required: true, message: '调拨数量必填' }], + component: { + min: 0, + placeholder: '请输入调拨数量', + }, + }, + }, + transfer_unit: { + title: '单位', + type: 'dict-radio', + search: { + show: true, + component: { + placeholder: '请输入单位', + }, + }, + dict: dict({ + data:dictionary('weight_unit'), + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '单位必选' }], + component: { + placeholder: '请输入单位', + }, + }, + }, + transfer_in_stash: { + title: '调进仓名称', + type: 'dict-select', + search: { + show: true, + component: { + placeholder: '请输入调进仓名称', + }, + }, + dict: dict({ + url: '/api/StashManageModelViewSet/', + label: 'stash_position', + value: 'id', + }), + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: '调进仓名称必选' }], + component: { + placeholder: '请输入调进仓名称', + }, + }, + }, + transfer_note: { + title: '备注', + type: 'textarea', + search: { + show: false, + component: { + placeholder: '请输入备注', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入备注', + }, + }, + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/inventory/TransferRecordModelViewSet/index.vue b/web/src/views/inventory/TransferRecordModelViewSet/index.vue new file mode 100644 index 0000000000..11b9137e65 --- /dev/null +++ b/web/src/views/inventory/TransferRecordModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/web/src/views/production/SampleCostModelViewSet/api.ts b/web/src/views/production/SampleCostModelViewSet/api.ts new file mode 100644 index 0000000000..d14d94683b --- /dev/null +++ b/web/src/views/production/SampleCostModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/SampleCostModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/production/SampleCostModelViewSet/crud.tsx b/web/src/views/production/SampleCostModelViewSet/crud.tsx new file mode 100644 index 0000000000..683893e4a7 --- /dev/null +++ b/web/src/views/production/SampleCostModelViewSet/crud.tsx @@ -0,0 +1,203 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet} from '@fast-crud/fast-crud'; +import _ from 'lodash-es'; +import * as api from './api'; +import { request } from '/@/utils/service'; +import {auth} from "/@/utils/authFunction"; + +//此处为crudOptions配置 +export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export:{ + // 注释编号:django-vue3-admin-crud210716:注意这个auth里面的值,最好是使用index.vue文件里面的name值并加上请求动作的单词 + show: auth('SampleCostModelViewSet:Export'), + text:"导出",//按钮文字 + title:"导出",//鼠标停留显示的信息 + click(){ + return exportRequest(crudExpose.getSearchFormData()) + // return exportRequest(crudExpose!.getSearchFormData()) // 注意这个crudExpose!.getSearchFormData(),一些低版本的环境是需要添加!的 + } + }, + add: { + show: auth('SampleCostModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + buttons: { + view: { + type: 'text', + order: 1, + show: auth('SampleCostModelViewSet:Retrieve') + }, + edit: { + type: 'text', + order: 2, + show: auth('SampleCostModelViewSet:Update') + }, + copy: { + type: 'text', + order: 3, + show: auth('SampleCostModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('SampleCostModelViewSet:Delete') + }, + }, + }, + columns: { + sample_name: { + title: '名称', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入名称', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true }], + component: { + placeholder: '请输入名称', + }, + }, + }, + sample_specification: { + title: '规格', + type: 'text', + search: { + show: true, + component: { + placeholder: '请输入规格', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true }], + component: { + placeholder: '请输入规格', + }, + }, + }, + sample_number: { + title: '数量', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入数量', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true }], + component: { + placeholder: '请输入数量', + }, + }, + }, + sample_price: { + title: '单价', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入单价', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true }], + component: { + min: 0, + step: 0.01, + placeholder: '请输入单价', + }, + }, + }, + sample_total_price: { + title: '总价', + type: 'number', + search: { + show: false, + component: { + placeholder: '请输入总价', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: true }], + component: { + min: 0, + step: 0.01, + placeholder: '请输入总价', + }, + }, + }, + sample_note: { + title: '备注', + type: 'textarea', + search: { + show: false, + component: { + placeholder: '请输入备注', + }, + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入备注', + }, + }, + }, + }, + }, + }; +} \ No newline at end of file diff --git a/web/src/views/production/SampleCostModelViewSet/index.vue b/web/src/views/production/SampleCostModelViewSet/index.vue new file mode 100644 index 0000000000..4267e0e57e --- /dev/null +++ b/web/src/views/production/SampleCostModelViewSet/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file -- Gitee From d84105810b421c9da0ff353fcba15eaf8357ad5f Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Mon, 21 Apr 2025 17:26:03 +0800 Subject: [PATCH 20/31] update --- backend/apps/crud_patron/models.py | 10 +- backend/apps/crud_patron/serializers.py | 109 ++++- backend/apps/crud_patron/urls.py | 2 + backend/apps/crud_patron/views.py | 18 +- backend/apps/inventory/models.py | 3 +- backend/apps/production/models.py | 2 +- backend/conf/env.py | 4 +- .../plugins/__MACOSX/._dvadmin3-flow-backend | Bin 163 -> 0 bytes .../__MACOSX/dvadmin3-flow-backend/._.git | Bin 163 -> 0 bytes .../dvadmin3-flow-backend/._.gitignore | Bin 163 -> 0 bytes .../__MACOSX/dvadmin3-flow-backend/._LICENSE | Bin 163 -> 0 bytes .../dvadmin3-flow-backend/._MANIFEST.in | Bin 163 -> 0 bytes .../dvadmin3-flow-backend/._README.md | Bin 163 -> 0 bytes .../dvadmin3-flow-backend/.___init__.py | Bin 163 -> 0 bytes .../dvadmin3-flow-backend/._dvadmin3_flow | Bin 163 -> 0 bytes .../dvadmin3-flow-backend/._pyproject.toml | Bin 163 -> 0 bytes .../__MACOSX/dvadmin3-flow-backend/._setup.py | Bin 163 -> 0 bytes .../dvadmin3_flow/.___init__.py | Bin 163 -> 0 bytes .../dvadmin3_flow/._apps.py | Bin 163 -> 0 bytes .../dvadmin3_flow/._base_model.py | Bin 163 -> 0 bytes .../dvadmin3_flow/._fixtures | Bin 163 -> 0 bytes .../dvadmin3_flow/._migrations | Bin 163 -> 0 bytes .../dvadmin3_flow/._models.py | Bin 163 -> 0 bytes .../dvadmin3_flow/._settings.py | Bin 163 -> 0 bytes .../dvadmin3_flow/._urls.py | Bin 163 -> 0 bytes .../dvadmin3_flow/._views | Bin 163 -> 0 bytes .../dvadmin3_flow/fixtures/.___init__.py | Bin 163 -> 0 bytes .../dvadmin3_flow/fixtures/._init_menu.json | Bin 163 -> 0 bytes .../dvadmin3_flow/fixtures/._initialize.py | Bin 163 -> 0 bytes .../dvadmin3_flow/views/.___init__.py | Bin 163 -> 0 bytes .../dvadmin3_flow/views/._flow_data.py | Bin 163 -> 0 bytes .../dvadmin3_flow/views/._flow_info.py | Bin 163 -> 0 bytes .../dvadmin3_flow/views/._flow_record.py | Bin 163 -> 0 bytes ...1\346\265\201\346\217\222\344\273\266.zip" | Bin 0 -> 26379 bytes ...1\346\265\201\346\217\222\344\273\266.zip" | Bin 113319 -> 0 bytes web/package.json | 4 +- .../CrudPatronModelViewSet/crud.tsx | 8 +- .../SampleOrderModelViewSet/api.ts | 50 +++ .../SampleOrderModelViewSet/crud.tsx | 350 ++++++++++++++++ .../SampleOrderModelViewSet/free/crud.tsx | 145 +++++++ .../SampleOrderModelViewSet/free/index.vue | 70 ++++ .../SampleOrderModelViewSet/index.vue | 55 +++ .../SellOrderModelViewSet/crud.tsx | 6 +- .../views/plugins/dvadmin3-flow-web/README.md | 1 + .../plugins/dvadmin3-flow-web/src/api/org.js | 40 ++ .../dvadmin3-flow-web/src/api/request.js | 55 +++ .../dvadmin3-flow-web/src/assets/theme.less | 25 ++ .../flowDialog/components/flowRecord.vue | 107 +++++ .../components/preChangeContent.vue | 39 ++ .../src/components/flowDialog/index.vue | 252 +++++++++++ .../dvadmin3-flow-web/src/flowCC/api.ts | 43 ++ .../dvadmin3-flow-web/src/flowCC/crud.tsx | 198 +++++++++ .../dvadmin3-flow-web/src/flowCC/index.vue | 30 ++ .../dvadmin3-flow-web/src/flowData/api.ts | 42 ++ .../dvadmin3-flow-web/src/flowData/crud.tsx | 198 +++++++++ .../dvadmin3-flow-web/src/flowData/index.vue | 30 ++ .../dvadmin3-flow-web/src/flowIdo/api.ts | 43 ++ .../dvadmin3-flow-web/src/flowIdo/crud.tsx | 198 +++++++++ .../dvadmin3-flow-web/src/flowIdo/index.vue | 30 ++ .../src/flowManagement/api.ts | 42 ++ .../components/flowDesigner.vue | 51 +++ .../flowManagement/components/flowProcess.vue | 44 ++ .../src/flowManagement/crud.tsx | 164 ++++++++ .../src/flowManagement/index.vue | 102 +++++ .../src/flowSubmitted/api.ts | 42 ++ .../src/flowSubmitted/crud.tsx | 198 +++++++++ .../src/flowSubmitted/index.vue | 31 ++ .../dvadmin3-flow-web/src/flowTodo/api.ts | 46 ++ .../dvadmin3-flow-web/src/flowTodo/crud.tsx | 191 +++++++++ .../dvadmin3-flow-web/src/flowTodo/index.vue | 35 ++ .../src/utils/ConditionCompare.js | 96 +++++ .../dvadmin3-flow-web/src/utils/GlobalFunc.js | 31 ++ .../src/utils/ProcessUtil.js | 26 ++ .../src/wflow/admin/BaseSetting.vue | 233 +++++++++++ .../src/wflow/admin/FormProcessDesigner.vue | 305 ++++++++++++++ .../src/wflow/admin/PlusSetting.vue | 23 + .../src/wflow/admin/ProcessDesigner.vue | 179 ++++++++ .../src/wflow/admin/config/FormPermConf.vue | 92 ++++ .../src/wflow/common/WDialog.vue | 128 ++++++ .../src/wflow/common/WOrgPicker.vue | 392 ++++++++++++++++++ .../src/wflow/common/WOrgTags.vue | 138 ++++++ .../src/wflow/design/FormInterface.js | 127 ++++++ .../wflow/design/form/FormComponentMixin.js | 42 ++ .../src/wflow/design/form/FormComponents.js | 160 +++++++ .../src/wflow/design/form/FormDesigner.vue | 385 +++++++++++++++++ .../src/wflow/design/form/FormRender.vue | 35 ++ .../design/form/component/DateTimePicker.vue | 34 ++ .../form/component/DateTimeRangePicker.vue | 33 ++ .../design/form/component/DeptPicker.vue | 35 ++ .../design/form/component/FormComponent.vue | 67 +++ .../design/form/component/MultiplePicker.vue | 23 + .../design/form/component/NumberInput.vue | 16 + .../src/wflow/design/form/component/Score.vue | 32 ++ .../design/form/component/SinglePicker.vue | 23 + .../design/form/component/SpanLayout.vue | 74 ++++ .../wflow/design/form/component/TableList.vue | 163 ++++++++ .../wflow/design/form/component/TextInput.vue | 18 + .../design/form/component/TextareaInput.vue | 18 + .../design/form/component/UserPicker.vue | 35 ++ .../wflow/design/form/config/CommonConfig.vue | 22 + .../design/form/config/DateTimePicker.vue | 43 ++ .../form/config/DateTimeRangePicker.vue | 40 ++ .../wflow/design/form/config/DeptPicker.vue | 36 ++ .../design/form/config/MultiplePicker.vue | 63 +++ .../wflow/design/form/config/NumberInput.vue | 37 ++ .../src/wflow/design/form/config/Score.vue | 61 +++ .../wflow/design/form/config/SinglePicker.vue | 63 +++ .../wflow/design/form/config/SpanLayout.vue | 35 ++ .../wflow/design/form/config/TabelList.vue | 29 ++ .../wflow/design/form/config/TextInput.vue | 33 ++ .../design/form/config/TextareaInput.vue | 35 ++ .../wflow/design/form/config/UserPicker.vue | 36 ++ .../src/wflow/design/process/NodeMixin.js | 24 ++ .../src/wflow/design/process/ProcessNodes.js | 200 +++++++++ .../wflow/design/process/ProcessRender.vue | 116 ++++++ .../wflow/design/process/config/Approval.vue | 236 +++++++++++ .../src/wflow/design/process/config/Cc.vue | 122 ++++++ .../wflow/design/process/config/Exclusive.vue | 52 +++ .../src/wflow/design/process/config/Start.vue | 25 ++ .../config/common/ConditionGroupConfig.vue | 192 +++++++++ .../config/common/ConditionItemConfig.vue | 105 +++++ .../wflow/design/process/node/Approval.vue | 116 ++++++ .../src/wflow/design/process/node/Cc.vue | 83 ++++ .../wflow/design/process/node/Exclusive.vue | 94 +++++ .../src/wflow/design/process/node/Gateway.vue | 282 +++++++++++++ .../wflow/design/process/node/Parallel.vue | 33 ++ .../src/wflow/design/process/node/Start.vue | 30 ++ .../design/process/node/base/BranchNode.vue | 229 ++++++++++ .../design/process/node/base/InsertBtn.vue | 58 +++ .../wflow/design/process/node/base/Node.vue | 185 +++++++++ ...1\346\265\201\346\217\222\344\273\266.zip" | Bin 0 -> 107314 bytes .../SampleCostModelViewSet/crud.tsx | 10 +- 132 files changed, 8777 insertions(+), 24 deletions(-) delete mode 100644 backend/plugins/__MACOSX/._dvadmin3-flow-backend delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._.git delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._.gitignore delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._LICENSE delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._MANIFEST.in delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._README.md delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/.___init__.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._dvadmin3_flow delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._pyproject.toml delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/._setup.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/.___init__.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._apps.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._base_model.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._fixtures delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._migrations delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._models.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._settings.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._urls.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/._views delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/fixtures/.___init__.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/fixtures/._init_menu.json delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/fixtures/._initialize.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/views/.___init__.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/views/._flow_data.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/views/._flow_info.py delete mode 100644 backend/plugins/__MACOSX/dvadmin3-flow-backend/dvadmin3_flow/views/._flow_record.py create mode 100644 "backend/plugins/dvadmin3-folw(\345\220\216\347\253\257)\345\220\216\345\217\260\345\256\241\346\211\271\346\265\201\346\217\222\344\273\266.zip" delete mode 100644 "backend/plugins/dvadmin3-folw\345\220\216\345\217\260\345\256\241\346\211\271\346\265\201\346\217\222\344\273\266.zip" create mode 100644 web/src/views/crud_patron/SampleOrderModelViewSet/api.ts create mode 100644 web/src/views/crud_patron/SampleOrderModelViewSet/crud.tsx create mode 100644 web/src/views/crud_patron/SampleOrderModelViewSet/free/crud.tsx create mode 100644 web/src/views/crud_patron/SampleOrderModelViewSet/free/index.vue create mode 100644 web/src/views/crud_patron/SampleOrderModelViewSet/index.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/README.md create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/api/org.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/api/request.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/assets/theme.less create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/components/flowRecord.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/components/preChangeContent.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/index.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowCC/api.ts create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowCC/crud.tsx create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowCC/index.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowData/api.ts create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowData/crud.tsx create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowData/index.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/api.ts create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/crud.tsx create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/index.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/api.ts create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/components/flowDesigner.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/components/flowProcess.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/crud.tsx create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/index.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/api.ts create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/crud.tsx create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/index.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/api.ts create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/crud.tsx create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/index.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/utils/ConditionCompare.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/utils/GlobalFunc.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/utils/ProcessUtil.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/BaseSetting.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/FormProcessDesigner.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/PlusSetting.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/ProcessDesigner.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/config/FormPermConf.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WDialog.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WOrgPicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WOrgTags.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/FormInterface.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormComponentMixin.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormComponents.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormDesigner.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormRender.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DateTimePicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DateTimeRangePicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DeptPicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/FormComponent.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/MultiplePicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/NumberInput.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/Score.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/SinglePicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/SpanLayout.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TableList.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TextInput.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TextareaInput.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/UserPicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/CommonConfig.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DateTimePicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DateTimeRangePicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DeptPicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/MultiplePicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/NumberInput.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/Score.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/SinglePicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/SpanLayout.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TabelList.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TextInput.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TextareaInput.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/UserPicker.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/NodeMixin.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/ProcessNodes.js create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/ProcessRender.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Approval.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Cc.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Exclusive.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Start.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/common/ConditionGroupConfig.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/common/ConditionItemConfig.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Approval.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Cc.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Exclusive.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Gateway.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Parallel.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Start.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/BranchNode.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/InsertBtn.vue create mode 100644 web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/Node.vue create mode 100644 "web/src/views/plugins/dvadmin3-folw(\345\211\215\347\253\257)\345\220\216\345\217\260\345\256\241\346\211\271\346\265\201\346\217\222\344\273\266.zip" diff --git a/backend/apps/crud_patron/models.py b/backend/apps/crud_patron/models.py index 2932719902..e9f3edddf9 100644 --- a/backend/apps/crud_patron/models.py +++ b/backend/apps/crud_patron/models.py @@ -135,17 +135,17 @@ class SampleOrderModel(CoreModel): """ 样品单 """ - order_ids = models.CharField(max_length=255, verbose_name="样品编号", null=True, blank=True, help_text="样品编号") - order_type = models.CharField(max_length=255, verbose_name="样品类型", help_text="样品类型") - order_status = models.CharField(max_length=255, verbose_name="样品状态", null=True, blank=True, help_text="样品状态") - order_user = models.ForeignKey(CrudPatronModel, on_delete=models.CASCADE, verbose_name="订单客户", null=True, blank=True, help_text="订单客户") + order_ids = models.CharField(max_length=255, verbose_name="样品单号", null=True, blank=True, help_text="样品单号") + order_type = models.CharField(max_length=255, verbose_name="类型", help_text="类型") + order_status = models.CharField(max_length=255, verbose_name="状态", null=True, blank=True, help_text="状态") + order_user = models.ForeignKey(CrudPatronModel, on_delete=models.CASCADE, verbose_name="客户代号", null=True, blank=True, help_text="客户代号") order_payment_method = models.CharField(max_length=255, verbose_name="付款方式", null=True, blank=True, help_text="付款方式") order_payment_remark = models.CharField(max_length=255, verbose_name="付款备注", null=True, blank=True, help_text="付款备注") order_transport = models.CharField(max_length=255, verbose_name="运输方式", null=True, blank=True, help_text="运输方式") order_product = models.TextField(verbose_name="样品信息", help_text="样品信息") order_file = models.JSONField(verbose_name="附件", null=True, blank=True, help_text="附件") order_sample = models.ManyToManyField(SampleCostModel, verbose_name="样品成本", blank=True, db_constraint=False, help_text="样品成本") - order_remark = models.TextField(verbose_name="订单备注", null=True, blank=True, help_text="订单备注") + order_remark = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") class Meta: db_table = table_prefix + 'crud_sample_order' diff --git a/backend/apps/crud_patron/serializers.py b/backend/apps/crud_patron/serializers.py index c4be4014ee..d6b1dfa4ec 100644 --- a/backend/apps/crud_patron/serializers.py +++ b/backend/apps/crud_patron/serializers.py @@ -8,7 +8,9 @@ @Version: 1.0 """ -from .models import CrudPatronModel, CrudPatronAddressModel, SellOrderModel, ContractModel +from .models import CrudPatronModel, CrudPatronAddressModel, SellOrderModel, ContractModel, SampleOrderModel +from apps.production.models import SampleCostModel +from apps.production.serializers import SampleCostModelSerializer from dvadmin.utils.serializers import CustomModelSerializer from rest_framework import serializers from django.forms.models import model_to_dict @@ -164,3 +166,108 @@ class ContractModelSerializer(CustomModelSerializer): class Meta: model = ContractModel fields = "__all__" + +""" 样品单 - 开始 """ +class SampleOrderModelSerializer(CustomModelSerializer): + """ + 序列化器 + """ + + # 字段定制 + order_sample = serializers.SerializerMethodField() + + class Meta: + model = SampleOrderModel + fields = "__all__" + + def get_order_sample(self, obj): + """ 结构化信息 """ + return [ + { + "sample_name": addr.sample_name, + "sample_specification": addr.sample_specification, + "sample_number": addr.sample_number, + "sample_price": addr.sample_price, + "sample_total_price": addr.sample_total_price, + "sample_note": addr.sample_note, + "id": -addr.id, + "$editable_id": -addr.id, + "create_datetime": addr.create_datetime.strftime("%Y-%m-%d %H:%M:%S") + } + for addr in obj.order_sample.all() + ] + + +class SampleOrderModelCreateUpdateSerializer(CustomModelSerializer): + # 处理嵌套地址创建 + order_sample = SampleCostModelSerializer(many=True, required=False) + + class Meta: + model = SampleOrderModel + fields = "__all__" + read_only_fields = ("id", "create_datetime", "update_datetime") + + def create(self, validated_data): + # 提取地址数据 + order_sample_data = validated_data.pop('order_sample', []) + + # 创建主对象 + instance = super().create(validated_data) + + # 创建关联地址 + self._process_order_sample(instance, order_sample_data) + return instance + + def update(self, instance, validated_data): + # 提取地址数据 + order_sample_data = validated_data.pop('order_sample', []) + + # 更新主对象 + instance = super().update(instance, validated_data) + + # 清除旧地址并创建新地址 + instance.order_sample.clear() + self._process_order_sample(instance, order_sample_data) + return instance + + def _process_order_sample(self, instance, order_sample_data): + """ 创建/更新多对多字段 addressee """ + request = self.context.get('request') + for orders_data in order_sample_data: + print('数据:', orders_data) + # 处理新建地址(带负ID表示临时对象) + if orders_data.get('id', 0) < 0: + orders_data.pop('id', None) + orders_data.pop('$editable_id', None) + + # 联合查询条件 + query = SampleCostModel.objects.filter( + sample_name=orders_data.get('sample_name'), + sample_specification=orders_data.get('sample_specification') + ) + + # 存在则更新,不存在则创建 + if query.exists(): + addr_obj = query.first() + orders_serializer = SampleCostModelSerializer( + addr_obj, + data=orders_data, + partial=True, # 允许部分更新 + context={'request': request} + ) + else: + orders_serializer = SampleCostModelSerializer( + data=orders_data, + context={'request': request} + ) + + orders_serializer.is_valid(raise_exception=True) + orders = orders_serializer.save( + sample_total_price=orders_data['sample_price'] * orders_data['sample_number'], + modifier=request.user.id if request else None, + dept_belong_id=getattr(request.user, 'dept_id', None) if request else None + ) + + # 仅当新建时添加关联(更新时已存在关联) + instance.order_sample.add(orders) +""" 样品单 - 结束 """ diff --git a/backend/apps/crud_patron/urls.py b/backend/apps/crud_patron/urls.py index 5822a96489..a20b65dded 100644 --- a/backend/apps/crud_patron/urls.py +++ b/backend/apps/crud_patron/urls.py @@ -13,6 +13,7 @@ from rest_framework.routers import SimpleRouter from .views import CrudPatronModelViewSet, CrudPatronAddressModelViewSet from .views import SellOrderModelViewSet, ContractModelViewSet +from .views import SampleOrderModelViewSet router = SimpleRouter() # 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudPatronViewSet @@ -20,6 +21,7 @@ router.register("api/CrudPatronModelViewSet", CrudPatronModelViewSet) router.register("api/CrudPatronAddressModelViewSet", CrudPatronAddressModelViewSet) router.register("api/SellOrderModelViewSet", SellOrderModelViewSet) router.register("api/ContractModelViewSet", ContractModelViewSet) +router.register("api/SampleOrderModelViewSet", SampleOrderModelViewSet) urlpatterns = [ ] diff --git a/backend/apps/crud_patron/views.py b/backend/apps/crud_patron/views.py index ad30a14f89..c1d81fda39 100644 --- a/backend/apps/crud_patron/views.py +++ b/backend/apps/crud_patron/views.py @@ -1,12 +1,13 @@ from django.shortcuts import render # Create your views here. -from .models import CrudPatronModel, CrudPatronAddressModel, SellOrderModel, ContractModel +from .models import CrudPatronModel, CrudPatronAddressModel, SellOrderModel, ContractModel, SampleOrderModel from .serializers import CrudPatronModelSerializer, CrudPatronModelCreateUpdateSerializer from .serializers import CrudPatronModelExportSerializer, CrudPatronModelImportSerializer from .serializers import CrudPatronAddressModelSerializer, CrudPatronAddressModelExportImportSerializer from .serializers import SellOrderModelSerializer from .serializers import ContractModelSerializer +from .serializers import SampleOrderModelSerializer, SampleOrderModelCreateUpdateSerializer from dvadmin.utils.viewset import CustomModelViewSet @@ -125,3 +126,18 @@ class ContractModelViewSet(CustomModelViewSet): create_serializer_class = ContractModelSerializer update_serializer_class = ContractModelSerializer + +class SampleOrderModelViewSet(CustomModelViewSet): + """ + 样品订单 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = SampleOrderModel.objects.all() + serializer_class = SampleOrderModelSerializer + create_serializer_class = SampleOrderModelCreateUpdateSerializer + update_serializer_class = SampleOrderModelCreateUpdateSerializer + diff --git a/backend/apps/inventory/models.py b/backend/apps/inventory/models.py index 5ca59d0032..9327090e4d 100644 --- a/backend/apps/inventory/models.py +++ b/backend/apps/inventory/models.py @@ -4,9 +4,10 @@ from django.db import models from dvadmin.utils.models import CoreModel, table_prefix from apps.utils.random_code import assembly_product_code, finished_product_code, semi_finished_product_code from apps.utils.random_code import materiel_code, raw_material_code +from dvadmin3_flow.base_model import FlowBaseModel -class StashManageModel(CoreModel): +class StashManageModel(FlowBaseModel, CoreModel): """ 仓库管理 """ diff --git a/backend/apps/production/models.py b/backend/apps/production/models.py index 922cc756fc..368bdd14f0 100644 --- a/backend/apps/production/models.py +++ b/backend/apps/production/models.py @@ -13,7 +13,7 @@ class SampleCostModel(CoreModel): sample_specification = models.CharField(max_length=255, verbose_name="规格", help_text="规格") sample_number = models.IntegerField(verbose_name="数量", help_text="数量") sample_price = models.FloatField(verbose_name="单价", help_text="单价") - sample_total_price = models.FloatField(verbose_name="总价", help_text="总价") + sample_total_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="总价", null=True, blank=True, help_text="总价") sample_note = models.TextField(verbose_name="备注", null=True, blank=True, help_text="备注") class Meta: diff --git a/backend/conf/env.py b/backend/conf/env.py index 3531ed508a..6142f8f16e 100644 --- a/backend/conf/env.py +++ b/backend/conf/env.py @@ -15,7 +15,7 @@ DATABASE_ENGINE = "django.db.backends.mysql" DATABASE_NAME = 'xxibears' # mysql 时使用 # 数据库地址 改为自己数据库地址 -DATABASE_HOST = '192.168.0.252' +DATABASE_HOST = '192.168.100.252' # DATABASE_HOST = '177.10.0.13' # 正式环境使用 # # 数据库端口 DATABASE_PORT = 3306 @@ -32,7 +32,7 @@ TABLE_PREFIX = "xxibears_" REDIS_DB = 1 CELERY_BROKER_DB = 3 REDIS_PASSWORD = 'xxibears@666' -REDIS_HOST = '192.168.0.252' +REDIS_HOST = '192.168.100.252' # REDIS_HOST = '177.10.0.15' # 正式环境使用 REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' # ================================================= # diff --git a/backend/plugins/__MACOSX/._dvadmin3-flow-backend b/backend/plugins/__MACOSX/._dvadmin3-flow-backend deleted file mode 100644 index f752be5071d73bf1c3e40fe00292b0e4846a7ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S 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 VYbL;R%|Zam4+fj^@j)&5{{ubu^y~lt literal 0 HcmV?d00001 diff --git "a/backend/plugins/dvadmin3-folw\345\220\216\345\217\260\345\256\241\346\211\271\346\265\201\346\217\222\344\273\266.zip" "b/backend/plugins/dvadmin3-folw\345\220\216\345\217\260\345\256\241\346\211\271\346\265\201\346\217\222\344\273\266.zip" deleted file mode 100644 index 47f97b2a73546c1b384a51316d9163ca3be8e0be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113319 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 { + context.form.images.forEach((item: any, index: any) => { context.form.images[index] = getBaseURL(item) // 拼接图片地址 }) } @@ -350,7 +350,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud column: { component: { // 列显示 - async buildUrl(value) { + async buildUrl(value: any) { return getBaseURL(value); }, // 列放大预览 @@ -374,7 +374,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 valueBuilder(context) { // 将行数据转化为表单组件所需要的值 if (context.mode !== 'add' && context.form.files !== null) { - context.form.files.forEach((item, index) => { + context.form.files.forEach((item: any, index: any) => { context.form.files[index] = getBaseURL(item) // 拼接图片地址 }) } @@ -385,7 +385,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud column: { show: false, component: { - async buildUrl(value) { + async buildUrl(value: any) { return getBaseURL(value); }, } diff --git a/web/src/views/crud_patron/SampleOrderModelViewSet/api.ts b/web/src/views/crud_patron/SampleOrderModelViewSet/api.ts new file mode 100644 index 0000000000..ce478e4d6f --- /dev/null +++ b/web/src/views/crud_patron/SampleOrderModelViewSet/api.ts @@ -0,0 +1,50 @@ +import { request, downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/SampleOrderModelViewSet/'; + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} \ No newline at end of file diff --git a/web/src/views/crud_patron/SampleOrderModelViewSet/crud.tsx b/web/src/views/crud_patron/SampleOrderModelViewSet/crud.tsx new file mode 100644 index 0000000000..38fae71f08 --- /dev/null +++ b/web/src/views/crud_patron/SampleOrderModelViewSet/crud.tsx @@ -0,0 +1,350 @@ +import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, UserPageQuery, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import _, { get } from 'lodash-es'; +import * as api from './api'; +import { getBaseURL } from '/@/utils/baseUrl'; +import { createUploaderRules } from "@fast-crud/fast-extends"; +import EditableFreeSub from "./free/index.vue"; +import { request } from '/@/utils/service'; +import { auth } from "/@/utils/authFunction"; +import { dictionary } from '/@/utils/dictionary'; + +//此处为crudOptions配置 +export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsRet { + const pageRequest = async (query: any) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + if (row.id) { + form.id = row.id; + } + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + }; + + console.log('这个位置是全局数据:', crudExpose) + + return { // 客户管理 + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + export: { + show: auth('SampleOrderModelViewSet:Export'), + text: "导出",//按钮文字 + title: "导出",//鼠标停留显示的信息 + click() { + return exportRequest(crudExpose.getSearchFormData()) + } + }, + add: { + show: auth('SampleOrderModelViewSet:Create'), + }, + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + align: 'center', + buttons: { + view: { + type: 'text', + order: 1, + show: auth('SampleOrderModelViewSet:Retrieve'), + }, + edit: { + type: 'text', + order: 2, + show: auth('SampleOrderModelViewSet:Update'), + }, + copy: { + type: 'text', + order: 3, + show: auth('SampleOrderModelViewSet:Copy') + }, + remove: { + type: 'text', + order: 4, + show: auth('SampleOrderModelViewSet:Delete') + }, + }, + }, + columns: { + + order_ids: { + title: '样品单号', + type: 'text', + search: { + show: true + }, + column: { + sortable: 'custom', + }, + form: { + show: true, + component: { + placeholder: '样品单号自动生成,无需输入.', + }, + }, + addForm: { + component: { + disabled: true + } + }, + editForm: { + component: { + disabled: true + } + } + }, + order_type: { + title: '类型', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('order_type'), + }), + form: { + rules: [{ required: true, message: '类型必选', trigger: 'change' }], + component: { + filterable: true, + placeholder: '请输入类型', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + order_status: { + title: '状态', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('order_status'), + }), + form: { + component: { + filterable: true, + placeholder: '请输入状态', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + order_user: { + title: '客户代号', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + url: '/api/CrudPatronModelViewSet/', + label: 'code', + value: 'id' + }), + form: { + component: { + filterable: true, + placeholder: '请选择订单客户', + }, + helper: { + text: "未找到客户时,需先在销售管理->客户管理中添加客户", + } + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + order_payment_method: { + title: '付款方式', + type: 'text', + search: { + show: false + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入付款方式', + }, + }, + }, + order_payment_remark: { + title: '付款备注', + type: 'text', + search: { + show: false + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入付款备注', + }, + }, + }, + order_transport: { + title: '运输方式', + type: 'text', + search: { + show: false + }, + column: { + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '请输入运输方式', + }, + }, + }, + order_file: { + title: "上传附件", + type: "file-uploader", + form: { + component: { + limit: 5, + uploader: { + type: "form", + }, + accept: ".pdf,.csv,.doc,.docx,.xls,.xlsx,.mp4,.zip,.7z,.rar", + }, + //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 + valueBuilder(context) { // 将行数据转化为表单组件所需要的值 + if (context.mode !== 'add' && context.form.order_file !== null) { + context.form.order_file.forEach((item: any, index: any) => { + context.form.order_file[index] = getBaseURL(item) // 拼接图片地址 + }) + } + }, + rules: createUploaderRules([{ required: false, message: "此项必传", trigger: "change" }]), + helper: "最大可上传5个文件" + }, + column: { + show: false, + component: { + async buildUrl({value}: { value: any }) { + return getBaseURL(value); + }, + } + } + }, + order_product: { + title: '样品信息', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: true, message: "样品信息必填", trigger: "blur" }], + component: { + placeholder: '请输入样品信息', + }, + }, + }, + order_remark: { + title: '备注', + type: 'textarea', + search: { show: false }, + column: { + show: false, + sortable: 'custom', + }, + form: { + rules: [{ required: false }], + component: { + placeholder: '备注', + }, + }, + }, + order_sample: { + title: "样品成本", + type: "text", + form: { + component: { + name: EditableFreeSub, + vModel: "modelValue", + readonly: true, + }, + col: { + span: 24 + } + }, + column: { + show: false, + formatter: ({ row }) => { + return row.order_sample?.length + "条数据"; + } + } + }, + + }, + form: { + // 具体可配置请参考 grid 布局: http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html + display: "flex", + wrapper: { + width: "80%", + }, + async beforeSubmit() { + const validate = await crudExpose.getFormComponentRef("order_sample")?.validate(); + if (validate !== true) { + return false; + } + }, + row: { gutter: 20 }, + group: { + groupType: "tabs", //collapse, tabs + accordion: false, + groups: { + base: { + slots: { + label: (scope) => { + return ( + + + 样品单信息基础 + + ); + } + }, + icon: "el-icon-goods", + columns: ["order_ids", "order_type", "order_status", "order_transport", "order_payment_method", "order_payment_remark", "order_product", "order_remark", "order_user", "order_file"] + }, + delivery: { + label: "样品成本", + icon: "el-icon-price-tag", + columns: ["order_sample"] + } + } + } + }, + toolbar: { + buttons: { + export: { + show: true + } + } + } + }, + }; +} \ No newline at end of file diff --git a/web/src/views/crud_patron/SampleOrderModelViewSet/free/crud.tsx b/web/src/views/crud_patron/SampleOrderModelViewSet/free/crud.tsx new file mode 100644 index 0000000000..00d7705eeb --- /dev/null +++ b/web/src/views/crud_patron/SampleOrderModelViewSet/free/crud.tsx @@ -0,0 +1,145 @@ +import { CreateCrudOptionsProps, CreateCrudOptionsRet, dict } from "@fast-crud/fast-crud"; +import { inject } from "vue"; + +export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + const { crudBinding } = crudExpose; + + // const getScope = inject('get:scope') + // const { index, row, form, mode } = getScope() + const getScope = inject('get:scope', () => ({ + index: null, + row: null, + form: null, + mode: 'edit' + })); + const { index, row, form, mode } = getScope() + // console.log('当前上下文',index, row, form, mode) + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + show: false + }, + addRow: { + show: mode != 'view' + } + } + }, + search: { + show: false + }, + toolbar: { + show: false, + buttons: { + refresh: { + show: false + }, + search: { + show: false + } + } + }, + table: { + editable: { + enabled: false, + mode: "free", + showAction: false, + activeDefault: true + } + }, + pagination: { show: false, pageSize: 9999999 }, + columns: { + sample_name: { + title: '名称', + type: 'text', + column: { + minWidth: 50, //最小列宽 + }, + form: { + component:{ + placeholder:"请输入", + disabled:mode == 'view', + }, + rules: [ + // 表单校验规则 + { + required: true, + message: '名称必填项', + }, + ], + }, + }, + sample_specification: { + title: '规格', + type: 'text', + form: { + component:{ + placeholder:"请输入", + disabled:mode == 'view', + }, + rules: [ + // 表单校验规则 + { + required: true, + message: '规格必填项', + }, + ], + }, + }, + sample_number: { + title: '数量', + type: 'number', + column: { + minWidth: 70, //最小列宽 + }, + form: { + component:{ + disabled:mode == 'view', + }, + rules: [ + { + required: true, + message: '数量必填项', + }, + ], + }, + }, + sample_price: { + title: '单价', + type: 'number', + form: { + component:{ + min: 0, + step: 0.1, + disabled:mode == 'view', + }, + rules: [ + { + required: true, + message: '单价必填项', + }, + ], + }, + }, + note: { + title: '备注', + type: 'textarea', + form: { + component:{ + placeholder:"请输入", + disabled:mode == 'view', + }, + }, + }, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 90, + show: mode != 'view' + }, + } + }; +} diff --git a/web/src/views/crud_patron/SampleOrderModelViewSet/free/index.vue b/web/src/views/crud_patron/SampleOrderModelViewSet/free/index.vue new file mode 100644 index 0000000000..759423ec01 --- /dev/null +++ b/web/src/views/crud_patron/SampleOrderModelViewSet/free/index.vue @@ -0,0 +1,70 @@ + + + + \ No newline at end of file diff --git a/web/src/views/crud_patron/SampleOrderModelViewSet/index.vue b/web/src/views/crud_patron/SampleOrderModelViewSet/index.vue new file mode 100644 index 0000000000..fbe0e68153 --- /dev/null +++ b/web/src/views/crud_patron/SampleOrderModelViewSet/index.vue @@ -0,0 +1,55 @@ + + + \ No newline at end of file diff --git a/web/src/views/crud_patron/SellOrderModelViewSet/crud.tsx b/web/src/views/crud_patron/SellOrderModelViewSet/crud.tsx index da35ac5407..fd2ca2de94 100644 --- a/web/src/views/crud_patron/SellOrderModelViewSet/crud.tsx +++ b/web/src/views/crud_patron/SellOrderModelViewSet/crud.tsx @@ -191,7 +191,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud placeholder: '请选择订单客户', }, helper: { - text: "未找到客户时,需先在销售订单->客户管理中添加客户", + text: "未找到客户时,需先在销售管理->客户管理中添加客户", } }, component: { props: { color: 'auto' } }, // 自动染色 @@ -331,7 +331,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud //如果配置在form下,则表示将行数据的值转化为表单组件所需要的值 valueBuilder(context) { // 将行数据转化为表单组件所需要的值 if (context.mode !== 'add') { - context.form.order_file.forEach((item, index) => { + context.form.order_file.forEach((item: any, index: any) => { context.form.order_file[index] = getBaseURL(item) // 拼接图片地址 }) } @@ -342,7 +342,7 @@ export default function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrud column: { show: false, component: { - async buildUrl(value) { + async buildUrl(value: any) { return getBaseURL(value); }, } diff --git a/web/src/views/plugins/dvadmin3-flow-web/README.md b/web/src/views/plugins/dvadmin3-flow-web/README.md new file mode 100644 index 0000000000..84e69b80c1 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/README.md @@ -0,0 +1 @@ +#dvadmin3-flow-web diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/api/org.js b/web/src/views/plugins/dvadmin3-flow-web/src/api/org.js new file mode 100644 index 0000000000..ff061d6c20 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/api/org.js @@ -0,0 +1,40 @@ +import request from './request.js' + + +// 查询组织架构树 +export function getOrgTree(param) { + return request({ + url: '/api/dvadmin3_flow/flow_info/org_tree/', + method: 'get', + params: param + }) +} + +// 查询系统角色 +export function getRole() { + return request({ + url: '/api/system/role/', + method: 'get' + }) +} + +// 搜索人员 +export function getUserByName(param) { + return request({ + url: '/api/dvadmin3_flow/flow_info/user_search/', + method: 'get', + params: param + }) +} + +// 搜索人员 +export function getUserDepts(userId) { + return request({ + url: `oa/org/user/${userId}/dept`, + method: 'get' + }) +} + +export default { + getOrgTree, getUserByName, getRole, getUserDepts +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/api/request.js b/web/src/views/plugins/dvadmin3-flow-web/src/api/request.js new file mode 100644 index 0000000000..c9bc27d261 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/api/request.js @@ -0,0 +1,55 @@ +import axios from "axios"; +import {ElMessageBox, ElMessage} from "element-plus"; +import {cookie} from "xe-utils"; +import {getBaseURL} from "/@/utils/baseUrl"; + +const service = axios.create({ + baseURL: getBaseURL(), + timeout: 50000 +}); + +service.defaults.withCredentials = true; // 让ajax携带cookie +service.interceptors.request.use( + // 每次请求都自动携带Cookie + config => { + config.headers.Authorization = `JWT ${cookie.get('token')}` + return config; + }, + // eslint-disable-next-line handle-callback-err + error => { + return Promise.reject(error); + } +); + +service.interceptors.response.use( + rsp => { + if(rsp.data.code === 2000){ + return rsp.data; + }else{ + ElMessage.error(rsp.data.msg); + return Promise.reject() + } + + }, + // 拦截异常的响应 + err => { + switch (err.response?.status) { + case 401: + ElMessageBox.alert("登陆失效,请点击右上角头像重新切换人员"); + break; + case 403: + ElMessage.warning("抱歉,您无权访问!") + break; + case 500: + break; + case 404: + break; + default: + //throw 'request error' + return Promise.reject(err); + } + //throw 'request error' + return Promise.reject(err); + } +); +export default service; diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/assets/theme.less b/web/src/views/plugins/dvadmin3-flow-web/src/assets/theme.less new file mode 100644 index 0000000000..8a239e0abb --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/assets/theme.less @@ -0,0 +1,25 @@ +//主题定制 + +@theme-primary: #1989fa; //主题色,应当与element-ui一致 +@theme-danger: #f56c6c; //主题色,应当与element-ui一致 +@theme-success: #35b881; +@theme-warning: #f78f5f; +@theme-aside-bgc: #f7f7f9; + +@theme-desc-color: #a2a4a8; //辅助文字颜色 +@theme-secondary: #909399; // + +//节点宽度 +@node-width: 220px; +//节点线长 +@node-line-len: 80px; +@node-line-width: 2px; +//节点连线颜色 +@node-line-color: #CACACA; +//流程图背景颜色 +@main-bgc: #F5F6F6; + +.w-node-err{ + border: 1px solid @theme-danger; + box-shadow: 0 0 5px 0 @theme-danger !important; +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/components/flowRecord.vue b/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/components/flowRecord.vue new file mode 100644 index 0000000000..efcb0e356b --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/components/flowRecord.vue @@ -0,0 +1,107 @@ + + + + + \ No newline at end of file diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/components/preChangeContent.vue b/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/components/preChangeContent.vue new file mode 100644 index 0000000000..098f0e6e05 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/components/preChangeContent.vue @@ -0,0 +1,39 @@ + + + + + \ No newline at end of file diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/index.vue b/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/index.vue new file mode 100644 index 0000000000..790ab6f089 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/components/flowDialog/index.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/api.ts b/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/api.ts new file mode 100644 index 0000000000..65b54b7f09 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/api.ts @@ -0,0 +1,43 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/dvadmin3_flow/flow_data/my_pending_handle/'; +export function GetList(query: UserPageQuery) { + query['handle_status']=3 + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); + +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/crud.tsx b/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/crud.tsx new file mode 100644 index 0000000000..5a02d6f85a --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/crud.tsx @@ -0,0 +1,198 @@ +import * as api from './api'; +import { + dict, + UserPageQuery, + AddReq, + DelReq, + EditReq, + compute, + CreateCrudOptionsProps, + CreateCrudOptionsRet +} from '@fast-crud/fast-crud'; +import {request} from '/@/utils/service'; +import {dictionary} from '/@/utils/dictionary'; +import {successMessage} from '/@/utils/message'; +import {auth} from '/@/utils/authFunction' +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({form, row}: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({row}: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({form}: AddReq) => { + return await api.AddObj(form); + }; + + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + add: { + show: false + } + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 80, + buttons: { + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + show:false + }, + remove: { + iconRight: 'Delete', + type: 'text', + show:false + }, + }, + }, + form: { + col: {span: 24}, + labelWidth: '110px', + wrapper: { + is: 'el-dialog', + width: '600px', + }, + }, + columns: { + _index: { + title: '序号', + form: {show: false}, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + //@ts-ignore + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination: any = crudExpose!.crudBinding.value.pagination; + return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; + }, + }, + }, + no:{ + title:"流水号", + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入', + }, + }, + column: { + width: '160px', + align: 'center' + } + }, + name:{ + title:'名称', + column: { + width: '250px', + align: 'center' + } + }, + models_name:{ + title:'库表', + column: { + width: '140px', + align: 'center' + } + }, + start_user_name:{ + title:'发起人', + column: { + width: '120px', + align: 'center' + } + }, + "current_node.name":{ + title:'当前节点', + column: { + width: '160px', + align: 'center' + } + }, + pre_user:{ + title:"预处理人", + column: { + width: '160px', + align: 'center' + } + }, + pre_role:{ + title:"预处理角色", + column: { + width: '160px', + align: 'center' + } + }, + pre_dept:{ + title:"预处理部门", + column: { + width: '160px', + align: 'center' + } + }, + status:{ + title:'状态', + type:'dict-select', + column: { + fixed: 'right', + width: '100px', + align: 'center' + }, + dict:dict({data:[ + {value:0,label: '进行中'}, + {value:1,label: '审核通过'}, + {value:2,label: '审核驳回'}, + {value:3,label: '审核撤销'}, + ]}) + }, + completed_time:{ + title:'完成时间', + column: { + width: '160px', + align: 'center' + } + }, + ...commonCrudConfig({ + create_datetime: { + search: false, + table: true, + }, + update_datetime: { + table: true, + }, + dept_belong_id: { + table: false, + } + }) + + }, + }, + }; +}; diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/index.vue b/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/index.vue new file mode 100644 index 0000000000..1a8ae505ef --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowCC/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowData/api.ts b/web/src/views/plugins/dvadmin3-flow-web/src/flowData/api.ts new file mode 100644 index 0000000000..b8256bf313 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowData/api.ts @@ -0,0 +1,42 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/dvadmin3_flow/flow_data/get_all_flow_data/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); + +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowData/crud.tsx b/web/src/views/plugins/dvadmin3-flow-web/src/flowData/crud.tsx new file mode 100644 index 0000000000..b198ee3ef2 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowData/crud.tsx @@ -0,0 +1,198 @@ +import * as api from './api'; +import { + dict, + UserPageQuery, + AddReq, + DelReq, + EditReq, + compute, + CreateCrudOptionsProps, + CreateCrudOptionsRet +} from '@fast-crud/fast-crud'; +import {request} from '/@/utils/service'; +import {dictionary} from '/@/utils/dictionary'; +import {successMessage} from '/@/utils/message'; +import {auth} from '/@/utils/authFunction' +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({form, row}: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({row}: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({form}: AddReq) => { + return await api.AddObj(form); + }; + + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + add: { + show: false + } + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 80, + buttons: { + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + show:false + }, + remove: { + iconRight: 'Delete', + type: 'text', + show:false + }, + }, + }, + form: { + col: {span: 24}, + labelWidth: '110px', + wrapper: { + is: 'el-dialog', + width: '600px', + }, + }, + columns: { + _index: { + title: '序号', + form: {show: false}, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + //@ts-ignore + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination: any = crudExpose!.crudBinding.value.pagination; + return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; + }, + }, + }, + no:{ + title:"流水号", + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入', + }, + }, + column: { + width: '160px', + align: 'center' + } + }, + name:{ + title:'名称', + column: { + width: '250px', + align: 'center' + } + }, + models_name:{ + title:'库表', + column: { + width: '140px', + align: 'center' + } + }, + start_user_name:{ + title:'发起人', + column: { + width: '120px', + align: 'center' + } + }, + "current_node.name":{ + title:'当前节点', + column: { + width: '160px', + align: 'center' + } + }, + pre_user:{ + title:"预处理人", + column: { + width: '160px', + align: 'center' + } + }, + pre_role:{ + title:"预处理角色", + column: { + width: '160px', + align: 'center' + } + }, + pre_dept:{ + title:"预处理部门", + column: { + width: '160px', + align: 'center' + } + }, + status:{ + title:'状态', + type:'dict-select', + column: { + fixed: 'right', + width: '100px', + align: 'center' + }, + dict:dict({data:[ + {value:0,label: '进行中'}, + {value:1,label: '审核通过'}, + {value:2,label: '审核驳回'}, + {value:3,label: '审核撤销'}, + ]}) + }, + run_time:{ + title:'任务时间', + column: { + width: '160px', + align: 'center' + } + }, + ...commonCrudConfig({ + create_datetime: { + search: false, + table: true, + }, + update_datetime: { + table: true, + }, + dept_belong_id: { + table: false, + } + }) + + }, + }, + }; +}; diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowData/index.vue b/web/src/views/plugins/dvadmin3-flow-web/src/flowData/index.vue new file mode 100644 index 0000000000..1e4e166769 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowData/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/api.ts b/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/api.ts new file mode 100644 index 0000000000..1ce2f4e1aa --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/api.ts @@ -0,0 +1,43 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/dvadmin3_flow/flow_data/my_pending_handle/'; +export function GetList(query: UserPageQuery) { + query['handle_status']=1 + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); + +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/crud.tsx b/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/crud.tsx new file mode 100644 index 0000000000..5a02d6f85a --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/crud.tsx @@ -0,0 +1,198 @@ +import * as api from './api'; +import { + dict, + UserPageQuery, + AddReq, + DelReq, + EditReq, + compute, + CreateCrudOptionsProps, + CreateCrudOptionsRet +} from '@fast-crud/fast-crud'; +import {request} from '/@/utils/service'; +import {dictionary} from '/@/utils/dictionary'; +import {successMessage} from '/@/utils/message'; +import {auth} from '/@/utils/authFunction' +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({form, row}: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({row}: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({form}: AddReq) => { + return await api.AddObj(form); + }; + + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + add: { + show: false + } + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 80, + buttons: { + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + show:false + }, + remove: { + iconRight: 'Delete', + type: 'text', + show:false + }, + }, + }, + form: { + col: {span: 24}, + labelWidth: '110px', + wrapper: { + is: 'el-dialog', + width: '600px', + }, + }, + columns: { + _index: { + title: '序号', + form: {show: false}, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + //@ts-ignore + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination: any = crudExpose!.crudBinding.value.pagination; + return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; + }, + }, + }, + no:{ + title:"流水号", + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入', + }, + }, + column: { + width: '160px', + align: 'center' + } + }, + name:{ + title:'名称', + column: { + width: '250px', + align: 'center' + } + }, + models_name:{ + title:'库表', + column: { + width: '140px', + align: 'center' + } + }, + start_user_name:{ + title:'发起人', + column: { + width: '120px', + align: 'center' + } + }, + "current_node.name":{ + title:'当前节点', + column: { + width: '160px', + align: 'center' + } + }, + pre_user:{ + title:"预处理人", + column: { + width: '160px', + align: 'center' + } + }, + pre_role:{ + title:"预处理角色", + column: { + width: '160px', + align: 'center' + } + }, + pre_dept:{ + title:"预处理部门", + column: { + width: '160px', + align: 'center' + } + }, + status:{ + title:'状态', + type:'dict-select', + column: { + fixed: 'right', + width: '100px', + align: 'center' + }, + dict:dict({data:[ + {value:0,label: '进行中'}, + {value:1,label: '审核通过'}, + {value:2,label: '审核驳回'}, + {value:3,label: '审核撤销'}, + ]}) + }, + completed_time:{ + title:'完成时间', + column: { + width: '160px', + align: 'center' + } + }, + ...commonCrudConfig({ + create_datetime: { + search: false, + table: true, + }, + update_datetime: { + table: true, + }, + dept_belong_id: { + table: false, + } + }) + + }, + }, + }; +}; diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/index.vue b/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/index.vue new file mode 100644 index 0000000000..064b04dfc7 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowIdo/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/api.ts b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/api.ts new file mode 100644 index 0000000000..103b3674d6 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/api.ts @@ -0,0 +1,42 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/dvadmin3_flow/flow_info/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); + +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/components/flowDesigner.vue b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/components/flowDesigner.vue new file mode 100644 index 0000000000..4b37c6f92d --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/components/flowDesigner.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/components/flowProcess.vue b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/components/flowProcess.vue new file mode 100644 index 0000000000..ada0a2d6e8 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/components/flowProcess.vue @@ -0,0 +1,44 @@ + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/crud.tsx b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/crud.tsx new file mode 100644 index 0000000000..e5c21082bc --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/crud.tsx @@ -0,0 +1,164 @@ +import * as api from './api'; +import { dict, UserPageQuery, AddReq, DelReq, EditReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import { request } from '/@/utils/service'; +import { dictionary } from '/@/utils/dictionary'; +import { successMessage } from '/@/utils/message'; +import { auth } from '/@/utils/authFunction'; +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + add: { + show: false, + }, + }, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + align: 'center', + width: 180, + buttons: { + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + show: false, + }, + remove: { + iconRight: 'Delete', + type: 'text', + }, + }, + }, + form: { + col: { span: 24 }, + labelWidth: '110px', + wrapper: { + is: 'el-dialog', + width: '600px', + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + //@ts-ignore + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination: any = crudExpose!.crudBinding.value.pagination; + return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; + }, + }, + }, + name: { + title: '流程名称', + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入', + }, + }, + column: { + width: '200px', + align: 'center' + } + }, + icon: { + title: '流程图标', + column: { + width: '100px', + align: 'center' + } + }, + model_name: { + title: '库表模型', + column: { + minWidth: '120px', + align: 'center' + } + }, + operation: { + title: '库表操作', + type: 'dict-select', + align: 'center', + dict: dict({ + label: 'label', + value: 'value', + data: [ + { + value: 'create', + label: '新增', + }, + { + value: 'update', + label: '编辑', + }, + { + value: 'delete', + label: '删除', + }, + ], + }), + }, + status: { + title: '状态', + type: 'dict-select', + dict: dict({ + data: [ + { label: '待发布', value: 0 }, + { label: '启用', value: 1 }, + { label: '停用', value: 2 }, + ], + }), + }, + ...commonCrudConfig({ + create_datetime: { + search: false, + table: true, + }, + update_datetime: { + table: true, + }, + dept_belong_id: { + table: false, + } + }) + }, + }, + }; +}; diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/index.vue b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/index.vue new file mode 100644 index 0000000000..30d08f98bb --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowManagement/index.vue @@ -0,0 +1,102 @@ + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/api.ts b/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/api.ts new file mode 100644 index 0000000000..a22ac9c010 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/api.ts @@ -0,0 +1,42 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/dvadmin3_flow/flow_data/my_pending_handle/'; +export function GetList(query: UserPageQuery) { + query['handle_status']=2 + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/crud.tsx b/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/crud.tsx new file mode 100644 index 0000000000..8aca972991 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/crud.tsx @@ -0,0 +1,198 @@ +import * as api from './api'; +import { + dict, + UserPageQuery, + AddReq, + DelReq, + EditReq, + compute, + CreateCrudOptionsProps, + CreateCrudOptionsRet +} from '@fast-crud/fast-crud'; +import {request} from '/@/utils/service'; +import {dictionary} from '/@/utils/dictionary'; +import {successMessage} from '/@/utils/message'; +import {auth} from '/@/utils/authFunction' +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({form, row}: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({row}: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({form}: AddReq) => { + return await api.AddObj(form); + }; + + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + add: { + show: false + } + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 80, + buttons: { + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + show:false + }, + remove: { + iconRight: 'Delete', + type: 'text', + show:false + }, + }, + }, + form: { + col: {span: 24}, + labelWidth: '110px', + wrapper: { + is: 'el-dialog', + width: '600px', + }, + }, + columns: { + _index: { + title: '序号', + form: {show: false}, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + //@ts-ignore + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination: any = crudExpose!.crudBinding.value.pagination; + return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; + }, + }, + }, + no:{ + title:"流水号", + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入', + }, + }, + column: { + width: '160px', + align: 'center' + } + }, + name:{ + title:'名称', + column: { + width: '250px', + align: 'center' + } + }, + models_name:{ + title:'库表', + column: { + width: '140px', + align: 'center' + } + }, + start_user_name:{ + title:'发起人', + column: { + width: '120px', + align: 'center' + } + }, + "current_node.name":{ + title:'当前节点', + column: { + width: '160px', + align: 'center' + } + }, + pre_user:{ + title:"预处理人", + column: { + width: '160px', + align: 'center' + } + }, + pre_role:{ + title:"预处理角色", + column: { + width: '160px', + align: 'center' + } + }, + pre_dept:{ + title:"预处理部门", + column: { + width: '160px', + align: 'center' + } + }, + status:{ + title:'状态', + type:'dict-select', + column: { + fixed: 'right', + width: '100px', + align: 'center' + }, + dict:dict({data:[ + {value:0,label: '进行中'}, + {value:1,label: '审核通过'}, + {value:2,label: '审核驳回'}, + {value:3,label: '审核撤销'}, + ]}) + }, + completed_time:{ + title:'完成时间', + column: { + width: '160px', + align: 'center' + } + }, + ...commonCrudConfig({ + create_datetime: { + search: false, + table: true, + }, + update_datetime: { + table: true, + }, + dept_belong_id: { + table: false, + } + }) + + }, + }, + }; +}; diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/index.vue b/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/index.vue new file mode 100644 index 0000000000..52dfad293d --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowSubmitted/index.vue @@ -0,0 +1,31 @@ + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/api.ts b/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/api.ts new file mode 100644 index 0000000000..fbb40ac8f5 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/api.ts @@ -0,0 +1,46 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/dvadmin3_flow/flow_data/my_pending_handle/'; +export function GetList(query: UserPageQuery) { + query['handle_status']=0 + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); + +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + params: { + handle_status:0 + } + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/crud.tsx b/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/crud.tsx new file mode 100644 index 0000000000..b558827c8f --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/crud.tsx @@ -0,0 +1,191 @@ +import * as api from './api'; +import { + dict, + UserPageQuery, + AddReq, + DelReq, + EditReq, + compute, + CreateCrudOptionsProps, + CreateCrudOptionsRet +} from '@fast-crud/fast-crud'; +import {request} from '/@/utils/service'; +import {dictionary} from '/@/utils/dictionary'; +import {successMessage} from '/@/utils/message'; +import {auth} from '/@/utils/authFunction' +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({form, row}: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({row}: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({form}: AddReq) => { + return await api.AddObj(form); + }; + + + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + add: { + show: false + } + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 80, + buttons: { + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + show:false + }, + remove: { + iconRight: 'Delete', + type: 'text', + show:false + }, + }, + }, + form: { + col: {span: 24}, + labelWidth: '110px', + wrapper: { + is: 'el-dialog', + width: '600px', + }, + }, + columns: { + _index: { + title: '序号', + form: {show: false}, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + //@ts-ignore + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination: any = crudExpose!.crudBinding.value.pagination; + return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; + }, + }, + }, + no:{ + title:"流水号", + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入', + }, + }, + column: { + width: '160px', + align: 'center' + } + }, + name:{ + title:'名称', + column: { + width: '250px', + align: 'center' + } + }, + models_name:{ + title:'库表', + column: { + width: '140px', + align: 'center' + } + }, + start_user_name:{ + title:'发起人', + column: { + width: '120px', + align: 'center' + } + }, + "current_node.name":{ + title:'当前节点', + column: { + width: '160px', + align: 'center' + } + }, + pre_user:{ + title:"预处理人", + column: { + width: '160px', + align: 'center' + } + }, + pre_role:{ + title:"预处理角色", + column: { + width: '160px', + align: 'center' + } + }, + pre_dept:{ + title:"预处理部门", + column: { + width: '160px', + align: 'center' + } + }, + status:{ + title:'状态', + type:'dict-select', + column: { + fixed: 'right', + width: '100px', + align: 'center' + }, + dict:dict({data:[ + {value:0,label: '进行中'}, + {value:1,label: '审核通过'}, + {value:2,label: '审核驳回'}, + {value:3,label: '审核撤销'}, + ]}) + }, + ...commonCrudConfig({ + create_datetime: { + search: false, + table: true, + }, + update_datetime: { + table: true, + }, + dept_belong_id: { + table: false, + } + }) + + }, + }, + }; +}; diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/index.vue b/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/index.vue new file mode 100644 index 0000000000..090b48ca59 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/flowTodo/index.vue @@ -0,0 +1,35 @@ + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/utils/ConditionCompare.js b/web/src/views/plugins/dvadmin3-flow-web/src/utils/ConditionCompare.js new file mode 100644 index 0000000000..c5a57a6f07 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/utils/ConditionCompare.js @@ -0,0 +1,96 @@ +//流程条件比较设置选项 +export const CompareOptions = { + number: [ + {name: '大于', symbol: 'GT'}, + {name: '小于', symbol: 'LT'}, + {name: '等于', symbol: 'EQ'}, + {name: '大于等于', symbol: 'GT_EQ'}, + {name: '小于等于', symbol: 'LT_EQ'}, + {name: '不等于', symbol: 'NEQ'}, + {name: '包含在', symbol: 'IN'}, + {name: '介于两者间(含首尾)', symbol: 'BT'}, + ], + string: [ + {name: '含有字符串', symbol: 'HAS'}, + {name: '包含在', symbol: 'IN'}, + {name: '等于', symbol: 'EQ'}, + {name: '不等于', symbol: 'NEQ'} + ], + array: [ + {name: '含有', symbol: 'HAS'}, + {name: '不含有', symbol: 'NHAS'}, + ], + date: [ + {name: '在之前<', symbol: 'BF'}, + {name: '在之后>', symbol: 'AF'}, + {name: '在之间', symbol: 'CT'}, + {name: '在之外', symbol: 'NCT'} + ], + dateRange: [ + {name: '在本期间', symbol: 'CT'}, + {name: '在本期间外', symbol: 'NCT'}, + {name: '时长大于', symbol: 'GE'}, + {name: '时长小于', symbol: 'LE'}, + {name: '时长等于', symbol: 'EQ'} + ], + org: [ + {name: '本人/部门属于', symbol: 'IN'}, + {name: '本人/部门不属于', symbol: 'NIN'}, + ], + role: [ + {name: '拥有角色', symbol: 'HAS'}, + {name: '没有角色', symbol: 'NHAS'}, + ] +} + +const getCdName = (cd) => { + const options = CompareOptions[ProcessCondition[cd.group][cd.type].type] + const index = options.findIndex(v => v.symbol === cd.compare) + return (options[index] || {}).name || '?' +} + +//流程条件支持对象 +export const ProcessCondition = { + INITIATOR: { + Org: { + type: 'org', + desc(cd) { + return `发起人${getCdName(cd)} ${(cd.compareVal || []).map(v => v.name).join('、')}` + } + }, + Role: { + type: 'role', + desc(cd) { + return `发起人${getCdName(cd)} ${cd.compareVal.map(v => v.name).join('、')}` + } + } + }, + FORM: { + TextInput: { + type: 'string', + desc(cd) { + return `${cd.name[1]} ${getCdName(cd)} ${cd.compareVal.join('、')}` + } + }, + NumberInput: { + type: 'number', + desc(cd) { + return `${cd.name[1]} ${getCdName(cd)} ${cd.compareVal.join('、')}` + } + }, + }, + DATABASE:{ + TextInput: { + type: 'string', + desc(cd) { + return `${cd.name[1]} ${getCdName(cd)} ${cd.compareVal.join('、')}` + } + }, + NumberInput: { + type: 'number', + desc(cd) { + return `${cd.name[1]} ${getCdName(cd)} ${cd.compareVal.join('、')}` + } + }, + } +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/utils/GlobalFunc.js b/web/src/views/plugins/dvadmin3-flow-web/src/utils/GlobalFunc.js new file mode 100644 index 0000000000..4e053050ca --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/utils/GlobalFunc.js @@ -0,0 +1,31 @@ +import {getRandNodeId} from "./ProcessUtil.js"; + +export function generateStr(len) { + let result = ''; + const characters = 'abcdefghijklmnopqrstuvwxyz0123456789'; + let charactersLength = characters.length; + for (let i = 0; i < len; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +} + + +export function deepCopy(obj){ + return JSON.parse(JSON.stringify(obj)) +} + +export function delField(cols, i){ + cols.splice(i, 1) +} + +export function copyField(cols, i){ + const col = deepCopy(cols[i]) + col.id = getRandNodeId() + col.key = col.type + '_' + generateStr(8) + cols.push(col) +} + +export default { + deepCopy +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/utils/ProcessUtil.js b/web/src/views/plugins/dvadmin3-flow-web/src/utils/ProcessUtil.js new file mode 100644 index 0000000000..03bc231529 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/utils/ProcessUtil.js @@ -0,0 +1,26 @@ +//获取随机节点id +export function getRandNodeId(){ + //前缀node_ + 时间戳 + 4位随机数 + return `node_${new Date().getTime()}${Math.floor(Math.random() * 10000).toString().padStart(4, '0')}` +} + +//重载所有的节点id +export function reloadNodeId(nodes){ + if(Array.isArray(nodes)){ + nodes.forEach(node => { + if (node.type === 'GATEWAY'){ + //递归网关,网关id加上一个后缀 + node.id = getRandNodeId() + '_fork' + //分支头部节点 + reloadNodeId(node.props.branch) + //分支 + reloadNodeId(node.branch) + }else { + node.id = getRandNodeId() + } + }) + }else { + nodes.id = getRandNodeId() + } +} + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/BaseSetting.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/BaseSetting.vue new file mode 100644 index 0000000000..e4260b407d --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/BaseSetting.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/FormProcessDesigner.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/FormProcessDesigner.vue new file mode 100644 index 0000000000..64c4692cb9 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/FormProcessDesigner.vue @@ -0,0 +1,305 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/PlusSetting.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/PlusSetting.vue new file mode 100644 index 0000000000..90754d13c1 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/PlusSetting.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/ProcessDesigner.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/ProcessDesigner.vue new file mode 100644 index 0000000000..992c0c146e --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/ProcessDesigner.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/config/FormPermConf.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/config/FormPermConf.vue new file mode 100644 index 0000000000..5aa97adf0f --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/admin/config/FormPermConf.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WDialog.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WDialog.vue new file mode 100644 index 0000000000..c90cf1667e --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WOrgPicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WOrgPicker.vue new file mode 100644 index 0000000000..600eae28cd --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WOrgPicker.vue @@ -0,0 +1,392 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WOrgTags.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WOrgTags.vue new file mode 100644 index 0000000000..910aa406d0 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/common/WOrgTags.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/FormInterface.js b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/FormInterface.js new file mode 100644 index 0000000000..ca79e4ad2c --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/FormInterface.js @@ -0,0 +1,127 @@ +/** + * 表单接口,用来便于集成不同的表单,方便自由替换 + */ +import {computed, ref} from "vue"; + +//表单的json对象 +export const formJson = ref([]); +//表单ref对象 +export const formRef = ref(); +//表单内每个字段ID,与对应字段的配置 +export const formItemMap = new Map() +//拍平以后的表单字段列表 +export const _formFields = computed(() => resolveFormJson(formJson.value)) + +//表单渲染完毕 +export var onRender; + + +//表单校验 +export var validate; + +/** + * 表单初始化函数 + * @param ref 表单的ref + * @param json 表单的json + */ +export const formInit = (ref, json) => { + if (ref) { + formRef.value = ref.value + } + formJson.value = json +} + +/** + * 加载表单组件选项 + * @param item 表单组件 + * @param items 集合 + * @param preName 前置名称 + * @param addItemFunc 添加的函数 + */ +const loadFormItem = (item, items, preName, addItemFunc) => { + formItemMap.set(item.id, item) + if (Array.isArray(item)) { + item.forEach(it => loadFormItem(it, items, null, addItemFunc)) + } else if (item.props.isContainer) { + item.props.columns.forEach(it => loadFormItem(it, items, null, addItemFunc)) + } else if (item.type === 'TableList') { + //处理表格 + addItemFunc(item, preName) + item.props.columns.forEach(col => loadFormItem(col, items, item.name, addItemFunc)) + } else { + addItemFunc(item, preName) + } +} + +/** + * 获取表单数据 + * @returns {fieldId: 值} 表单值 + */ +export function getFormData() { + return {} +} + +/** + * 解析表单json,拍平成数组 + * @param json 表单json + * @returns {*[]} 表单组件列表 + */ +export const resolveFormJson = (json) => { + let items = [] + formItemMap.clear() + loadFormItem(json, items, null, item => items.push(item)) + return items +} + +/** + * 获取表单字段列表 + * @returns [{表单字段信息}] + */ +export const getFormPermFields = (defaultPerm = 'R') => { + let items = [] + formItemMap.clear() //清空map + const addItem = (item, preName) => { + items.push({ + id: item.id, + key: item.key, + name: `${preName ? preName + '.' : ''}${item.name}`, + required: item.props.required, + perm: item.perm ? item.perm : defaultPerm + }) + } + loadFormItem(formJson.value, items, null, addItem) + return items +} + + +/** + * 显示表单字段 + * @param fieldIds 字段id列表 + */ +export function showFields(fieldIds) { + +} + +/** + * 隐藏表单字段 + * @param fieldIds 字段id列表 + */ +export function hideFields(fieldIds) { + +} + +/** + * 禁用表单字段 + * @param fieldIds 字段id列表 + */ +export function disableFields(fieldIds) { + +} + +/** + * 允许编辑表单字段 + * @param fieldIds 字段id列表 + */ +export function enableFields(fieldIds) { + +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormComponentMixin.js b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormComponentMixin.js new file mode 100644 index 0000000000..480c9a376f --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormComponentMixin.js @@ -0,0 +1,42 @@ +//节点复用逻辑 +export default { + props: { + config: { + type: Object, + default: () => { + return {} + } + }, + mode: { + type: String, + default: 'normal' //组件模式,free设计模式,normal 编辑模式, read 阅读模式,disable 禁用模式 + }, + active: { + type: Object + }, + modelValue: Object | Number | Array | String + }, + computed: { + _active: function (props, emit){ + return { + get() { + return props.active + }, + set(val) { + emit('update:active', val) + } + } + }, + _value: function (props, emit){ + return { + get() { + return props.modelValue + }, + set(val) { + emit('update:modelValue', val) + } + } + } + }, + emits: ['update:modelValue', 'update:active', 'copy', 'delete'] +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormComponents.js b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormComponents.js new file mode 100644 index 0000000000..5a0d55ba6f --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormComponents.js @@ -0,0 +1,160 @@ +import {defineAsyncComponent} from "vue"; +const Components = import.meta.glob('./component/*.vue') +const ComponentConfigs = import.meta.glob('./config/*.vue') + +//批量导出所有的component下面的表单组件 +export const FormComponents = {} +Object.keys(Components).forEach((key) => { + const name = key.replace(/^.+\/([^/]+)\.vue$/, '$1') + FormComponents[name] = defineAsyncComponent(Components[key]) +}) + +export const FormComponentConfigs = {} +Object.keys(ComponentConfigs).forEach((key) => { + const name = key.replace(/^.+\/([^/]+)\.vue$/, '$1') + FormComponentConfigs[name] = defineAsyncComponent(ComponentConfigs[key]) +}) + +export const components = [ + { + name: '布局组件', + components: [ + { + icon: 'tabler:layout-columns', + type: 'SpanLayout', + name: '分栏布局', + props: { + isContainer: true, + span: 24, + number: 2, + gutter: 5, + columns: [] + } + } + ] + }, + { + name: '基础组件', + components: [ + { + icon: 'iconamoon:edit', + type: 'TextInput', + name: '单行输入框', + props: { + required: false + } + }, + { + name: '多行输入框', + type: 'TextareaInput', + icon: 'solar:list-down-line-duotone', + props: { + required: false, + max: 255 + } + }, + { + name: '数字输入框', + type: 'NumberInput', + icon: 'tabler:123', + key: null, + props: { + required: false, + } + }, + { + name: '评分', + type: 'Score', + icon: 'fluent:star-12-regular', + props: { + required: false, + color: '#f0a732', + max: 5, + showScore: true, + enableHalf: false, + icon: 'StarFilled', + } + }, + { + name: '单选框', + type: 'SinglePicker', + icon: 'mdi:radiobox-marked', + props: { + required: false, + expanding: false, + options: ['选项1', '选项2'], + } + }, + { + name: '多选框', + type: 'MultiplePicker', + icon: 'mingcute:multiselect-line', + props: { + required: false, + expanding: false, + options: ['选项1', '选项2'] + } + }, + { + name: '日期时间点', + type: 'DateTimePicker', + icon: 'material-symbols:calendar-clock-outline', + props: { + required: false, + format: 'YYYY-MM-DD HH:mm' + } + }, + { + name: '日期时间区间', + type: 'DateTimeRangePicker', + icon: 'material-symbols:calendar-month-outline', + props: { + required: false, + placeholder: ['开始时间', '结束时间'], + format: 'YYYY-MM-DD HH:mm', + showLength: false + } + }, + { + name: '人员选择', + type: 'UserPicker', + icon: 'gravity-ui:persons', + props: { + required: false, + multiple: false + } + }, + { + name: '部门选择', + type: 'DeptPicker', + icon: 'fluent:organization-24-regular', + props: { + required: false, + multiple: false + } + } + ] + }, + { + name: '高级组件', + components: [ + { + name: '明细表', + type: 'TableList', + icon: 'mdi:table', + props: { + required: false, + showBorder: true, + showSummary: false, + summaryColumns: [], + maxSize: 0, //最大条数,为0则不限制 + columns:[] //列设置 + } + } + ] + }, +] + +export default { + components +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormDesigner.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormDesigner.vue new file mode 100644 index 0000000000..56c480cf6f --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormDesigner.vue @@ -0,0 +1,385 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormRender.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormRender.vue new file mode 100644 index 0000000000..d44c398380 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/FormRender.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DateTimePicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DateTimePicker.vue new file mode 100644 index 0000000000..3ddaebe5c5 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DateTimePicker.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DateTimeRangePicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DateTimeRangePicker.vue new file mode 100644 index 0000000000..0c90057ae9 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DateTimeRangePicker.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DeptPicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DeptPicker.vue new file mode 100644 index 0000000000..a30e002312 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/DeptPicker.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/FormComponent.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/FormComponent.vue new file mode 100644 index 0000000000..c9c4dc065a --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/FormComponent.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/MultiplePicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/MultiplePicker.vue new file mode 100644 index 0000000000..d8f7f26185 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/MultiplePicker.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/NumberInput.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/NumberInput.vue new file mode 100644 index 0000000000..ae4edf2b1e --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/NumberInput.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/Score.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/Score.vue new file mode 100644 index 0000000000..1036d40856 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/Score.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/SinglePicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/SinglePicker.vue new file mode 100644 index 0000000000..e826d5c84a --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/SinglePicker.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/SpanLayout.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/SpanLayout.vue new file mode 100644 index 0000000000..63c40e3ea0 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/SpanLayout.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TableList.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TableList.vue new file mode 100644 index 0000000000..6e8072f771 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TableList.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TextInput.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TextInput.vue new file mode 100644 index 0000000000..7743dcbd94 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TextInput.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TextareaInput.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TextareaInput.vue new file mode 100644 index 0000000000..bc148c498e --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/TextareaInput.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/UserPicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/UserPicker.vue new file mode 100644 index 0000000000..d5c4a31cf4 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/component/UserPicker.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/CommonConfig.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/CommonConfig.vue new file mode 100644 index 0000000000..11031924a0 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/CommonConfig.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DateTimePicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DateTimePicker.vue new file mode 100644 index 0000000000..3e0fe79991 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DateTimePicker.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DateTimeRangePicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DateTimeRangePicker.vue new file mode 100644 index 0000000000..a69768d74f --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DateTimeRangePicker.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DeptPicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DeptPicker.vue new file mode 100644 index 0000000000..9c75d9ebea --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/DeptPicker.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/MultiplePicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/MultiplePicker.vue new file mode 100644 index 0000000000..8bea6bba31 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/MultiplePicker.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/NumberInput.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/NumberInput.vue new file mode 100644 index 0000000000..d5dc3531a3 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/NumberInput.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/Score.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/Score.vue new file mode 100644 index 0000000000..c78dda151b --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/Score.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/SinglePicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/SinglePicker.vue new file mode 100644 index 0000000000..8bea6bba31 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/SinglePicker.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/SpanLayout.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/SpanLayout.vue new file mode 100644 index 0000000000..f6dc526742 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/SpanLayout.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TabelList.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TabelList.vue new file mode 100644 index 0000000000..438d33af4a --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TabelList.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TextInput.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TextInput.vue new file mode 100644 index 0000000000..586aef09b4 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TextInput.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TextareaInput.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TextareaInput.vue new file mode 100644 index 0000000000..cf48119386 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/TextareaInput.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/UserPicker.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/UserPicker.vue new file mode 100644 index 0000000000..9c75d9ebea --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/form/config/UserPicker.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/NodeMixin.js b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/NodeMixin.js new file mode 100644 index 0000000000..daa3facf87 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/NodeMixin.js @@ -0,0 +1,24 @@ +//节点复用逻辑 +export default { + props: { + designData: Object, + modelValue: Object, + formItems: Object, //表单字段列表 + readonly: Boolean, + index: Number, //处在当前支路位置的索引 + branch: Array, //当前整个支路 + }, + computed: { + _value: function (props, emit){ + return { + get() { + return props.modelValue + }, + set(val) { + emit('update:modelValue', val) + } + } + } + }, + emits: ['update:modelValue', 'delete', 'insertNode', 'select'] +} diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/ProcessNodes.js b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/ProcessNodes.js new file mode 100644 index 0000000000..0a9aa3de16 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/ProcessNodes.js @@ -0,0 +1,200 @@ +/** + * 需要创建新的节点,统一在本js内进行配置 + */ +import {getRandNodeId} from "../../../utils/ProcessUtil.js"; +import {defineAsyncComponent} from "vue"; + +const Nodes = import.meta.glob('./node/*.vue') +const NodeConfigs = import.meta.glob('./config/*.vue') + +//批量导出所有的component下面的表单组件 +export const NodeComponents = {} +Object.keys(Nodes).forEach((key) => { + const name = key.replace(/^.+\/([^/]+)\.vue$/, '$1') + NodeComponents[name] = defineAsyncComponent(Nodes[key]) +}) + +export const NodeComponentConfigs = {} +Object.keys(NodeConfigs).forEach((key) => { + const name = key.replace(/^.+\/([^/]+)\.vue$/, '$1') + NodeComponentConfigs[name] = defineAsyncComponent(NodeConfigs[key]) +}) + +const createGateway = (type) => { + return { + id: getRandNodeId() + '_fork', + type: 'Gateway', + name: '网关节点', + parentId: null, + childId: null, + props: { + type: type, + branch: [ + //默认创建俩分支 + branchNode[type].createSelf(1), + branchNode[type].createSelf() + ] + }, + branch: [[], []] //默认要创建2个空分支 + } +} + +//定义分支子节点 +const branchNode = { + Exclusive: { + name: '分支条件', + icon: 'Share', + color: '#1BB782', + //创建自身 + createSelf(i) { + return { + id: getRandNodeId(), + type: 'Exclusive', + name: i ? '条件' + i : '默认条件', + parentId: null, + childId: null, + props: { + logic: true, //组关系 + groups: [ //组条件 + { + logic: true, //组内条件关系 + conditions: [] + } + ] + }, + } + }, + create() { + return createGateway('Exclusive') + } + }, + // Parallel: { + // name: '并行分支', + // icon: 'Operation', + // color: '#718dff', + // //创建自身 + // createSelf(i) { + // return { + // id: getRandNodeId(), + // type: 'Parallel', + // name: '并行路径' + (i ? i: 2), + // parentId: null, + // childId: null, + // props: {}, + // } + // }, + // create() { + // return createGateway('Parallel') + // } + // }, +} + +//开始节点 +const Start = { + create() { + return { + id: 'node_root', + type: 'Start', + name: '发起人', + parentId: null, + childId: null, + props: {}, + } + } +} +//审批节点 +const Approval = { + name: '审批人', + icon: 'Stamp', + color: '#EF994F', + create() { + return { + id: getRandNodeId(), + type: 'Approval', + name: '审批人', + parentId: null, + childId: null, + props: { + mode: 'USER', //审批方式:人工处理、自动通过、自动拒绝 + ruleType: 'ASSIGN_USER', //规则类型,用哪种审批规则 + taskMode: { //审批模式 + type: 'OR', + percentage: 100, + }, + needSign: false, + assignUser: [], //指定人员 + rootSelect: { + multiple: false, //是否多选 + }, + leader: { //部门负责人 + level: 1, + emptySkip: false + }, + leaderTop: { + level: 0, //级数 + toEnd: false, //直到终点还是指定级别数 + emptySkip: false + }, + assignDept: { + dept: [], //指定的部门 + type: 'LEADER' //部门主管 + }, + assignRole: [], + noUserHandler: { //无人时的处理规则 + type: 'TO_NEXT', + assigned: [] + }, + sameRoot: { + type: 'TO_SELF', + assigned: [] + }, + timeout: { //超时处理 + enable: false, + time: 1, + timeUnit: 'M', + type: 'TO_PASS', //自动通过 + } + }, + } + } +} + +//抄送节点 +const Cc = { + name: '抄送人', + icon: 'Promotion', + color: '#5994F3', + create() { + return { + id: getRandNodeId(), + type: 'Cc', + name: '抄送人', + parentId: null, + childId: null, + props: { + ruleType: 'ASSIGN_USER', //规则类型,用哪种抄送规则 + assignUser: [], //指定人员 + rootSelect: { + multiple: false, //是否多选 + }, + assignDept: { + dept: [], //指定的部门 + type: 'LEADER' //部门主管 + }, + assignRole: [], + }, + } + } +} + + +export default { + //审批节点 + Approval: Approval, + Cc: Cc, + Start: Start, + //注入分支节点定义 + ...branchNode, +} + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/ProcessRender.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/ProcessRender.vue new file mode 100644 index 0000000000..41ce224e24 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/ProcessRender.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Approval.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Approval.vue new file mode 100644 index 0000000000..991d94f213 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Approval.vue @@ -0,0 +1,236 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Cc.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Cc.vue new file mode 100644 index 0000000000..86093e66b9 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Cc.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Exclusive.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Exclusive.vue new file mode 100644 index 0000000000..174b7a6619 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Exclusive.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Start.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Start.vue new file mode 100644 index 0000000000..f5a70e7613 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/Start.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/common/ConditionGroupConfig.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/common/ConditionGroupConfig.vue new file mode 100644 index 0000000000..0e45ba43aa --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/common/ConditionGroupConfig.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/common/ConditionItemConfig.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/common/ConditionItemConfig.vue new file mode 100644 index 0000000000..0461ad0cd9 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/config/common/ConditionItemConfig.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Approval.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Approval.vue new file mode 100644 index 0000000000..71ae94780c --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Approval.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Cc.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Cc.vue new file mode 100644 index 0000000000..84dfeb0732 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Cc.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Exclusive.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Exclusive.vue new file mode 100644 index 0000000000..cbc53081bd --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Exclusive.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Gateway.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Gateway.vue new file mode 100644 index 0000000000..271a90f352 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Gateway.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Parallel.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Parallel.vue new file mode 100644 index 0000000000..886f34c1a1 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Parallel.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Start.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Start.vue new file mode 100644 index 0000000000..5652e103cf --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/Start.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/BranchNode.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/BranchNode.vue new file mode 100644 index 0000000000..4b673dfadc --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/BranchNode.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/InsertBtn.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/InsertBtn.vue new file mode 100644 index 0000000000..2cd3409bdc --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/InsertBtn.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/Node.vue b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/Node.vue new file mode 100644 index 0000000000..616d5173de --- /dev/null +++ b/web/src/views/plugins/dvadmin3-flow-web/src/wflow/design/process/node/base/Node.vue @@ -0,0 +1,185 @@ + + + + + diff --git "a/web/src/views/plugins/dvadmin3-folw(\345\211\215\347\253\257)\345\220\216\345\217\260\345\256\241\346\211\271\346\265\201\346\217\222\344\273\266.zip" "b/web/src/views/plugins/dvadmin3-folw(\345\211\215\347\253\257)\345\220\216\345\217\260\345\256\241\346\211\271\346\265\201\346\217\222\344\273\266.zip" new file mode 100644 index 0000000000000000000000000000000000000000..6a5ef33ce948f72dd3804f6ceefd126416d3cf56 GIT binary patch literal 107314 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

Z`UxhJ^9F7i95p!-8ZM%BeMb9S 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 ck&&LBQQv@tPM3vMkCv5zoKmBHZu0JVFEGynhq literal 0 HcmV?d00001 diff --git a/web/src/views/production/SampleCostModelViewSet/crud.tsx b/web/src/views/production/SampleCostModelViewSet/crud.tsx index 683893e4a7..80091dd4cd 100644 --- a/web/src/views/production/SampleCostModelViewSet/crud.tsx +++ b/web/src/views/production/SampleCostModelViewSet/crud.tsx @@ -92,7 +92,7 @@ export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOp sortable: 'custom', }, form: { - rules: [{ required: true }], + rules: [{ required: true, message: '名称必填', trigger: 'blur' }], component: { placeholder: '请输入名称', }, @@ -111,7 +111,7 @@ export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOp sortable: 'custom', }, form: { - rules: [{ required: true }], + rules: [{ required: true, message: '规格必填', trigger: 'blur' }], component: { placeholder: '请输入规格', }, @@ -130,7 +130,7 @@ export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOp sortable: 'custom', }, form: { - rules: [{ required: true }], + rules: [{ required: true, message: '数量必填', trigger: 'blur' }], component: { placeholder: '请输入数量', }, @@ -149,7 +149,7 @@ export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOp sortable: 'custom', }, form: { - rules: [{ required: true }], + rules: [{ required: true, message: '单价必填', trigger: 'blur' }], component: { min: 0, step: 0.01, @@ -170,7 +170,7 @@ export default function ({ crudExpose}: { crudExpose: CrudExpose}): CreateCrudOp sortable: 'custom', }, form: { - rules: [{ required: true }], + rules: [{ required: false }], component: { min: 0, step: 0.01, -- Gitee From f95f378830557d6117098dcf7871ad997830b9e6 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Mon, 21 Apr 2025 17:37:45 +0800 Subject: [PATCH 21/31] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E4=B8=8A=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/dist/assets/401.6AFBTDZ2.js | 1 - web/dist/assets/401.D4rfss3t.js | 1 + web/dist/assets/404.8Y09U-70.js | 1 + web/dist/assets/404.C6XJAvwQ.js | 1 - web/dist/assets/Approval.BIQMdMFc.js | 1 + web/dist/assets/Approval.Bswl0Ie2.js | 1 + web/dist/assets/Approval.Bt898B8S.css | 1 + web/dist/assets/BaseSetting.AfBX5QdH.js | 1 + web/dist/assets/BaseSetting.BoIrvcwf.css | 1 + web/dist/assets/BranchNode.B8syyw50.js | 1 + web/dist/assets/BranchNode.qDeeEatk.css | 1 + web/dist/assets/Cc.B7imrGbS.js | 1 + web/dist/assets/Cc.COAaZbd-.css | 1 + web/dist/assets/Cc.CQpVL-5n.js | 1 + web/dist/assets/CommonConfig.Cb__DBae.js | 1 + web/dist/assets/ConditionCompare.CgHyGqGV.js | 1 + .../assets/ConditionGroupConfig.BNW7mGqr.js | 1 + .../assets/ConditionGroupConfig.UuDrWypp.css | 1 + .../assets/ConditionItemConfig.CdU5ajTx.js | 1 + web/dist/assets/DateTimePicker.BmKb3hOT.js | 1 + web/dist/assets/DateTimePicker.yGOOCJii.js | 1 + .../assets/DateTimeRangePicker.BDeWvN-a.js | 1 + .../assets/DateTimeRangePicker.Bsq0yfhX.js | 1 + web/dist/assets/DeptPicker.BMtlEMVg.js | 1 + web/dist/assets/DeptPicker.CCRiKZ2s.js | 1 + web/dist/assets/DeptPicker.Dztcgi1j.css | 1 + web/dist/assets/Exclusive.Bnfklj94.js | 1 + web/dist/assets/Exclusive.CHGcNMOo.js | 1 + web/dist/assets/FormComponent.BFjxV9c8.js | 1 + web/dist/assets/FormComponent.DNnIvXVq.css | 1 + .../assets/FormComponentMixin.C3yPnfoW.js | 1 + web/dist/assets/FormComponents.BoFxZNqy.js | 2 + web/dist/assets/FormDesigner.BRjECsv8.css | 1 + web/dist/assets/FormDesigner.C_g4ii55.js | 1 + web/dist/assets/FormInterface.vRCiFeo3.js | 1 + web/dist/assets/FormPermConf.CE-WaGhp.js | 1 + .../assets/FormProcessDesigner.NtQV6jPD.js | 1 + .../assets/FormProcessDesigner.ln_QY0no.css | 1 + web/dist/assets/FormRender.BwAVd06k.js | 1 + web/dist/assets/Gateway.BOgbIYCX.js | 1 + web/dist/assets/Gateway.Bsn85Ufa.css | 1 + web/dist/assets/GlobalFunc.9BrjVkDm.js | 1 + web/dist/assets/InsertBtn.A0117t9o.js | 1 + web/dist/assets/InsertBtn.DmHckovs.css | 1 + web/dist/assets/MultiplePicker.DhF5GoN-.js | 1 + web/dist/assets/MultiplePicker.DptKe0fb.js | 1 + web/dist/assets/MultiplePicker.zM2qUqiD.css | 1 + web/dist/assets/Node.CQpGzEsh.css | 1 + web/dist/assets/Node.Do50r9uM.js | 1 + web/dist/assets/NodeMixin.CdUK7SNa.js | 1 + web/dist/assets/NumberInput.CABlh2e3.js | 1 + web/dist/assets/NumberInput.D8yRZJpZ.js | 1 + web/dist/assets/Parallel.AwxdJs98.js | 1 + web/dist/assets/PlusSetting.Dpmt0s3R.css | 1 + web/dist/assets/PlusSetting.d22L-CQ-.js | 1 + web/dist/assets/ProcessDesigner.DHm197_z.css | 1 + web/dist/assets/ProcessDesigner.y0zNgYS2.js | 1 + web/dist/assets/ProcessNodes.r7PbQ_Ri.js | 2 + web/dist/assets/ProcessRender.BvAnKCMh.css | 1 + web/dist/assets/ProcessRender.C3vTPZCi.js | 1 + web/dist/assets/ProcessUtil.B7gNiVp1.js | 1 + web/dist/assets/RoleDrawer.BpHBBT47.js | 2 - web/dist/assets/RoleDrawer.D3Ka2ZfE.js | 2 + web/dist/assets/RoleMenuBtn.6QI1qA9D.js | 1 + web/dist/assets/RoleMenuBtn.Bp4G33F9.js | 1 - ...0HPlG.js => RoleMenuBtnStores.BlTPwy92.js} | 2 +- web/dist/assets/RoleMenuField.DRUPXFSE.js | 1 + web/dist/assets/RoleMenuField.yC8sUp8w.js | 1 - ...VAo.js => RoleMenuFieldStores.DWC1Blrk.js} | 2 +- web/dist/assets/RoleMenuTree.C_dfgRWh.js | 1 - web/dist/assets/RoleMenuTree.DcvolyEz.js | 1 + ...MfIL.js => RoleMenuTreeStores.CLogX8g4.js} | 2 +- ...B3zDIJVl.js => RoleUserStores.RiNc6kdN.js} | 2 +- web/dist/assets/RoleUsers.BFQCapvX.js | 1 + web/dist/assets/RoleUsers.BQsqUzR_.js | 1 - ...o01fjT9.js => RoleUsersStores.D14armsj.js} | 2 +- web/dist/assets/Score.DUabvE8p.js | 1 + web/dist/assets/Score.nTTEFCHc.js | 1 + web/dist/assets/SinglePicker.D6U6j9Wo.js | 1 + web/dist/assets/SinglePicker.DJx3KAyh.css | 1 + web/dist/assets/SinglePicker.DvSZcB6W.js | 1 + web/dist/assets/SpanLayout.CKTqSyyT.js | 1 + web/dist/assets/SpanLayout.D0ohsIM7.js | 1 + web/dist/assets/SpanLayout.DQHViipG.css | 1 + web/dist/assets/Start.BIqQDQeS.js | 1 + web/dist/assets/Start.D_HyHccb.js | 1 + web/dist/assets/TabelList.DtkekVLW.js | 1 + web/dist/assets/TableList.Cc91hF7e.js | 1 + web/dist/assets/TableList.ToArSLcu.css | 1 + web/dist/assets/TextInput.DqRxUp4L.js | 1 + web/dist/assets/TextInput.VohADZme.js | 1 + web/dist/assets/TextareaInput.a4aUy-y1.js | 1 + web/dist/assets/TextareaInput.tZJpkb2p.js | 1 + web/dist/assets/UserPicker.B0pD0EhW.js | 1 + web/dist/assets/UserPicker.C5eFQ_EL.css | 1 + web/dist/assets/UserPicker.IE_X13SV.js | 1 + web/dist/assets/WDialog.D9OIgJAb.js | 1 + web/dist/assets/WDialog.DTkfzpzg.css | 1 + web/dist/assets/WOrgPicker.B_7Qd6r5.js | 1 + web/dist/assets/WOrgPicker.CaxAS1JB.css | 1 + web/dist/assets/WOrgTags.Bgj5L3ZH.js | 1 + web/dist/assets/WOrgTags.C3Esetp_.css | 1 + web/dist/assets/account.Ck0WfhoZ.js | 1 - web/dist/assets/account.qOJbL1yX.js | 1 + web/dist/assets/addContent.CXxahEvw.js | 1 + web/dist/assets/addContent.DqE5gM-b.js | 1 - ...ue_type_script_setup_true_lang.CGM52RJA.js | 1 - ...ue_type_script_setup_true_lang.Do7TlUJ8.js | 1 + ...ddTabs.BpUOg-6O.js => addTabs.DFe8wYvR.js} | 2 +- ...ue_type_script_setup_true_lang.B-lxowTP.js | 1 + ...ue_type_script_setup_true_lang.C5irVEUK.js | 1 - .../{api.7fuRR03W.js => api.BMXTwPHc.js} | 2 +- .../{api.Dw2kt7dJ.js => api.BZTxDs4c.js} | 2 +- web/dist/assets/api.CQml_ETa.js | 1 + web/dist/assets/api.CXQZ_GZz.js | 1 + .../{api.CqMNLOVM.js => api.CYNTogYL.js} | 2 +- web/dist/assets/api.CgqMcKh6.js | 1 + web/dist/assets/api.Cpc88qFC.js | 1 + web/dist/assets/api.DG102jwl.js | 1 + .../{api.jJ3Ot51X.js => api.DMCQHntY.js} | 2 +- web/dist/assets/api.DWbfkKZe.js | 1 + web/dist/assets/api.Duj3eJXG.js | 1 + .../{api.C_BUo8_Z.js => api.KWPB0rj1.js} | 2 +- web/dist/assets/api.Rm0uCpyl.js | 1 + .../{api.DcIfMooN.js => api.ixj0nmKJ.js} | 2 +- web/dist/assets/aside.CcbNtRz7.js | 2 - web/dist/assets/aside.D4ng9uQr.js | 2 + ...ghxRvS.js => associationTable.OK4-bur0.js} | 2 +- ...ue_type_script_setup_true_lang.CRkFTsQv.js | 1 + ...ue_type_script_setup_true_lang.D723xajV.js | 1 - ...n.Br9oRcVU.js => authFunction.CZ5a1pu0.js} | 2 +- web/dist/assets/bakindex.DQYhiPKZ.js | 1 + web/dist/assets/bakindex.PZnjOQZJ.js | 1 - web/dist/assets/breadcrumb.CtadGDYd.js | 1 + web/dist/assets/breadcrumb.wqwFczeO.js | 1 - web/dist/assets/changePwd.37FoB_fi.js | 1 - web/dist/assets/changePwd.BniOkxQT.js | 1 + web/dist/assets/classic.CJq6kQh6.js | 2 - web/dist/assets/classic.DpyO9a-A.js | 2 + web/dist/assets/closeFull.CzjSgIlY.js | 1 - web/dist/assets/closeFull.eiiTwLFe.js | 1 + ...SV5wrv.js => columnPermission.Cm-b5eJD.js} | 2 +- web/dist/assets/columns.CmHaca52.js | 2 - web/dist/assets/columns.CnTkmDw8.js | 2 + web/dist/assets/columnsAside.BZt6OJ0q.js | 1 + web/dist/assets/columnsAside.DcFcWAsf.js | 1 - web/dist/assets/commonCrud.CCkJYHLJ.js | 1 - web/dist/assets/commonCrud.Ca1t2kUN.js | 1 + web/dist/assets/contextmenu.B7am1DsY.js | 1 + web/dist/assets/contextmenu.DhtroW7_.js | 1 - .../{crud.C3GYL5gO.js => crud.B1xqCDQ3.js} | 2 +- web/dist/assets/crud.B74cb5FM.js | 1 + web/dist/assets/crud.BJWb00pr.js | 1 + web/dist/assets/crud.BNBeHM1q.js | 1 - web/dist/assets/crud.BZns8qMI.js | 1 - .../{crud.FaW-C1Tj.js => crud.BcxQZW6U.js} | 2 +- web/dist/assets/crud.BkSVuOF_.js | 1 + web/dist/assets/crud.BolfnWXH.js | 1 + .../{crud.hXHWdc3w.js => crud.Bq9pdT9R.js} | 2 +- web/dist/assets/crud.BtIrK1bf.js | 1 + .../{crud.Dl7qlUZf.js => crud.BvRPdH2Q.js} | 2 +- web/dist/assets/crud.C2AJNsTW.js | 1 + .../{crud.7rE-T_E9.js => crud.C4dquu5X.js} | 2 +- web/dist/assets/crud.CDRJ7Jbg.js | 1 + web/dist/assets/crud.CL85Bv5S.js | 1 + web/dist/assets/crud.CNUBLSuF.js | 1 + .../{crud.aEhwQ47D.js => crud.CNtgxGiQ.js} | 2 +- .../{crud.X4Uyb4ud.js => crud.CPULa58X.js} | 2 +- web/dist/assets/crud.CRnHRW7e.js | 1 + web/dist/assets/crud.CXN7XRtA.js | 1 - web/dist/assets/crud.CYFE-0Hu.js | 1 + .../{crud.DqhsfUWs.js => crud.CZBUs_6D.js} | 2 +- web/dist/assets/crud.Cd22w0qR.js | 1 + web/dist/assets/crud.Ce1dW_hh.js | 1 + web/dist/assets/crud.ChSkQb0R.js | 1 - .../{crud.CXcyYhx9.js => crud.ChsU5dzN.js} | 2 +- web/dist/assets/crud.CjtLR7MS.js | 1 + web/dist/assets/crud.CklDNTA7.js | 1 + web/dist/assets/crud.CpmEdOyV.js | 1 + web/dist/assets/crud.CwrFd0-n.js | 1 + web/dist/assets/crud.D1mGj6d7.js | 1 + .../{crud.BqLXCUBJ.js => crud.DDy-ivzy.js} | 2 +- .../{crud.DBHnuhcJ.js => crud.DIBSrtw9.js} | 2 +- web/dist/assets/crud.DJ-x8cxk.js | 1 + web/dist/assets/crud.DQC96ooy.js | 1 + .../{crud.CFv1w-We.js => crud.DZgBVAiY.js} | 2 +- web/dist/assets/crud.Dd1clT1a.js | 1 + web/dist/assets/crud.DdutpvhZ.js | 1 - web/dist/assets/crud.DheGQF1_.js | 1 + web/dist/assets/crud.DxrtcMz2.js | 1 + web/dist/assets/crud.LFoUayEs.js | 1 + web/dist/assets/crud.Np48kvO6.js | 1 + web/dist/assets/crud.PSC-ddJH.js | 1 + web/dist/assets/crud.QVkmZ2MD.js | 1 - web/dist/assets/crud.RRoXXYSH.js | 1 + .../{crud.Bj8U6YGH.js => crud.SOaVqUCc.js} | 2 +- web/dist/assets/crud.aIckV8z3.js | 1 + web/dist/assets/crud.aa8KfaOa.js | 1 - .../{crud.C_P-uSI6.js => crud.jJOAkYw9.js} | 2 +- ...able.DrJHJ0aT.js => crudTable.BiDuz-Ax.js} | 2 +- ...ue_type_script_setup_true_lang.CYM7VyF5.js | 1 + ...ue_type_script_setup_true_lang.Ch6lbP_F.js | 1 - web/dist/assets/day.DqBTVh5Q.js | 1 + ...ue_type_script_setup_true_lang.YLpwf3vE.js | 1 + web/dist/assets/defaults.Bat_bZMk.js | 2 - web/dist/assets/defaults.DZTid3wm.js | 2 + web/dist/assets/dictionary.CH8ZDdyo.js | 1 - web/dist/assets/dictionary.DnyXy1XL.js | 1 + web/dist/assets/flowDesigner.BRKt3T2b.js | 1 + ...ue_type_script_setup_true_lang.CanmxzQe.js | 1 + web/dist/assets/flowProcess.Cf0JoXnz.js | 1 + ...ue_type_script_setup_true_lang.BnIifrfm.js | 1 + web/dist/assets/flowRecord.DLRyFvfC.css | 1 + web/dist/assets/flowRecord.oyBwBcUm.js | 1 + web/dist/assets/formContent.BGb37XcT.js | 1 - web/dist/assets/formContent.U3zr-VRA.js | 1 + ...pzG.js => fs-cropper-8eb4add2.BZucq3nl.js} | 8 +- .../fs-cropper-uploader-a4003ae3.Co0sTjIx.js | 1 - .../fs-cropper-uploader-a4003ae3.DQrYaZaX.js | 1 + .../fs-file-uploader-1c0076b5.BrqWgCRO.js | 1 - .../fs-file-uploader-1c0076b5.Csi0yJRC.js | 1 + .../fs-files-format-d3f2439b.8v7-IHF2.js | 1 - .../fs-files-format-d3f2439b.CQTDs3Df.js | 1 + .../assets/fs-uploader-070ca0b5.C2RU4GoG.js | 1 - .../assets/fs-uploader-070ca0b5.CZqbYbzt.js | 1 + web/dist/assets/header.BQoAQuJ9.js | 2 + web/dist/assets/header.D3A4TWO0.js | 2 - web/dist/assets/horizontal.C8egFxd2.js | 2 - web/dist/assets/horizontal.Ca6WNWsW.js | 2 + web/dist/assets/hour.sTApfnsu.js | 1 + ...ue_type_script_setup_true_lang.CQYhc03P.js | 1 + web/dist/assets/iframes.CcKcwRP_.js | 1 + web/dist/assets/iframes.DGiIlSBz.js | 1 - ...C7gOK_VK.js => index-03e6f703.25hsFXXE.js} | 2 +- ...DK_ekHy-.js => index-e86e660e.B-T_D6g1.js} | 2 +- ...CNl2mUZd.js => index-ea3d8438.RXsHKYMX.js} | 2 +- web/dist/assets/index.-TCR2vOZ.css | 1 + web/dist/assets/index.4o_Ki8Im.js | 1 - web/dist/assets/index.AtMAEofb.js | 1 + web/dist/assets/index.B-hP0ewv.js | 1 + web/dist/assets/index.B02OFURX.js | 1 + web/dist/assets/index.B1qSD2uw.js | 1 + web/dist/assets/index.B4YvKwUk.js | 1 - web/dist/assets/index.B8KF4JYI.js | 1 + web/dist/assets/index.BB25-PUl.js | 1 - web/dist/assets/index.BBt1_1E0.js | 1 - web/dist/assets/index.BDNJA8If.js | 1 + web/dist/assets/index.BEdABa7j.js | 1 + web/dist/assets/index.BKFTHIJo.js | 1 - web/dist/assets/index.BLuyqBKT.js | 2 - web/dist/assets/index.BMJMBrcg.js | 1 + web/dist/assets/index.BMLVfHDg.js | 1 - web/dist/assets/index.BPpabYml.js | 1 + web/dist/assets/index.BQWmd8dy.js | 2 - web/dist/assets/index.BR6H7WFV.css | 6 + web/dist/assets/index.BRUoq9JF.js | 1 - web/dist/assets/index.BU9KQC3C.js | 1 + web/dist/assets/index.BWG65dbY.js | 1 - web/dist/assets/index.BcYTMXcC.js | 1 + web/dist/assets/index.BdKOiafz.js | 1 - web/dist/assets/index.BeHuKCBj.js | 1 - web/dist/assets/index.BirIJw8Z.js | 1 + web/dist/assets/index.BjY8uEFU.js | 1 + web/dist/assets/index.Bm1edkkC.js | 1 + web/dist/assets/index.BoWRgMyU.js | 2 + web/dist/assets/index.BqCL4IRB.js | 1 + web/dist/assets/index.BqRUnpx4.js | 2 - web/dist/assets/index.BqbY8nz8.js | 1 + web/dist/assets/index.BrZukc0n.js | 1 + web/dist/assets/index.Bv3T3HiC.js | 1 + web/dist/assets/index.Bz9VMPUO.js | 1 + web/dist/assets/index.BzHh54cQ.js | 1 + web/dist/assets/index.C5HpKCqW.js | 1 + web/dist/assets/index.C6RgVXJw.js | 1 + web/dist/assets/index.C7FCFxIG.js | 1 - web/dist/assets/index.C7RtknAF.js | 2 + web/dist/assets/index.C8nsmekx.js | 1 - web/dist/assets/index.C9xbvsVt.js | 3 - web/dist/assets/index.C9xcTXIE.js | 1 + web/dist/assets/index.CCNs2Hev.js | 1 + web/dist/assets/index.CEv3RDym.js | 1 + web/dist/assets/index.CIYoZLfr.css | 1 + web/dist/assets/index.CIuc4c82.js | 1 - web/dist/assets/index.CLUAcGBM.js | 1 + web/dist/assets/index.CM92p2dK.js | 1 - web/dist/assets/index.CPtAIYcr.js | 1 - web/dist/assets/index.CSLxyD_P.js | 2 - web/dist/assets/index.CSk56TD-.js | 1 + web/dist/assets/index.CSmNi5Hz.js | 1 - web/dist/assets/index.CVeX3cqw.js | 2 + web/dist/assets/index.CdL57JTu.js | 1 + web/dist/assets/index.Cfj_JmZ7.js | 1 + web/dist/assets/index.CfkdStyR.js | 1 + web/dist/assets/index.ChB7-cPb.js | 1 - web/dist/assets/index.Cje1h4hb.js | 1 + web/dist/assets/index.CkipCyF5.js | 1 + web/dist/assets/index.CmQFx-VW.js | 1 - web/dist/assets/index.CvWHgkGx.js | 1 - web/dist/assets/index.CvqYXTn4.js | 1 - web/dist/assets/index.CwV_ihHW.js | 1 + web/dist/assets/index.D-hZpHT_.js | 1 + web/dist/assets/index.D2QvUCMr.js | 2 - web/dist/assets/index.D4Efh7wg.js | 1 + web/dist/assets/index.D9cKcRvH.js | 2 - web/dist/assets/index.D9ixfriD.js | 1 + .../{index.CyYN-Q1l.js => index.DBI9tQxQ.js} | 4 +- web/dist/assets/index.DDGoOdYe.js | 2 + web/dist/assets/index.DHbr1QT_.js | 1 - web/dist/assets/index.DHp4Qd1E.js | 1 + web/dist/assets/index.DKGWmVry.js | 1 + web/dist/assets/index.DKt5H83T.js | 1 + web/dist/assets/index.DLjSDZf5.js | 1 - web/dist/assets/index.DPAevjQn.js | 1 + web/dist/assets/index.DQeSB0b0.js | 1 + web/dist/assets/index.DRH16xbT.js | 1 + web/dist/assets/index.DRHSrNPe.js | 1 - web/dist/assets/index.DSpMR-iu.js | 1 - web/dist/assets/index.DTFBYwQ8.js | 1 + web/dist/assets/index.DTNB1H71.js | 2 - web/dist/assets/index.DYBcdGkb.js | 2 - web/dist/assets/index.DZYMe7om.js | 1 - web/dist/assets/index.DZpA2aLk.js | 1 + web/dist/assets/index.D_CEFjjt.js | 1 + web/dist/assets/index.DfYBnKHl.js | 2 + web/dist/assets/index.DhqRUyJJ.js | 1 + web/dist/assets/index.DrP9DI0m.js | 1 + web/dist/assets/index.DrV5TFZn.js | 2 - web/dist/assets/index.DtP9Pg-r.js | 1 + web/dist/assets/index.Dv8PJbHD.js | 1 - web/dist/assets/index.DyaDdQXc.js | 1 - web/dist/assets/index.HMRGTdZI.js | 2 + ...{index.DvQZPXXd.css => index.JncG-tMh.css} | 2 +- web/dist/assets/index.L78f5ylC.js | 1 + web/dist/assets/index.MR8IudEp.js | 1 + web/dist/assets/index.OR5qXrHU.js | 1385 +++++++++++++++++ web/dist/assets/index.S9xXVY3S.js | 1 + web/dist/assets/index.TORIruIs.js | 3 + web/dist/assets/index.WyYk-FI1.js | 2 + .../{index.CkCcWuPb.js => index.XK2ik2qb.js} | 126 +- web/dist/assets/index.YBPnVDRQ.js | 2 + web/dist/assets/index.YScPw7bZ.js | 1 - web/dist/assets/index.ZZs2V3Me.js | 1 + web/dist/assets/index.e_ytkSXd.js | 1 + web/dist/assets/index.grVSnM-o.js | 2 + web/dist/assets/index.juQlmUBD.js | 2 + web/dist/assets/index.lC0jjyhR.js | 1 + .../{index.jXmfan6a.js => index.lgMetkfX.js} | 2 +- web/dist/assets/index.n_iG98Gs.js | 1 - web/dist/assets/index.o9ZI4IMk.js | 1 - web/dist/assets/index.swimFhvf.js | 1 - web/dist/assets/index.uvBernPo.css | 1 + ...e_type_script_setup_true_lang.Dh6h4Rji.js} | 2 +- ...tup_true_name_importExcel_lang.BJiC24f9.js | 1 + ...tup_true_name_importExcel_lang.PF0MdneX.js | 1 - ...t_setup_true_name_svgIcon_lang.DVS5ZgXC.js | 1 - ...t_setup_true_name_svgIcon_lang.Dxcb_vGm.js | 1 + web/dist/assets/index.xycF2T5O.js | 1 - web/dist/assets/jsoneditor-icons.CIlYC0TY.svg | 749 +++++++++ web/dist/assets/link.CdIVQuk2.js | 1 + web/dist/assets/link.Dm4igRQf.js | 1 - web/dist/assets/list.CLgwDRUz.js | 1 + web/dist/assets/list.DrfbZE2c.js | 1 - web/dist/assets/main.B3b7-7PA.js | 2 - web/dist/assets/main.BjGLKst8.js | 2 + web/dist/assets/min.D7rSK6xZ.js | 1 + ...ue_type_script_setup_true_lang.C4qOy7bo.js | 1 + web/dist/assets/mobile.CBux642Y.js | 1 + web/dist/assets/mobile.HNTeVw5Q.js | 1 - web/dist/assets/month.DqMkfcwp.js | 1 + ...ue_type_script_setup_true_lang.BnyJZ3t8.js | 1 + web/dist/assets/normal.BdKXqIfJ.css | 1 + web/dist/assets/normal.DzXTK3VV.js | 1 + ...ue_vue_type_style_index_0_lang.CzVJ-OTl.js | 1 + web/dist/assets/parent.C6EbHvur.js | 2 - web/dist/assets/parent.jjGnAm0E.js | 2 + web/dist/assets/preChangeContent.BhaMH2iC.js | 1 + web/dist/assets/preChangeContent.DgBxoJ4_.css | 1 + web/dist/assets/request.FMdsBF9A.js | 1 + web/dist/assets/result.BNE-iXbo.js | 2 + web/dist/assets/result.pNe2_QEJ.css | 1 + .../{scan.CncQYAmv.js => scan.8t6Jac7S.js} | 2 +- web/dist/assets/search.Da1RhtvH.js | 1 - web/dist/assets/search.TLl0Cdrt.js | 1 + web/dist/assets/second.BAxfR3Y3.js | 1 + ...etings.DZx2-WcA.js => setings.Bk1aff-e.js} | 4 +- web/dist/assets/subItem.BfAnlXnN.js | 1 - web/dist/assets/subItem.qTCEXAcU.js | 1 + ...sView.DJSmzEFB.js => tagsView.C57Sgq_O.js} | 6 +- web/dist/assets/transverse.BgqUrkIV.js | 2 + web/dist/assets/transverse.CaB-GJdl.js | 2 - ...s => uploader-alioss-72a67ab7.kzJqWnbh.js} | 2 +- ...I.js => uploader-cos-d6837856.GNvoNraR.js} | 2 +- .../assets/uploader-form-59673bb1.DivG8mbB.js | 1 - .../assets/uploader-form-59673bb1.DnahPDeh.js | 1 + .../uploader-qiniu-f6a47e00.B4f1Pgy9.js | 1 + .../uploader-qiniu-f6a47e00.C4hHpgGo.js | 1 - ...M3.js => uploader-s3-aa58ec2a.hfLQcnu1.js} | 20 +- web/dist/assets/user.B_q5iRyd.js | 2 + web/dist/assets/user.D2LPe_dv.js | 2 - web/dist/assets/userNews.BQ1mXTAw.js | 1 - web/dist/assets/userNews.XFJtcNFN.js | 1 + web/dist/assets/vertical.D5BzUQaZ.js | 2 - web/dist/assets/vertical.DfG__Lvt.js | 2 + .../assets/vue-draggable-plus.DFq4KU1k.js | 6 + .../{vue.Cw4Y52yh.js => vue.DmuWcDrn.js} | 2 +- web/dist/assets/week.CJuPhuOW.js | 1 + ...ue_type_script_setup_true_lang.DizSlV6q.js | 1 + web/dist/assets/year.BIDa69bd.js | 1 + web/dist/index.html | 6 +- web/dist/version-build | 2 +- 410 files changed, 2562 insertions(+), 248 deletions(-) delete mode 100644 web/dist/assets/401.6AFBTDZ2.js create mode 100644 web/dist/assets/401.D4rfss3t.js create mode 100644 web/dist/assets/404.8Y09U-70.js delete mode 100644 web/dist/assets/404.C6XJAvwQ.js create mode 100644 web/dist/assets/Approval.BIQMdMFc.js create mode 100644 web/dist/assets/Approval.Bswl0Ie2.js create mode 100644 web/dist/assets/Approval.Bt898B8S.css create mode 100644 web/dist/assets/BaseSetting.AfBX5QdH.js create mode 100644 web/dist/assets/BaseSetting.BoIrvcwf.css create mode 100644 web/dist/assets/BranchNode.B8syyw50.js create mode 100644 web/dist/assets/BranchNode.qDeeEatk.css create mode 100644 web/dist/assets/Cc.B7imrGbS.js create mode 100644 web/dist/assets/Cc.COAaZbd-.css create mode 100644 web/dist/assets/Cc.CQpVL-5n.js create mode 100644 web/dist/assets/CommonConfig.Cb__DBae.js create mode 100644 web/dist/assets/ConditionCompare.CgHyGqGV.js create mode 100644 web/dist/assets/ConditionGroupConfig.BNW7mGqr.js create mode 100644 web/dist/assets/ConditionGroupConfig.UuDrWypp.css create mode 100644 web/dist/assets/ConditionItemConfig.CdU5ajTx.js create mode 100644 web/dist/assets/DateTimePicker.BmKb3hOT.js create mode 100644 web/dist/assets/DateTimePicker.yGOOCJii.js create mode 100644 web/dist/assets/DateTimeRangePicker.BDeWvN-a.js create mode 100644 web/dist/assets/DateTimeRangePicker.Bsq0yfhX.js create mode 100644 web/dist/assets/DeptPicker.BMtlEMVg.js create mode 100644 web/dist/assets/DeptPicker.CCRiKZ2s.js create mode 100644 web/dist/assets/DeptPicker.Dztcgi1j.css create mode 100644 web/dist/assets/Exclusive.Bnfklj94.js create mode 100644 web/dist/assets/Exclusive.CHGcNMOo.js create mode 100644 web/dist/assets/FormComponent.BFjxV9c8.js create mode 100644 web/dist/assets/FormComponent.DNnIvXVq.css create mode 100644 web/dist/assets/FormComponentMixin.C3yPnfoW.js create mode 100644 web/dist/assets/FormComponents.BoFxZNqy.js create mode 100644 web/dist/assets/FormDesigner.BRjECsv8.css create mode 100644 web/dist/assets/FormDesigner.C_g4ii55.js create mode 100644 web/dist/assets/FormInterface.vRCiFeo3.js create mode 100644 web/dist/assets/FormPermConf.CE-WaGhp.js create mode 100644 web/dist/assets/FormProcessDesigner.NtQV6jPD.js create mode 100644 web/dist/assets/FormProcessDesigner.ln_QY0no.css create mode 100644 web/dist/assets/FormRender.BwAVd06k.js create mode 100644 web/dist/assets/Gateway.BOgbIYCX.js create mode 100644 web/dist/assets/Gateway.Bsn85Ufa.css create mode 100644 web/dist/assets/GlobalFunc.9BrjVkDm.js create mode 100644 web/dist/assets/InsertBtn.A0117t9o.js create mode 100644 web/dist/assets/InsertBtn.DmHckovs.css create mode 100644 web/dist/assets/MultiplePicker.DhF5GoN-.js create mode 100644 web/dist/assets/MultiplePicker.DptKe0fb.js create mode 100644 web/dist/assets/MultiplePicker.zM2qUqiD.css create mode 100644 web/dist/assets/Node.CQpGzEsh.css create mode 100644 web/dist/assets/Node.Do50r9uM.js create mode 100644 web/dist/assets/NodeMixin.CdUK7SNa.js create mode 100644 web/dist/assets/NumberInput.CABlh2e3.js create mode 100644 web/dist/assets/NumberInput.D8yRZJpZ.js create mode 100644 web/dist/assets/Parallel.AwxdJs98.js create mode 100644 web/dist/assets/PlusSetting.Dpmt0s3R.css create mode 100644 web/dist/assets/PlusSetting.d22L-CQ-.js create mode 100644 web/dist/assets/ProcessDesigner.DHm197_z.css create mode 100644 web/dist/assets/ProcessDesigner.y0zNgYS2.js create mode 100644 web/dist/assets/ProcessNodes.r7PbQ_Ri.js create mode 100644 web/dist/assets/ProcessRender.BvAnKCMh.css create mode 100644 web/dist/assets/ProcessRender.C3vTPZCi.js create mode 100644 web/dist/assets/ProcessUtil.B7gNiVp1.js delete mode 100644 web/dist/assets/RoleDrawer.BpHBBT47.js create mode 100644 web/dist/assets/RoleDrawer.D3Ka2ZfE.js create mode 100644 web/dist/assets/RoleMenuBtn.6QI1qA9D.js delete mode 100644 web/dist/assets/RoleMenuBtn.Bp4G33F9.js rename web/dist/assets/{RoleMenuBtnStores.jih0HPlG.js => RoleMenuBtnStores.BlTPwy92.js} (74%) create mode 100644 web/dist/assets/RoleMenuField.DRUPXFSE.js delete mode 100644 web/dist/assets/RoleMenuField.yC8sUp8w.js rename web/dist/assets/{RoleMenuFieldStores.DOA5KVAo.js => RoleMenuFieldStores.DWC1Blrk.js} (85%) delete mode 100644 web/dist/assets/RoleMenuTree.C_dfgRWh.js create mode 100644 web/dist/assets/RoleMenuTree.DcvolyEz.js rename web/dist/assets/{RoleMenuTreeStores.CcYKMfIL.js => RoleMenuTreeStores.CLogX8g4.js} (66%) rename web/dist/assets/{RoleUserStores.B3zDIJVl.js => RoleUserStores.RiNc6kdN.js} (77%) create mode 100644 web/dist/assets/RoleUsers.BFQCapvX.js delete mode 100644 web/dist/assets/RoleUsers.BQsqUzR_.js rename web/dist/assets/{RoleUsersStores.Co01fjT9.js => RoleUsersStores.D14armsj.js} (61%) create mode 100644 web/dist/assets/Score.DUabvE8p.js create mode 100644 web/dist/assets/Score.nTTEFCHc.js create mode 100644 web/dist/assets/SinglePicker.D6U6j9Wo.js create mode 100644 web/dist/assets/SinglePicker.DJx3KAyh.css create mode 100644 web/dist/assets/SinglePicker.DvSZcB6W.js create mode 100644 web/dist/assets/SpanLayout.CKTqSyyT.js create mode 100644 web/dist/assets/SpanLayout.D0ohsIM7.js create mode 100644 web/dist/assets/SpanLayout.DQHViipG.css create mode 100644 web/dist/assets/Start.BIqQDQeS.js create mode 100644 web/dist/assets/Start.D_HyHccb.js create mode 100644 web/dist/assets/TabelList.DtkekVLW.js create mode 100644 web/dist/assets/TableList.Cc91hF7e.js create mode 100644 web/dist/assets/TableList.ToArSLcu.css create mode 100644 web/dist/assets/TextInput.DqRxUp4L.js create mode 100644 web/dist/assets/TextInput.VohADZme.js create mode 100644 web/dist/assets/TextareaInput.a4aUy-y1.js create mode 100644 web/dist/assets/TextareaInput.tZJpkb2p.js create mode 100644 web/dist/assets/UserPicker.B0pD0EhW.js create mode 100644 web/dist/assets/UserPicker.C5eFQ_EL.css create mode 100644 web/dist/assets/UserPicker.IE_X13SV.js create mode 100644 web/dist/assets/WDialog.D9OIgJAb.js create mode 100644 web/dist/assets/WDialog.DTkfzpzg.css create mode 100644 web/dist/assets/WOrgPicker.B_7Qd6r5.js create mode 100644 web/dist/assets/WOrgPicker.CaxAS1JB.css create mode 100644 web/dist/assets/WOrgTags.Bgj5L3ZH.js create mode 100644 web/dist/assets/WOrgTags.C3Esetp_.css delete mode 100644 web/dist/assets/account.Ck0WfhoZ.js create mode 100644 web/dist/assets/account.qOJbL1yX.js create mode 100644 web/dist/assets/addContent.CXxahEvw.js delete mode 100644 web/dist/assets/addContent.DqE5gM-b.js delete mode 100644 web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js create mode 100644 web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.Do7TlUJ8.js rename web/dist/assets/{addTabs.BpUOg-6O.js => addTabs.DFe8wYvR.js} (35%) create mode 100644 web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.B-lxowTP.js delete mode 100644 web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js rename web/dist/assets/{api.7fuRR03W.js => api.BMXTwPHc.js} (85%) rename web/dist/assets/{api.Dw2kt7dJ.js => api.BZTxDs4c.js} (84%) create mode 100644 web/dist/assets/api.CQml_ETa.js create mode 100644 web/dist/assets/api.CXQZ_GZz.js rename web/dist/assets/{api.CqMNLOVM.js => api.CYNTogYL.js} (87%) create mode 100644 web/dist/assets/api.CgqMcKh6.js create mode 100644 web/dist/assets/api.Cpc88qFC.js create mode 100644 web/dist/assets/api.DG102jwl.js rename web/dist/assets/{api.jJ3Ot51X.js => api.DMCQHntY.js} (77%) create mode 100644 web/dist/assets/api.DWbfkKZe.js create mode 100644 web/dist/assets/api.Duj3eJXG.js rename web/dist/assets/{api.C_BUo8_Z.js => api.KWPB0rj1.js} (87%) create mode 100644 web/dist/assets/api.Rm0uCpyl.js rename web/dist/assets/{api.DcIfMooN.js => api.ixj0nmKJ.js} (73%) delete mode 100644 web/dist/assets/aside.CcbNtRz7.js create mode 100644 web/dist/assets/aside.D4ng9uQr.js rename web/dist/assets/{associationTable.BfghxRvS.js => associationTable.OK4-bur0.js} (39%) create mode 100644 web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.CRkFTsQv.js delete mode 100644 web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js rename web/dist/assets/{authFunction.Br9oRcVU.js => authFunction.CZ5a1pu0.js} (33%) create mode 100644 web/dist/assets/bakindex.DQYhiPKZ.js delete mode 100644 web/dist/assets/bakindex.PZnjOQZJ.js create mode 100644 web/dist/assets/breadcrumb.CtadGDYd.js delete mode 100644 web/dist/assets/breadcrumb.wqwFczeO.js delete mode 100644 web/dist/assets/changePwd.37FoB_fi.js create mode 100644 web/dist/assets/changePwd.BniOkxQT.js delete mode 100644 web/dist/assets/classic.CJq6kQh6.js create mode 100644 web/dist/assets/classic.DpyO9a-A.js delete mode 100644 web/dist/assets/closeFull.CzjSgIlY.js create mode 100644 web/dist/assets/closeFull.eiiTwLFe.js rename web/dist/assets/{columnPermission.C1SV5wrv.js => columnPermission.Cm-b5eJD.js} (85%) delete mode 100644 web/dist/assets/columns.CmHaca52.js create mode 100644 web/dist/assets/columns.CnTkmDw8.js create mode 100644 web/dist/assets/columnsAside.BZt6OJ0q.js delete mode 100644 web/dist/assets/columnsAside.DcFcWAsf.js delete mode 100644 web/dist/assets/commonCrud.CCkJYHLJ.js create mode 100644 web/dist/assets/commonCrud.Ca1t2kUN.js create mode 100644 web/dist/assets/contextmenu.B7am1DsY.js delete mode 100644 web/dist/assets/contextmenu.DhtroW7_.js rename web/dist/assets/{crud.C3GYL5gO.js => crud.B1xqCDQ3.js} (93%) create mode 100644 web/dist/assets/crud.B74cb5FM.js create mode 100644 web/dist/assets/crud.BJWb00pr.js delete mode 100644 web/dist/assets/crud.BNBeHM1q.js delete mode 100644 web/dist/assets/crud.BZns8qMI.js rename web/dist/assets/{crud.FaW-C1Tj.js => crud.BcxQZW6U.js} (92%) create mode 100644 web/dist/assets/crud.BkSVuOF_.js create mode 100644 web/dist/assets/crud.BolfnWXH.js rename web/dist/assets/{crud.hXHWdc3w.js => crud.Bq9pdT9R.js} (73%) create mode 100644 web/dist/assets/crud.BtIrK1bf.js rename web/dist/assets/{crud.Dl7qlUZf.js => crud.BvRPdH2Q.js} (90%) create mode 100644 web/dist/assets/crud.C2AJNsTW.js rename web/dist/assets/{crud.7rE-T_E9.js => crud.C4dquu5X.js} (95%) create mode 100644 web/dist/assets/crud.CDRJ7Jbg.js create mode 100644 web/dist/assets/crud.CL85Bv5S.js create mode 100644 web/dist/assets/crud.CNUBLSuF.js rename web/dist/assets/{crud.aEhwQ47D.js => crud.CNtgxGiQ.js} (88%) rename web/dist/assets/{crud.X4Uyb4ud.js => crud.CPULa58X.js} (82%) create mode 100644 web/dist/assets/crud.CRnHRW7e.js delete mode 100644 web/dist/assets/crud.CXN7XRtA.js create mode 100644 web/dist/assets/crud.CYFE-0Hu.js rename web/dist/assets/{crud.DqhsfUWs.js => crud.CZBUs_6D.js} (82%) create mode 100644 web/dist/assets/crud.Cd22w0qR.js create mode 100644 web/dist/assets/crud.Ce1dW_hh.js delete mode 100644 web/dist/assets/crud.ChSkQb0R.js rename web/dist/assets/{crud.CXcyYhx9.js => crud.ChsU5dzN.js} (97%) create mode 100644 web/dist/assets/crud.CjtLR7MS.js create mode 100644 web/dist/assets/crud.CklDNTA7.js create mode 100644 web/dist/assets/crud.CpmEdOyV.js create mode 100644 web/dist/assets/crud.CwrFd0-n.js create mode 100644 web/dist/assets/crud.D1mGj6d7.js rename web/dist/assets/{crud.BqLXCUBJ.js => crud.DDy-ivzy.js} (88%) rename web/dist/assets/{crud.DBHnuhcJ.js => crud.DIBSrtw9.js} (95%) create mode 100644 web/dist/assets/crud.DJ-x8cxk.js create mode 100644 web/dist/assets/crud.DQC96ooy.js rename web/dist/assets/{crud.CFv1w-We.js => crud.DZgBVAiY.js} (96%) create mode 100644 web/dist/assets/crud.Dd1clT1a.js delete mode 100644 web/dist/assets/crud.DdutpvhZ.js create mode 100644 web/dist/assets/crud.DheGQF1_.js create mode 100644 web/dist/assets/crud.DxrtcMz2.js create mode 100644 web/dist/assets/crud.LFoUayEs.js create mode 100644 web/dist/assets/crud.Np48kvO6.js create mode 100644 web/dist/assets/crud.PSC-ddJH.js delete mode 100644 web/dist/assets/crud.QVkmZ2MD.js create mode 100644 web/dist/assets/crud.RRoXXYSH.js rename web/dist/assets/{crud.Bj8U6YGH.js => crud.SOaVqUCc.js} (83%) create mode 100644 web/dist/assets/crud.aIckV8z3.js delete mode 100644 web/dist/assets/crud.aa8KfaOa.js rename web/dist/assets/{crud.C_P-uSI6.js => crud.jJOAkYw9.js} (84%) rename web/dist/assets/{crudTable.DrJHJ0aT.js => crudTable.BiDuz-Ax.js} (41%) create mode 100644 web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.CYM7VyF5.js delete mode 100644 web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js create mode 100644 web/dist/assets/day.DqBTVh5Q.js create mode 100644 web/dist/assets/day.vue_vue_type_script_setup_true_lang.YLpwf3vE.js delete mode 100644 web/dist/assets/defaults.Bat_bZMk.js create mode 100644 web/dist/assets/defaults.DZTid3wm.js delete mode 100644 web/dist/assets/dictionary.CH8ZDdyo.js create mode 100644 web/dist/assets/dictionary.DnyXy1XL.js create mode 100644 web/dist/assets/flowDesigner.BRKt3T2b.js create mode 100644 web/dist/assets/flowDesigner.vue_vue_type_script_setup_true_lang.CanmxzQe.js create mode 100644 web/dist/assets/flowProcess.Cf0JoXnz.js create mode 100644 web/dist/assets/flowProcess.vue_vue_type_script_setup_true_lang.BnIifrfm.js create mode 100644 web/dist/assets/flowRecord.DLRyFvfC.css create mode 100644 web/dist/assets/flowRecord.oyBwBcUm.js delete mode 100644 web/dist/assets/formContent.BGb37XcT.js create mode 100644 web/dist/assets/formContent.U3zr-VRA.js rename web/dist/assets/{fs-cropper-8eb4add2.Dy2wapzG.js => fs-cropper-8eb4add2.BZucq3nl.js} (90%) delete mode 100644 web/dist/assets/fs-cropper-uploader-a4003ae3.Co0sTjIx.js create mode 100644 web/dist/assets/fs-cropper-uploader-a4003ae3.DQrYaZaX.js delete mode 100644 web/dist/assets/fs-file-uploader-1c0076b5.BrqWgCRO.js create mode 100644 web/dist/assets/fs-file-uploader-1c0076b5.Csi0yJRC.js delete mode 100644 web/dist/assets/fs-files-format-d3f2439b.8v7-IHF2.js create mode 100644 web/dist/assets/fs-files-format-d3f2439b.CQTDs3Df.js delete mode 100644 web/dist/assets/fs-uploader-070ca0b5.C2RU4GoG.js create mode 100644 web/dist/assets/fs-uploader-070ca0b5.CZqbYbzt.js create mode 100644 web/dist/assets/header.BQoAQuJ9.js delete mode 100644 web/dist/assets/header.D3A4TWO0.js delete mode 100644 web/dist/assets/horizontal.C8egFxd2.js create mode 100644 web/dist/assets/horizontal.Ca6WNWsW.js create mode 100644 web/dist/assets/hour.sTApfnsu.js create mode 100644 web/dist/assets/hour.vue_vue_type_script_setup_true_lang.CQYhc03P.js create mode 100644 web/dist/assets/iframes.CcKcwRP_.js delete mode 100644 web/dist/assets/iframes.DGiIlSBz.js rename web/dist/assets/{index-03e6f703.C7gOK_VK.js => index-03e6f703.25hsFXXE.js} (98%) rename web/dist/assets/{index-e86e660e.DK_ekHy-.js => index-e86e660e.B-T_D6g1.js} (99%) rename web/dist/assets/{index-ea3d8438.CNl2mUZd.js => index-ea3d8438.RXsHKYMX.js} (99%) create mode 100644 web/dist/assets/index.-TCR2vOZ.css delete mode 100644 web/dist/assets/index.4o_Ki8Im.js create mode 100644 web/dist/assets/index.AtMAEofb.js create mode 100644 web/dist/assets/index.B-hP0ewv.js create mode 100644 web/dist/assets/index.B02OFURX.js create mode 100644 web/dist/assets/index.B1qSD2uw.js delete mode 100644 web/dist/assets/index.B4YvKwUk.js create mode 100644 web/dist/assets/index.B8KF4JYI.js delete mode 100644 web/dist/assets/index.BB25-PUl.js delete mode 100644 web/dist/assets/index.BBt1_1E0.js create mode 100644 web/dist/assets/index.BDNJA8If.js create mode 100644 web/dist/assets/index.BEdABa7j.js delete mode 100644 web/dist/assets/index.BKFTHIJo.js delete mode 100644 web/dist/assets/index.BLuyqBKT.js create mode 100644 web/dist/assets/index.BMJMBrcg.js delete mode 100644 web/dist/assets/index.BMLVfHDg.js create mode 100644 web/dist/assets/index.BPpabYml.js delete mode 100644 web/dist/assets/index.BQWmd8dy.js create mode 100644 web/dist/assets/index.BR6H7WFV.css delete mode 100644 web/dist/assets/index.BRUoq9JF.js create mode 100644 web/dist/assets/index.BU9KQC3C.js delete mode 100644 web/dist/assets/index.BWG65dbY.js create mode 100644 web/dist/assets/index.BcYTMXcC.js delete mode 100644 web/dist/assets/index.BdKOiafz.js delete mode 100644 web/dist/assets/index.BeHuKCBj.js create mode 100644 web/dist/assets/index.BirIJw8Z.js create mode 100644 web/dist/assets/index.BjY8uEFU.js create mode 100644 web/dist/assets/index.Bm1edkkC.js create mode 100644 web/dist/assets/index.BoWRgMyU.js create mode 100644 web/dist/assets/index.BqCL4IRB.js delete mode 100644 web/dist/assets/index.BqRUnpx4.js create mode 100644 web/dist/assets/index.BqbY8nz8.js create mode 100644 web/dist/assets/index.BrZukc0n.js create mode 100644 web/dist/assets/index.Bv3T3HiC.js create mode 100644 web/dist/assets/index.Bz9VMPUO.js create mode 100644 web/dist/assets/index.BzHh54cQ.js create mode 100644 web/dist/assets/index.C5HpKCqW.js create mode 100644 web/dist/assets/index.C6RgVXJw.js delete mode 100644 web/dist/assets/index.C7FCFxIG.js create mode 100644 web/dist/assets/index.C7RtknAF.js delete mode 100644 web/dist/assets/index.C8nsmekx.js delete mode 100644 web/dist/assets/index.C9xbvsVt.js create mode 100644 web/dist/assets/index.C9xcTXIE.js create mode 100644 web/dist/assets/index.CCNs2Hev.js create mode 100644 web/dist/assets/index.CEv3RDym.js create mode 100644 web/dist/assets/index.CIYoZLfr.css delete mode 100644 web/dist/assets/index.CIuc4c82.js create mode 100644 web/dist/assets/index.CLUAcGBM.js delete mode 100644 web/dist/assets/index.CM92p2dK.js delete mode 100644 web/dist/assets/index.CPtAIYcr.js delete mode 100644 web/dist/assets/index.CSLxyD_P.js create mode 100644 web/dist/assets/index.CSk56TD-.js delete mode 100644 web/dist/assets/index.CSmNi5Hz.js create mode 100644 web/dist/assets/index.CVeX3cqw.js create mode 100644 web/dist/assets/index.CdL57JTu.js create mode 100644 web/dist/assets/index.Cfj_JmZ7.js create mode 100644 web/dist/assets/index.CfkdStyR.js delete mode 100644 web/dist/assets/index.ChB7-cPb.js create mode 100644 web/dist/assets/index.Cje1h4hb.js create mode 100644 web/dist/assets/index.CkipCyF5.js delete mode 100644 web/dist/assets/index.CmQFx-VW.js delete mode 100644 web/dist/assets/index.CvWHgkGx.js delete mode 100644 web/dist/assets/index.CvqYXTn4.js create mode 100644 web/dist/assets/index.CwV_ihHW.js create mode 100644 web/dist/assets/index.D-hZpHT_.js delete mode 100644 web/dist/assets/index.D2QvUCMr.js create mode 100644 web/dist/assets/index.D4Efh7wg.js delete mode 100644 web/dist/assets/index.D9cKcRvH.js create mode 100644 web/dist/assets/index.D9ixfriD.js rename web/dist/assets/{index.CyYN-Q1l.js => index.DBI9tQxQ.js} (31%) create mode 100644 web/dist/assets/index.DDGoOdYe.js delete mode 100644 web/dist/assets/index.DHbr1QT_.js create mode 100644 web/dist/assets/index.DHp4Qd1E.js create mode 100644 web/dist/assets/index.DKGWmVry.js create mode 100644 web/dist/assets/index.DKt5H83T.js delete mode 100644 web/dist/assets/index.DLjSDZf5.js create mode 100644 web/dist/assets/index.DPAevjQn.js create mode 100644 web/dist/assets/index.DQeSB0b0.js create mode 100644 web/dist/assets/index.DRH16xbT.js delete mode 100644 web/dist/assets/index.DRHSrNPe.js delete mode 100644 web/dist/assets/index.DSpMR-iu.js create mode 100644 web/dist/assets/index.DTFBYwQ8.js delete mode 100644 web/dist/assets/index.DTNB1H71.js delete mode 100644 web/dist/assets/index.DYBcdGkb.js delete mode 100644 web/dist/assets/index.DZYMe7om.js create mode 100644 web/dist/assets/index.DZpA2aLk.js create mode 100644 web/dist/assets/index.D_CEFjjt.js create mode 100644 web/dist/assets/index.DfYBnKHl.js create mode 100644 web/dist/assets/index.DhqRUyJJ.js create mode 100644 web/dist/assets/index.DrP9DI0m.js delete mode 100644 web/dist/assets/index.DrV5TFZn.js create mode 100644 web/dist/assets/index.DtP9Pg-r.js delete mode 100644 web/dist/assets/index.Dv8PJbHD.js delete mode 100644 web/dist/assets/index.DyaDdQXc.js create mode 100644 web/dist/assets/index.HMRGTdZI.js rename web/dist/assets/{index.DvQZPXXd.css => index.JncG-tMh.css} (72%) create mode 100644 web/dist/assets/index.L78f5ylC.js create mode 100644 web/dist/assets/index.MR8IudEp.js create mode 100644 web/dist/assets/index.OR5qXrHU.js create mode 100644 web/dist/assets/index.S9xXVY3S.js create mode 100644 web/dist/assets/index.TORIruIs.js create mode 100644 web/dist/assets/index.WyYk-FI1.js rename web/dist/assets/{index.CkCcWuPb.js => index.XK2ik2qb.js} (67%) create mode 100644 web/dist/assets/index.YBPnVDRQ.js delete mode 100644 web/dist/assets/index.YScPw7bZ.js create mode 100644 web/dist/assets/index.ZZs2V3Me.js create mode 100644 web/dist/assets/index.e_ytkSXd.js create mode 100644 web/dist/assets/index.grVSnM-o.js create mode 100644 web/dist/assets/index.juQlmUBD.js create mode 100644 web/dist/assets/index.lC0jjyhR.js rename web/dist/assets/{index.jXmfan6a.js => index.lgMetkfX.js} (53%) delete mode 100644 web/dist/assets/index.n_iG98Gs.js delete mode 100644 web/dist/assets/index.o9ZI4IMk.js delete mode 100644 web/dist/assets/index.swimFhvf.js create mode 100644 web/dist/assets/index.uvBernPo.css rename web/dist/assets/{index.vue_vue_type_script_setup_true_lang.SUHDC48E.js => index.vue_vue_type_script_setup_true_lang.Dh6h4Rji.js} (40%) create mode 100644 web/dist/assets/index.vue_vue_type_script_setup_true_name_importExcel_lang.BJiC24f9.js delete mode 100644 web/dist/assets/index.vue_vue_type_script_setup_true_name_importExcel_lang.PF0MdneX.js delete mode 100644 web/dist/assets/index.vue_vue_type_script_setup_true_name_svgIcon_lang.DVS5ZgXC.js create mode 100644 web/dist/assets/index.vue_vue_type_script_setup_true_name_svgIcon_lang.Dxcb_vGm.js delete mode 100644 web/dist/assets/index.xycF2T5O.js create mode 100644 web/dist/assets/jsoneditor-icons.CIlYC0TY.svg create mode 100644 web/dist/assets/link.CdIVQuk2.js delete mode 100644 web/dist/assets/link.Dm4igRQf.js create mode 100644 web/dist/assets/list.CLgwDRUz.js delete mode 100644 web/dist/assets/list.DrfbZE2c.js delete mode 100644 web/dist/assets/main.B3b7-7PA.js create mode 100644 web/dist/assets/main.BjGLKst8.js create mode 100644 web/dist/assets/min.D7rSK6xZ.js create mode 100644 web/dist/assets/min.vue_vue_type_script_setup_true_lang.C4qOy7bo.js create mode 100644 web/dist/assets/mobile.CBux642Y.js delete mode 100644 web/dist/assets/mobile.HNTeVw5Q.js create mode 100644 web/dist/assets/month.DqMkfcwp.js create mode 100644 web/dist/assets/month.vue_vue_type_script_setup_true_lang.BnyJZ3t8.js create mode 100644 web/dist/assets/normal.BdKXqIfJ.css create mode 100644 web/dist/assets/normal.DzXTK3VV.js create mode 100644 web/dist/assets/normal.vue_vue_type_style_index_0_lang.CzVJ-OTl.js delete mode 100644 web/dist/assets/parent.C6EbHvur.js create mode 100644 web/dist/assets/parent.jjGnAm0E.js create mode 100644 web/dist/assets/preChangeContent.BhaMH2iC.js create mode 100644 web/dist/assets/preChangeContent.DgBxoJ4_.css create mode 100644 web/dist/assets/request.FMdsBF9A.js create mode 100644 web/dist/assets/result.BNE-iXbo.js create mode 100644 web/dist/assets/result.pNe2_QEJ.css rename web/dist/assets/{scan.CncQYAmv.js => scan.8t6Jac7S.js} (98%) delete mode 100644 web/dist/assets/search.Da1RhtvH.js create mode 100644 web/dist/assets/search.TLl0Cdrt.js create mode 100644 web/dist/assets/second.BAxfR3Y3.js rename web/dist/assets/{setings.DZx2-WcA.js => setings.Bk1aff-e.js} (85%) delete mode 100644 web/dist/assets/subItem.BfAnlXnN.js create mode 100644 web/dist/assets/subItem.qTCEXAcU.js rename web/dist/assets/{tagsView.DJSmzEFB.js => tagsView.C57Sgq_O.js} (85%) create mode 100644 web/dist/assets/transverse.BgqUrkIV.js delete mode 100644 web/dist/assets/transverse.CaB-GJdl.js rename web/dist/assets/{uploader-alioss-72a67ab7.9Ys1k9Y2.js => uploader-alioss-72a67ab7.kzJqWnbh.js} (99%) rename web/dist/assets/{uploader-cos-d6837856.pQtblLcI.js => uploader-cos-d6837856.GNvoNraR.js} (88%) delete mode 100644 web/dist/assets/uploader-form-59673bb1.DivG8mbB.js create mode 100644 web/dist/assets/uploader-form-59673bb1.DnahPDeh.js create mode 100644 web/dist/assets/uploader-qiniu-f6a47e00.B4f1Pgy9.js delete mode 100644 web/dist/assets/uploader-qiniu-f6a47e00.C4hHpgGo.js rename web/dist/assets/{uploader-s3-aa58ec2a.CaCaoLM3.js => uploader-s3-aa58ec2a.hfLQcnu1.js} (93%) create mode 100644 web/dist/assets/user.B_q5iRyd.js delete mode 100644 web/dist/assets/user.D2LPe_dv.js delete mode 100644 web/dist/assets/userNews.BQ1mXTAw.js create mode 100644 web/dist/assets/userNews.XFJtcNFN.js delete mode 100644 web/dist/assets/vertical.D5BzUQaZ.js create mode 100644 web/dist/assets/vertical.DfG__Lvt.js create mode 100644 web/dist/assets/vue-draggable-plus.DFq4KU1k.js rename web/dist/assets/{vue.Cw4Y52yh.js => vue.DmuWcDrn.js} (99%) create mode 100644 web/dist/assets/week.CJuPhuOW.js create mode 100644 web/dist/assets/week.vue_vue_type_script_setup_true_lang.DizSlV6q.js create mode 100644 web/dist/assets/year.BIDa69bd.js diff --git a/web/dist/assets/401.6AFBTDZ2.js b/web/dist/assets/401.6AFBTDZ2.js deleted file mode 100644 index 387545b8a4..0000000000 --- a/web/dist/assets/401.6AFBTDZ2.js +++ /dev/null @@ -1 +0,0 @@ -import{w as m,aR as r,F as d,aA as f,x as g,y as p,z as e,a5 as i,a7 as u,a0 as _,a4 as h,X as v}from"./vue.Cw4Y52yh.js";import{u as w,b as T,S as b}from"./index.CkCcWuPb.js";import{_ as C}from"./_plugin-vue_export-helper.DlAUqK2U.js";const F=m({name:"401",setup(){const s=w(),t=T(),{themeConfig:a}=r(s),{isTagsViewCurrenFull:n}=r(t),l=()=>{b.clear(),window.location.reload()},c=d(()=>{let{isTagsview:o}=a.value;return n.value?"30px":o?"114px":"80px"});return{onSetAuth:l,initTagViewHeight:c}}}),x={class:"error-flex"},y={class:"left"},A={class:"left-item"},V={class:"left-item-animation left-item-title"},$={class:"left-item-animation left-item-msg"},S={class:"left-item-animation left-item-btn"};function k(s,t,a,n,l,c){const o=f("el-button");return p(),g("div",{class:"error layout-view-bg-white",style:v({height:`calc(100vh - ${s.initTagViewHeight}`})},[e("div",x,[e("div",y,[e("div",A,[t[0]||(t[0]=e("div",{class:"left-item-animation left-item-num"},"401",-1)),e("div",V,i(s.$t("message.noAccess.accessTitle")),1),e("div",$,i(s.$t("message.noAccess.accessMsg")),1),e("div",S,[u(o,{type:"primary",round:"",onClick:s.onSetAuth},{default:_(()=>[h(i(s.$t("message.noAccess.accessBtn")),1)]),_:1},8,["onClick"])])])]),t[1]||(t[1]=e("div",{class:"right"},[e("img",{src:"https://img-blog.csdnimg.cn/3333f265772a4fa89287993500ecbf96.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHl0LXRvcA==,size_16,color_FFFFFF,t_70,g_se,x_16"})],-1))])],4)}const z=C(F,[["render",k],["__scopeId","data-v-858f28e6"]]);export{z as default}; diff --git a/web/dist/assets/401.D4rfss3t.js b/web/dist/assets/401.D4rfss3t.js new file mode 100644 index 0000000000..89e63d10b7 --- /dev/null +++ b/web/dist/assets/401.D4rfss3t.js @@ -0,0 +1 @@ +import{d as m,T as r,c as d,h as f,a as g,o as p,e,K as i,k as u,w as _,m as h,n as v}from"./vue.DmuWcDrn.js";import{u as w,O as T,S as C}from"./index.XK2ik2qb.js";import{_ as b}from"./_plugin-vue_export-helper.DlAUqK2U.js";const F=m({name:"401",setup(){const s=w(),t=T(),{themeConfig:a}=r(s),{isTagsViewCurrenFull:n}=r(t),c=()=>{C.clear(),window.location.reload()},l=d(()=>{let{isTagsview:o}=a.value;return n.value?"30px":o?"114px":"80px"});return{onSetAuth:c,initTagViewHeight:l}}}),V={class:"error-flex"},$={class:"left"},x={class:"left-item"},y={class:"left-item-animation left-item-title"},A={class:"left-item-animation left-item-msg"},k={class:"left-item-animation left-item-btn"};function S(s,t,a,n,c,l){const o=f("el-button");return p(),g("div",{class:"error layout-view-bg-white",style:v({height:`calc(100vh - ${s.initTagViewHeight}`})},[e("div",V,[e("div",$,[e("div",x,[t[0]||(t[0]=e("div",{class:"left-item-animation left-item-num"},"401",-1)),e("div",y,i(s.$t("message.noAccess.accessTitle")),1),e("div",A,i(s.$t("message.noAccess.accessMsg")),1),e("div",k,[u(o,{type:"primary",round:"",onClick:s.onSetAuth},{default:_(()=>[h(i(s.$t("message.noAccess.accessBtn")),1)]),_:1},8,["onClick"])])])]),t[1]||(t[1]=e("div",{class:"right"},[e("img",{src:"https://img-blog.csdnimg.cn/3333f265772a4fa89287993500ecbf96.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHl0LXRvcA==,size_16,color_FFFFFF,t_70,g_se,x_16"})],-1))])],4)}const H=b(F,[["render",S],["__scopeId","data-v-858f28e6"]]);export{H as default}; diff --git a/web/dist/assets/404.8Y09U-70.js b/web/dist/assets/404.8Y09U-70.js new file mode 100644 index 0000000000..dc4b7531f3 --- /dev/null +++ b/web/dist/assets/404.8Y09U-70.js @@ -0,0 +1 @@ +import{d as c,T as m,v as u,c as f,h as p,a as g,o as _,e,K as i,k as v,w as h,m as T,n as w}from"./vue.DmuWcDrn.js";import{u as C,O as V}from"./index.XK2ik2qb.js";import{_ as $}from"./_plugin-vue_export-helper.DlAUqK2U.js";const y=c({name:"404",setup(){const t=C(),s=V(),{themeConfig:n}=m(t),{isTagsViewCurrenFull:a}=m(s),r=u(),l=()=>{r.push("/")},o=f(()=>{let{isTagsview:d}=n.value;return a.value?"30px":d?"114px":"80px"});return{onGoHome:l,initTagViewHeight:o}}}),k="/assets/img404.DizYJBZK.png",B={class:"error-flex"},b={class:"left"},x={class:"left-item"},F={class:"left-item-animation left-item-title"},H={class:"left-item-animation left-item-msg"},R={class:"left-item-animation left-item-btn"};function N(t,s,n,a,r,l){const o=p("el-button");return _(),g("div",{class:"error layout-view-bg-white",style:w({height:`calc(100vh - ${t.initTagViewHeight}`})},[e("div",B,[e("div",b,[e("div",x,[s[0]||(s[0]=e("div",{class:"left-item-animation left-item-num"},"404",-1)),e("div",F,i(t.$t("message.notFound.foundTitle")),1),e("div",H,i(t.$t("message.notFound.foundMsg")),1),e("div",R,[v(o,{type:"primary",round:"",onClick:t.onGoHome},{default:h(()=>[T(i(t.$t("message.notFound.foundBtn")),1)]),_:1},8,["onClick"])])])]),s[1]||(s[1]=e("div",{class:"right"},[e("img",{src:k})],-1))])],4)}const K=$(y,[["render",N],["__scopeId","data-v-43ed7a98"]]);export{K as default}; diff --git a/web/dist/assets/404.C6XJAvwQ.js b/web/dist/assets/404.C6XJAvwQ.js deleted file mode 100644 index 64a03035e9..0000000000 --- a/web/dist/assets/404.C6XJAvwQ.js +++ /dev/null @@ -1 +0,0 @@ -import{w as u,aR as m,aU as c,F as f,aA as p,x as g,y as _,z as e,a5 as i,a7 as v,a0 as h,a4 as T,X as w}from"./vue.Cw4Y52yh.js";import{u as C,b as V}from"./index.CkCcWuPb.js";import{_ as $}from"./_plugin-vue_export-helper.DlAUqK2U.js";const y=u({name:"404",setup(){const t=C(),s=V(),{themeConfig:n}=m(t),{isTagsViewCurrenFull:a}=m(s),r=c(),l=()=>{r.push("/")},o=f(()=>{let{isTagsview:d}=n.value;return a.value?"30px":d?"114px":"80px"});return{onGoHome:l,initTagViewHeight:o}}}),b="/assets/img404.DizYJBZK.png",x={class:"error-flex"},B={class:"left"},F={class:"left-item"},R={class:"left-item-animation left-item-title"},k={class:"left-item-animation left-item-msg"},H={class:"left-item-animation left-item-btn"};function z(t,s,n,a,r,l){const o=p("el-button");return _(),g("div",{class:"error layout-view-bg-white",style:w({height:`calc(100vh - ${t.initTagViewHeight}`})},[e("div",x,[e("div",B,[e("div",F,[s[0]||(s[0]=e("div",{class:"left-item-animation left-item-num"},"404",-1)),e("div",R,i(t.$t("message.notFound.foundTitle")),1),e("div",k,i(t.$t("message.notFound.foundMsg")),1),e("div",H,[v(o,{type:"primary",round:"",onClick:t.onGoHome},{default:h(()=>[T(i(t.$t("message.notFound.foundBtn")),1)]),_:1},8,["onClick"])])])]),s[1]||(s[1]=e("div",{class:"right"},[e("img",{src:b})],-1))])],4)}const S=$(y,[["render",z],["__scopeId","data-v-43ed7a98"]]);export{S as default}; diff --git a/web/dist/assets/Approval.BIQMdMFc.js b/web/dist/assets/Approval.BIQMdMFc.js new file mode 100644 index 0000000000..63b62f7da7 --- /dev/null +++ b/web/dist/assets/Approval.BIQMdMFc.js @@ -0,0 +1 @@ +import E from"./Node.Do50r9uM.js";import{n as t}from"./NodeMixin.CdUK7SNa.js";import{c as p,g as i,b as f,o as b}from"./vue.DmuWcDrn.js";import"./InsertBtn.A0117t9o.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const N={__name:"Approval",props:{...t.props},emits:t.emits,setup(u,{expose:m,emit:d}){const v=u,s=d,n=p(t.computed._value(v,s)),l=i(!1),o=i(null);m({validate:S});const c=p(()=>{let a="请设置审批人";const e=n.value.props;switch(e.mode){case"AUTO_REFUSE":a="系统自动拒绝流程🚫";break;case"AUTO_PASS":a="系统自动通过流程✔️";break;case"USER":switch(e.ruleType){case"ASSIGN_USER":e.assignUser.length===0?a="请指定审批人":a=e.assignUser.map(r=>r.name).join("、");break;case"ROOT_SELECT":a="发起人提交流程时指定人";break;case"ROOT_SELF":a="发起人自己审批";break;case"LEADER":e.leader.level>1?a=`发起人的第${e.leader.level}级部门主管`:a="发起人的直属主管";break;case"LEADER_TOP":a="逐级部门主管审批";break;case"ASSIGN_DEPT":a=`部门[${e.assignDept.dept.map(r=>r.name).join("、")}]的主管审批`;break;case"ASSIGN_ROLE":a=`具有角色[${e.assignRole.map(r=>r.name).join("、")}]的人员审批`;break}break}return a});function S(a){const e=n.value.props;if(l.value=!0,e.mode==="USER"){switch(e.ruleType){case"ASSIGN_USER":if(e.assignUser.length===0){o.value="未指定具体审批人",a.push(`${n.value.name} 节点未指定审批人`);return}break;case"ASSIGN_DEPT":if(e.assignDept.dept.length===0){o.value="未设置部门",a.push(`${n.value.name} 节点未设置部门`);return}break;case"ASSIGN_ROLE":if(e.assignRole.length===0){o.value="未设置审批角色",a.push(`${n.value.name} 节点未设置角色`);return}break}if(e.noUserHandler.type==="TO_USER"&&e.noUserHandler.assigned.length===0){o.value="未指定为空转交人",a.push(`${n.value.name} 节点未指定为空时的转交人`);return}}l.value=!1}return(a,e)=>(b(),f(E,{modelValue:n.value,"onUpdate:modelValue":e[0]||(e[0]=r=>n.value=r),readonly:a.readonly,"show-error":l.value,"error-info":o.value,"header-color":"#EC8151","header-icon":"stamp",content:c.value,onSelect:e[1]||(e[1]=r=>s("select",a.modelValue)),onInsertNode:e[2]||(e[2]=r=>s("insertNode",a.branch,a.index,r)),onDelete:e[3]||(e[3]=r=>s("delete",a.branch,a.index))},null,8,["modelValue","readonly","show-error","error-info","content"]))}};export{N as default}; diff --git a/web/dist/assets/Approval.Bswl0Ie2.js b/web/dist/assets/Approval.Bswl0Ie2.js new file mode 100644 index 0000000000..9b24cc93ae --- /dev/null +++ b/web/dist/assets/Approval.Bswl0Ie2.js @@ -0,0 +1 @@ +import{n as T}from"./NodeMixin.CdUK7SNa.js";import F from"./WOrgPicker.B_7Qd6r5.js";import"./FormInterface.vRCiFeo3.js";import S from"./WOrgTags.Bgj5L3ZH.js";import{_ as $}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as W,g as E,h as s,b as i,o as t,w as p,k as o,J as f,e as R,m as v,a as d,G as m,H as A}from"./vue.DmuWcDrn.js";import"./WDialog.D9OIgJAb.js";import"./request.FMdsBF9A.js";import"./index.XK2ik2qb.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";const H={class:"w-node-rules"},J={__name:"Approval",props:{...T.props},emits:T.emits,setup(N,{emit:L}){const P=N,C=L,l=W(T.computed._value(P,C)),V=E(),U=E("org"),_=E([]),I=[{label:"指定人员",type:"ASSIGN_USER"},{label:"发起人自己",type:"ROOT_SELF"},{label:"指定部门",type:"ASSIGN_DEPT"},{label:"系统角色",type:"ASSIGN_ROLE"}];function b(y,e){U.value=e,_.value=y,V.value.open()}function w(y){console.log("选中",y),V.value.close(),_.value.length=0,_.value.push(...y)}return(y,e)=>{const k=s("el-text"),u=s("el-radio"),r=s("el-radio-group"),D=s("el-divider"),g=s("el-button"),n=s("el-form-item"),O=s("el-option"),G=s("el-select"),x=s("el-input-number"),M=s("el-form"),z=s("el-tab-pane"),B=s("el-tabs");return t(),i(B,{style:{padding:"0px 10px"}},{default:p(()=>[o(z,{label:"审批人设置"},{default:p(()=>[l.value.props.mode==="USER"?(t(),i(M,{key:0,"label-position":"top"},{default:p(()=>[R("div",H,[o(k,null,{default:p(()=>e[16]||(e[16]=[v("👨‍⚖️ 设置审批人规则")])),_:1}),R("div",null,[o(r,{modelValue:l.value.props.ruleType,"onUpdate:modelValue":e[0]||(e[0]=a=>l.value.props.ruleType=a),class:"w-a-t-group"},{default:p(()=>[(t(),d(m,null,A(I,a=>o(u,{key:a.type,label:a.label,value:a.type},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),o(D,{style:{margin:"5px 0 10px"}}),l.value.props.ruleType==="ASSIGN_USER"?(t(),d(m,{key:0},[o(g,{style:{"margin-bottom":"5px"},onClick:e[1]||(e[1]=a=>b(l.value.props.assignUser,"user")),size:"small",type:"primary",icon:"plus",plain:""},{default:p(()=>e[17]||(e[17]=[v("添加审批人 ")])),_:1}),o(S,{modelValue:l.value.props.assignUser,"onUpdate:modelValue":e[2]||(e[2]=a=>l.value.props.assignUser=a)},null,8,["modelValue"])],64)):l.value.props.ruleType==="ROOT_SELECT"?(t(),i(n,{key:1,label:"选择方式"},{default:p(()=>[o(r,{modelValue:l.value.props.rootSelect.multiple,"onUpdate:modelValue":e[3]||(e[3]=a=>l.value.props.rootSelect.multiple=a)},{default:p(()=>[o(u,{value:!1,label:"自选一个人"}),o(u,{value:!0,label:"自选多个人"})]),_:1},8,["modelValue"])]),_:1})):l.value.props.ruleType==="ROOT_SELF"?(t(),i(k,{key:2},{default:p(()=>e[18]||(e[18]=[v(" 发起人自己将作为审批人进行审批 ")])),_:1})):l.value.props.ruleType==="LEADER"?(t(),d(m,{key:3},[o(n,{label:"指定主管级别"},{default:p(()=>[o(k,null,{default:p(()=>e[19]||(e[19]=[v("发起人的:")])),_:1}),o(G,{style:{width:"80%"},modelValue:l.value.props.leader.level,"onUpdate:modelValue":e[4]||(e[4]=a=>l.value.props.leader.level=a)},{default:p(()=>[o(O,{value:1,label:"向上第1级部门主管(直属主管)"}),(t(),d(m,null,A(18,a=>o(O,{value:a+1,label:`向上第${a+1}级部门主管`},null,8,["value","label"])),64))]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"对应部门主管未设置时"},{default:p(()=>[o(r,{modelValue:l.value.props.leader.emptySkip,"onUpdate:modelValue":e[5]||(e[5]=a=>l.value.props.leader.emptySkip=a)},{default:p(()=>[o(u,{value:!1,label:"也算找了一级"}),o(u,{value:!0,label:"有人才算找了一级"})]),_:1},8,["modelValue"])]),_:1})],64)):l.value.props.ruleType==="LEADER_TOP"?(t(),d(m,{key:4},[o(n,{label:"部门层级终点"},{default:p(()=>[o(r,{modelValue:l.value.props.leaderTop.toEnd,"onUpdate:modelValue":e[6]||(e[6]=a=>l.value.props.leaderTop.toEnd=a)},{default:p(()=>[o(u,{value:!0,label:"直到最顶级部门"}),o(u,{value:!1,label:"到指定级别为止"})]),_:1},8,["modelValue"]),l.value.props.leaderTop.toEnd?f("",!0):(t(),i(x,{key:0,style:{"margin-left":"10px"},size:"small",precision:0,modelValue:l.value.props.leaderTop.level,"onUpdate:modelValue":e[7]||(e[7]=a=>l.value.props.leaderTop.level=a),min:1,max:50},null,8,["modelValue"]))]),_:1}),o(n,{label:"对应部门主管未设置时"},{default:p(()=>[o(r,{modelValue:l.value.props.leaderTop.emptySkip,"onUpdate:modelValue":e[8]||(e[8]=a=>l.value.props.leaderTop.emptySkip=a)},{default:p(()=>[o(u,{value:!1,label:"也算找了一级"}),o(u,{value:!0,label:"有人才算找了一级"})]),_:1},8,["modelValue"])]),_:1})],64)):l.value.props.ruleType==="ASSIGN_DEPT"?(t(),d(m,{key:5},[o(g,{style:{"margin-bottom":"5px"},onClick:e[9]||(e[9]=a=>b(l.value.props.assignDept.dept,"dept")),size:"small",type:"primary",icon:"plus",plain:""},{default:p(()=>e[20]||(e[20]=[v("选择部门 ")])),_:1}),o(S,{modelValue:l.value.props.assignDept.dept,"onUpdate:modelValue":e[10]||(e[10]=a=>l.value.props.assignDept.dept=a)},null,8,["modelValue"])],64)):l.value.props.ruleType==="ASSIGN_ROLE"?(t(),d(m,{key:6},[o(g,{style:{"margin-bottom":"5px"},onClick:e[11]||(e[11]=a=>b(l.value.props.assignRole,"role")),size:"small",type:"primary",icon:"plus",plain:""},{default:p(()=>e[21]||(e[21]=[v("选择系统角色 ")])),_:1}),o(S,{modelValue:l.value.props.assignRole,"onUpdate:modelValue":e[12]||(e[12]=a=>l.value.props.assignRole=a)},null,8,["modelValue"])],64)):f("",!0)])]),o(n,{label:"👩‍👦‍👦节点存在多个审批人时审批方式"},{default:p(()=>[o(r,{modelValue:l.value.props.taskMode.type,"onUpdate:modelValue":e[14]||(e[14]=a=>l.value.props.taskMode.type=a)},{default:p(()=>[o(u,{style:{width:"100%"},value:"OR",label:"或签(有一人同意即可)"}),l.value.props.taskMode.type==="CUSTOM"?(t(),i(x,{key:0,size:"small",precision:0,modelValue:l.value.props.taskMode.percentage,"onUpdate:modelValue":e[13]||(e[13]=a=>l.value.props.taskMode.percentage=a),max:100,min:1},null,8,["modelValue"])):f("",!0)]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"🤫当审批人与提交人为同一人时"},{default:p(()=>[o(r,{modelValue:l.value.props.sameRoot.type,"onUpdate:modelValue":e[15]||(e[15]=a=>l.value.props.sameRoot.type=a)},{default:p(()=>[o(u,{value:"TO_SELF",label:"自己审批"}),o(u,{value:"TO_SKIP",label:"跳过任务"})]),_:1},8,["modelValue"])]),_:1})]),_:1})):f("",!0)]),_:1}),o(F,{ref_key:"orgPicker",ref:V,type:U.value,selected:_.value,multiple:"",onOk:w},null,8,["type","selected"])]),_:1})}}},oe=$(J,[["__scopeId","data-v-9d252f67"]]);export{oe as default}; diff --git a/web/dist/assets/Approval.Bt898B8S.css b/web/dist/assets/Approval.Bt898B8S.css new file mode 100644 index 0000000000..96ed186f36 --- /dev/null +++ b/web/dist/assets/Approval.Bt898B8S.css @@ -0,0 +1 @@ +[data-v-9d252f67] .w-a-t-group{display:flex;flex-wrap:wrap}[data-v-9d252f67] .w-a-t-group .el-radio{width:112px;margin-bottom:10px}.w-node-rules[data-v-9d252f67]{border-radius:5px;overflow:hidden;border:1px solid var(--el-border-color);margin-bottom:20px}.w-node-rules[data-v-9d252f67]>:first-child{display:inline-block;padding:5px;width:100%;background-color:var(--el-border-color)}.w-node-rules[data-v-9d252f67]>:nth-child(2){padding:10px} diff --git a/web/dist/assets/BaseSetting.AfBX5QdH.js b/web/dist/assets/BaseSetting.AfBX5QdH.js new file mode 100644 index 0000000000..49a52b8bc5 --- /dev/null +++ b/web/dist/assets/BaseSetting.AfBX5QdH.js @@ -0,0 +1 @@ +import{I as b}from"./index.XK2ik2qb.js";import{s as z}from"./request.FMdsBF9A.js";import{_ as E}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{g as d,c as F,x as G,h as n,b as _,o as i,w as t,k as l,e as m,u as v,n as H,m as V,a as c,G as p,H as f}from"./vue.DmuWcDrn.js";const M={style:{margin:"0 40px"}},P={style:{display:"flex","align-items":"center"}},$={class:"w-icons"},A={style:{width:"31px",height:"0"}},D={__name:"BaseSetting",props:{modelValue:Object},setup(q,{expose:B}){const C=q,y=d();B({validate:U});const o=F({get(){return C.modelValue},set(r){emit("update:modelValue",r)}});d([{id:222,name:"测试"}]);function U(){return new Promise((r,a)=>{y.value.validate().then(()=>r()).catch(s=>{a(Object.keys(s).map(g=>s[g][0].message))})})}const I={name:[{required:!0,message:"请设置流程表单名称",trigger:"blur"},{min:2,max:20,message:"流程表单名称长度在2~20",trigger:"blur"}],groupId:[{required:!0,message:"请设置流程表单分组",trigger:"blur"}],content_type:[{required:!0,message:"请选择库表",trigger:"blur"}],operation:[{required:!0,message:"请选择库表操作",trigger:"blur"}]},L=["bi:people-fill","gridicons:multiple-users","icon-park-solid:appointment","icon-park-solid:people","fluent:people-add-24-filled","material-symbols:person-cancel-rounded","ph:coffee-fill","ph:sneaker-move-fill","solar:money-bag-bold","healthicons:money-bag","solar:wallet-money-bold","f7:money-yen-circle-fill","entypo:aircraft","entypo:aircraft-take-off","mingcute:bus-2-fill","mingcute:car-fill","mingcute:train-fill","fluent:handshake-20-filled","icon-park-solid:buy","mingcute:hand-card-fill","icon-park-solid:time","mdi:gift","bxs:map","ph:fingerprint-fill","mdi:customer-service","icon-park-solid:general-branch","bx:bxs-purchase-tag","mdi:notebook-edit","simple-icons:opsgenie","streamline:business-user-curriculum-solid","fa6-solid:business-time","mdi:google-my-business","mdi:qqchat","mdi:wechat","bxs:message-square-detail","mingcute:send-plane-fill","tabler:mail-filled","material-symbols:folder-open","icon-park-solid:computer","material-symbols:laptop-mac-outline","fluent:phone-vibrate-20-filled","fluent:form-28-filled","file-icons:omnigraffle","material-symbols:assignment-turned-in","mingcute:card-refund-fill","mingcute:wechat-miniprogram-fill","whh:phonebookalt","ri:database-2-fill","ph:bank-fill","material-symbols:school","iconamoon:smiling-face-fill","solar:sad-circle-bold","ri:hearts-fill","mdi:qrcode-scan","fluent:calendar-cancel-16-filled","ion:videocam","material-symbols:play-circle","jam:unsplash","ph:film-reel-fill","icon-park-solid:noodles","dashicons:food","fluent:food-cake-16-filled","mdi:food","material-symbols:delete","material-symbols:edit-document","material-symbols:chart-data","ph:chart-pie-slice-fill"],h=d([]),j=()=>z({url:"/api/dvadmin3_flow/flow_info/get_all_flow_content_type/",method:"get"}).then(r=>{h.value=r.data}),N=d([{value:"create",label:"新增"},{value:"update",label:"编辑"},{value:"delete",label:"删除"}]);return G(()=>{j()}),(r,a)=>{const s=n("el-text"),g=n("el-color-picker"),S=n("el-popover"),u=n("el-form-item"),k=n("el-input"),x=n("el-option"),w=n("el-select"),T=n("el-form"),O=n("el-main");return i(),_(O,{class:"w-designer-base"},{default:t(()=>[l(T,{ref_key:"form",ref:y,rules:I,model:o.value,"label-position":"top"},{default:t(()=>[l(u,{prop:"icon",label:"设置图标"},{default:t(()=>[l(v(b),{icon:o.value.icon.name,class:"w-process-icon",style:H({background:o.value.icon.bgc,color:o.value.icon.color})},null,8,["icon","style"]),m("div",M,[l(s,null,{default:t(()=>a[5]||(a[5]=[V("选择背景色:")])),_:1}),l(g,{modelValue:o.value.icon.bgc,"onUpdate:modelValue":a[0]||(a[0]=e=>o.value.icon.bgc=e)},null,8,["modelValue"])]),m("div",P,[l(s,null,{default:t(()=>a[6]||(a[6]=[V("选择图标:")])),_:1}),l(S,{placement:"bottom-start",width:"402",trigger:"click"},{reference:t(()=>[l(v(b),{class:"w-p-icon",style:{padding:"0"},slot:"reference",icon:o.value.icon.name},null,8,["icon"])]),default:t(()=>[m("div",$,[(i(),c(p,null,f(L,e=>l(v(b),{class:"w-icons-ico",onClick:J=>o.value.icon.name=e,icon:e,key:e},null,8,["onClick","icon"])),64)),(i(),c(p,null,f(12,e=>m("div",A)),64))])]),_:1})])]),_:1}),l(u,{prop:"name",required:"",label:"流程名称"},{default:t(()=>[l(k,{modelValue:o.value.name,"onUpdate:modelValue":a[1]||(a[1]=e=>o.value.name=e),placeholder:"请设置流程名"},null,8,["modelValue"])]),_:1}),l(u,{prop:"content_type",required:"",label:"关联库表"},{default:t(()=>[l(w,{style:{width:"calc(100% - 140px)","padding-right":"20px"},modelValue:o.value.content_type,"onUpdate:modelValue":a[2]||(a[2]=e=>o.value.content_type=e),placeholder:"请选择"},{default:t(()=>[(i(!0),c(p,null,f(h.value,e=>(i(),_(x,{value:e.value,label:e.label},null,8,["value","label"]))),256))]),_:1},8,["modelValue"])]),_:1}),l(u,{prop:"operation",required:"",label:"库表操作"},{default:t(()=>[l(w,{style:{width:"calc(100% - 140px)","padding-right":"20px"},modelValue:o.value.operation,"onUpdate:modelValue":a[3]||(a[3]=e=>o.value.operation=e),placeholder:"请选择"},{default:t(()=>[(i(!0),c(p,null,f(N.value,e=>(i(),_(x,{value:e.value,label:e.label},null,8,["value","label"]))),256))]),_:1},8,["modelValue"])]),_:1}),l(u,{label:"备注说明"},{default:t(()=>[l(k,{modelValue:o.value.remark,"onUpdate:modelValue":a[4]||(a[4]=e=>o.value.remark=e),"show-word-limit":"",maxlength:"128",rows:3,type:"textarea",placeholder:"流程备注说明信息"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1})}}},X=E(D,[["__scopeId","data-v-74849b61"]]);export{X as default}; diff --git a/web/dist/assets/BaseSetting.BoIrvcwf.css b/web/dist/assets/BaseSetting.BoIrvcwf.css new file mode 100644 index 0000000000..0cc0953a36 --- /dev/null +++ b/web/dist/assets/BaseSetting.BoIrvcwf.css @@ -0,0 +1 @@ +.w-designer-base[data-v-74849b61]{margin:0 auto;border-radius:5px;background-color:#fff;width:650px;min-height:calc(100vh - 100px)}.w-p-icon[data-v-74849b61]{font-size:20px;cursor:pointer;color:var(--el-color-info)}.w-icons[data-v-74849b61]{overflow:auto;max-height:400px;padding:2px;display:flex;justify-content:space-between;flex-wrap:wrap}.w-icons .w-icons-ico[data-v-74849b61]{width:25px;height:25px;padding:3px;cursor:pointer;border-radius:2px}.w-icons .w-icons-ico[data-v-74849b61]:hover{box-shadow:0 0 3px #9b9595} diff --git a/web/dist/assets/BranchNode.B8syyw50.js b/web/dist/assets/BranchNode.B8syyw50.js new file mode 100644 index 0000000000..89045dfa68 --- /dev/null +++ b/web/dist/assets/BranchNode.B8syyw50.js @@ -0,0 +1 @@ +import{g as p,c as z,C as E,D as A,h as a,a as m,o as s,b as u,J as v,e as d,w as l,k as t,p as w,N as B,n as g,r as T,_ as F,K as y,m as x,f as M}from"./vue.DmuWcDrn.js";import W from"./InsertBtn.A0117t9o.js";import{n as D}from"./NodeMixin.CdUK7SNa.js";import{_ as j}from"./_plugin-vue_export-helper.DlAUqK2U.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";const J={class:"w-p-node"},K={style:{flex:"1"}},O={class:"w-p-node-header"},U={key:0,class:"w-node-action"},q={class:"w-p-node-add"},G={__name:"BranchNode",props:{moveLn:Boolean,moveRn:Boolean,type:String,color:String,headerIcon:String,content:String,readonly:Boolean,modelValue:Object,showError:Boolean,errorInfo:String,isDefault:Boolean,placeholder:{default:"请设置"},desc:String},emits:[...D.emits,"copy","moveL","moveR"],setup(e,{emit:N}){const I=e,r=p(!1),k=p(),i=N,f=z(D.computed._value(I,i));return E(r,()=>{r.value&&A(()=>{k.value.focus()})}),(S,o)=>{const $=a("WarningFilled"),c=a("el-icon"),h=a("el-tooltip"),L=a("ArrowLeft"),R=a("CopyDocument"),V=a("Close"),C=a("el-text"),b=a("ArrowRight");return s(),m("div",J,[e.showError?(s(),u(h,{key:0,effect:"dark",content:e.errorInfo||"设置错误",placement:"top-start"},{default:l(()=>[t(c,{size:"20",class:"w-node-err-tip"},{default:l(()=>[t($)]),_:1})]),_:1},8,["content"])):v("",!0),d("div",{class:M({"w-p-node-body":!0,"w-node-err":e.showError}),style:g({"---shadowColor":e.color})},[d("div",{class:"w-p-node-move",onClick:o[0]||(o[0]=n=>i("moveL"))},[w(t(c,null,{default:l(()=>[t(L)]),_:1},512),[[B,!e.readonly&&e.moveLn&&!e.isDefault]])]),d("div",K,[d("div",O,[d("div",{style:g({color:e.isDefault?"#898989":e.color})},[r.value?v("",!0):(s(),u(c,{key:0,size:"15"},{default:l(()=>[(s(),u(T(e.headerIcon)))]),_:1})),r.value?w((s(),m("input",{key:1,ref_key:"nodeNameInput",ref:k,autofocus:"",onBlur:o[1]||(o[1]=n=>r.value=!1),"onUpdate:modelValue":o[2]||(o[2]=n=>f.value.name=n)},null,544)),[[F,f.value.name]]):(s(),m("div",{key:2,class:"w-row-text",onClick:o[3]||(o[3]=()=>{e.readonly||(r.value=!0)})},y(f.value.name),1))],4),!e.readonly&&!e.isDefault?(s(),m("div",U,[t(c,{onClick:o[4]||(o[4]=n=>i("copy"))},{default:l(()=>[t(R)]),_:1}),t(c,{onClick:o[5]||(o[5]=n=>i("delete"))},{default:l(()=>[t(V)]),_:1})])):v("",!0),t(C,{class:"w-node-desc",type:"info",size:"small"},{default:l(()=>[x(y(e.desc),1)]),_:1})]),d("div",{class:"w-p-node-content",onClick:o[6]||(o[6]=n=>S.$emit("select"))},[t(C,{"line-clamp":"4"},{default:l(()=>[x(y(e.content||e.placeholder),1)]),_:1})])]),d("div",{class:"w-p-node-move",onClick:o[7]||(o[7]=n=>i("moveR"))},[w(t(c,null,{default:l(()=>[t(b)]),_:1},512),[[B,!e.readonly&&e.moveRn&&!e.isDefault]])])],6),d("div",q,[e.readonly?v("",!0):(s(),u(W,{key:0,onInsertNode:o[8]||(o[8]=n=>i("insertNode",n))}))])])}}},ee=j(G,[["__scopeId","data-v-c9db5d83"]]);export{ee as default}; diff --git a/web/dist/assets/BranchNode.qDeeEatk.css b/web/dist/assets/BranchNode.qDeeEatk.css new file mode 100644 index 0000000000..50c77629a8 --- /dev/null +++ b/web/dist/assets/BranchNode.qDeeEatk.css @@ -0,0 +1 @@ +.w-node-err[data-v-c9db5d83]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}.w-p-node[data-v-c9db5d83]{width:220px;margin-bottom:8px;position:relative}.w-p-node .w-node-err-tip[data-v-c9db5d83]{position:absolute;right:-30px;color:var(--el-color-danger)}.w-p-node .w-p-node-body[data-v-c9db5d83]{cursor:pointer;background:#fff;overflow:hidden;border-radius:5px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 0 5px #d8d8d8}.w-p-node .w-p-node-body .w-p-node-move[data-v-c9db5d83]{width:15px}.w-p-node .w-p-node-body .w-p-node-move[data-v-c9db5d83]:hover{background:#f5f6f6}.w-p-node .w-p-node-body[data-v-c9db5d83]:hover{box-shadow:0 0 5px 0 var(---shadowColor)}.w-p-node .w-p-node-body>div[data-v-c9db5d83]:first-child,.w-p-node .w-p-node-body>div[data-v-c9db5d83]:last-child{height:100%}.w-p-node .w-p-node-body>div[data-v-c9db5d83]:first-child:hover,.w-p-node .w-p-node-body>div[data-v-c9db5d83]:last-child:hover{background:#cacaca}.w-p-node .w-p-node-body .w-p-node-header[data-v-c9db5d83]{display:flex;align-items:center;justify-content:space-between;height:25px;font-size:13px}.w-p-node .w-p-node-body .w-p-node-header .w-node-action[data-v-c9db5d83]{color:#767676;display:none}.w-p-node .w-p-node-body .w-p-node-header .w-node-action[data-v-c9db5d83]>*{margin:2px}.w-p-node .w-p-node-body .w-p-node-header .w-node-desc[data-v-c9db5d83]{position:absolute;right:8px}.w-p-node .w-p-node-body .w-p-node-header .w-row-text[data-v-c9db5d83]:hover{text-decoration:underline}.w-p-node .w-p-node-body .w-p-node-header>div[data-v-c9db5d83]{display:flex;align-items:center}.w-p-node .w-p-node-body .w-p-node-header>div>div[data-v-c9db5d83]{margin-left:3px;width:135px}.w-p-node .w-p-node-body .w-p-node-header input[data-v-c9db5d83]{width:135px;border:1px solid #CACACA;border-radius:5px}.w-p-node .w-p-node-body .w-p-node-header input[data-v-c9db5d83]:focus{outline:none}.w-p-node .w-p-node-body .w-p-node-content[data-v-c9db5d83]{padding:5px;min-height:50px;display:flex;justify-content:space-between;align-items:center;font-size:15px;color:#656363}.w-p-node .w-p-node-body .w-p-node-content>div[data-v-c9db5d83]{word-wrap:break-word}.w-p-node .w-p-node-body:hover .w-node-action[data-v-c9db5d83]{display:inline}.w-p-node .w-p-node-body:hover .w-node-desc[data-v-c9db5d83]{display:none}.w-p-node .w-p-node-add[data-v-c9db5d83]{position:relative;display:flex;justify-content:center;align-items:center;height:80px}.w-p-node .w-p-node-add[data-v-c9db5d83]:before{position:absolute;content:"";width:2px;height:80px;background:#cacaca}.w-p-node .w-p-node-add[data-v-c9db5d83]:after{content:"";position:absolute;top:80px;left:50%;transform:translate(-50%);width:0;border-style:solid;border-width:8px 6px 4px;border-color:#CACACA transparent transparent} diff --git a/web/dist/assets/Cc.B7imrGbS.js b/web/dist/assets/Cc.B7imrGbS.js new file mode 100644 index 0000000000..55290f75c4 --- /dev/null +++ b/web/dist/assets/Cc.B7imrGbS.js @@ -0,0 +1 @@ +import S from"./Node.Do50r9uM.js";import{n as l}from"./NodeMixin.CdUK7SNa.js";import{c as p,g as i,b as g,o as b}from"./vue.DmuWcDrn.js";import"./InsertBtn.A0117t9o.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const D={__name:"Cc",props:{...l.props},emits:l.emits,setup(u,{expose:m,emit:d}){const v=u,a=d,r=p(l.computed._value(v,a)),t=i(!1),s=i(null),c=p(()=>{let o="请设置抄送人";const e=r.value.props;switch(e.ruleType){case"ASSIGN_USER":e.assignUser.length===0?o="请指定抄送人":o=`抄送 ${e.assignUser.map(n=>n.name).join("、")}`;break;case"ROOT_SELECT":o="发起人提交流程时指定人";break;case"LEADER":o="发起人的直属主管";break;case"ASSIGN_DEPT":o=`抄送部门[${e.assignDept.dept.map(n=>n.name).join("、")}]的主管`;break;case"ASSIGN_ROLE":o=`抄送具有角色[${e.assignRole.map(n=>n.name).join("、")}]的人员`;break}return o});m({validate:f});function f(o){t.value=!0;const e=r.value.props;switch(e.ruleType){case"ASSIGN_USER":if(e.assignUser.length===0){s.value="未指定具体抄送人",o.push(`${r.value.name} 节点未指定抄送人`);return}break;case"ASSIGN_DEPT":if(e.assignDept.dept.length===0){s.value="未设置抄送部门",o.push(`${r.value.name} 节点未设置抄送部门`);return}break;case"ASSIGN_ROLE":if(e.assignRole.length===0){s.value="未设置抄送角色",o.push(`${r.value.name} 节点未设置抄送角色`);return}break}t.value=!1}return(o,e)=>(b(),g(S,{modelValue:r.value,"onUpdate:modelValue":e[0]||(e[0]=n=>r.value=n),readonly:o.readonly,"show-error":t.value,"error-info":s.value,"header-color":"#5994F3","header-icon":"Promotion",content:c.value,onSelect:e[1]||(e[1]=n=>a("select",o.modelValue)),onInsertNode:e[2]||(e[2]=n=>a("insertNode",o.branch,o.index,n)),onDelete:e[3]||(e[3]=n=>a("delete",o.branch,o.index))},null,8,["modelValue","readonly","show-error","error-info","content"]))}};export{D as default}; diff --git a/web/dist/assets/Cc.COAaZbd-.css b/web/dist/assets/Cc.COAaZbd-.css new file mode 100644 index 0000000000..716e0f1279 --- /dev/null +++ b/web/dist/assets/Cc.COAaZbd-.css @@ -0,0 +1 @@ +[data-v-5349d6a9] .w-a-t-group{display:flex;flex-wrap:wrap}[data-v-5349d6a9] .w-a-t-group .el-radio{width:112px;margin-bottom:10px}.w-node-rules[data-v-5349d6a9]{border-radius:5px;overflow:hidden;border:1px solid var(--el-border-color);margin-bottom:20px}.w-node-rules[data-v-5349d6a9]>:first-child{display:inline-block;padding:5px;width:100%;background-color:var(--el-border-color)}.w-node-rules[data-v-5349d6a9]>:nth-child(2){padding:10px} diff --git a/web/dist/assets/Cc.CQpVL-5n.js b/web/dist/assets/Cc.CQpVL-5n.js new file mode 100644 index 0000000000..22b310d119 --- /dev/null +++ b/web/dist/assets/Cc.CQpVL-5n.js @@ -0,0 +1 @@ +import{n as y}from"./NodeMixin.CdUK7SNa.js";import D from"./FormPermConf.CE-WaGhp.js";import g from"./WOrgTags.Bgj5L3ZH.js";import w from"./WOrgPicker.B_7Qd6r5.js";import{_ as L}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as z,g as b,h as s,b as V,o as a,w as p,k as t,e as x,m as n,a as m,J as B,G as i,H as $}from"./vue.DmuWcDrn.js";import"./FormInterface.vRCiFeo3.js";import"./WDialog.D9OIgJAb.js";import"./request.FMdsBF9A.js";import"./index.XK2ik2qb.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";const W={class:"w-node-rules"},F={__name:"Cc",props:{...y.props},emits:y.emits,setup(E,{emit:U}){const I=E,N=U,l=z(y.computed._value(I,N)),d=b(),k=b("org"),u=b([]),O=[{label:"指定人员",type:"ASSIGN_USER"},{label:"指定部门",type:"ASSIGN_DEPT"},{label:"系统角色",type:"ASSIGN_ROLE"}];function v(r,e){k.value=e,u.value=r,d.value.open()}function R(r){console.log("选中",r),d.value.close(),u.value.length=0,u.value.push(...r)}return(r,e)=>{const S=s("el-text"),f=s("el-radio"),c=s("el-radio-group"),C=s("el-divider"),_=s("el-button"),P=s("el-form-item"),A=s("el-form"),T=s("el-tab-pane"),G=s("el-tabs");return a(),V(G,null,{default:p(()=>[t(T,{label:"抄送人设置"},{default:p(()=>[t(A,{"label-position":"top"},{default:p(()=>[x("div",W,[t(S,null,{default:p(()=>e[9]||(e[9]=[n("👨‍⚖️ 设置抄送人规则")])),_:1}),x("div",null,[t(c,{modelValue:l.value.props.ruleType,"onUpdate:modelValue":e[0]||(e[0]=o=>l.value.props.ruleType=o),class:"w-a-t-group"},{default:p(()=>[(a(),m(i,null,$(O,o=>t(f,{key:o.type,label:o.label,value:o.type},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),t(C,{style:{margin:"5px 0 10px"}}),l.value.props.ruleType==="ASSIGN_USER"?(a(),m(i,{key:0},[t(_,{style:{"margin-bottom":"5px"},onClick:e[1]||(e[1]=o=>v(l.value.props.assignUser,"user")),size:"small",type:"primary",icon:"plus",plain:""},{default:p(()=>e[10]||(e[10]=[n("添加抄送人 ")])),_:1}),t(g,{modelValue:l.value.props.assignUser,"onUpdate:modelValue":e[2]||(e[2]=o=>l.value.props.assignUser=o)},null,8,["modelValue"])],64)):l.value.props.ruleType==="ROOT_SELECT"?(a(),V(P,{key:1,label:"选择方式"},{default:p(()=>[t(c,{modelValue:l.value.props.rootSelect.multiple,"onUpdate:modelValue":e[3]||(e[3]=o=>l.value.props.rootSelect.multiple=o)},{default:p(()=>[t(f,{value:!1,label:"自选一个人"}),t(f,{value:!0,label:"自选多个人"})]),_:1},8,["modelValue"])]),_:1})):l.value.props.ruleType==="ASSIGN_DEPT"?(a(),m(i,{key:2},[t(_,{style:{"margin-bottom":"5px"},onClick:e[4]||(e[4]=o=>v(l.value.props.assignDept.dept,"dept")),size:"small",type:"primary",icon:"plus",plain:""},{default:p(()=>e[11]||(e[11]=[n("选择部门 ")])),_:1}),t(g,{modelValue:l.value.props.assignDept.dept,"onUpdate:modelValue":e[5]||(e[5]=o=>l.value.props.assignDept.dept=o)},null,8,["modelValue"])],64)):l.value.props.ruleType==="ASSIGN_ROLE"?(a(),m(i,{key:3},[t(_,{style:{"margin-bottom":"5px"},onClick:e[6]||(e[6]=o=>v(l.value.props.assignRole,"role")),size:"small",type:"primary",icon:"plus",plain:""},{default:p(()=>e[12]||(e[12]=[n("选择系统角色 ")])),_:1}),t(g,{modelValue:l.value.props.assignRole,"onUpdate:modelValue":e[7]||(e[7]=o=>l.value.props.assignRole=o)},null,8,["modelValue"])],64)):l.value.props.ruleType==="LEADER"?(a(),V(S,{key:4},{default:p(()=>e[13]||(e[13]=[n("抄送发起人的直属主管")])),_:1})):B("",!0)])])]),_:1})]),_:1}),t(T,{lazy:"",label:"表单权限设置"},{default:p(()=>[t(D,{"default-perm":"R",formItems:r.formItems,modelValue:l.value.props.formPerms,"onUpdate:modelValue":e[8]||(e[8]=o=>l.value.props.formPerms=o)},null,8,["formItems","modelValue"])]),_:1}),t(w,{ref_key:"orgPicker",ref:d,type:k.value,selected:u.value,multiple:"",onOk:R},null,8,["type","selected"])]),_:1})}}},le=L(F,[["__scopeId","data-v-5349d6a9"]]);export{le as default}; diff --git a/web/dist/assets/CommonConfig.Cb__DBae.js b/web/dist/assets/CommonConfig.Cb__DBae.js new file mode 100644 index 0000000000..c6df946828 --- /dev/null +++ b/web/dist/assets/CommonConfig.Cb__DBae.js @@ -0,0 +1 @@ +import{F as p}from"./FormComponentMixin.C3yPnfoW.js";import{h as t,a as i,o as u,k as l,w as a,G as d}from"./vue.DmuWcDrn.js";const g={__name:"CommonConfig",props:{...p.props},emits:[...p.emits],setup(_,{emit:f}){return(e,o)=>{const s=t("el-input"),m=t("el-form-item"),r=t("el-switch");return u(),i(d,null,[l(m,{label:"字段KEY"},{default:a(()=>[l(s,{modelValue:e.config.props.key,"onUpdate:modelValue":o[0]||(o[0]=n=>e.config.props.key=n),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),l(m,{label:"隐藏名称"},{default:a(()=>[l(r,{modelValue:e.config.props.hideLabel,"onUpdate:modelValue":o[1]||(o[1]=n=>e.config.props.hideLabel=n)},null,8,["modelValue"])]),_:1})],64)}}};export{g as default}; diff --git a/web/dist/assets/ConditionCompare.CgHyGqGV.js b/web/dist/assets/ConditionCompare.CgHyGqGV.js new file mode 100644 index 0000000000..62756c63a4 --- /dev/null +++ b/web/dist/assets/ConditionCompare.CgHyGqGV.js @@ -0,0 +1 @@ +const s={number:[{name:"大于",symbol:"GT"},{name:"小于",symbol:"LT"},{name:"等于",symbol:"EQ"},{name:"大于等于",symbol:"GT_EQ"},{name:"小于等于",symbol:"LT_EQ"},{name:"不等于",symbol:"NEQ"},{name:"包含在",symbol:"IN"},{name:"介于两者间(含首尾)",symbol:"BT"}],string:[{name:"含有字符串",symbol:"HAS"},{name:"包含在",symbol:"IN"},{name:"等于",symbol:"EQ"},{name:"不等于",symbol:"NEQ"}],array:[{name:"含有",symbol:"HAS"},{name:"不含有",symbol:"NHAS"}],date:[{name:"在之前<",symbol:"BF"},{name:"在之后>",symbol:"AF"},{name:"在之间",symbol:"CT"},{name:"在之外",symbol:"NCT"}],dateRange:[{name:"在本期间",symbol:"CT"},{name:"在本期间外",symbol:"NCT"},{name:"时长大于",symbol:"GE"},{name:"时长小于",symbol:"LE"},{name:"时长等于",symbol:"EQ"}],org:[{name:"本人/部门属于",symbol:"IN"},{name:"本人/部门不属于",symbol:"NIN"}],role:[{name:"拥有角色",symbol:"HAS"},{name:"没有角色",symbol:"NHAS"}]},n=e=>{const m=s[r[e.group][e.type].type],o=m.findIndex(a=>a.symbol===e.compare);return(m[o]||{}).name||"?"},r={INITIATOR:{Org:{type:"org",desc(e){return`发起人${n(e)} ${(e.compareVal||[]).map(m=>m.name).join("、")}`}},Role:{type:"role",desc(e){return`发起人${n(e)} ${e.compareVal.map(m=>m.name).join("、")}`}}},FORM:{TextInput:{type:"string",desc(e){return`${e.name[1]} ${n(e)} ${e.compareVal.join("、")}`}},NumberInput:{type:"number",desc(e){return`${e.name[1]} ${n(e)} ${e.compareVal.join("、")}`}}},DATABASE:{TextInput:{type:"string",desc(e){return`${e.name[1]} ${n(e)} ${e.compareVal.join("、")}`}},NumberInput:{type:"number",desc(e){return`${e.name[1]} ${n(e)} ${e.compareVal.join("、")}`}}}};export{s as C,r as P}; diff --git a/web/dist/assets/ConditionGroupConfig.BNW7mGqr.js b/web/dist/assets/ConditionGroupConfig.BNW7mGqr.js new file mode 100644 index 0000000000..946b6df059 --- /dev/null +++ b/web/dist/assets/ConditionGroupConfig.BNW7mGqr.js @@ -0,0 +1 @@ +import G from"./ConditionItemConfig.CdU5ajTx.js";import J from"./WDialog.D9OIgJAb.js";import{_ as M}from"./FormInterface.vRCiFeo3.js";import{P as $}from"./ConditionCompare.CgHyGqGV.js";import{s as P}from"./request.FMdsBF9A.js";import{_ as z}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{b as H}from"./index.XK2ik2qb.js";import{c as A,g as V,h as i,a as f,o as a,e as k,k as o,w as n,m as d,K as N,J as K,G as _,H as C,b as r,u as L}from"./vue.DmuWcDrn.js";import"./WOrgTags.Bgj5L3ZH.js";import"./WOrgPicker.B_7Qd6r5.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";const W={class:"w-condition-group"},q={key:0,class:"w-cd-group-tip"},Q={__name:"ConditionGroupConfig",props:{name:String,designData:{type:Object,default:()=>({})},modelValue:{type:Object,default:()=>({})}},emits:["update:modelValue","delete"],setup(c){const b=c,s=A({get(){return b.modelValue},set(m){emit("update:modelValue",m)}}),T=A(()=>M.value.filter(m=>$.FORM[m.type])),w=V([]),U=()=>{const e=JSON.parse(JSON.stringify(b.designData)).content_type;return P({url:"/api/dvadmin3_flow/flow_info/get_model_fields/",method:"get",params:{model_name:e}}).then(u=>{w.value=u.data})},y=V(!1),t=V({});function I(){U(),y.value=!0,t.value={group:null,type:null,symbol:null,name:[],valueType:null}}function B(){t.value.type&&t.value.symbol?(y.value=!1,s.value.conditions.push({...t.value,compare:null,compareVal:[]})):H.warning("请选择条件类别")}return(m,e)=>{const u=i("el-text"),S=i("el-switch"),O=i("el-button"),F=i("Delete"),R=i("el-icon"),E=i("el-form-item"),j=i("el-form"),p=i("el-option"),g=i("el-select");return a(),f("div",W,[k("div",null,[o(u,null,{default:n(()=>[d(N(c.name),1)]),_:1}),k("div",null,[o(u,{style:{"margin-right":"10px"}},{default:n(()=>e[13]||(e[13]=[d("组内条件关系:")])),_:1}),o(S,{modelValue:s.value.logic,"onUpdate:modelValue":e[0]||(e[0]=l=>s.value.logic=l),"active-text":"且","inactive-text":"或"},null,8,["modelValue"])]),k("div",null,[o(O,{link:"",icon:"Plus",type:"primary",onClick:I},{default:n(()=>e[14]||(e[14]=[d("添加条件")])),_:1}),o(O,{link:"",icon:"Delete",type:"danger",onClick:e[1]||(e[1]=l=>m.$emit("delete"))},{default:n(()=>e[15]||(e[15]=[d("删除")])),_:1})])]),k("div",null,[s.value.conditions.length===0?(a(),f("div",q,[o(u,null,{default:n(()=>e[16]||(e[16]=[d("请点击上方 + 添加条件选项")])),_:1})])):K("",!0),o(j,{"label-position":"top","label-width":"100",class:"w-cd-group-item"},{default:n(()=>[(a(!0),f(_,null,C(s.value.conditions,(l,v)=>(a(),r(E,{key:l.id},{label:n(()=>[o(u,{truncated:""},{default:n(()=>[d(N((l.name||[]).join("-")),1)]),_:2},1024)]),default:n(()=>{var x;return[o(G,{modelValue:s.value.conditions[v],"onUpdate:modelValue":D=>s.value.conditions[v]=D,type:(x=L($)[l.group][l.type])==null?void 0:x.type,style:{display:"inline-block",width:"calc(100% - 20px)"}},null,8,["modelValue","onUpdate:modelValue","type"]),o(R,{class:"w-cd-del",style:{"font-size":"20px"},onClick:D=>s.value.conditions.splice(v,1)},{default:n(()=>[o(F)]),_:2},1032,["onClick"])]}),_:2},1024))),128))]),_:1})]),o(J,{border:!1,title:"选择条件类别",width:"500",modelValue:y.value,"onUpdate:modelValue":e[12]||(e[12]=l=>y.value=l),onOk:B},{default:n(()=>[o(g,{style:{width:"45%"},modelValue:t.value.group,"onUpdate:modelValue":e[4]||(e[4]=l=>t.value.group=l),onChange:e[5]||(e[5]=l=>t.value.symbol=null)},{default:n(()=>[o(p,{label:"发起人",value:"INITIATOR",onClick:e[2]||(e[2]=l=>t.value.name[0]="发起人")}),o(p,{label:"库表",value:"DATABASE",onClick:e[3]||(e[3]=l=>t.value.name[0]="库表")})]),_:1},8,["modelValue"]),o(u,{style:{margin:"0 10px"}},{default:n(()=>e[17]||(e[17]=[d("的")])),_:1}),t.value.group==="INITIATOR"?(a(),r(g,{key:0,style:{width:"45%"},modelValue:t.value.type,"onUpdate:modelValue":e[8]||(e[8]=l=>t.value.type=l),onChange:e[9]||(e[9]=l=>t.value.symbol=l)},{default:n(()=>[o(p,{label:"本人/部门",value:"Org",onClick:e[6]||(e[6]=l=>t.value.name[1]="本人/部门")}),o(p,{label:"角色",value:"Role",onClick:e[7]||(e[7]=l=>t.value.name[1]="角色")})]),_:1},8,["modelValue"])):t.value.group==="FORM"?(a(),r(g,{key:1,style:{width:"45%"},modelValue:t.value.symbol,"onUpdate:modelValue":e[10]||(e[10]=l=>t.value.symbol=l)},{default:n(()=>[(a(!0),f(_,null,C(T.value,l=>(a(),r(p,{label:l.name,value:l.key,key:l.key,onClick:v=>{t.value.type=l.type,t.value.name[1]=l.name}},null,8,["label","value","onClick"]))),128))]),_:1},8,["modelValue"])):b.designData.content_type?t.value.group==="DATABASE"?(a(),r(g,{key:3,style:{width:"45%"},modelValue:t.value.symbol,"onUpdate:modelValue":e[11]||(e[11]=l=>t.value.symbol=l)},{default:n(()=>[(a(!0),f(_,null,C(w.value,l=>(a(),r(p,{label:l.label,value:l.key,key:l.key,onClick:v=>{t.value.type=l.type,t.value.name[1]=l.label}},null,8,["label","value","onClick"]))),128))]),_:1},8,["modelValue"])):(a(),r(u,{key:4,type:"warning"},{default:n(()=>e[19]||(e[19]=[d("👀请选择左侧类别")])),_:1})):(a(),r(u,{key:2,type:"warning"},{default:n(()=>e[18]||(e[18]=[d("请先在首页选择model")])),_:1}))]),_:1},8,["modelValue"])])}}},de=z(Q,[["__scopeId","data-v-c2502bd3"]]);export{de as default}; diff --git a/web/dist/assets/ConditionGroupConfig.UuDrWypp.css b/web/dist/assets/ConditionGroupConfig.UuDrWypp.css new file mode 100644 index 0000000000..ed65ed0337 --- /dev/null +++ b/web/dist/assets/ConditionGroupConfig.UuDrWypp.css @@ -0,0 +1 @@ +.w-condition-group[data-v-c2502bd3]{border-radius:5px;overflow:hidden;border:1px solid var(--el-border-color);margin-bottom:20px}.w-condition-group .w-cd-group-tip[data-v-c2502bd3]{text-align:center;padding:10px 0}.w-condition-group[data-v-c2502bd3]>:first-child{padding:0 5px;display:flex;align-items:center;background-color:var(--el-border-color)}.w-condition-group[data-v-c2502bd3]>:first-child>:first-child{flex:1}.w-condition-group[data-v-c2502bd3]>:first-child>:nth-child(2){display:flex;align-items:center;margin-right:100px}.w-condition-group[data-v-c2502bd3]>:nth-child(2){padding:10px}[data-v-c2502bd3] .w-cd-group-item .w-cd-del{color:var(--el-color-danger);padding:3px;cursor:pointer}[data-v-c2502bd3] .w-cd-group-item .el-form-item__label{margin-bottom:0!important} diff --git a/web/dist/assets/ConditionItemConfig.CdU5ajTx.js b/web/dist/assets/ConditionItemConfig.CdU5ajTx.js new file mode 100644 index 0000000000..b1dcf22359 --- /dev/null +++ b/web/dist/assets/ConditionItemConfig.CdU5ajTx.js @@ -0,0 +1 @@ +import U from"./WOrgTags.Bgj5L3ZH.js";import I from"./WOrgPicker.B_7Qd6r5.js";import{C as T}from"./ConditionCompare.CgHyGqGV.js";import{c as z,g as k,h as p,a as o,o as t,k as r,J as x,w as i,G as u,H as c,u as $,b as d,m as b,e as W}from"./vue.DmuWcDrn.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";import"./WDialog.D9OIgJAb.js";import"./request.FMdsBF9A.js";import"./index.XK2ik2qb.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";const j={style:{width:"10%","margin-left":"10px"}},K={__name:"ConditionItemConfig",props:{type:{type:String},modelValue:{type:Object}},emits:["update:modelValue"],setup(m){const N=m,a=z({get(){return N.modelValue},set(n){emit("update:modelValue",n)}}),V=k(),f=k(!1),g=k("org");function E(n){}function w(n){g.value=n,V.value.open()}function O(n){a.value.compareVal=n,V.value.close()}return(n,l)=>{const y=p("el-option"),v=p("el-select"),B=p("el-divider"),C=p("el-button"),s=p("el-input"),P=p("el-checkbox");return t(),o("div",null,[r(v,{modelValue:a.value.compare,"onUpdate:modelValue":l[0]||(l[0]=e=>a.value.compare=e),style:{width:"30%"}},{default:i(()=>[(t(!0),o(u,null,c($(T)[m.type],e=>(t(),d(y,{key:e.symbol,label:e.name,value:e.symbol},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),r(B,{direction:"vertical"}),m.type==="org"?(t(),o(u,{key:0},[r(C,{icon:"Plus",size:"small",type:"primary",round:"",onClick:l[1]||(l[1]=e=>w("org"))},{default:i(()=>l[13]||(l[13]=[b("选择人员/部门")])),_:1}),r(U,{style:{"margin-top":"5px"},modelValue:a.value.compareVal,"onUpdate:modelValue":l[2]||(l[2]=e=>a.value.compareVal=e)},null,8,["modelValue"])],64)):m.type==="role"?(t(),o(u,{key:1},[r(C,{icon:"Plus",size:"small",type:"primary",round:"",onClick:l[3]||(l[3]=e=>w("role"))},{default:i(()=>l[14]||(l[14]=[b("选择角色")])),_:1}),r(U,{style:{"margin-top":"5px"},modelValue:a.value.compareVal,"onUpdate:modelValue":l[4]||(l[4]=e=>a.value.compareVal=e)},null,8,["modelValue"])],64)):x("",!0),m.type==="user"?(t(),o(u,{key:2},[],64)):m.type==="dept"?(t(),o(u,{key:3},[],64)):m.type==="number"?(t(),o(u,{key:4},[a.value.compare==="BT"?(t(),o(u,{key:0},[r(s,{style:{width:"30%"},type:"number",modelValue:a.value.compareVal[0],"onUpdate:modelValue":l[5]||(l[5]=e=>a.value.compareVal[0]=e),placeholder:"左比较值"},null,8,["modelValue"]),l[15]||(l[15]=b(" ~ ")),r(s,{style:{width:"30%"},type:"number",modelValue:a.value.compareVal[1],"onUpdate:modelValue":l[6]||(l[6]=e=>a.value.compareVal[1]=e),placeholder:"右比较值"},null,8,["modelValue"])],64)):a.value.compare==="IN"?(t(),d(v,{key:1,multiple:"",filterable:"","allow-create":"",modelValue:a.value.compareVal,"onUpdate:modelValue":l[7]||(l[7]=e=>a.value.compareVal=e),style:{width:"65%"},placeholder:"请输入选项"},{default:i(()=>[(t(!0),o(u,null,c(a.value.compareVal,e=>(t(),d(y,{key:e.symbol,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])):(t(),d(s,{key:2,type:"number",style:{width:"65%"},modelValue:a.value.compareVal[0],"onUpdate:modelValue":l[8]||(l[8]=e=>a.value.compareVal[0]=e),placeholder:"比较值"},null,8,["modelValue"]))],64)):m.type==="string"?(t(),o(u,{key:5},[a.value.compare==="IN"?(t(),d(v,{key:0,multiple:"",filterable:"","allow-create":"",modelValue:a.value.compareVal,"onUpdate:modelValue":l[9]||(l[9]=e=>a.value.compareVal=e),style:{width:"65%"},placeholder:"请输入选项"},{default:i(()=>[(t(!0),o(u,null,c(a.value.compareVal,e=>(t(),d(y,{key:e.symbol,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])):(t(),d(s,{key:1,style:{width:"55%"},modelValue:a.value.compareVal[0],"onUpdate:modelValue":l[10]||(l[10]=e=>a.value.compareVal[0]=e),placeholder:"输入比较值"},null,8,["modelValue"])),W("span",j,[r(P,{label:"为空",size:"large",modelValue:f.value,"onUpdate:modelValue":l[11]||(l[11]=e=>f.value=e),onClick:l[12]||(l[12]=e=>(a.value.compareVal[0],void 0))},null,8,["modelValue"])])],64)):m.type==="array"?(t(),o(u,{key:6},[],64)):m.type==="date"?(t(),o(u,{key:7},[],64)):m.type==="dateRange"?(t(),o(u,{key:8},[],64)):x("",!0),r(I,{type:g.value,multiple:"",ref_key:"orgPicker",ref:V,selected:a.value.compareVal,onOk:O},null,8,["type","selected"])])}}};export{K as default}; diff --git a/web/dist/assets/DateTimePicker.BmKb3hOT.js b/web/dist/assets/DateTimePicker.BmKb3hOT.js new file mode 100644 index 0000000000..086f085327 --- /dev/null +++ b/web/dist/assets/DateTimePicker.BmKb3hOT.js @@ -0,0 +1 @@ +import{F as o}from"./FormComponentMixin.C3yPnfoW.js";import{c as p,h as i,b as d,o as f}from"./vue.DmuWcDrn.js";const M={__name:"DateTimePicker",props:{...o.props},emits:[...o.emits],setup(m,{emit:l}){const t=m,n=l,a=p(o.computed._value(t,n)),s=p(()=>{switch(t.config.props.format){case"YYYY":return"year";case"YYYY-MM":return"month";case"YYYY-MM-DD":return"date";case"YYYY-MM-DD HH:mm":return"datetime";default:return"datetime"}});return(e,r)=>{const c=i("el-date-picker");return f(),d(c,{modelValue:a.value,"onUpdate:modelValue":r[0]||(r[0]=u=>a.value=u),"value-format":e.config.props.format,format:e.config.props.format,clearable:"",type:s.value,placeholder:e.config.props.placeholder},null,8,["modelValue","value-format","format","type","placeholder"])}}};export{M as default}; diff --git a/web/dist/assets/DateTimePicker.yGOOCJii.js b/web/dist/assets/DateTimePicker.yGOOCJii.js new file mode 100644 index 0000000000..a7f2f848b9 --- /dev/null +++ b/web/dist/assets/DateTimePicker.yGOOCJii.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as t,a as s,o as f,k as e,w as n,G as Y}from"./vue.DmuWcDrn.js";const D={__name:"DateTimePicker",props:{...r.props},emits:[...r.emits],setup(V,{emit:b}){return(l,o)=>{const u=t("el-input"),m=t("el-form-item"),p=t("el-option"),i=t("el-select"),d=t("el-switch");return f(),s(Y,null,[e(m,{label:"字段KEY"},{default:n(()=>[e(u,{modelValue:l.config.key,"onUpdate:modelValue":o[0]||(o[0]=a=>l.config.key=a),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),e(m,{label:"字段名称"},{default:n(()=>[e(u,{modelValue:l.config.name,"onUpdate:modelValue":o[1]||(o[1]=a=>l.config.name=a),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),e(m,{label:"提示文字"},{default:n(()=>[e(u,{modelValue:l.config.props.placeholder,"onUpdate:modelValue":o[2]||(o[2]=a=>l.config.props.placeholder=a),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),e(m,{label:"数据格式"},{default:n(()=>[e(i,{modelValue:l.config.props.format,"onUpdate:modelValue":o[3]||(o[3]=a=>l.config.props.format=a)},{default:n(()=>[e(p,{label:"年",value:"YYYY"}),e(p,{label:"年-月",value:"YYYY-MM"}),e(p,{label:"年-月-日",value:"YYYY-MM-DD"}),e(p,{label:"年-月-日 时",value:"YYYY-MM-DD HH"}),e(p,{label:"年-月-日 时:分",value:"YYYY-MM-DD HH:mm"}),e(p,{label:"年-月-日 时:分:秒",value:"YYYY-MM-DD HH:mm:ss"})]),_:1},8,["modelValue"])]),_:1}),e(m,{label:"隐藏名称"},{default:n(()=>[e(d,{modelValue:l.config.props.hideLabel,"onUpdate:modelValue":o[4]||(o[4]=a=>l.config.props.hideLabel=a)},null,8,["modelValue"])]),_:1}),e(m,{label:"是否必填"},{default:n(()=>[e(d,{modelValue:l.config.props.required,"onUpdate:modelValue":o[5]||(o[5]=a=>l.config.props.required=a)},null,8,["modelValue"])]),_:1})],64)}}};export{D as default}; diff --git a/web/dist/assets/DateTimeRangePicker.BDeWvN-a.js b/web/dist/assets/DateTimeRangePicker.BDeWvN-a.js new file mode 100644 index 0000000000..e065572d15 --- /dev/null +++ b/web/dist/assets/DateTimeRangePicker.BDeWvN-a.js @@ -0,0 +1 @@ +import{F as o}from"./FormComponentMixin.C3yPnfoW.js";import{c as p,h as u,b as i,o as f}from"./vue.DmuWcDrn.js";const Y={__name:"DateTimeRangePicker",props:{...o.props},emits:[...o.emits],setup(l,{emit:n}){const a=l,m=n,r=p(o.computed._value(a,m)),s=p(()=>{switch(a.config.props.format){case"YYYY-MM-DD":return"daterange";case"YYYY-MM-DD HH:mm":return"datetimerange";default:return"daterange"}});return(e,t)=>{const c=u("el-date-picker");return f(),i(c,{modelValue:r.value,"onUpdate:modelValue":t[0]||(t[0]=d=>r.value=d),clearable:"","value-format":e.config.props.format,format:e.config.props.format,type:s.value,"start-placeholder":e.config.props.placeholder[0],"end-placeholder":e.config.props.placeholder[1]},null,8,["modelValue","value-format","format","type","start-placeholder","end-placeholder"])}}};export{Y as default}; diff --git a/web/dist/assets/DateTimeRangePicker.Bsq0yfhX.js b/web/dist/assets/DateTimeRangePicker.Bsq0yfhX.js new file mode 100644 index 0000000000..37494132f5 --- /dev/null +++ b/web/dist/assets/DateTimeRangePicker.Bsq0yfhX.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as p,a as s,o as f,k as e,w as n,G as V}from"./vue.DmuWcDrn.js";const k={__name:"DateTimeRangePicker",props:{...r.props},emits:[...r.emits],setup(g,{emit:Y}){return(l,o)=>{const t=p("el-input"),m=p("el-form-item"),d=p("el-option"),i=p("el-select"),u=p("el-switch");return f(),s(V,null,[e(m,{label:"字段KEY"},{default:n(()=>[e(t,{modelValue:l.config.key,"onUpdate:modelValue":o[0]||(o[0]=a=>l.config.key=a),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),e(m,{label:"字段名称"},{default:n(()=>[e(t,{modelValue:l.config.name,"onUpdate:modelValue":o[1]||(o[1]=a=>l.config.name=a),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),e(m,{label:"提示文字"},{default:n(()=>[e(t,{modelValue:l.config.props.placeholder,"onUpdate:modelValue":o[2]||(o[2]=a=>l.config.props.placeholder=a),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),e(m,{label:"数据格式"},{default:n(()=>[e(i,{modelValue:l.config.props.format,"onUpdate:modelValue":o[3]||(o[3]=a=>l.config.props.format=a)},{default:n(()=>[e(d,{label:"年-月-日",value:"YYYY-MM-DD"}),e(d,{label:"年-月-日 时:分",value:"YYYY-MM-DD HH:mm"}),e(d,{label:"年-月-日 时:分:秒",value:"YYYY-MM-DD HH:mm:ss"})]),_:1},8,["modelValue"])]),_:1}),e(m,{label:"隐藏名称"},{default:n(()=>[e(u,{modelValue:l.config.props.hideLabel,"onUpdate:modelValue":o[4]||(o[4]=a=>l.config.props.hideLabel=a)},null,8,["modelValue"])]),_:1}),e(m,{label:"是否必填"},{default:n(()=>[e(u,{modelValue:l.config.props.required,"onUpdate:modelValue":o[5]||(o[5]=a=>l.config.props.required=a)},null,8,["modelValue"])]),_:1})],64)}}};export{k as default}; diff --git a/web/dist/assets/DeptPicker.BMtlEMVg.js b/web/dist/assets/DeptPicker.BMtlEMVg.js new file mode 100644 index 0000000000..e2a0300ea7 --- /dev/null +++ b/web/dist/assets/DeptPicker.BMtlEMVg.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import k from"./WOrgPicker.B_7Qd6r5.js";import v from"./WOrgTags.Bgj5L3ZH.js";import{_ as g}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as x,g as y,h as p,a as V,o as a,k as s,b as C,J as P,w as O,m as b,K as h}from"./vue.DmuWcDrn.js";import"./WDialog.D9OIgJAb.js";import"./request.FMdsBF9A.js";import"./index.XK2ik2qb.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";const w={style:{display:"flex","align-items":"center"}},B={__name:"DeptPicker",props:{...r.props},emits:[...r.emits],setup(i,{emit:m}){const c=i,u=m,e=x(r.computed._value(c,u)),l=y();function d(t){e.value=t,l.value.close()}return(t,o)=>{const f=p("el-button"),_=p("el-text");return a(),V("div",w,[s(f,{icon:"plus",onClick:o[0]||(o[0]=n=>l.value.open()),round:""}),(e.value||[]).length>0?(a(),C(v,{key:0,inline:"",modelValue:e.value,"onUpdate:modelValue":o[1]||(o[1]=n=>e.value=n)},null,8,["modelValue"])):P("",!0),s(_,{class:"w-placeholder"},{default:O(()=>[b(h(t.config.props.placeholder),1)]),_:1}),s(k,{multiple:t.config.props.multiple,ref_key:"orgPicker",ref:l,type:"dept",selected:e.value,onOk:d},null,8,["multiple","selected"])])}}},S=g(B,[["__scopeId","data-v-6fc68e88"]]);export{S as default}; diff --git a/web/dist/assets/DeptPicker.CCRiKZ2s.js b/web/dist/assets/DeptPicker.CCRiKZ2s.js new file mode 100644 index 0000000000..de212fccfc --- /dev/null +++ b/web/dist/assets/DeptPicker.CCRiKZ2s.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as u,a as t,o as i,k as o,w as p,G as s}from"./vue.DmuWcDrn.js";const k={__name:"DeptPicker",props:{...r.props},emits:[...r.emits],setup(f,{emit:V}){return(e,l)=>{const m=u("el-input"),a=u("el-form-item"),d=u("el-switch");return i(),t(s,null,[o(a,{label:"字段KEY"},{default:p(()=>[o(m,{modelValue:e.config.key,"onUpdate:modelValue":l[0]||(l[0]=n=>e.config.key=n),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),o(a,{label:"字段名称"},{default:p(()=>[o(m,{modelValue:e.config.name,"onUpdate:modelValue":l[1]||(l[1]=n=>e.config.name=n),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),o(a,{label:"提示文字"},{default:p(()=>[o(m,{modelValue:e.config.props.placeholder,"onUpdate:modelValue":l[2]||(l[2]=n=>e.config.props.placeholder=n),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),o(a,{label:"是否多选"},{default:p(()=>[o(d,{modelValue:e.config.props.multiple,"onUpdate:modelValue":l[3]||(l[3]=n=>e.config.props.multiple=n)},null,8,["modelValue"])]),_:1}),o(a,{label:"隐藏名称"},{default:p(()=>[o(d,{modelValue:e.config.props.hideLabel,"onUpdate:modelValue":l[4]||(l[4]=n=>e.config.props.hideLabel=n)},null,8,["modelValue"])]),_:1}),o(a,{label:"是否必填"},{default:p(()=>[o(d,{modelValue:e.config.props.required,"onUpdate:modelValue":l[5]||(l[5]=n=>e.config.props.required=n)},null,8,["modelValue"])]),_:1})],64)}}};export{k as default}; diff --git a/web/dist/assets/DeptPicker.Dztcgi1j.css b/web/dist/assets/DeptPicker.Dztcgi1j.css new file mode 100644 index 0000000000..54e9b0ab23 --- /dev/null +++ b/web/dist/assets/DeptPicker.Dztcgi1j.css @@ -0,0 +1 @@ +.w-placeholder[data-v-6fc68e88]{margin-left:10px;color:var(--el-text-color-placeholder)} diff --git a/web/dist/assets/Exclusive.Bnfklj94.js b/web/dist/assets/Exclusive.Bnfklj94.js new file mode 100644 index 0000000000..55b469bd77 --- /dev/null +++ b/web/dist/assets/Exclusive.Bnfklj94.js @@ -0,0 +1 @@ +import L from"./BranchNode.B8syyw50.js";import{n as p}from"./NodeMixin.CdUK7SNa.js";import{P as v}from"./ConditionCompare.CgHyGqGV.js";import{c as f,g as d,b as R,o as y}from"./vue.DmuWcDrn.js";import"./InsertBtn.A0117t9o.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const k={__name:"Exclusive",props:{...p.props,moveLn:Boolean,moveRn:Boolean,isDefault:Boolean},emits:[...p.emits,"moveL","moveR"],setup(i,{expose:g,emit:c}){const a=i,l=c,r=f(p.computed._value(a,l)),m=d(!1),u=d(null);g({validate:h});const $=f(()=>{if(a.isDefault)return"其他情况将进入此分支";{let n="请设置条件";const e=r.value.props;return e.groups.length>0&&e.groups[0].conditions.length>0&&(n=e.groups.map(o=>{if((o.conditions||[]).length===0)return"请添加条件";const s=e.groups.length>1&&o.conditions.length;return(s?"[":"")+o.conditions.map(t=>v[t.group]&&v[t.group][t.type]?v[t.group][t.type].desc(t):"未配置条件").join(` ${o.logic?"且":"或"} `)+(s?"]":"")}).join(` ${e.logic?"且":"或"} `)),n}});function h(n){if(m.value=!0,!a.isDefault){const e=r.value.props;if(e.groups.length===0){u.value="请添加条件组",n.push(`条件 ${r.value.name}未添加条件组`);return}else for(let o=0;oe==null||String(e).trim()==="")>-1}return(n,e)=>(y(),R(L,{modelValue:r.value,"onUpdate:modelValue":e[0]||(e[0]=o=>r.value=o),readonly:n.readonly,"show-error":m.value,"error-info":u.value,color:"#59B9A4","header-icon":"share","is-default":i.isDefault,content:$.value,moveRn:i.moveRn,moveLn:i.moveLn,onInsertNode:e[1]||(e[1]=o=>l("insertNode",o)),desc:`优先级 ${n.index+1}`,onMoveL:e[2]||(e[2]=o=>l("moveL")),onMoveR:e[3]||(e[3]=o=>l("moveR")),onDelete:e[4]||(e[4]=o=>l("delete")),onSelect:e[5]||(e[5]=o=>l("select",n.modelValue))},null,8,["modelValue","readonly","show-error","error-info","is-default","content","moveRn","moveLn","desc"]))}};export{k as default}; diff --git a/web/dist/assets/Exclusive.CHGcNMOo.js b/web/dist/assets/Exclusive.CHGcNMOo.js new file mode 100644 index 0000000000..8748d9b1d8 --- /dev/null +++ b/web/dist/assets/Exclusive.CHGcNMOo.js @@ -0,0 +1 @@ +import{n as s}from"./NodeMixin.CdUK7SNa.js";import D from"./ConditionGroupConfig.BNW7mGqr.js";import{b as c}from"./index.XK2ik2qb.js";import{c as w,h as t,b as u,o as l,w as p,J as G,k as n,a as h,m as B,G as E,H as N}from"./vue.DmuWcDrn.js";import"./ConditionItemConfig.CdU5ajTx.js";import"./WOrgTags.Bgj5L3ZH.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";import"./WOrgPicker.B_7Qd6r5.js";import"./WDialog.D9OIgJAb.js";import"./request.FMdsBF9A.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";import"./ConditionCompare.CgHyGqGV.js";import"./FormInterface.vRCiFeo3.js";const K={__name:"Exclusive",props:{...s.props},emits:s.emits,setup(g,{emit:_}){const f=g,v=_,e=w(s.computed._value(f,v));function V(a){if(e.value.props.groups.length<2){c.warning("哥,给我留一个😥");return}e.value.props.groups.splice(a,1)}function b(){if(e.value.props.groups.length>=4){c.warning("不要搞这么多撒🤨");return}e.value.props.groups.push({logic:!0,conditions:[]})}return(a,r)=>{const m=t("el-radio"),k=t("el-radio-group"),x=t("el-form-item"),C=t("el-button"),y=t("el-form");return l(),u(y,null,{default:p(()=>[e.value.props.groups.length>1?(l(),u(x,{key:0,label:"条件组关系"},{default:p(()=>[n(k,{modelValue:e.value.props.logic,"onUpdate:modelValue":r[0]||(r[0]=i=>e.value.props.logic=i)},{default:p(()=>[n(m,{label:"全部满足",value:!0}),n(m,{label:"满足任意一个",value:!1})]),_:1},8,["modelValue"])]),_:1})):G("",!0),n(C,{style:{"margin-bottom":"20px"},link:"",type:"primary",icon:"Plus",onClick:b},{default:p(()=>r[1]||(r[1]=[B("添加条件组")])),_:1}),(l(!0),h(E,null,N(e.value.props.groups,(i,o)=>(l(),u(D,{modelValue:e.value.props.groups[o],"onUpdate:modelValue":d=>e.value.props.groups[o]=d,designData:a.designData,name:`条件组 ${o+1}`,key:o,onDelete:d=>V(o)},null,8,["modelValue","onUpdate:modelValue","designData","name","onDelete"]))),128))]),_:1})}}};export{K as default}; diff --git a/web/dist/assets/FormComponent.BFjxV9c8.js b/web/dist/assets/FormComponent.BFjxV9c8.js new file mode 100644 index 0000000000..f0712a993a --- /dev/null +++ b/web/dist/assets/FormComponent.BFjxV9c8.js @@ -0,0 +1 @@ +import{F as m}from"./FormComponentMixin.C3yPnfoW.js";import{F as g}from"./FormComponents.BoFxZNqy.js";import{c as V,a as D}from"./GlobalFunc.9BrjVkDm.js";import{_ as x}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as s,h as l,a as v,o as c,J as _,b,k as i,w as C,u as d,r as B,f as N}from"./vue.DmuWcDrn.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";const U={key:0,class:"w-form-component"},$={__name:"FormComponent",props:{...m.props,type:String,modelValue:{default:void 0},parents:{default:()=>[]},index:Number},emits:[...m.emits],setup(t,{emit:y}){const a=t,f=y,p=s(m.computed._value(a,f)),r=s(m.computed._active(a,f)),F=s(()=>{var o;return((o=r.value)==null?void 0:o.id)===a.config.id&&a.mode==="free"});return(o,e)=>{const k=l("CopyDocument"),u=l("el-icon"),w=l("Delete");return c(),v("div",{style:{position:"relative",width:"100%"},class:N({"w-form-cp-active":F.value,"w-border-no":!o.config.props.isContainer})},[o.mode==="free"?(c(),v("div",U,[i(u,{color:"#ffffff",onClick:e[0]||(e[0]=n=>d(V)(t.parents,t.index))},{default:C(()=>[i(k)]),_:1}),i(u,{color:"#ffffff",onClick:e[1]||(e[1]=n=>d(D)(t.parents,t.index))},{default:C(()=>[i(w)]),_:1})])):_("",!0),(c(),b(B(d(g)[t.type]),{config:o.config,modelValue:p.value,"onUpdate:modelValue":e[2]||(e[2]=n=>p.value=n),mode:o.mode,active:r.value,"onUpdate:active":e[3]||(e[3]=n=>r.value=n)},null,40,["config","modelValue","mode","active"]))],2)}}},j=x($,[["__scopeId","data-v-03caae53"]]);export{j as default}; diff --git a/web/dist/assets/FormComponent.DNnIvXVq.css b/web/dist/assets/FormComponent.DNnIvXVq.css new file mode 100644 index 0000000000..edccb89250 --- /dev/null +++ b/web/dist/assets/FormComponent.DNnIvXVq.css @@ -0,0 +1 @@ +.w-border-no[data-v-03caae53]{border:none!important}.w-form-component[data-v-03caae53]{position:absolute;bottom:0;right:0;z-index:9;display:none;border-radius:5px 0 0;overflow:hidden}.w-form-component i[data-v-03caae53]{padding:5px;cursor:pointer;background:var(--el-color-primary)}.w-form-component i[data-v-03caae53]:hover{background:var(--el-color-primary-light-3)} diff --git a/web/dist/assets/FormComponentMixin.C3yPnfoW.js b/web/dist/assets/FormComponentMixin.C3yPnfoW.js new file mode 100644 index 0000000000..11af628465 --- /dev/null +++ b/web/dist/assets/FormComponentMixin.C3yPnfoW.js @@ -0,0 +1 @@ +const a={props:{config:{type:Object,default:()=>({})},mode:{type:String,default:"normal"},active:{type:Object},modelValue:Object|Number|Array|String},computed:{_active:function(e,t){return{get(){return e.active},set(u){t("update:active",u)}}},_value:function(e,t){return{get(){return e.modelValue},set(u){t("update:modelValue",u)}}}},emits:["update:modelValue","update:active","copy","delete"]};export{a as F}; diff --git a/web/dist/assets/FormComponents.BoFxZNqy.js b/web/dist/assets/FormComponents.BoFxZNqy.js new file mode 100644 index 0000000000..aaa1428461 --- /dev/null +++ b/web/dist/assets/FormComponents.BoFxZNqy.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DateTimePicker.BmKb3hOT.js","assets/FormComponentMixin.C3yPnfoW.js","assets/vue.DmuWcDrn.js","assets/DateTimeRangePicker.BDeWvN-a.js","assets/DeptPicker.BMtlEMVg.js","assets/WOrgPicker.B_7Qd6r5.js","assets/WDialog.D9OIgJAb.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/WDialog.DTkfzpzg.css","assets/request.FMdsBF9A.js","assets/index.XK2ik2qb.js","assets/index.JncG-tMh.css","assets/GlobalFunc.9BrjVkDm.js","assets/ProcessUtil.B7gNiVp1.js","assets/WOrgPicker.CaxAS1JB.css","assets/WOrgTags.Bgj5L3ZH.js","assets/WOrgTags.C3Esetp_.css","assets/DeptPicker.Dztcgi1j.css","assets/FormComponent.BFjxV9c8.js","assets/FormComponent.DNnIvXVq.css","assets/MultiplePicker.DptKe0fb.js","assets/NumberInput.CABlh2e3.js","assets/Score.DUabvE8p.js","assets/SinglePicker.DvSZcB6W.js","assets/SpanLayout.D0ohsIM7.js","assets/vue-draggable-plus.DFq4KU1k.js","assets/SpanLayout.DQHViipG.css","assets/TableList.Cc91hF7e.js","assets/TableList.ToArSLcu.css","assets/TextInput.VohADZme.js","assets/TextareaInput.a4aUy-y1.js","assets/UserPicker.B0pD0EhW.js","assets/UserPicker.C5eFQ_EL.css","assets/CommonConfig.Cb__DBae.js","assets/DateTimePicker.yGOOCJii.js","assets/DateTimeRangePicker.Bsq0yfhX.js","assets/DeptPicker.CCRiKZ2s.js","assets/MultiplePicker.DhF5GoN-.js","assets/MultiplePicker.zM2qUqiD.css","assets/NumberInput.D8yRZJpZ.js","assets/Score.nTTEFCHc.js","assets/SinglePicker.D6U6j9Wo.js","assets/SinglePicker.DJx3KAyh.css","assets/SpanLayout.CKTqSyyT.js","assets/TabelList.DtkekVLW.js","assets/TextInput.DqRxUp4L.js","assets/TextareaInput.tZJpkb2p.js","assets/UserPicker.IE_X13SV.js"])))=>i.map(i=>d[i]); +import{_ as e}from"./index.XK2ik2qb.js";import{q as n}from"./vue.DmuWcDrn.js";const r=Object.assign({"./component/DateTimePicker.vue":()=>e(()=>import("./DateTimePicker.BmKb3hOT.js"),__vite__mapDeps([0,1,2])),"./component/DateTimeRangePicker.vue":()=>e(()=>import("./DateTimeRangePicker.BDeWvN-a.js"),__vite__mapDeps([3,1,2])),"./component/DeptPicker.vue":()=>e(()=>import("./DeptPicker.BMtlEMVg.js"),__vite__mapDeps([4,1,5,6,7,2,8,9,10,11,12,13,14,15,16,17])),"./component/FormComponent.vue":()=>e(()=>import("./FormComponent.BFjxV9c8.js"),__vite__mapDeps([18,1,12,13,7,2,10,11,19])),"./component/MultiplePicker.vue":()=>e(()=>import("./MultiplePicker.DptKe0fb.js"),__vite__mapDeps([20,1,2])),"./component/NumberInput.vue":()=>e(()=>import("./NumberInput.CABlh2e3.js"),__vite__mapDeps([21,1,2])),"./component/Score.vue":()=>e(()=>import("./Score.DUabvE8p.js"),__vite__mapDeps([22,1,2])),"./component/SinglePicker.vue":()=>e(()=>import("./SinglePicker.DvSZcB6W.js"),__vite__mapDeps([23,1,2])),"./component/SpanLayout.vue":()=>e(()=>import("./SpanLayout.D0ohsIM7.js"),__vite__mapDeps([24,2,1,25,18,12,13,7,10,11,19,26])),"./component/TableList.vue":()=>e(()=>import("./TableList.Cc91hF7e.js"),__vite__mapDeps([27,1,25,2,12,13,18,7,10,11,19,28])),"./component/TextInput.vue":()=>e(()=>import("./TextInput.VohADZme.js"),__vite__mapDeps([29,1,2])),"./component/TextareaInput.vue":()=>e(()=>import("./TextareaInput.a4aUy-y1.js"),__vite__mapDeps([30,1,2])),"./component/UserPicker.vue":()=>e(()=>import("./UserPicker.B0pD0EhW.js"),__vite__mapDeps([31,1,5,6,7,2,8,9,10,11,12,13,14,15,16,32]))}),i=Object.assign({"./config/CommonConfig.vue":()=>e(()=>import("./CommonConfig.Cb__DBae.js"),__vite__mapDeps([33,1,2])),"./config/DateTimePicker.vue":()=>e(()=>import("./DateTimePicker.yGOOCJii.js"),__vite__mapDeps([34,1,2])),"./config/DateTimeRangePicker.vue":()=>e(()=>import("./DateTimeRangePicker.Bsq0yfhX.js"),__vite__mapDeps([35,1,2])),"./config/DeptPicker.vue":()=>e(()=>import("./DeptPicker.CCRiKZ2s.js"),__vite__mapDeps([36,1,2])),"./config/MultiplePicker.vue":()=>e(()=>import("./MultiplePicker.DhF5GoN-.js"),__vite__mapDeps([37,1,25,2,7,38])),"./config/NumberInput.vue":()=>e(()=>import("./NumberInput.D8yRZJpZ.js"),__vite__mapDeps([39,1,2])),"./config/Score.vue":()=>e(()=>import("./Score.nTTEFCHc.js"),__vite__mapDeps([40,1,2])),"./config/SinglePicker.vue":()=>e(()=>import("./SinglePicker.D6U6j9Wo.js"),__vite__mapDeps([41,1,25,2,7,42])),"./config/SpanLayout.vue":()=>e(()=>import("./SpanLayout.CKTqSyyT.js"),__vite__mapDeps([43,1,2])),"./config/TabelList.vue":()=>e(()=>import("./TabelList.DtkekVLW.js"),__vite__mapDeps([44,1,2])),"./config/TextInput.vue":()=>e(()=>import("./TextInput.DqRxUp4L.js"),__vite__mapDeps([45,1,2])),"./config/TextareaInput.vue":()=>e(()=>import("./TextareaInput.tZJpkb2p.js"),__vite__mapDeps([46,1,2])),"./config/UserPicker.vue":()=>e(()=>import("./UserPicker.IE_X13SV.js"),__vite__mapDeps([47,1,2]))}),_={};Object.keys(r).forEach(o=>{const t=o.replace(/^.+\/([^/]+)\.vue$/,"$1");_[t]=n(r[o])});const p={};Object.keys(i).forEach(o=>{const t=o.replace(/^.+\/([^/]+)\.vue$/,"$1");p[t]=n(i[o])});const u=[{name:"布局组件",components:[{icon:"tabler:layout-columns",type:"SpanLayout",name:"分栏布局",props:{isContainer:!0,span:24,number:2,gutter:5,columns:[]}}]},{name:"基础组件",components:[{icon:"iconamoon:edit",type:"TextInput",name:"单行输入框",props:{required:!1}},{name:"多行输入框",type:"TextareaInput",icon:"solar:list-down-line-duotone",props:{required:!1,max:255}},{name:"数字输入框",type:"NumberInput",icon:"tabler:123",key:null,props:{required:!1}},{name:"评分",type:"Score",icon:"fluent:star-12-regular",props:{required:!1,color:"#f0a732",max:5,showScore:!0,enableHalf:!1,icon:"StarFilled"}},{name:"单选框",type:"SinglePicker",icon:"mdi:radiobox-marked",props:{required:!1,expanding:!1,options:["选项1","选项2"]}},{name:"多选框",type:"MultiplePicker",icon:"mingcute:multiselect-line",props:{required:!1,expanding:!1,options:["选项1","选项2"]}},{name:"日期时间点",type:"DateTimePicker",icon:"material-symbols:calendar-clock-outline",props:{required:!1,format:"YYYY-MM-DD HH:mm"}},{name:"日期时间区间",type:"DateTimeRangePicker",icon:"material-symbols:calendar-month-outline",props:{required:!1,placeholder:["开始时间","结束时间"],format:"YYYY-MM-DD HH:mm",showLength:!1}},{name:"人员选择",type:"UserPicker",icon:"gravity-ui:persons",props:{required:!1,multiple:!1}},{name:"部门选择",type:"DeptPicker",icon:"fluent:organization-24-regular",props:{required:!1,multiple:!1}}]},{name:"高级组件",components:[{name:"明细表",type:"TableList",icon:"mdi:table",props:{required:!1,showBorder:!0,showSummary:!1,summaryColumns:[],maxSize:0,columns:[]}}]}];export{_ as F,p as a,u as c}; diff --git a/web/dist/assets/FormDesigner.BRjECsv8.css b/web/dist/assets/FormDesigner.BRjECsv8.css new file mode 100644 index 0000000000..92807cb3f9 --- /dev/null +++ b/web/dist/assets/FormDesigner.BRjECsv8.css @@ -0,0 +1 @@ +.w-form-designer[data-v-efade547]{font-size:var(--el-font-size-base);color:var(--el-text-color)}.w-form-d-lib[data-v-efade547]{border-right:1px solid var(--el-border-color)}[data-v-efade547] .w-form-d-conf{border-left:1px solid var(--el-border-color)}[data-v-efade547] .w-form-d-conf .el-tabs__header{background-color:#fff}[data-v-efade547] .w-form-d-conf .el-tabs__header .el-tabs__nav{height:35px}[data-v-efade547] .w-form-d-conf .el-tabs__header .el-tabs__item{font-size:small;height:35px}.w-cp-lib[data-v-efade547],.w-cp-conf[data-v-efade547]{font-size:small}.w-cp-lib>div[data-v-efade547]:first-child,.w-cp-conf>div[data-v-efade547]:first-child{height:35px;line-height:35px;text-align:center;background:#fff}.w-cp-lib>div[data-v-efade547]:last-child,.w-cp-conf>div[data-v-efade547]:last-child{padding:0 15px}.w-cp-group>div[data-v-efade547]:first-child{padding:15px 0}.w-cp-group .w-cp-items[data-v-efade547]{display:flex;flex-wrap:wrap;justify-content:space-between}.w-cp-item[data-v-efade547]{display:flex;align-items:center;padding:10px;border-radius:10px;background:#fff;width:110px;border:1px solid white;margin-bottom:5px;color:var(--el-text-color-primary)}.w-cp-item>span[data-v-efade547]{margin-left:5px}.w-cp-item[data-v-efade547]:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary);color:var(--el-color-primary);cursor:grab}.w-form-d-toolbar[data-v-efade547]{display:flex;height:35px;align-items:center;background:#fff;position:relative;padding:0 20px}.w-form-d-toolbar .w-f-d-t-active[data-v-efade547]{color:#656363}.w-form-d-toolbar>div[data-v-efade547]{color:#989898;font-size:medium}.w-form-d-toolbar>div[data-v-efade547]>*{padding:2px;margin:0 5px;cursor:pointer}.w-form-d-toolbar>div[data-v-efade547]>*:focus{outline:none}.w-form-d-toolbar>div[data-v-efade547]>*:hover{color:#656363}.w-form-d-toolbar>div[data-v-efade547]:nth-child(2){margin-left:20px}.w-form-d-toolbar>div[data-v-efade547]:nth-child(3){font-size:small;position:absolute;right:20px;display:flex}.w-form-d-toolbar>div:nth-child(3)>div[data-v-efade547]{display:flex;align-items:center}.w-form-d-toolbar>div:nth-child(3)>div span[data-v-efade547]{margin-left:5px}.w-form-d-toolbar>div:nth-child(3)>div[data-v-efade547]:first-child{color:var(--el-color-danger)}.w-form-d-toolbar>div:nth-child(3)>div[data-v-efade547]:last-child{color:var(--el-color-primary)}.w-form-d-ctx[data-v-efade547]{margin:10px;padding:5px;position:relative;background-color:#fff;border-radius:5px;min-height:calc(100vh - 125px)}.w-form-d-ctx .w-form-d-tip[data-v-efade547]{padding:20px;color:#8d8d8d;position:relative;display:flex;justify-content:center}.w-form-d-ctx .w-form-d-tip span[data-v-efade547]{position:absolute;top:-25vh}.w-form-d-ctx[data-v-efade547] .w-form-d-ctx-ep{min-height:80%}.w-f-cp-select[data-v-efade547]{border-radius:2px;border:1px dashed var(--el-color-primary)!important} diff --git a/web/dist/assets/FormDesigner.C_g4ii55.js b/web/dist/assets/FormDesigner.C_g4ii55.js new file mode 100644 index 0000000000..15e3e2053a --- /dev/null +++ b/web/dist/assets/FormDesigner.C_g4ii55.js @@ -0,0 +1 @@ +import{l as M}from"./vue-draggable-plus.DFq4KU1k.js";import{c as oe,a as le}from"./FormComponents.BoFxZNqy.js";import{F as U}from"./FormComponentMixin.C3yPnfoW.js";import te from"./FormRender.BwAVd06k.js";import ne from"./WDialog.D9OIgJAb.js";import S from"./FormComponent.BFjxV9c8.js";import{g as ae,d as se}from"./GlobalFunc.9BrjVkDm.js";import{f as T}from"./FormInterface.vRCiFeo3.js";import{_ as ie}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{E as ue}from"./index.XK2ik2qb.js";import{g as _,c as q,x as de,C as re,h as i,b,o as s,w as t,k as e,e as a,a as p,G as y,H as D,u as V,K as E,f as k,J as O,r as me}from"./vue.DmuWcDrn.js";import"./ProcessUtil.B7gNiVp1.js";const pe={class:"w-cp-lib"},ce={class:"w-form-d-toolbar"},fe={key:0,class:"w-form-d-tip"},ve={style:{padding:"10px"}},_e={style:{padding:"10px"}},be={__name:"FormDesigner",props:{...U.props,modelValue:{type:Object,default:()=>({formConfig:{labelPosition:"right",labelWidth:100,size:"default"},components:[]})}},emits:[...U.emits],setup(H,{expose:L,emit:j}){const z=_(!0),x=_(!0),u=_({}),C=_(!1),B=_({});L({validate:Y});const A=H,G=j,n=q(U.computed._value(A,G)),I=q(()=>x.value&&n.value.components.length===0);de(()=>{T.value=n.value.components}),re(()=>n.value.components,()=>{T.value=n.value.components},{deep:!0});function K(d){const o=JSON.parse(JSON.stringify(d));return o.key=o.type+"_"+ae(8),o.id="wflow_"+o.key,o}function ge(d){}function R(d){console.log(d)}function h(d){u.value=d}function Q(){ue.confirm("您确定要清空表单设计区吗?","提醒",{confirmButtonText:"我再想想",cancelButtonText:"确认清空",type:"warning"}).catch(()=>{se(n.value.components),n.value.components.length=0})}function X(){C.value=!0}function Y(){return new Promise((d,o)=>{n.value.components.length>0?d():o(["表单组件为空"])})}return(d,o)=>{const m=i("iconify"),N=i("el-aside"),c=i("el-tooltip"),g=i("el-form-item"),P=i("el-form"),W=i("el-container"),$=i("el-tab-pane"),f=i("el-radio-button"),J=i("el-radio-group"),Z=i("el-input"),ee=i("el-tabs");return s(),b(W,{class:"w-form-designer"},{default:t(()=>[e(N,{width:"300px",class:"w-form-d-lib"},{default:t(()=>[a("div",pe,[o[10]||(o[10]=a("div",null,"组件库",-1)),a("div",null,[(s(!0),p(y,null,D(V(oe),(l,w)=>(s(),p("div",{key:w,class:"w-cp-group"},[a("div",null,E(l.name),1),e(V(M),{modelValue:l.components,"onUpdate:modelValue":r=>l.components=r,group:{name:"FormDesign",pull:"clone",put:!1},sort:!1,clone:K,class:"w-cp-items"},{default:t(()=>[(s(!0),p(y,null,D(l.components,(r,F)=>(s(),p("div",{key:r.type,class:"w-cp-item"},[e(m,{icon:r.icon},null,8,["icon"]),a("span",null,E(r.name),1)]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])]))),128))])])]),_:1}),e(W,{style:{display:"flex","flex-direction":"column"}},{default:t(()=>[a("div",ce,[a("div",null,[e(c,{effect:"dark",content:"撤销",placement:"top"},{default:t(()=>[e(m,{icon:"ooui:undo-ltr"})]),_:1}),e(c,{effect:"dark",content:"重做",placement:"top"},{default:t(()=>[e(m,{icon:"ooui:undo-rtl"})]),_:1})]),a("div",null,[e(c,{effect:"dark",content:"电脑端",placement:"top"},{default:t(()=>[e(m,{icon:"mi:computer",class:k({"w-f-d-t-active":z.value})},null,8,["class"])]),_:1}),e(c,{effect:"dark",content:"手机端",placement:"top"},{default:t(()=>[e(m,{icon:"mingcute:cellphone-line",class:k({"w-f-d-t-active":!z.value})},null,8,["class"])]),_:1})]),a("div",null,[e(c,{effect:"dark",content:"清空设计",placement:"top"},{default:t(()=>[a("div",{onClick:Q},[e(m,{icon:"fluent:delete-12-regular"}),o[11]||(o[11]=a("span",null,"清除",-1))])]),_:1}),e(c,{effect:"dark",content:"预览表单",placement:"top"},{default:t(()=>[a("div",{onClick:X},[e(m,{icon:"solar:eye-scan-bold"}),o[12]||(o[12]=a("span",null,"预览",-1))])]),_:1})])]),e(P,{"label-width":n.value.conf.labelWidth,"label-position":n.value.conf.labelPosition,size:n.value.conf.size,class:"w-form-d-ctx"},{default:t(()=>[e(V(M),{modelValue:n.value.components,"onUpdate:modelValue":o[2]||(o[2]=l=>n.value.components=l),animation:150,ghostClass:"w-f-cp-select",onChoose:R,onAdd:o[3]||(o[3]=l=>x.value=!1),onRemove:o[4]||(o[4]=l=>x.value=!0),group:"FormDesign",class:"w-form-d-ctx-ep"},{default:t(()=>[(s(!0),p(y,null,D(n.value.components,(l,w)=>{var r,F;return s(),p(y,{key:l.id},[l.props.isContainer?(s(),b(S,{key:1,type:l.type,class:k(["w-form-d-item",{"w-form-d-item":!0,"w-form-cp-active":((F=u.value)==null?void 0:F.id)===l.id}]),index:w,parents:n.value.components,config:l,active:u.value,"onUpdate:active":o[1]||(o[1]=v=>u.value=v),onClick:v=>h(l),mode:"free"},null,8,["type","index","parents","config","active","onClick","class"])):(s(),b(g,{key:0,label:l.name,required:l.props.required,onClick:v=>h(l),class:k({"w-form-d-item":!0,"w-form-cp-active":((r=u.value)==null?void 0:r.id)===l.id,"w-form-cp-nlb":l.props.hideLabel})},{default:t(()=>[e(S,{index:w,parents:n.value.components,mode:"free",type:l.type,config:l,active:u.value,"onUpdate:active":o[0]||(o[0]=v=>u.value=v)},null,8,["index","parents","type","config","active"])]),_:2},1032,["label","required","onClick","class"]))],64)}),128))]),_:1},8,["modelValue"]),I.value?(s(),p("div",fe,o[13]||(o[13]=[a("span",null,"💕 请从左侧组件库拖拽表单组件到此处",-1)]))):O("",!0)]),_:1},8,["label-width","label-position","size"])]),_:1}),e(N,{width:"300px",class:"w-form-d-conf"},{default:t(()=>[e(P,{"label-width":"80"},{default:t(()=>[e(ee,{stretch:""},{default:t(()=>[u.value?(s(),b($,{key:0,label:"组件设置"},{default:t(()=>[a("div",ve,[(s(),b(me(V(le)[u.value.type]),{config:u.value},null,8,["config"]))])]),_:1})):O("",!0),e($,{label:"表单设置"},{default:t(()=>[a("div",_e,[e(g,{label:"标签位置"},{default:t(()=>[e(J,{modelValue:n.value.conf.labelPosition,"onUpdate:modelValue":o[5]||(o[5]=l=>n.value.conf.labelPosition=l)},{default:t(()=>[e(f,{label:"上面",value:"top"}),e(f,{label:"靠左",value:"left"}),e(f,{label:"靠右",value:"right"})]),_:1},8,["modelValue"])]),_:1}),e(g,{label:"标签宽度"},{default:t(()=>[e(Z,{type:"number",modelValue:n.value.conf.labelWidth,"onUpdate:modelValue":o[6]||(o[6]=l=>n.value.conf.labelWidth=l)},null,8,["modelValue"])]),_:1}),e(g,{label:"组件尺寸"},{default:t(()=>[e(J,{modelValue:n.value.conf.size,"onUpdate:modelValue":o[7]||(o[7]=l=>n.value.conf.size=l)},{default:t(()=>[e(f,{label:"大",value:"large"}),e(f,{label:"中",value:"default"}),e(f,{label:"小",value:"small"})]),_:1},8,["modelValue"])]),_:1})])]),_:1})]),_:1})]),_:1})]),_:1}),e(ne,{modelValue:C.value,"onUpdate:modelValue":o[9]||(o[9]=l=>C.value=l),width:"800px",title:"表单预览",border:!1,"ok-text":"表单校验","cancel-text":"关闭"},{default:t(()=>[e(te,{config:n.value,modelValue:B.value,"onUpdate:modelValue":o[8]||(o[8]=l=>B.value=l)},null,8,["config","modelValue"])]),_:1},8,["modelValue"])]),_:1})}}},Ne=ie(be,[["__scopeId","data-v-efade547"]]);export{Ne as default}; diff --git a/web/dist/assets/FormInterface.vRCiFeo3.js b/web/dist/assets/FormInterface.vRCiFeo3.js new file mode 100644 index 0000000000..0bbe384556 --- /dev/null +++ b/web/dist/assets/FormInterface.vRCiFeo3.js @@ -0,0 +1 @@ +import{c as f,g as p}from"./vue.DmuWcDrn.js";const c=p([]);p();const a=new Map,y=f(()=>u(c.value)),n=(r,o,e,s)=>{a.set(r.id,r),Array.isArray(r)?r.forEach(l=>n(l,o,null,s)):r.props.isContainer?r.props.columns.forEach(l=>n(l,o,null,s)):r.type==="TableList"?(s(r,e),r.props.columns.forEach(l=>n(l,o,r.name,s))):s(r,e)},u=r=>{let o=[];return a.clear(),n(r,o,null,e=>o.push(e)),o},d=(r="R")=>{let o=[];a.clear();const e=(s,l)=>{o.push({id:s.id,key:s.key,name:`${l?l+".":""}${s.name}`,required:s.props.required,perm:s.perm?s.perm:r})};return n(c.value,o,null,e),o};export{y as _,c as f,d as g}; diff --git a/web/dist/assets/FormPermConf.CE-WaGhp.js b/web/dist/assets/FormPermConf.CE-WaGhp.js new file mode 100644 index 0000000000..dbaa7a97e0 --- /dev/null +++ b/web/dist/assets/FormPermConf.CE-WaGhp.js @@ -0,0 +1 @@ +import{n as V}from"./NodeMixin.CdUK7SNa.js";import{g as _}from"./FormInterface.vRCiFeo3.js";import{c as B,g as v,I as P,C as R,h as w,b as k,o as b,w as o,k as r,J as U,a as F,e as N,K as H,m as s}from"./vue.DmuWcDrn.js";const S={key:0,style:{color:"var(--el-color-danger)"}},I={__name:"FormPermConf",props:{...V.props,showE:{default:!0},defaultPerm:{default:"R"}},emits:V.emits,setup(y,{emit:C}){const p=y,E=C,i=B(V.computed._value(p,E)),d=v("R"),g=v(1),n=v([]);P(()=>{i.value||(i.value=[]),d.value=p.defaultPerm,n.value=_(p.defaultPerm),(p.modelValue||[]).forEach(t=>{const e=n.value.findIndex(u=>u.key===t.key);e>-1&&t.perm&&(n.value[e].perm=t.perm)})});function f(t){n.value.forEach(e=>e.perm=t),g.value++}return R(n,()=>{i.value=n.value.map(t=>({id:t.id,key:t.key,perm:t.perm}))},{deep:!0}),(t,e)=>{const u=w("el-table-column"),m=w("el-radio"),x=w("el-table");return b(),k(x,{key:g.value,"header-cell-style":{background:"#f5f6f6"},data:n.value,border:"",style:{width:"100%"}},{empty:o(()=>e[6]||(e[6]=[s(" 未解析到表单字段清单😥 ")])),default:o(()=>[r(u,{prop:"title","show-overflow-tooltip":"",label:"表单字段"},{default:o(l=>{var a;return[(a=l.row.props)!=null&&a.required?(b(),F("span",S," * ")):U("",!0),N("span",null,H(l.row.name),1)]}),_:1}),r(u,{align:"center",prop:"readOnly",label:"只读",width:"80"},{header:o(l=>[r(m,{label:"R",modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=a=>d.value=a),onChange:e[1]||(e[1]=a=>f("R"))},{default:o(()=>e[7]||(e[7]=[s("只读")])),_:1},8,["modelValue"])]),default:o(l=>[r(m,{modelValue:l.row.perm,"onUpdate:modelValue":a=>l.row.perm=a,value:"R",name:l.row.id},null,8,["modelValue","onUpdate:modelValue","name"])]),_:1}),y.showE?(b(),k(u,{key:0,align:"center",prop:"editable",label:"可编辑",width:"90"},{header:o(l=>[r(m,{label:"E",modelValue:d.value,"onUpdate:modelValue":e[2]||(e[2]=a=>d.value=a),onChange:e[3]||(e[3]=a=>f("E"))},{default:o(()=>e[8]||(e[8]=[s("可编辑")])),_:1},8,["modelValue"])]),default:o(l=>[r(m,{modelValue:l.row.perm,"onUpdate:modelValue":a=>l.row.perm=a,value:"E",name:l.row.id},null,8,["modelValue","onUpdate:modelValue","name"])]),_:1})):U("",!0),r(u,{align:"center",prop:"hide",label:"隐藏",width:"80"},{header:o(l=>[r(m,{label:"H",modelValue:d.value,"onUpdate:modelValue":e[4]||(e[4]=a=>d.value=a),onChange:e[5]||(e[5]=a=>f("H"))},{default:o(()=>e[9]||(e[9]=[s("隐藏")])),_:1},8,["modelValue"])]),default:o(l=>[r(m,{modelValue:l.row.perm,"onUpdate:modelValue":a=>l.row.perm=a,value:"H",name:l.row.id},null,8,["modelValue","onUpdate:modelValue","name"])]),_:1})]),_:1},8,["data"])}}};export{I as default}; diff --git a/web/dist/assets/FormProcessDesigner.NtQV6jPD.js b/web/dist/assets/FormProcessDesigner.NtQV6jPD.js new file mode 100644 index 0000000000..11b798f4f9 --- /dev/null +++ b/web/dist/assets/FormProcessDesigner.NtQV6jPD.js @@ -0,0 +1 @@ +import{g as i,c as g,z as re,h as r,a as C,o as f,k as l,w as n,e as h,n as ue,m,K as k,f as ie,p as y,N as w,G as I,H as T,b as _,J as R,B as ce}from"./vue.DmuWcDrn.js";import de from"./FormDesigner.C_g4ii55.js";import fe from"./ProcessDesigner.y0zNgYS2.js";import me from"./BaseSetting.AfBX5QdH.js";import ve from"./PlusSetting.d22L-CQ-.js";import pe from"./WDialog.D9OIgJAb.js";import{s as A}from"./request.FMdsBF9A.js";import{n as _e}from"./ProcessNodes.r7PbQ_Ri.js";import{_ as ge}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{E as ye,b as S}from"./index.XK2ik2qb.js";import"./vue-draggable-plus.DFq4KU1k.js";import"./FormComponents.BoFxZNqy.js";import"./FormComponentMixin.C3yPnfoW.js";import"./FormRender.BwAVd06k.js";import"./FormComponent.BFjxV9c8.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";import"./FormInterface.vRCiFeo3.js";import"./ProcessRender.C3vTPZCi.js";const we={class:"w-designer"},Ve={class:"w-valid-err-info"},be={__name:"FormProcessDesigner",props:{modelValue:Object},setup(U){const V=ce(),u=i("BASE"),v=i(!1),c=i(0),z=i(),O=i(),L=i(),M=i(),d=i([{_ref:"baseRef",name:"基础设置",status:""},{_ref:"processRef",name:"流程设计",status:""}]),t=i({}),N=g(()=>u.value==="PROCESS"),W=g(()=>t.value.finished?t.value.success?"success":"warning":"loading"),$=g(()=>t.value.finished&&!t.value.success?t.value.title+` (${t.value.errs.length}项错误)`:t.value.title),j=U,x=re({name:"未命名流程",icon:{name:"file-icons:omnigraffle",bgc:"#4C87F3",color:"#FFFFFF"},groupId:null,content_type:null,operation:null,formConf:{conf:{labelPosition:"right",labelWidth:100,size:"default"},components:[]},process:[_e.Start.create()],remark:null}),s=g(()=>(console.log(333,x),j.modelValue||x));function G(o){u.value=o}function F(o=!1){return A({url:"/api/dvadmin3_flow/flow_info/",method:"post",data:s.value}).then(e=>{S.success("保存成功"),o&&A({url:"/api/dvadmin3_flow/flow_info/"+s.value.id+"/publish/",method:"post",data:{}}).then(p=>{S.success("发布成功")})})}async function H(){v.value=!0,c.value=0,t.value={errs:[],finished:!1,success:!1,title:"检查中...",action:"去处理",desc:"正在检查设置项"},d.value.forEach(o=>o.status="");for(let o=0;osetTimeout(e,500)),console.log("this.refs",V.refs),await V.refs[d.value[c.value]._ref].validate(),d.value[c.value].status="success"}function J(){H().then(()=>{B(!0)}).catch(o=>{B(!1),d.value[c.value].status="error",console.log(o),Array.isArray(o)&&t.value.errs.push(...o)})}function B(o){t.value.finished=!0,t.value.success=o,t.value.desc="",t.value.action=o?"去发布":"去处理",t.value.title=o?"校验成功😃":"校验失败😥,发现",d.value[c.value].status=o?"success":"error"}function K(){t.value.success?(F(!0),v.value=!1):(u.value=d.value[c.value]._ref.toUpperCase(),v.value=!1)}const q=()=>{ye.confirm("确定关闭流程设计?",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{V.emit("onClose")}).catch(()=>{S.error("已取消")})};return(o,e)=>{const p=r("el-button"),Q=r("iconify"),P=r("el-text"),D=r("el-menu-item"),X=r("el-menu"),Y=r("el-header"),Z=r("el-main"),ee=r("el-container"),te=r("el-step"),le=r("el-steps"),oe=r("Loading"),E=r("el-icon"),ne=r("Warning"),ae=r("el-scrollbar"),se=r("el-result");return f(),C("div",we,[l(ee,null,{default:n(()=>[l(Y,{style:{padding:"0"}},{default:n(()=>[l(X,{"default-active":u.value,class:"w-designer-menu",mode:"horizontal",onSelect:G},{default:n(()=>[h("div",null,[l(p,{icon:"ArrowLeft",circle:"",onClick:q}),l(Q,{icon:s.value.icon.name,class:"w-process-icon",style:ue({background:s.value.icon.bgc,color:s.value.icon.color})},null,8,["icon","style"]),l(P,null,{default:n(()=>[m(k(s.value.name),1)]),_:1})]),l(D,{index:"BASE"},{default:n(()=>e[6]||(e[6]=[m("基础设置")])),_:1}),l(D,{index:"PROCESS"},{default:n(()=>e[7]||(e[7]=[m("流程设计")])),_:1}),h("div",null,[l(p,{icon:"FolderChecked",onClick:e[0]||(e[0]=a=>F()),round:""},{default:n(()=>e[8]||(e[8]=[m("保存")])),_:1}),l(p,{icon:"Promotion",type:"primary",onClick:J,round:""},{default:n(()=>e[9]||(e[9]=[m("发布")])),_:1})])]),_:1},8,["default-active"])]),_:1}),l(Z,{class:ie({"w-designer-container":!0,"w-no-padding":u.value==="FORM"})},{default:n(()=>[y(l(me,{ref_key:"baseRef",ref:z,modelValue:s.value,"onUpdate:modelValue":e[1]||(e[1]=a=>s.value=a)},null,8,["modelValue"]),[[w,u.value==="BASE"]]),y(l(de,{ref_key:"formRef",ref:O,modelValue:s.value.formConf,"onUpdate:modelValue":e[2]||(e[2]=a=>s.value.formConf=a)},null,8,["modelValue"]),[[w,u.value==="FORM"]]),y(l(fe,{ref_key:"processRef",ref:L,formItems:s.value.formConf.components,modelValue:s.value.process,"onUpdate:modelValue":e[3]||(e[3]=a=>s.value.process=a),designData:s.value,active:N.value},null,8,["formItems","modelValue","designData","active"]),[[w,u.value==="PROCESS"]]),y(l(ve,{ref_key:"plusRef",ref:M,modelValue:s.value,"onUpdate:modelValue":e[4]||(e[4]=a=>s.value=a)},null,8,["modelValue"]),[[w,u.value==="PLUS"]])]),_:1},8,["class"])]),_:1}),l(pe,{border:!1,modelValue:v.value,"onUpdate:modelValue":e[5]||(e[5]=a=>v.value=a),width:"550",title:"表单流程设计校验","show-footer":!1},{default:n(()=>[l(le,{"align-center":"",active:c.value,"finish-status":"success"},{default:n(()=>[(f(!0),C(I,null,T(d.value,(a,b)=>(f(),_(te,{title:a.name,key:b,icon:a.icon,status:a.status,description:a.description},null,8,["title","icon","status","description"]))),128))]),_:1},8,["active"]),l(se,{icon:W.value,title:$.value,subTitle:t.value.desc},{icon:n(()=>[t.value.finished?R("",!0):(f(),_(E,{key:0,size:"30",class:"is-loading"},{default:n(()=>[l(oe)]),_:1}))]),"sub-title":n(()=>[t.value.errs.length>0?(f(),_(ae,{key:0},{default:n(()=>[h("div",Ve,[(f(!0),C(I,null,T(t.value.errs,(a,b)=>(f(),_(P,{tag:"div",truncated:"",key:b+"_err"},{default:n(()=>[l(E,null,{default:n(()=>[l(ne)]),_:1}),m(" "+k(a),1)]),_:2},1024))),128))])]),_:1})):R("",!0)]),extra:n(()=>[t.value.finished?(f(),_(p,{key:0,type:"primary",onClick:K},{default:n(()=>[m(k(t.value.action),1)]),_:1})):R("",!0)]),_:1},8,["icon","title","subTitle"])]),_:1},8,["modelValue"])])}}},Ne=ge(be,[["__scopeId","data-v-22c18ed4"]]);export{Ne as default}; diff --git a/web/dist/assets/FormProcessDesigner.ln_QY0no.css b/web/dist/assets/FormProcessDesigner.ln_QY0no.css new file mode 100644 index 0000000000..c7c535ab1d --- /dev/null +++ b/web/dist/assets/FormProcessDesigner.ln_QY0no.css @@ -0,0 +1 @@ +.w-node-err[data-v-22c18ed4]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}.w-designer[data-v-22c18ed4]{background:#f3f3f3}.w-designer .w-designer-menu[data-v-22c18ed4]{display:flex;align-items:center;background:#fff;justify-content:center;position:relative}.w-designer .w-designer-menu>div[data-v-22c18ed4]:first-child{position:absolute;left:20px;display:flex;align-items:center}.w-designer .w-designer-menu>div:first-child .w-process-icon[data-v-22c18ed4]{margin:0 10px 0 20px}.w-designer .w-designer-menu>div[data-v-22c18ed4]:last-child{position:absolute;right:20px}.w-designer .w-designer-container[data-v-22c18ed4]{overflow:auto;height:calc(100vh - 60px)}.w-designer .w-no-padding[data-v-22c18ed4]{padding:0}.w-valid-err-info[data-v-22c18ed4]{max-height:200px}.w-valid-err-info>div[data-v-22c18ed4]{display:block;text-align:left;padding:2px 5px;border-radius:5px;margin:2px;background:#f3f3f3}.el-menu.el-menu--horizontal[data-v-22c18ed4]{border-bottom:none!important;width:100%!important}.el-menu.el-menu--horizontal .el-menu-item[data-v-22c18ed4],.el-menu.el-menu--horizontal .el-sub-menu__title[data-v-22c18ed4]{height:50px!important;color:var(--el-menu-text-color)}.el-menu.el-menu--horizontal .el-menu-item[data-v-22c18ed4]:not(.is-active):hover,.el-menu.el-menu--horizontal .el-sub-menu:not(.is-active):hover .el-sub-menu__title[data-v-22c18ed4]{color:var(--el-menu-text-color)} diff --git a/web/dist/assets/FormRender.BwAVd06k.js b/web/dist/assets/FormRender.BwAVd06k.js new file mode 100644 index 0000000000..7b5b13b419 --- /dev/null +++ b/web/dist/assets/FormRender.BwAVd06k.js @@ -0,0 +1 @@ +import{F as s}from"./FormComponents.BoFxZNqy.js";import{F as t}from"./FormComponentMixin.C3yPnfoW.js";import{c as C,h as i,b as a,o as l,w as u,a as d,G as p,H as w,f as F,r as f,u as c}from"./vue.DmuWcDrn.js";import"./index.XK2ik2qb.js";const U={__name:"FormRender",props:{...t.props,modelValue:{type:Object,default:()=>({})}},emits:[...t.emits],setup(b,{emit:y}){const g=b,k=y,n=C(t.computed._value(g,k));return(o,m)=>{const _=i("el-form-item"),v=i("el-form");return l(),a(v,{"label-width":o.config.conf.labelWidth,size:o.config.conf.size,"label-position":o.config.conf.labelPosition,class:"w-form-render"},{default:u(()=>[(l(!0),d(p,null,w(o.config.components,(e,V)=>(l(),d(p,{key:e.type+V},[e.props.isContainer?(l(),a(f(c(s)[e.type]),{key:1,mode:o.mode,modelValue:n.value,"onUpdate:modelValue":m[0]||(m[0]=r=>n.value=r),config:e},null,8,["mode","modelValue","config"])):(l(),a(_,{key:0,label:e.name,required:e.props.required,class:F({"w-form-cp-nlb":e.props.hideLabel}),prop:e.key},{default:u(()=>[(l(),a(f(c(s)[e.type]),{mode:o.mode,config:e,modelValue:n.value[e.key],"onUpdate:modelValue":r=>n.value[e.key]=r},null,8,["mode","config","modelValue","onUpdate:modelValue"]))]),_:2},1032,["label","required","class","prop"]))],64))),128))]),_:1},8,["label-width","size","label-position"])}}};export{U as default}; diff --git a/web/dist/assets/Gateway.BOgbIYCX.js b/web/dist/assets/Gateway.BOgbIYCX.js new file mode 100644 index 0000000000..2f50a50b44 --- /dev/null +++ b/web/dist/assets/Gateway.BOgbIYCX.js @@ -0,0 +1 @@ +import T from"./Node.Do50r9uM.js";import{r as b}from"./ProcessUtil.B7gNiVp1.js";import{n as y}from"./NodeMixin.CdUK7SNa.js";import{N as v,n as c}from"./ProcessNodes.r7PbQ_Ri.js";import{d as N}from"./GlobalFunc.9BrjVkDm.js";import{_ as z}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{b as w}from"./index.XK2ik2qb.js";import{g as F,h as H,a as i,o as s,e as g,k as J,b as f,J as q,w as K,m as O,G as k,H as C,f as B,r as D,u as I}from"./vue.DmuWcDrn.js";import"./InsertBtn.A0117t9o.js";const Q={class:"w-p-gateway"},W={class:"w-p-branch"},X={__name:"Gateway",props:{...y.props},emits:y.emits,setup(L,{expose:M,emit:$}){const n=L,h=$;M({validate:A});const d=F();function V(e,o,r){c[r]?e.splice(o+1,0,c[r].create(r)):w.warning("请在ProcessNodes.js内配置该节点")}function P(e,o){e.splice(o,1)}function R(){const e=n.modelValue.branch.length-1,o=n.modelValue.props.type;c[o]?(n.modelValue.props.branch.splice(e,0,c[o].createSelf(e+1)),n.modelValue.branch.splice(e,0,[])):w.warning("请在ProcessNodes.js内配置该节点")}function S(e){const o=N(n.modelValue.props.branch[e]);o.name=o.name+"-copy";const r=N(n.modelValue.branch[e]);b(o),b(r),n.modelValue.props.branch.splice(e+1,0,o),n.modelValue.branch.splice(e+1,0,r)}function U(e){n.modelValue.branch.length<=2?h("delete",n.branch,n.index):(n.modelValue.props.branch.splice(e,1),n.modelValue.branch.splice(e,1))}function E(e){m(n.modelValue.props.branch,e,e-1),m(n.modelValue.branch,e,e-1)}function G(e){m(n.modelValue.props.branch,e,e+1),m(n.modelValue.branch,e,e+1)}function m(e,o,r){const t=e[o];e[o]=e[r],e[r]=t}function j(e,o){o===n.modelValue.branch.length-1&&n.modelValue.props.type!=="Parallel"||h("select",e)}function A(e){Array.isArray(d.value)?d.value.forEach(o=>{o.validate&&o.validate(e)}):d.value&&d.value.validate&&d.value.validate(e)}return(e,o)=>{const r=H("el-button");return s(),i("div",Q,[g("div",W,[e.readonly?q("",!0):(s(),f(r,{key:0,class:"w-p-gateway-add",round:"",plain:"",onClick:R},{default:K(()=>o[2]||(o[2]=[O("添加分支")])),_:1})),(s(!0),i(k,null,C(e.modelValue.branch,(t,a)=>(s(),i("div",{key:a+"_br",class:B({"w-p-branch-item":!0,"w-p-branch-item-l":a===0,"w-p-branch-item-r":a===e.modelValue.branch.length-1})},[g("div",null,[(s(),f(D(I(v)[e.modelValue.props.type]),{ref_for:!0,ref_key:"node",ref:d,readonly:e.readonly,modelValue:e.modelValue.props.branch[a],"onUpdate:modelValue":l=>e.modelValue.props.branch[a]=l,index:a,moveRn:a0,isDefault:a===e.modelValue.branch.length-1&&e.modelValue.props.type!=="Parallel",onInsertNode:l=>V(t,-1,l),onDelete:l=>U(a),onCopy:l=>S(a),onMoveL:l=>E(a),onMoveR:l=>G(a),onSelect:l=>j(l,a)},null,40,["readonly","modelValue","onUpdate:modelValue","index","moveRn","moveLn","isDefault","onInsertNode","onDelete","onCopy","onMoveL","onMoveR","onSelect"])),(s(!0),i(k,null,C(t,(l,p)=>(s(),f(D(I(v)[l.type]),{key:p+"_bi",ref_for:!0,ref_key:"node",ref:l,readonly:e.readonly,modelValue:e.modelValue.branch[a][p],"onUpdate:modelValue":u=>e.modelValue.branch[a][p]=u,branch:t,index:p,onInsertNode:V,onDelete:u=>P(t,p),onSelect:o[0]||(o[0]=u=>h("select",u))},null,40,["readonly","modelValue","onUpdate:modelValue","branch","index","onDelete"]))),128))])],2))),128))]),J(T,{readonly:e.readonly,class:B({"w-p-branch-end":e.branch.length===e.index+1}),"show-body":!1,onInsertNode:o[1]||(o[1]=t=>e.$emit("insertNode",e.branch,e.index,t))},null,8,["readonly","class"])])}}},re=z(X,[["__scopeId","data-v-0a17ec6d"]]);export{re as default}; diff --git a/web/dist/assets/Gateway.Bsn85Ufa.css b/web/dist/assets/Gateway.Bsn85Ufa.css new file mode 100644 index 0000000000..36e526cbb1 --- /dev/null +++ b/web/dist/assets/Gateway.Bsn85Ufa.css @@ -0,0 +1 @@ +.w-node-err[data-v-0a17ec6d]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}.w-p-gateway[data-v-0a17ec6d]{display:flex;flex-direction:column;align-items:center;position:relative}.w-p-gateway .w-p-gateway-add[data-v-0a17ec6d]{z-index:2;top:-16px;position:absolute}.w-p-branch[data-v-0a17ec6d]{display:flex;position:relative;justify-content:center;background:#f5f6f6}.w-p-branch[data-v-0a17ec6d]:before{content:"";width:calc(100% - 220px);background:#cacaca;position:absolute;height:2px}.w-p-branch[data-v-0a17ec6d]:after{content:"";width:calc(100% - 220px);background:#cacaca;position:absolute;height:2px;bottom:0}.w-p-branch .w-p-branch-item[data-v-0a17ec6d]{position:relative;padding:0 60px;display:flex;justify-content:center}.w-p-branch .w-p-branch-item>div[data-v-0a17ec6d]{z-index:1;margin-top:40px;display:flex;flex-direction:column;align-items:center}.w-p-branch .w-p-branch-item>div>.w-p-node[data-v-0a17ec6d]:last-child .w-p-node-add:after{display:none!important}.w-p-branch .w-p-branch-item[data-v-0a17ec6d]:before{content:"";position:absolute;background:#cacaca;height:100%;width:2px}.w-p-branch .w-p-branch-item-l[data-v-0a17ec6d]:after,.w-p-branch .w-p-branch-item-r[data-v-0a17ec6d]:after{content:"";position:absolute;height:2px;width:50%;top:0;background:#f5f6f6}.w-p-branch .w-p-branch-item-l>div[data-v-0a17ec6d]:before,.w-p-branch .w-p-branch-item-r>div[data-v-0a17ec6d]:before{content:"";position:absolute;height:2px;width:50%;bottom:0;background:#f5f6f6}.w-p-branch[data-v-0a17ec6d] .w-p-branch-end .w-p-node-add:after{border:none}.w-p-branch .w-p-branch-item-l[data-v-0a17ec6d]{margin-left:0}.w-p-branch .w-p-branch-item-l>div[data-v-0a17ec6d]:before{left:-1px}.w-p-branch .w-p-branch-item-l[data-v-0a17ec6d]:after{left:-1px}.w-p-branch .w-p-branch-item-r[data-v-0a17ec6d]{margin-right:0}.w-p-branch .w-p-branch-item-r>div[data-v-0a17ec6d]:before{right:-1px}.w-p-branch .w-p-branch-item-r[data-v-0a17ec6d]:after{right:-1px} diff --git a/web/dist/assets/GlobalFunc.9BrjVkDm.js b/web/dist/assets/GlobalFunc.9BrjVkDm.js new file mode 100644 index 0000000000..bddedd748b --- /dev/null +++ b/web/dist/assets/GlobalFunc.9BrjVkDm.js @@ -0,0 +1 @@ +import{g as o}from"./ProcessUtil.B7gNiVp1.js";function c(t){let r="";const e="abcdefghijklmnopqrstuvwxyz0123456789";let a=e.length;for(let n=0;nn[e].name).map(e=>({type:e,...n[e]}));return(e,w)=>{const p=s("el-button"),m=s("el-icon"),_=s("el-popover");return o(),a(_,{width:"450",title:"请选择流程节点",placement:"right-start",trigger:"click"},{reference:r(()=>[i(p,{type:"primary",icon:"plus",circle:"",style:{"z-index":"1"}})]),default:r(()=>[u("div",x,[(o(!0),c(y,null,f(k(l),t=>(o(),c("div",{key:t.type,onClick:z=>e.$emit("insertNode",t.type)},[i(m,{size:"25",style:v({color:t.color})},{default:r(()=>[(o(),a(B(t.icon)))]),_:2},1032,["style"]),h(" "+g(t.name),1)],8,C))),128))])]),_:1})}}},T=d(N,[["__scopeId","data-v-2126ac57"]]);export{T as default}; diff --git a/web/dist/assets/InsertBtn.DmHckovs.css b/web/dist/assets/InsertBtn.DmHckovs.css new file mode 100644 index 0000000000..0fc7d742ae --- /dev/null +++ b/web/dist/assets/InsertBtn.DmHckovs.css @@ -0,0 +1 @@ +.w-node-options[data-v-2126ac57]{display:flex;flex-wrap:wrap}.w-node-options i[data-v-2126ac57]{padding:3px;margin-right:5px;border-radius:10px;border:1px solid #DEDFDF}.w-node-options>div[data-v-2126ac57]{display:flex;align-items:center;cursor:pointer;padding:8px 10px;border-radius:15px;background:#f8f9f9;margin:5px;width:110px}.w-node-options>div[data-v-2126ac57]:hover{box-shadow:0 0 5px #e3e3e3} diff --git a/web/dist/assets/MultiplePicker.DhF5GoN-.js b/web/dist/assets/MultiplePicker.DhF5GoN-.js new file mode 100644 index 0000000000..2b02a305f4 --- /dev/null +++ b/web/dist/assets/MultiplePicker.DhF5GoN-.js @@ -0,0 +1 @@ +import{F as V}from"./FormComponentMixin.C3yPnfoW.js";import{l as w}from"./vue-draggable-plus.DFq4KU1k.js";import{_ as y}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{h as t,a as g,o as r,k as e,w as p,m as C,u as v,G as c,H as B,b as F}from"./vue.DmuWcDrn.js";const L={__name:"MultiplePicker",props:{...V.props},emits:[...V.emits],setup(k,{emit:M}){const u=k;function b(){u.config.props.options.push(`选项${u.config.props.options.length+1}`)}return(o,l)=>{const i=t("el-input"),a=t("el-form-item"),m=t("el-button"),U=t("Rank"),_=t("el-icon"),s=t("el-switch");return r(),g(c,null,[e(a,{label:"字段KEY"},{default:p(()=>[e(i,{modelValue:o.config.key,"onUpdate:modelValue":l[0]||(l[0]=n=>o.config.key=n),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),e(a,{label:"字段名称"},{default:p(()=>[e(i,{modelValue:o.config.name,"onUpdate:modelValue":l[1]||(l[1]=n=>o.config.name=n),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),e(a,{label:"提示文字"},{default:p(()=>[e(i,{modelValue:o.config.props.placeholder,"onUpdate:modelValue":l[2]||(l[2]=n=>o.config.props.placeholder=n),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),e(a,{label:"选项设置"},{default:p(()=>[e(m,{style:{margin:"7px"},link:"",type:"primary",icon:"plus",onClick:b},{default:p(()=>l[7]||(l[7]=[C("添加选项")])),_:1}),e(v(w),{class:"w-fd-options",handle:".w-move",animation:150,modelValue:o.config.props.options,"onUpdate:modelValue":l[3]||(l[3]=n=>o.config.props.options=n)},{default:p(()=>[(r(!0),g(c,null,B(o.config.props.options,(n,d)=>(r(),F(i,{modelValue:o.config.props.options[d],"onUpdate:modelValue":f=>o.config.props.options[d]=f},{prepend:p(()=>[e(_,{class:"w-move"},{default:p(()=>[e(U)]),_:1})]),append:p(()=>[e(m,{icon:"Delete",onClick:f=>o.config.props.options.splice(d,1)},null,8,["onClick"])]),_:2},1032,["modelValue","onUpdate:modelValue"]))),256))]),_:1},8,["modelValue"])]),_:1}),e(a,{label:"选项展开"},{default:p(()=>[e(s,{modelValue:o.config.props.expanding,"onUpdate:modelValue":l[4]||(l[4]=n=>o.config.props.expanding=n)},null,8,["modelValue"])]),_:1}),e(a,{label:"隐藏名称"},{default:p(()=>[e(s,{modelValue:o.config.props.hideLabel,"onUpdate:modelValue":l[5]||(l[5]=n=>o.config.props.hideLabel=n)},null,8,["modelValue"])]),_:1}),e(a,{label:"是否必填"},{default:p(()=>[e(s,{modelValue:o.config.props.required,"onUpdate:modelValue":l[6]||(l[6]=n=>o.config.props.required=n)},null,8,["modelValue"])]),_:1})],64)}}},R=y(L,[["__scopeId","data-v-f92584a4"]]);export{R as default}; diff --git a/web/dist/assets/MultiplePicker.DptKe0fb.js b/web/dist/assets/MultiplePicker.DptKe0fb.js new file mode 100644 index 0000000000..886db90a7d --- /dev/null +++ b/web/dist/assets/MultiplePicker.DptKe0fb.js @@ -0,0 +1 @@ +import{F as p}from"./FormComponentMixin.C3yPnfoW.js";import{c as V,h as n,b as a,o,w as s,a as r,G as m,H as c}from"./vue.DmuWcDrn.js";const C={__name:"MultiplePicker",props:{...p.props},emits:[...p.emits],setup(i,{emit:_}){const d=i,v=_,l=V(p.computed._value(d,v));return(u,t)=>{const k=n("el-checkbox"),b=n("el-checkbox-group"),f=n("el-option"),g=n("el-select");return u.config.props.expanding?(o(),a(b,{key:0,modelValue:l.value,"onUpdate:modelValue":t[0]||(t[0]=e=>l.value=e)},{default:s(()=>[(o(!0),r(m,null,c(u.config.props.options,(e,x)=>(o(),a(k,{label:e,value:e},null,8,["label","value"]))),256))]),_:1},8,["modelValue"])):(o(),a(g,{key:1,multiple:"",modelValue:l.value,"onUpdate:modelValue":t[1]||(t[1]=e=>l.value=e)},{default:s(()=>[(o(!0),r(m,null,c(u.config.props.options,(e,x)=>(o(),a(f,{label:e,value:e},null,8,["label","value"]))),256))]),_:1},8,["modelValue"]))}}};export{C as default}; diff --git a/web/dist/assets/MultiplePicker.zM2qUqiD.css b/web/dist/assets/MultiplePicker.zM2qUqiD.css new file mode 100644 index 0000000000..125a5a6204 --- /dev/null +++ b/web/dist/assets/MultiplePicker.zM2qUqiD.css @@ -0,0 +1 @@ +[data-v-f92584a4] .w-fd-options .el-input-group__append,[data-v-f92584a4] .w-fd-options .el-input-group__prepend{padding:0 10px}.w-move[data-v-f92584a4]{cursor:move} diff --git a/web/dist/assets/Node.CQpGzEsh.css b/web/dist/assets/Node.CQpGzEsh.css new file mode 100644 index 0000000000..f9a550334b --- /dev/null +++ b/web/dist/assets/Node.CQpGzEsh.css @@ -0,0 +1 @@ +.w-node-err[data-v-b126efc2]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}.w-p-node[data-v-b126efc2]{width:220px;margin-bottom:8px;position:relative}.w-p-node .w-node-err-tip[data-v-b126efc2]{position:absolute;right:-30px;color:var(--el-color-danger)}.w-p-node .w-p-node-body[data-v-b126efc2]{cursor:pointer;background:#fff;overflow:hidden;border-radius:5px;box-shadow:0 0 5px #d8d8d8}.w-p-node .w-p-node-body .w-p-node-header[data-v-b126efc2]{display:flex;align-items:center;justify-content:space-between;padding:0 10px;color:#fff;height:25px;font-size:13px}.w-p-node .w-p-node-body .w-p-node-header .w-row-text[data-v-b126efc2]:hover{text-decoration:underline}.w-p-node .w-p-node-body .w-p-node-header .w-node-del[data-v-b126efc2]{display:none}.w-p-node .w-p-node-body .w-p-node-header>div[data-v-b126efc2]{display:flex;align-items:center}.w-p-node .w-p-node-body .w-p-node-header>div>div[data-v-b126efc2]{margin-left:3px;width:170px}.w-p-node .w-p-node-body .w-p-node-header input[data-v-b126efc2]{width:170px;border:none;border-radius:5px}.w-p-node .w-p-node-body .w-p-node-header input[data-v-b126efc2]:focus{outline:none}.w-p-node .w-p-node-body .w-p-node-content[data-v-b126efc2]{padding:5px 5px 5px 15px;min-height:50px;display:flex;justify-content:space-between;align-items:center;font-size:15px;color:#656363}.w-p-node .w-p-node-body .w-p-node-content>div[data-v-b126efc2]{width:92%;word-wrap:break-word}.w-p-node .w-p-node-body[data-v-b126efc2]:hover{box-shadow:0 0 5px 0 var(---shadowColor)}.w-p-node .w-p-node-body:hover .w-node-del[data-v-b126efc2]{display:inline}.w-p-node .w-p-node-add[data-v-b126efc2]{position:relative;display:flex;justify-content:center;align-items:center;height:80px}.w-p-node .w-p-node-add[data-v-b126efc2]:before{position:absolute;content:"";width:2px;height:80px;background:#cacaca}.w-p-node .w-p-node-add[data-v-b126efc2]:after{content:"";position:absolute;top:80px;left:50%;transform:translate(-50%);width:0;border-style:solid;border-width:8px 6px 4px;border-color:#CACACA transparent transparent} diff --git a/web/dist/assets/Node.Do50r9uM.js b/web/dist/assets/Node.Do50r9uM.js new file mode 100644 index 0000000000..c5b8869e77 --- /dev/null +++ b/web/dist/assets/Node.Do50r9uM.js @@ -0,0 +1 @@ +import{g as p,c as V,C as E,D as z,h as a,a as u,o as t,b as d,J as i,e as m,w as r,k as s,n as y,f as D,p as $,r as T,_ as A,K as k,m as F}from"./vue.DmuWcDrn.js";import M from"./InsertBtn.A0117t9o.js";import{n as C}from"./NodeMixin.CdUK7SNa.js";import{_ as R}from"./_plugin-vue_export-helper.DlAUqK2U.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";const W={class:"w-p-node"},j={class:"w-p-node-add"},J={__name:"Node",props:{headerColor:String,headerIcon:String,content:String,readonly:Boolean,modelValue:Object,showError:Boolean,errorInfo:String,showClose:{default:!0},showBody:{default:!0},placeholder:{default:"请设置"}},emits:C.emits,setup(e,{emit:h}){const g=e,n=p(!1),w=p(),f=h,v=V(C.computed._value(g,f));return E(n,()=>{n.value&&z(()=>{w.value.focus()})}),(x,o)=>{const B=a("WarningFilled"),c=a("el-icon"),N=a("el-tooltip"),I=a("Close"),b=a("el-text"),S=a("ArrowRight");return t(),u("div",W,[e.showError?(t(),d(N,{key:0,effect:"dark",content:e.errorInfo||"设置错误",placement:"top-start"},{default:r(()=>[s(c,{size:"20",class:"w-node-err-tip"},{default:r(()=>[s(B)]),_:1})]),_:1},8,["content"])):i("",!0),e.showBody?(t(),u("div",{key:1,class:D({"w-p-node-body":!0,"w-node-err":e.showError}),style:y({"---shadowColor":e.headerColor})},[m("div",{class:"w-p-node-header",style:y({"background-color":e.headerColor})},[m("div",null,[n.value?i("",!0):(t(),d(c,{key:0,size:"15"},{default:r(()=>[(t(),d(T(e.headerIcon)))]),_:1})),n.value?$((t(),u("input",{key:1,ref_key:"nodeNameInput",ref:w,autofocus:"",onBlur:o[0]||(o[0]=l=>n.value=!1),"onUpdate:modelValue":o[1]||(o[1]=l=>v.value.name=l)},null,544)),[[A,v.value.name]]):(t(),u("div",{key:2,class:"w-row-text",onClick:o[2]||(o[2]=()=>{e.readonly||(n.value=!0)})},k(v.value.name),1))]),e.showClose&&!e.readonly?(t(),d(c,{key:0,class:"w-node-del",onClick:o[3]||(o[3]=l=>f("delete"))},{default:r(()=>[s(I)]),_:1})):i("",!0)],4),m("div",{class:"w-p-node-content",onClick:o[4]||(o[4]=l=>x.$emit("select"))},[s(b,{"line-clamp":"4"},{default:r(()=>[F(k(e.content||e.placeholder),1)]),_:1}),s(c,{class:"w-p-node-click"},{default:r(()=>[s(S)]),_:1})])],6)):i("",!0),m("div",j,[e.readonly?i("",!0):(t(),d(M,{key:0,onInsertNode:o[5]||(o[5]=l=>f("insertNode",l))}))])])}}},L=R(J,[["__scopeId","data-v-b126efc2"]]);export{L as default}; diff --git a/web/dist/assets/NodeMixin.CdUK7SNa.js b/web/dist/assets/NodeMixin.CdUK7SNa.js new file mode 100644 index 0000000000..a893780fce --- /dev/null +++ b/web/dist/assets/NodeMixin.CdUK7SNa.js @@ -0,0 +1 @@ +const a={props:{designData:Object,modelValue:Object,formItems:Object,readonly:Boolean,index:Number,branch:Array},computed:{_value:function(e,t){return{get(){return e.modelValue},set(o){t("update:modelValue",o)}}}},emits:["update:modelValue","delete","insertNode","select"]};export{a as n}; diff --git a/web/dist/assets/NumberInput.CABlh2e3.js b/web/dist/assets/NumberInput.CABlh2e3.js new file mode 100644 index 0000000000..8dff489391 --- /dev/null +++ b/web/dist/assets/NumberInput.CABlh2e3.js @@ -0,0 +1 @@ +import{F as e}from"./FormComponentMixin.C3yPnfoW.js";import{h as n,b as r,o as m}from"./vue.DmuWcDrn.js";const c={__name:"NumberInput",props:{...e.props},setup(a){return(o,s)=>{const p=n("el-input");return m(),r(p,{type:"number",max:o.config.props.max,min:o.config.props.min,placeholder:o.config.props.placeholder},null,8,["max","min","placeholder"])}}};export{c as default}; diff --git a/web/dist/assets/NumberInput.D8yRZJpZ.js b/web/dist/assets/NumberInput.D8yRZJpZ.js new file mode 100644 index 0000000000..8632ae099a --- /dev/null +++ b/web/dist/assets/NumberInput.D8yRZJpZ.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as d,a as t,o as i,k as n,w as p,m as s,G as f}from"./vue.DmuWcDrn.js";const U={__name:"NumberInput",props:{...r.props},emits:[...r.emits],setup(V,{emit:g}){return(l,e)=>{const m=d("el-input"),a=d("el-form-item"),u=d("el-switch");return i(),t(f,null,[n(a,{label:"字段KEY"},{default:p(()=>[n(m,{modelValue:l.config.key,"onUpdate:modelValue":e[0]||(e[0]=o=>l.config.key=o),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),n(a,{label:"字段名称"},{default:p(()=>[n(m,{modelValue:l.config.name,"onUpdate:modelValue":e[1]||(e[1]=o=>l.config.name=o),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),n(a,{label:"提示文字"},{default:p(()=>[n(m,{modelValue:l.config.props.placeholder,"onUpdate:modelValue":e[2]||(e[2]=o=>l.config.props.placeholder=o),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),n(a,{label:"输入范围"},{default:p(()=>[n(m,{type:"number",style:{width:"47%"},modelValue:l.config.props.min,"onUpdate:modelValue":e[3]||(e[3]=o=>l.config.props.min=o),placeholder:"最小值"},null,8,["modelValue"]),e[7]||(e[7]=s(" ~ ")),n(m,{type:"number",style:{width:"47%"},modelValue:l.config.props.max,"onUpdate:modelValue":e[4]||(e[4]=o=>l.config.props.max=o),placeholder:"最大值"},null,8,["modelValue"])]),_:1}),n(a,{label:"隐藏名称"},{default:p(()=>[n(u,{modelValue:l.config.props.hideLabel,"onUpdate:modelValue":e[5]||(e[5]=o=>l.config.props.hideLabel=o)},null,8,["modelValue"])]),_:1}),n(a,{label:"是否必填"},{default:p(()=>[n(u,{modelValue:l.config.props.required,"onUpdate:modelValue":e[6]||(e[6]=o=>l.config.props.required=o)},null,8,["modelValue"])]),_:1})],64)}}};export{U as default}; diff --git a/web/dist/assets/Parallel.AwxdJs98.js b/web/dist/assets/Parallel.AwxdJs98.js new file mode 100644 index 0000000000..8f70a630b7 --- /dev/null +++ b/web/dist/assets/Parallel.AwxdJs98.js @@ -0,0 +1 @@ +import s from"./BranchNode.B8syyw50.js";import{n as r}from"./NodeMixin.CdUK7SNa.js";import{c as p,b as u,o as f}from"./vue.DmuWcDrn.js";import"./InsertBtn.A0117t9o.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const k={__name:"Parallel",props:{...r.props,moveLn:Boolean,moveRn:Boolean},emits:[...r.emits,"moveL","moveR"],setup(t,{expose:v,emit:d}){const i=t,n=d,l=p(r.computed._value(i,n));v({validate:a});function a(m){return!0}return(m,e)=>(f(),u(s,{modelValue:l.value,"onUpdate:modelValue":e[0]||(e[0]=o=>l.value=o),readonly:m.readonly,desc:"并行执行",color:"#718dff","header-icon":"Operation",content:"并行流程分支",moveRn:t.moveRn,moveLn:t.moveLn,onInsertNode:e[1]||(e[1]=o=>n("insertNode",o)),onMoveL:e[2]||(e[2]=o=>n("moveL")),onMoveR:e[3]||(e[3]=o=>n("moveR")),onDelete:e[4]||(e[4]=o=>n("delete")),onSelect:e[5]||(e[5]=o=>n("select",m.modelValue))},null,8,["modelValue","readonly","moveRn","moveLn"]))}};export{k as default}; diff --git a/web/dist/assets/PlusSetting.Dpmt0s3R.css b/web/dist/assets/PlusSetting.Dpmt0s3R.css new file mode 100644 index 0000000000..cd2854a6de --- /dev/null +++ b/web/dist/assets/PlusSetting.Dpmt0s3R.css @@ -0,0 +1 @@ +.w-designer-base[data-v-cb8a15ec]{margin:0 auto;border-radius:5px;background-color:#fff;width:800px;min-height:calc(100vh - 100px)} diff --git a/web/dist/assets/PlusSetting.d22L-CQ-.js b/web/dist/assets/PlusSetting.d22L-CQ-.js new file mode 100644 index 0000000000..f71c754a4a --- /dev/null +++ b/web/dist/assets/PlusSetting.d22L-CQ-.js @@ -0,0 +1 @@ +import{_ as c}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{h as o,b as l,o as m,w as s,k as p,m as i}from"./vue.DmuWcDrn.js";const u={__name:"PlusSetting",setup(d,{expose:n}){n({validate:a});function a(){return new Promise(e=>e())}return(e,t)=>{const r=o("el-text"),_=o("el-main");return m(),l(_,{class:"w-designer-base"},{default:s(()=>[p(r,null,{default:s(()=>t[0]||(t[0]=[i("暂无设置项")])),_:1})]),_:1})}}},w=c(u,[["__scopeId","data-v-cb8a15ec"]]);export{w as default}; diff --git a/web/dist/assets/ProcessDesigner.DHm197_z.css b/web/dist/assets/ProcessDesigner.DHm197_z.css new file mode 100644 index 0000000000..16f7569d37 --- /dev/null +++ b/web/dist/assets/ProcessDesigner.DHm197_z.css @@ -0,0 +1 @@ +.w-process-designer[data-v-32c6ed0f]{display:inline-block;min-width:100%}.w-process-designer .w-p-d-operation[data-v-32c6ed0f]{position:fixed;top:18%;right:40px;z-index:99}.w-process-designer .w-p-d-operation .w-p-d-operation-zoom[data-v-32c6ed0f]{display:flex;justify-content:space-between;align-items:center}.w-process-designer .w-p-d-operation .w-p-d-operation-zoom span[data-v-32c6ed0f]{padding:0 5px;font-size:medium;color:var(--el-text-color-primary)} diff --git a/web/dist/assets/ProcessDesigner.y0zNgYS2.js b/web/dist/assets/ProcessDesigner.y0zNgYS2.js new file mode 100644 index 0000000000..c26ff5b9dd --- /dev/null +++ b/web/dist/assets/ProcessDesigner.y0zNgYS2.js @@ -0,0 +1 @@ +import{I as S,c as k,g as s,x as A,R as K,h as u,a as T,o as _,k as a,w as i,b as W,r as $,u as j,e as O,p as D,N as x,m as Y,K as Z}from"./vue.DmuWcDrn.js";import q from"./ProcessRender.C3vTPZCi.js";import{n as F,a as E}from"./ProcessNodes.r7PbQ_Ri.js";import{_ as G}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{b as C}from"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";const H={class:"w-process-designer"},J={__name:"ProcessDesigner",props:{designData:{type:Object,default:()=>({})},active:{default:!1},formItems:{type:Array,default:()=>[]},modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(m,{expose:B,emit:I}){const p=m;S(()=>{r.value.length===0&&(r.value=[F.Start.create()])});const r=k({get(){return p.modelValue},set(e){L("update:modelValue",e)}});B({validate:w});const L=I,l=s(100),o=s({}),d=s(!1),v=s(!1),y=s();let c=!1;const N=k(()=>o.value.type==="Exclusive"?600:500);function R(e){o.value=e,E[o.value.type]?v.value=!0:C.warning("本节点无配置项"),console.log("选中",e)}function U(e){l.value>30&&l.value<150||l.value<=30&&e>0||l.value>=150&&e<0?l.value+=e:C.warning("缩放已经到极限了😥")}function g(e){e.ctrlKey&&(c=!0,document.addEventListener("wheel",f,{passive:!1}))}function V(e){e.key==="Control"&&(c=!1,document.removeEventListener("wheel",f))}function f(e){if(c&&p.active){e.preventDefault();const t=Math.sign(e.deltaY);U(t*-5)}}A(()=>{document.addEventListener("keydown",g),document.addEventListener("keyup",V)}),K(()=>{document.removeEventListener("keydown",g),document.removeEventListener("keyup",V),document.removeEventListener("wheel",f)});function w(){return y.value.validate()}return(e,t)=>{const h=u("el-input"),b=u("edit"),z=u("el-icon"),M=u("el-link"),P=u("el-drawer");return _(),T("div",H,[a(q,{ref_key:"processRenderRef",ref:y,modelValue:r.value,"onUpdate:modelValue":t[0]||(t[0]=n=>r.value=n),readonly:!1,onSelect:R},null,8,["modelValue"]),a(P,{class:"w-drawer",size:N.value,title:o.value.name,modelValue:v.value,"onUpdate:modelValue":t[5]||(t[5]=n=>v.value=n),onClose:w},{header:i(()=>[O("div",null,[D(a(h,{autofocus:"",modelValue:o.value.name,"onUpdate:modelValue":t[1]||(t[1]=n=>o.value.name=n),style:{width:"300px"},onBlur:t[2]||(t[2]=n=>d.value=!1)},null,8,["modelValue"]),[[x,d.value]]),D(a(M,{onClick:t[3]||(t[3]=n=>d.value=!0),style:{"font-size":"medium"}},{default:i(()=>[a(z,{style:{"margin-right":"10px"}},{default:i(()=>[a(b)]),_:1}),Y(" "+Z(o.value.name),1)]),_:1},512),[[x,!d.value]])])]),default:i(()=>[(_(),W($(j(E)[o.value.type]),{modelValue:o.value,"onUpdate:modelValue":t[4]||(t[4]=n=>o.value=n),formItems:m.formItems,designData:m.designData},null,8,["modelValue","formItems","designData"]))]),_:1},8,["size","title","modelValue"])])}}},ae=G(J,[["__scopeId","data-v-32c6ed0f"]]);export{ae as default}; diff --git a/web/dist/assets/ProcessNodes.r7PbQ_Ri.js b/web/dist/assets/ProcessNodes.r7PbQ_Ri.js new file mode 100644 index 0000000000..8d5a8502d8 --- /dev/null +++ b/web/dist/assets/ProcessNodes.r7PbQ_Ri.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Approval.BIQMdMFc.js","assets/Node.Do50r9uM.js","assets/vue.DmuWcDrn.js","assets/InsertBtn.A0117t9o.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/index.XK2ik2qb.js","assets/index.JncG-tMh.css","assets/ProcessUtil.B7gNiVp1.js","assets/InsertBtn.DmHckovs.css","assets/NodeMixin.CdUK7SNa.js","assets/Node.CQpGzEsh.css","assets/Cc.B7imrGbS.js","assets/Exclusive.Bnfklj94.js","assets/BranchNode.B8syyw50.js","assets/BranchNode.qDeeEatk.css","assets/ConditionCompare.CgHyGqGV.js","assets/Gateway.BOgbIYCX.js","assets/GlobalFunc.9BrjVkDm.js","assets/Gateway.Bsn85Ufa.css","assets/Parallel.AwxdJs98.js","assets/Start.BIqQDQeS.js","assets/Approval.Bswl0Ie2.js","assets/WOrgPicker.B_7Qd6r5.js","assets/WDialog.D9OIgJAb.js","assets/WDialog.DTkfzpzg.css","assets/request.FMdsBF9A.js","assets/WOrgPicker.CaxAS1JB.css","assets/FormInterface.vRCiFeo3.js","assets/WOrgTags.Bgj5L3ZH.js","assets/WOrgTags.C3Esetp_.css","assets/Approval.Bt898B8S.css","assets/Cc.CQpVL-5n.js","assets/FormPermConf.CE-WaGhp.js","assets/Cc.COAaZbd-.css","assets/Exclusive.CHGcNMOo.js","assets/ConditionGroupConfig.BNW7mGqr.js","assets/ConditionItemConfig.CdU5ajTx.js","assets/ConditionGroupConfig.UuDrWypp.css","assets/Start.D_HyHccb.js"])))=>i.map(i=>d[i]); +import{_ as t}from"./index.XK2ik2qb.js";import{g as o}from"./ProcessUtil.B7gNiVp1.js";import{q as i}from"./vue.DmuWcDrn.js";const a=Object.assign({"./node/Approval.vue":()=>t(()=>import("./Approval.BIQMdMFc.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])),"./node/Cc.vue":()=>t(()=>import("./Cc.B7imrGbS.js"),__vite__mapDeps([11,1,2,3,4,5,6,7,8,9,10])),"./node/Exclusive.vue":()=>t(()=>import("./Exclusive.Bnfklj94.js"),__vite__mapDeps([12,13,2,3,4,5,6,7,8,9,14,15])),"./node/Gateway.vue":()=>t(()=>import("./Gateway.BOgbIYCX.js"),__vite__mapDeps([16,1,2,3,4,5,6,7,8,9,10,17,18])),"./node/Parallel.vue":()=>t(()=>import("./Parallel.AwxdJs98.js"),__vite__mapDeps([19,13,2,3,4,5,6,7,8,9,14])),"./node/Start.vue":()=>t(()=>import("./Start.BIqQDQeS.js"),__vite__mapDeps([20,1,2,3,4,5,6,7,8,9,10]))}),l=Object.assign({"./config/Approval.vue":()=>t(()=>import("./Approval.Bswl0Ie2.js"),__vite__mapDeps([21,9,22,23,4,2,24,25,5,6,17,7,26,27,28,29,30])),"./config/Cc.vue":()=>t(()=>import("./Cc.CQpVL-5n.js"),__vite__mapDeps([31,9,32,27,2,28,4,29,22,23,24,25,5,6,17,7,26,33])),"./config/Exclusive.vue":()=>t(()=>import("./Exclusive.CHGcNMOo.js"),__vite__mapDeps([34,9,35,36,28,4,2,29,22,23,24,25,5,6,17,7,26,15,27,37])),"./config/Start.vue":()=>t(()=>import("./Start.D_HyHccb.js"),__vite__mapDeps([38,9,32,27,2]))}),p={};Object.keys(a).forEach(e=>{const r=e.replace(/^.+\/([^/]+)\.vue$/,"$1");p[r]=i(a[e])});const s={};Object.keys(l).forEach(e=>{const r=e.replace(/^.+\/([^/]+)\.vue$/,"$1");s[r]=i(l[e])});const c=e=>({id:o()+"_fork",type:"Gateway",name:"网关节点",parentId:null,childId:null,props:{type:e,branch:[n[e].createSelf(1),n[e].createSelf()]},branch:[[],[]]}),n={Exclusive:{name:"分支条件",icon:"Share",color:"#1BB782",createSelf(e){return{id:o(),type:"Exclusive",name:e?"条件"+e:"默认条件",parentId:null,childId:null,props:{logic:!0,groups:[{logic:!0,conditions:[]}]}}},create(){return c("Exclusive")}}},d={create(){return{id:"node_root",type:"Start",name:"发起人",parentId:null,childId:null,props:{}}}},_={name:"审批人",icon:"Stamp",color:"#EF994F",create(){return{id:o(),type:"Approval",name:"审批人",parentId:null,childId:null,props:{mode:"USER",ruleType:"ASSIGN_USER",taskMode:{type:"OR",percentage:100},needSign:!1,assignUser:[],rootSelect:{multiple:!1},leader:{level:1,emptySkip:!1},leaderTop:{level:0,toEnd:!1,emptySkip:!1},assignDept:{dept:[],type:"LEADER"},assignRole:[],noUserHandler:{type:"TO_NEXT",assigned:[]},sameRoot:{type:"TO_SELF",assigned:[]},timeout:{enable:!1,time:1,timeUnit:"M",type:"TO_PASS"}}}}},u={name:"抄送人",icon:"Promotion",color:"#5994F3",create(){return{id:o(),type:"Cc",name:"抄送人",parentId:null,childId:null,props:{ruleType:"ASSIGN_USER",assignUser:[],rootSelect:{multiple:!1},assignDept:{dept:[],type:"LEADER"},assignRole:[]}}}},S={Approval:_,Cc:u,Start:d,...n};export{p as N,s as a,S as n}; diff --git a/web/dist/assets/ProcessRender.BvAnKCMh.css b/web/dist/assets/ProcessRender.BvAnKCMh.css new file mode 100644 index 0000000000..8163d60b97 --- /dev/null +++ b/web/dist/assets/ProcessRender.BvAnKCMh.css @@ -0,0 +1 @@ +.w-node-err[data-v-8f655145]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}.w-process[data-v-8f655145]{display:flex;flex-direction:column;align-items:center}.w-process .w-process-node[data-v-8f655145]{display:flex;justify-content:center;width:100%}.w-process .w-process-end[data-v-8f655145]{padding:10px;border-radius:5px;background:#cacaca} diff --git a/web/dist/assets/ProcessRender.C3vTPZCi.js b/web/dist/assets/ProcessRender.C3vTPZCi.js new file mode 100644 index 0000000000..dff3d4f299 --- /dev/null +++ b/web/dist/assets/ProcessRender.C3vTPZCi.js @@ -0,0 +1 @@ +import{N,n as m}from"./ProcessNodes.r7PbQ_Ri.js";import{_ as x}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{b as f}from"./index.XK2ik2qb.js";import{g as v,h as w,a as p,o as u,e as r,k as y,K as C,G as P,H as B,b as F,r as R,u as $,n as z}from"./vue.DmuWcDrn.js";import"./ProcessUtil.B7gNiVp1.js";const D={style:{"background-color":"#F5F6F6",padding:"20px"}},E={style:{position:"absolute","z-index":"999"}},S={__name:"ProcessRender",props:{readonly:{default:!1},modelValue:{required:!0,type:Object,default:()=>[]}},emits:["select"],setup(t,{expose:V}){V({validate:k});const s=v();function b(o,e){o.splice(e,1)}function g(o,e,l){m[l]?o.splice(e+1,0,m[l].create(l)):f.warning("请在ProcessNodes.js内配置该节点")}function k(){return new Promise((o,e)=>{const l=[];Array.isArray(s.value)?s.value.forEach(n=>{n.validate&&n.validate(l)}):node.value&&s.value.validate&&s.value.validate(l),l.length===0?o():e(l)})}const a=v(100);function c(o){a.value>30&&a.value<150||a.value<=30&&o>0||a.value>=150&&o<0?a.value+=o:f.warning("缩放已经到极限了😥")}return(o,e)=>{const l=w("el-button");return u(),p("div",D,[r("div",E,[y(l,{icon:"Minus",onClick:e[0]||(e[0]=n=>c(-5)),circle:""}),r("span",null,C(a.value)+"%",1),y(l,{icon:"Plus",onClick:e[1]||(e[1]=n=>c(5)),circle:""})]),r("div",{class:"w-process",style:z(`transform: scale(${a.value/100})`)},[(u(!0),p(P,null,B(t.modelValue||[],(n,d)=>(u(),F(R($(N)[n.type]),{key:n.id+n.type,readonly:t.readonly,modelValue:t.modelValue[d],"onUpdate:modelValue":i=>t.modelValue[d]=i,branch:t.modelValue,index:d,onSelect:e[2]||(e[2]=i=>o.$emit("select",i)),ref_for:!0,ref_key:"nodeRef",ref:s,onDelete:b,onInsertNode:g},null,40,["readonly","modelValue","onUpdate:modelValue","branch","index"]))),128)),e[3]||(e[3]=r("div",{class:"w-process-end"},"流程结束",-1))],4)])}}},U=x(S,[["__scopeId","data-v-8f655145"]]);export{U as default}; diff --git a/web/dist/assets/ProcessUtil.B7gNiVp1.js b/web/dist/assets/ProcessUtil.B7gNiVp1.js new file mode 100644 index 0000000000..f45ba41038 --- /dev/null +++ b/web/dist/assets/ProcessUtil.B7gNiVp1.js @@ -0,0 +1 @@ +function t(){return`node_${new Date().getTime()}${Math.floor(Math.random()*1e4).toString().padStart(4,"0")}`}function e(a){Array.isArray(a)?a.forEach(r=>{r.type==="GATEWAY"?(r.id=t()+"_fork",e(r.props.branch),e(r.branch)):r.id=t()}):a.id=t()}export{t as g,e as r}; diff --git a/web/dist/assets/RoleDrawer.BpHBBT47.js b/web/dist/assets/RoleDrawer.BpHBBT47.js deleted file mode 100644 index 6ef99b193c..0000000000 --- a/web/dist/assets/RoleDrawer.BpHBBT47.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RoleMenuTree.C_dfgRWh.js","assets/api.7fuRR03W.js","assets/vue.Cw4Y52yh.js","assets/index.CkCcWuPb.js","assets/index.DvQZPXXd.css","assets/RoleMenuTreeStores.CcYKMfIL.js","assets/RoleMenuBtnStores.jih0HPlG.js","assets/RoleMenuFieldStores.DOA5KVAo.js","assets/RoleMenuBtn.Bp4G33F9.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/RoleMenuBtn.DUIvX6wu.css","assets/RoleMenuField.yC8sUp8w.js","assets/RoleMenuField.uy3HOin6.css","assets/RoleUsers.BQsqUzR_.js","assets/RoleUsersStores.Co01fjT9.js"])))=>i.map(i=>d[i]); -import{Z as Pe,_ as T}from"./index.CkCcWuPb.js";import{_ as ge,D as R,F as w,H as B,ae as ee,O as ae,$ as Se,V as k,y as j,a3 as we,C as N,B as Me,x as ne,W as Ee,X as Re,G as h,az as ye,P as W,w as be,aA as O,a7 as z,a0 as x,z as Y,aP as U,a4 as F,a5 as K,a6 as ke}from"./vue.Cw4Y52yh.js";import{R as Ce}from"./api.7fuRR03W.js";import{R as De}from"./RoleUsersStores.Co01fjT9.js";import{_ as Ve}from"./_plugin-vue_export-helper.DlAUqK2U.js";const Ne={__name:"splitpanes",props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click"],setup(A,{emit:C}){const m=C,u=A,D=ge(),l=R([]),M=w(()=>l.value.reduce((e,n)=>(e[~~n.id]=n)&&e,{})),f=w(()=>l.value.length),v=R(null),P=R(!1),c=R({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),d=R({splitter:null,timeoutId:null}),y=w(()=>({[`splitpanes splitpanes--${u.horizontal?"horizontal":"vertical"}`]:!0,"splitpanes--dragging":c.value.dragging})),b=()=>{document.addEventListener("mousemove",r,{passive:!1}),document.addEventListener("mouseup",g),"ontouchstart"in window&&(document.addEventListener("touchmove",r,{passive:!1}),document.addEventListener("touchend",g))},E=()=>{document.removeEventListener("mousemove",r,{passive:!1}),document.removeEventListener("mouseup",g),"ontouchstart"in window&&(document.removeEventListener("touchmove",r,{passive:!1}),document.removeEventListener("touchend",g))},V=(e,n)=>{const t=e.target.closest(".splitpanes__splitter");if(t){const{left:a,top:i}=t.getBoundingClientRect(),{clientX:s,clientY:o}="ontouchstart"in window&&e.touches?e.touches[0]:e;c.value.cursorOffset=u.horizontal?o-i:s-a}b(),c.value.mouseDown=!0,c.value.activeSplitter=n},r=e=>{c.value.mouseDown&&(e.preventDefault(),c.value.dragging=!0,requestAnimationFrame(()=>{se(ie(e)),m("resize",l.value.map(n=>({min:n.min,max:n.max,size:n.size})))}))},g=()=>{c.value.dragging&&m("resized",l.value.map(e=>({min:e.min,max:e.max,size:e.size}))),c.value.mouseDown=!1,setTimeout(()=>{c.value.dragging=!1,E()},100)},S=(e,n)=>{"ontouchstart"in window&&(e.preventDefault(),u.dblClickSplitter&&(d.value.splitter===n?(clearTimeout(d.value.timeoutId),d.value.timeoutId=null,$(e,n),d.value.splitter=null):(d.value.splitter=n,d.value.timeoutId=setTimeout(()=>d.value.splitter=null,500)))),c.value.dragging||m("splitter-click",l.value[n])},$=(e,n)=>{let t=0;l.value=l.value.map((a,i)=>(a.size=i===n?a.max:a.min,i!==n&&(t+=a.min),a)),l.value[n].size-=t,m("pane-maximize",l.value[n]),m("resized",l.value.map(a=>({min:a.min,max:a.max,size:a.size})))},te=(e,n)=>{m("pane-click",M.value[n])},ie=e=>{const n=v.value.getBoundingClientRect(),{clientX:t,clientY:a}="ontouchstart"in window&&e.touches?e.touches[0]:e;return{x:t-(u.horizontal?0:c.value.cursorOffset)-n.left,y:a-(u.horizontal?c.value.cursorOffset:0)-n.top}},le=e=>{e=e[u.horizontal?"y":"x"];const n=v.value[u.horizontal?"clientHeight":"clientWidth"];return u.rtl&&!u.horizontal&&(e=n-e),e*100/n},se=e=>{const n=c.value.activeSplitter;let t={prevPanesSize:H(n),nextPanesSize:L(n),prevReachedMinPanes:0,nextReachedMinPanes:0};const a=0+(u.pushOtherPanes?0:t.prevPanesSize),i=100-(u.pushOtherPanes?0:t.nextPanesSize),s=Math.max(Math.min(le(e),i),a);let o=[n,n+1],p=l.value[o[0]]||null,_=l.value[o[1]]||null;const G=p.max<100&&s>=p.max+t.prevPanesSize,xe=_.max<100&&s<=100-(_.max+L(n+1));if(G||xe){G?(p.size=p.max,_.size=Math.max(100-p.max-t.prevPanesSize-t.nextPanesSize,0)):(p.size=Math.max(100-_.max-t.prevPanesSize-L(n+1),0),_.size=_.max);return}if(u.pushOtherPanes){const J=oe(t,s);if(!J)return;({sums:t,panesToResize:o}=J),p=l.value[o[0]]||null,_=l.value[o[1]]||null}p!==null&&(p.size=Math.min(Math.max(s-t.prevPanesSize-t.prevReachedMinPanes,p.min),p.max)),_!==null&&(_.size=Math.min(Math.max(100-s-t.nextPanesSize-t.nextReachedMinPanes,_.min),_.max))},oe=(e,n)=>{const t=c.value.activeSplitter,a=[t,t+1];return n{s>a[0]&&s<=t&&(i.size=i.min,e.prevReachedMinPanes+=i.min)}),e.prevPanesSize=H(a[0]),a[0]===void 0)?(e.prevReachedMinPanes=0,l.value[0].size=l.value[0].min,l.value.forEach((i,s)=>{s>0&&s<=t&&(i.size=i.min,e.prevReachedMinPanes+=i.min)}),l.value[a[1]].size=100-e.prevReachedMinPanes-l.value[0].min-e.prevPanesSize-e.nextPanesSize,null):n>100-e.nextPanesSize-l.value[a[1]].min&&(a[1]=ue(t).index,e.nextReachedMinPanes=0,a[1]>t+1&&l.value.forEach((i,s)=>{s>t&&s{s=t+1&&(i.size=i.min,e.nextReachedMinPanes+=i.min)}),l.value[a[0]].size=100-e.prevPanesSize-L(a[0]-1),null):{sums:e,panesToResize:a}},H=e=>l.value.reduce((n,t,a)=>n+(al.value.reduce((n,t,a)=>n+(a>e+1?t.size:0),0),re=e=>[...l.value].reverse().find(n=>n.indexn.min)||{},ue=e=>l.value.find(n=>n.index>e+1&&n.size>n.min)||{},de=()=>{var e;Array.from(((e=v.value)==null?void 0:e.children)||[]).forEach(n=>{const t=n.classList.contains("splitpanes__pane"),a=n.classList.contains("splitpanes__splitter");!t&&!a&&(n.remove(),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."))})},Z=(e,n,t=!1)=>{const a=e-1,i=document.createElement("div");i.classList.add("splitpanes__splitter"),t||(i.onmousedown=s=>V(s,a),typeof window<"u"&&"ontouchstart"in window&&(i.ontouchstart=s=>V(s,a)),i.onclick=s=>S(s,a+1)),u.dblClickSplitter&&(i.ondblclick=s=>$(s,a+1)),n.parentNode.insertBefore(i,n)},me=e=>{e.onmousedown=void 0,e.onclick=void 0,e.ondblclick=void 0,e.remove()},I=()=>{var e;const n=Array.from(((e=v.value)==null?void 0:e.children)||[]);n.forEach(a=>{a.className.includes("splitpanes__splitter")&&me(a)});let t=0;n.forEach(a=>{a.className.includes("splitpanes__pane")&&(!t&&u.firstSplitter?Z(t,a,!0):t&&Z(t,a),t++)})},ve=({uid:e,...n})=>{const t=M.value[e];Object.entries(n).forEach(([a,i])=>t[a]=i)},ce=e=>{var n;let t=-1;Array.from(((n=v.value)==null?void 0:n.children)||[]).some(a=>(a.className.includes("splitpanes__pane")&&t++,a.isSameNode(e.el))),l.value.splice(t,0,{...e,index:t}),l.value.forEach((a,i)=>a.index=i),P.value&&W(()=>{I(),q({addedPane:l.value[t]}),m("pane-add",{index:t,panes:l.value.map(a=>({min:a.min,max:a.max,size:a.size}))})})},pe=e=>{const n=l.value.findIndex(a=>a.id===e),t=l.value.splice(n,1)[0];l.value.forEach((a,i)=>a.index=i),W(()=>{I(),q({removedPane:{...t}}),m("pane-remove",{removed:t,panes:l.value.map(a=>({min:a.min,max:a.max,size:a.size}))})})},q=(e={})=>{!e.addedPane&&!e.removedPane?he():l.value.some(n=>n.givenSize!==null||n.min||n.max<100)?fe(e):ze(),P.value&&m("resized",l.value.map(n=>({min:n.min,max:n.max,size:n.size})))},ze=()=>{const e=100/f.value;let n=0;const t=[],a=[];l.value.forEach(i=>{i.size=Math.max(Math.min(e,i.max),i.min),n-=i.size,i.size>=i.max&&t.push(i.id),i.size<=i.min&&a.push(i.id)}),n>.1&&X(n,t,a)},he=()=>{let e=100;const n=[],t=[];let a=0;l.value.forEach(s=>{e-=s.size,s.givenSize!==null&&a++,s.size>=s.max&&n.push(s.id),s.size<=s.min&&t.push(s.id)});let i=100;e>.1&&(l.value.forEach(s=>{s.givenSize===null&&(s.size=Math.max(Math.min(e/(f.value-a),s.max),s.min)),i-=s.size}),i>.1&&X(i,n,t))},fe=({addedPane:e,removedPane:n}={})=>{let t=100/f.value,a=0;const i=[],s=[];((e==null?void 0:e.givenSize)??null)!==null&&(t=(100-e.givenSize)/(f.value-1).value),l.value.forEach(o=>{a-=o.size,o.size>=o.max&&i.push(o.id),o.size<=o.min&&s.push(o.id)}),!(Math.abs(a)<.1)&&(l.value.forEach(o=>{(e==null?void 0:e.givenSize)!==null&&(e==null?void 0:e.id)===o.id||(o.size=Math.max(Math.min(t,o.max),o.min)),a-=o.size,o.size>=o.max&&i.push(o.id),o.size<=o.min&&s.push(o.id)}),a>.1&&X(a,i,s))},X=(e,n,t)=>{let a;e>0?a=e/(f.value-n.length):a=e/(f.value-t.length),l.value.forEach((i,s)=>{if(e>0&&!n.includes(i.id)){const o=Math.max(Math.min(i.size+a,i.max),i.min),p=o-i.size;e-=p,i.size=o}else if(!t.includes(i.id)){const o=Math.max(Math.min(i.size+a,i.max),i.min),p=o-i.size;e-=p,i.size=o}}),Math.abs(e)>.1&&W(()=>{P.value&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})};B(()=>u.firstSplitter,()=>I()),B(()=>u.dblClickSplitter,e=>{[...v.value.querySelectorAll(".splitpanes__splitter")].forEach((n,t)=>{n.ondblclick=e?a=>$(a,t):void 0})}),ee(()=>P.value=!1),ae(()=>{de(),I(),q(),m("ready"),P.value=!0});const _e=()=>{var e;return ye("div",{ref:v,class:y.value},(e=D.default)==null?void 0:e.call(D))};return k("panes",l),k("indexedPanes",M),k("horizontal",w(()=>u.horizontal)),k("requestUpdate",ve),k("onPaneAdd",ce),k("onPaneRemove",pe),k("onPaneClick",te),(e,n)=>(j(),Se(we(_e)))}},Q={__name:"pane",props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(A){var C;const m=A,u=N("requestUpdate"),D=N("onPaneAdd"),l=N("horizontal"),M=N("onPaneRemove"),f=N("onPaneClick"),v=(C=Me())==null?void 0:C.uid,P=N("indexedPanes"),c=w(()=>P.value[v]),d=R(null),y=w(()=>{const r=isNaN(m.size)||m.size===void 0?0:parseFloat(m.size);return Math.max(Math.min(r,E.value),b.value)}),b=w(()=>{const r=parseFloat(m.minSize);return isNaN(r)?0:r}),E=w(()=>{const r=parseFloat(m.maxSize);return isNaN(r)?100:r}),V=w(()=>{var r;return`${l.value?"height":"width"}: ${(r=c.value)==null?void 0:r.size}%`});return ae(()=>{D({id:v,el:d.value,min:b.value,max:E.value,givenSize:m.size===void 0?null:y.value,size:y.value})}),B(()=>y.value,r=>u({uid:v,size:r})),B(()=>b.value,r=>u({uid:v,min:r})),B(()=>E.value,r=>u({uid:v,max:r})),ee(()=>M(v)),(r,g)=>(j(),ne("div",{ref_key:"paneEl",ref:d,class:"splitpanes__pane",onClick:g[0]||(g[0]=S=>h(f)(S,r._.uid)),style:Re(V.value)},[Ee(r.$slots,"default")],4))}},Oe={class:"pane-box"},Le={class:"pane-box"},Be=be({__name:"RoleDrawer",setup(A){const C=U(()=>T(()=>import("./RoleMenuTree.C_dfgRWh.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),m=U(()=>T(()=>import("./RoleMenuBtn.Bp4G33F9.js"),__vite__mapDeps([8,2,1,3,4,6,5,9,10]))),u=U(()=>T(()=>import("./RoleMenuField.yC8sUp8w.js"),__vite__mapDeps([11,1,2,3,4,7,9,12]))),D=U(()=>T(()=>import("./RoleUsers.BQsqUzR_.js"),__vite__mapDeps([13,1,2,3,4,14]))),l=Ce(),M=De(),f=R("first"),v=R(!1),P=()=>{v.value=!0,M.get_all_users(),M.set_right_users(l.$state.users)};return(c,d)=>{const y=O("el-tag"),b=O("el-button"),E=O("el-tab-pane"),V=O("el-tabs"),r=O("el-drawer"),g=O("el-dialog");return j(),ne(ke,null,[z(r,{modelValue:h(l).drawerVisible,"onUpdate:modelValue":d[1]||(d[1]=S=>h(l).drawerVisible=S),title:"权限配置",direction:"rtl",size:"80%","close-on-click-modal":!1,"before-close":h(l).handleDrawerClose,"destroy-on-close":!0},{header:x(()=>[Y("div",null,[d[3]||(d[3]=F(" 当前授权角色: ")),z(y,{style:{"margin-right":"20px"}},{default:x(()=>[F(K(h(l).roleName),1)]),_:1}),d[4]||(d[4]=F(" 授权人员: ")),z(b,{size:"small",icon:h(Pe),onClick:P},{default:x(()=>[F(K(h(l).users.length),1)]),_:1},8,["icon"])])]),default:x(()=>[z(h(Ne),{class:"default-theme",style:{height:"100%"}},{default:x(()=>[z(h(Q),{"min-size":"20",size:"22"},{default:x(()=>[Y("div",Oe,[z(h(C))])]),_:1}),z(h(Q),{"min-size":"20"},{default:x(()=>[Y("div",Le,[z(V,{modelValue:f.value,"onUpdate:modelValue":d[0]||(d[0]=S=>f.value=S),class:"demo-tabs"},{default:x(()=>[z(E,{label:"接口权限",name:"first"},{default:x(()=>[z(h(m))]),_:1}),z(E,{label:"列字段权限",name:"second"},{default:x(()=>[z(h(u))]),_:1})]),_:1},8,["modelValue"])])]),_:1})]),_:1})]),_:1},8,["modelValue","before-close"]),z(g,{modelValue:v.value,"onUpdate:modelValue":d[2]||(d[2]=S=>v.value=S),title:"授权用户",width:"700px","close-on-click-modal":!1},{default:x(()=>[z(h(D))]),_:1},8,["modelValue"])],64)}}}),$e=Ve(Be,[["__scopeId","data-v-35437ed6"]]);export{$e as default}; diff --git a/web/dist/assets/RoleDrawer.D3Ka2ZfE.js b/web/dist/assets/RoleDrawer.D3Ka2ZfE.js new file mode 100644 index 0000000000..8d7028593e --- /dev/null +++ b/web/dist/assets/RoleDrawer.D3Ka2ZfE.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RoleMenuTree.DcvolyEz.js","assets/api.BMXTwPHc.js","assets/vue.DmuWcDrn.js","assets/index.XK2ik2qb.js","assets/index.JncG-tMh.css","assets/RoleMenuTreeStores.CLogX8g4.js","assets/RoleMenuBtnStores.BlTPwy92.js","assets/RoleMenuFieldStores.DWC1Blrk.js","assets/RoleMenuBtn.6QI1qA9D.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/RoleMenuBtn.DUIvX6wu.css","assets/RoleMenuField.DRUPXFSE.js","assets/RoleMenuField.uy3HOin6.css","assets/RoleUsers.BFQCapvX.js","assets/RoleUsersStores.D14armsj.js"])))=>i.map(i=>d[i]); +import{aj as ge,_ as T}from"./index.XK2ik2qb.js";import{a3 as Se,g as R,c as w,C as B,R as ee,x as ae,b as Pe,X as k,o as K,r as we,i as V,B as Me,a as ne,l as Ee,n as Re,u as h,A as be,D as j,d as ye,h as O,k as z,w as x,e as Y,q as U,m as F,K as Q,G as ke}from"./vue.DmuWcDrn.js";import{R as Ce}from"./api.BMXTwPHc.js";import{R as De}from"./RoleUsersStores.D14armsj.js";import{_ as Ne}from"./_plugin-vue_export-helper.DlAUqK2U.js";const Ve={__name:"splitpanes",props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click"],setup(A,{emit:C}){const m=C,u=A,D=Se(),l=R([]),M=w(()=>l.value.reduce((e,n)=>(e[~~n.id]=n)&&e,{})),f=w(()=>l.value.length),v=R(null),g=R(!1),c=R({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),d=R({splitter:null,timeoutId:null}),b=w(()=>({[`splitpanes splitpanes--${u.horizontal?"horizontal":"vertical"}`]:!0,"splitpanes--dragging":c.value.dragging})),y=()=>{document.addEventListener("mousemove",r,{passive:!1}),document.addEventListener("mouseup",S),"ontouchstart"in window&&(document.addEventListener("touchmove",r,{passive:!1}),document.addEventListener("touchend",S))},E=()=>{document.removeEventListener("mousemove",r,{passive:!1}),document.removeEventListener("mouseup",S),"ontouchstart"in window&&(document.removeEventListener("touchmove",r,{passive:!1}),document.removeEventListener("touchend",S))},N=(e,n)=>{const t=e.target.closest(".splitpanes__splitter");if(t){const{left:a,top:i}=t.getBoundingClientRect(),{clientX:s,clientY:o}="ontouchstart"in window&&e.touches?e.touches[0]:e;c.value.cursorOffset=u.horizontal?o-i:s-a}y(),c.value.mouseDown=!0,c.value.activeSplitter=n},r=e=>{c.value.mouseDown&&(e.preventDefault(),c.value.dragging=!0,requestAnimationFrame(()=>{se(ie(e)),m("resize",l.value.map(n=>({min:n.min,max:n.max,size:n.size})))}))},S=()=>{c.value.dragging&&m("resized",l.value.map(e=>({min:e.min,max:e.max,size:e.size}))),c.value.mouseDown=!1,setTimeout(()=>{c.value.dragging=!1,E()},100)},P=(e,n)=>{"ontouchstart"in window&&(e.preventDefault(),u.dblClickSplitter&&(d.value.splitter===n?(clearTimeout(d.value.timeoutId),d.value.timeoutId=null,$(e,n),d.value.splitter=null):(d.value.splitter=n,d.value.timeoutId=setTimeout(()=>d.value.splitter=null,500)))),c.value.dragging||m("splitter-click",l.value[n])},$=(e,n)=>{let t=0;l.value=l.value.map((a,i)=>(a.size=i===n?a.max:a.min,i!==n&&(t+=a.min),a)),l.value[n].size-=t,m("pane-maximize",l.value[n]),m("resized",l.value.map(a=>({min:a.min,max:a.max,size:a.size})))},te=(e,n)=>{m("pane-click",M.value[n])},ie=e=>{const n=v.value.getBoundingClientRect(),{clientX:t,clientY:a}="ontouchstart"in window&&e.touches?e.touches[0]:e;return{x:t-(u.horizontal?0:c.value.cursorOffset)-n.left,y:a-(u.horizontal?c.value.cursorOffset:0)-n.top}},le=e=>{e=e[u.horizontal?"y":"x"];const n=v.value[u.horizontal?"clientHeight":"clientWidth"];return u.rtl&&!u.horizontal&&(e=n-e),e*100/n},se=e=>{const n=c.value.activeSplitter;let t={prevPanesSize:W(n),nextPanesSize:L(n),prevReachedMinPanes:0,nextReachedMinPanes:0};const a=0+(u.pushOtherPanes?0:t.prevPanesSize),i=100-(u.pushOtherPanes?0:t.nextPanesSize),s=Math.max(Math.min(le(e),i),a);let o=[n,n+1],p=l.value[o[0]]||null,_=l.value[o[1]]||null;const H=p.max<100&&s>=p.max+t.prevPanesSize,xe=_.max<100&&s<=100-(_.max+L(n+1));if(H||xe){H?(p.size=p.max,_.size=Math.max(100-p.max-t.prevPanesSize-t.nextPanesSize,0)):(p.size=Math.max(100-_.max-t.prevPanesSize-L(n+1),0),_.size=_.max);return}if(u.pushOtherPanes){const J=oe(t,s);if(!J)return;({sums:t,panesToResize:o}=J),p=l.value[o[0]]||null,_=l.value[o[1]]||null}p!==null&&(p.size=Math.min(Math.max(s-t.prevPanesSize-t.prevReachedMinPanes,p.min),p.max)),_!==null&&(_.size=Math.min(Math.max(100-s-t.nextPanesSize-t.nextReachedMinPanes,_.min),_.max))},oe=(e,n)=>{const t=c.value.activeSplitter,a=[t,t+1];return n{s>a[0]&&s<=t&&(i.size=i.min,e.prevReachedMinPanes+=i.min)}),e.prevPanesSize=W(a[0]),a[0]===void 0)?(e.prevReachedMinPanes=0,l.value[0].size=l.value[0].min,l.value.forEach((i,s)=>{s>0&&s<=t&&(i.size=i.min,e.prevReachedMinPanes+=i.min)}),l.value[a[1]].size=100-e.prevReachedMinPanes-l.value[0].min-e.prevPanesSize-e.nextPanesSize,null):n>100-e.nextPanesSize-l.value[a[1]].min&&(a[1]=ue(t).index,e.nextReachedMinPanes=0,a[1]>t+1&&l.value.forEach((i,s)=>{s>t&&s{s=t+1&&(i.size=i.min,e.nextReachedMinPanes+=i.min)}),l.value[a[0]].size=100-e.prevPanesSize-L(a[0]-1),null):{sums:e,panesToResize:a}},W=e=>l.value.reduce((n,t,a)=>n+(al.value.reduce((n,t,a)=>n+(a>e+1?t.size:0),0),re=e=>[...l.value].reverse().find(n=>n.indexn.min)||{},ue=e=>l.value.find(n=>n.index>e+1&&n.size>n.min)||{},de=()=>{var e;Array.from(((e=v.value)==null?void 0:e.children)||[]).forEach(n=>{const t=n.classList.contains("splitpanes__pane"),a=n.classList.contains("splitpanes__splitter");!t&&!a&&(n.remove(),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."))})},G=(e,n,t=!1)=>{const a=e-1,i=document.createElement("div");i.classList.add("splitpanes__splitter"),t||(i.onmousedown=s=>N(s,a),typeof window<"u"&&"ontouchstart"in window&&(i.ontouchstart=s=>N(s,a)),i.onclick=s=>P(s,a+1)),u.dblClickSplitter&&(i.ondblclick=s=>$(s,a+1)),n.parentNode.insertBefore(i,n)},me=e=>{e.onmousedown=void 0,e.onclick=void 0,e.ondblclick=void 0,e.remove()},I=()=>{var e;const n=Array.from(((e=v.value)==null?void 0:e.children)||[]);n.forEach(a=>{a.className.includes("splitpanes__splitter")&&me(a)});let t=0;n.forEach(a=>{a.className.includes("splitpanes__pane")&&(!t&&u.firstSplitter?G(t,a,!0):t&&G(t,a),t++)})},ve=({uid:e,...n})=>{const t=M.value[e];Object.entries(n).forEach(([a,i])=>t[a]=i)},ce=e=>{var n;let t=-1;Array.from(((n=v.value)==null?void 0:n.children)||[]).some(a=>(a.className.includes("splitpanes__pane")&&t++,a.isSameNode(e.el))),l.value.splice(t,0,{...e,index:t}),l.value.forEach((a,i)=>a.index=i),g.value&&j(()=>{I(),q({addedPane:l.value[t]}),m("pane-add",{index:t,panes:l.value.map(a=>({min:a.min,max:a.max,size:a.size}))})})},pe=e=>{const n=l.value.findIndex(a=>a.id===e),t=l.value.splice(n,1)[0];l.value.forEach((a,i)=>a.index=i),j(()=>{I(),q({removedPane:{...t}}),m("pane-remove",{removed:t,panes:l.value.map(a=>({min:a.min,max:a.max,size:a.size}))})})},q=(e={})=>{!e.addedPane&&!e.removedPane?he():l.value.some(n=>n.givenSize!==null||n.min||n.max<100)?fe(e):ze(),g.value&&m("resized",l.value.map(n=>({min:n.min,max:n.max,size:n.size})))},ze=()=>{const e=100/f.value;let n=0;const t=[],a=[];l.value.forEach(i=>{i.size=Math.max(Math.min(e,i.max),i.min),n-=i.size,i.size>=i.max&&t.push(i.id),i.size<=i.min&&a.push(i.id)}),n>.1&&X(n,t,a)},he=()=>{let e=100;const n=[],t=[];let a=0;l.value.forEach(s=>{e-=s.size,s.givenSize!==null&&a++,s.size>=s.max&&n.push(s.id),s.size<=s.min&&t.push(s.id)});let i=100;e>.1&&(l.value.forEach(s=>{s.givenSize===null&&(s.size=Math.max(Math.min(e/(f.value-a),s.max),s.min)),i-=s.size}),i>.1&&X(i,n,t))},fe=({addedPane:e,removedPane:n}={})=>{let t=100/f.value,a=0;const i=[],s=[];((e==null?void 0:e.givenSize)??null)!==null&&(t=(100-e.givenSize)/(f.value-1).value),l.value.forEach(o=>{a-=o.size,o.size>=o.max&&i.push(o.id),o.size<=o.min&&s.push(o.id)}),!(Math.abs(a)<.1)&&(l.value.forEach(o=>{(e==null?void 0:e.givenSize)!==null&&(e==null?void 0:e.id)===o.id||(o.size=Math.max(Math.min(t,o.max),o.min)),a-=o.size,o.size>=o.max&&i.push(o.id),o.size<=o.min&&s.push(o.id)}),a>.1&&X(a,i,s))},X=(e,n,t)=>{let a;e>0?a=e/(f.value-n.length):a=e/(f.value-t.length),l.value.forEach((i,s)=>{if(e>0&&!n.includes(i.id)){const o=Math.max(Math.min(i.size+a,i.max),i.min),p=o-i.size;e-=p,i.size=o}else if(!t.includes(i.id)){const o=Math.max(Math.min(i.size+a,i.max),i.min),p=o-i.size;e-=p,i.size=o}}),Math.abs(e)>.1&&j(()=>{g.value&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})};B(()=>u.firstSplitter,()=>I()),B(()=>u.dblClickSplitter,e=>{[...v.value.querySelectorAll(".splitpanes__splitter")].forEach((n,t)=>{n.ondblclick=e?a=>$(a,t):void 0})}),ee(()=>g.value=!1),ae(()=>{de(),I(),q(),m("ready"),g.value=!0});const _e=()=>{var e;return be("div",{ref:v,class:b.value},(e=D.default)==null?void 0:e.call(D))};return k("panes",l),k("indexedPanes",M),k("horizontal",w(()=>u.horizontal)),k("requestUpdate",ve),k("onPaneAdd",ce),k("onPaneRemove",pe),k("onPaneClick",te),(e,n)=>(K(),Pe(we(_e)))}},Z={__name:"pane",props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(A){var C;const m=A,u=V("requestUpdate"),D=V("onPaneAdd"),l=V("horizontal"),M=V("onPaneRemove"),f=V("onPaneClick"),v=(C=Me())==null?void 0:C.uid,g=V("indexedPanes"),c=w(()=>g.value[v]),d=R(null),b=w(()=>{const r=isNaN(m.size)||m.size===void 0?0:parseFloat(m.size);return Math.max(Math.min(r,E.value),y.value)}),y=w(()=>{const r=parseFloat(m.minSize);return isNaN(r)?0:r}),E=w(()=>{const r=parseFloat(m.maxSize);return isNaN(r)?100:r}),N=w(()=>{var r;return`${l.value?"height":"width"}: ${(r=c.value)==null?void 0:r.size}%`});return ae(()=>{D({id:v,el:d.value,min:y.value,max:E.value,givenSize:m.size===void 0?null:b.value,size:b.value})}),B(()=>b.value,r=>u({uid:v,size:r})),B(()=>y.value,r=>u({uid:v,min:r})),B(()=>E.value,r=>u({uid:v,max:r})),ee(()=>M(v)),(r,S)=>(K(),ne("div",{ref_key:"paneEl",ref:d,class:"splitpanes__pane",onClick:S[0]||(S[0]=P=>h(f)(P,r._.uid)),style:Re(N.value)},[Ee(r.$slots,"default")],4))}},Oe={class:"pane-box"},Le={class:"pane-box"},Be=ye({__name:"RoleDrawer",setup(A){const C=U(()=>T(()=>import("./RoleMenuTree.DcvolyEz.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),m=U(()=>T(()=>import("./RoleMenuBtn.6QI1qA9D.js"),__vite__mapDeps([8,2,1,3,4,6,5,9,10]))),u=U(()=>T(()=>import("./RoleMenuField.DRUPXFSE.js"),__vite__mapDeps([11,1,2,3,4,7,9,12]))),D=U(()=>T(()=>import("./RoleUsers.BFQCapvX.js"),__vite__mapDeps([13,1,2,3,4,14]))),l=Ce(),M=De(),f=R("first"),v=R(!1),g=()=>{v.value=!0,M.get_all_users(),M.set_right_users(l.$state.users)};return(c,d)=>{const b=O("el-tag"),y=O("el-button"),E=O("el-tab-pane"),N=O("el-tabs"),r=O("el-drawer"),S=O("el-dialog");return K(),ne(ke,null,[z(r,{modelValue:h(l).drawerVisible,"onUpdate:modelValue":d[1]||(d[1]=P=>h(l).drawerVisible=P),title:"权限配置",direction:"rtl",size:"80%","close-on-click-modal":!1,"before-close":h(l).handleDrawerClose,"destroy-on-close":!0},{header:x(()=>[Y("div",null,[d[3]||(d[3]=F(" 当前授权角色: ")),z(b,{style:{"margin-right":"20px"}},{default:x(()=>[F(Q(h(l).roleName),1)]),_:1}),d[4]||(d[4]=F(" 授权人员: ")),z(y,{size:"small",icon:h(ge),onClick:g},{default:x(()=>[F(Q(h(l).users.length),1)]),_:1},8,["icon"])])]),default:x(()=>[z(h(Ve),{class:"default-theme",style:{height:"100%"}},{default:x(()=>[z(h(Z),{"min-size":"20",size:"22"},{default:x(()=>[Y("div",Oe,[z(h(C))])]),_:1}),z(h(Z),{"min-size":"20"},{default:x(()=>[Y("div",Le,[z(N,{modelValue:f.value,"onUpdate:modelValue":d[0]||(d[0]=P=>f.value=P),class:"demo-tabs"},{default:x(()=>[z(E,{label:"接口权限",name:"first"},{default:x(()=>[z(h(m))]),_:1}),z(E,{label:"列字段权限",name:"second"},{default:x(()=>[z(h(u))]),_:1})]),_:1},8,["modelValue"])])]),_:1})]),_:1})]),_:1},8,["modelValue","before-close"]),z(S,{modelValue:v.value,"onUpdate:modelValue":d[2]||(d[2]=P=>v.value=P),title:"授权用户",width:"700px","close-on-click-modal":!1},{default:x(()=>[z(h(D))]),_:1},8,["modelValue"])],64)}}}),$e=Ne(Be,[["__scopeId","data-v-35437ed6"]]);export{$e as default}; diff --git a/web/dist/assets/RoleMenuBtn.6QI1qA9D.js b/web/dist/assets/RoleMenuBtn.6QI1qA9D.js new file mode 100644 index 0000000000..3b189cc612 --- /dev/null +++ b/web/dist/assets/RoleMenuBtn.6QI1qA9D.js @@ -0,0 +1 @@ +import{d as H,g as m,c as Y,x as j,h as s,a as _,o as d,J as q,k as o,u as U,e as u,p as C,w as r,G as v,H as V,b,N as x,m as R,K as z,Y as Q}from"./vue.DmuWcDrn.js";import{R as W,d as Z,e as ee,f as ae}from"./api.BMXTwPHc.js";import{R as le}from"./RoleMenuBtnStores.BlTPwy92.js";import{R as te}from"./RoleMenuTreeStores.CLogX8g4.js";import{L as g,X as N,b as T}from"./index.XK2ik2qb.js";import{_ as ne}from"./_plugin-vue_export-helper.DlAUqK2U.js";const oe={key:0,class:"pccm-item"},se={class:"menu-form-alert"},de={style:{display:"flex","align-items":"center","white-space":"nowrap","margin-bottom":"10px"}},ue={class:"btn-item"},re=["onClick"],ie={class:"pc-dialog"},ce=H({__name:"RoleMenuBtn",setup(pe){const w=W(),$=te(),f=le(),p=m(!1),t=m({id:0,menu_btn_pre_id:0,isCheck:!1,name:"",data_range:g.get("role_default_data_range"),dept:g.get("role_default_custom_dept")}),n=m({id:0,menu_btn_pre_id:0,isCheck:!1,name:"",data_range:0,dept:[]}),h=m([{label:"仅本人数据权限",value:0},{label:"本部门及以下数据权限",value:1},{label:"本部门数据权限",value:2},{label:"全部数据权限",value:3},{label:"自定数据权限",value:4}]),B={children:"children",label:"name",value:"id"},I=async l=>{t.value.data_range=l,g.set("role_default_data_range",l)},P=async l=>{t.value.dept=l,g.set("role_default_custom_dept",l)},A=async l=>{l<4&&(n.value.dept=[])},E=Y(()=>function(l,a){const c=N.find(h.value,i=>{if(i.value===l)return i.label});return l===t.value.data_range&&(l!==4||JSON.stringify(a)===JSON.stringify(t.value.dept))?"默认接口权限":c.label}),J=async l=>{n.value=t.value;const a={isCheck:l.isCheck,roleId:w.roleId,menuId:$.id,btnId:l.id,data_range:t.value.data_range,dept:t.value.dept},{data:c,msg:i}=await ae(a);f.updateState(c),T({message:i,type:"success"})},L=async()=>{const{data:l,msg:a}=await ee(n.value);n.value=l,p.value=!1,T({message:a,type:"success"})},M=()=>{p.value=!1},O=async l=>{n.value=l,p.value=!0},k=m([]);return j(async()=>{const l=await Z({role:w.roleId,menu_button:n.value.id}),a=N.toArrayTree(l.data,{parentKey:"parent",strict:!1});k.value=a}),(l,a)=>{const c=s("el-option"),i=s("el-select"),S=s("el-tree-select"),K=s("Setting"),X=s("el-icon"),F=s("el-checkbox"),D=s("el-button"),G=s("el-dialog");return d(),_(v,null,[U(f).$state.length>0?(d(),_("div",oe,[u("div",se,[u("div",de,[a[6]||(a[6]=u("span",null,"默认接口权限:",-1)),o(i,{modelValue:t.value.data_range,"onUpdate:modelValue":a[0]||(a[0]=e=>t.value.data_range=e),onChange:I,placeholder:"请选择",style:{"margin-left":"5px",width:"250px","min-width":"250px"}},{default:r(()=>[(d(!0),_(v,null,V(h.value,e=>(d(),b(c,{key:e.value,label:e.label,value:e.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),C(o(S,{"node-key":"id",modelValue:t.value.dept,"onUpdate:modelValue":a[1]||(a[1]=e=>t.value.dept=e),props:B,data:k.value,onChange:a[2]||(a[2]=e=>P(t.value.dept)),placeholder:"请选择自定义部门",multiple:"","check-strictly":"","render-after-expand":!1,"show-checkbox":"",class:"dialog-tree",style:{"margin-left":"15px",width:"AUTO","min-width":"250px","margin-top":"0"}},null,8,["modelValue","data"]),[[x,t.value.data_range===4]])]),a[7]||(a[7]=u("span",null,"配置操作功能接口权限,配置数据权限点击小齿轮",-1))]),(d(!0),_(v,null,V(U(f).$state,e=>(d(),b(F,{key:e.id,modelValue:e.isCheck,"onUpdate:modelValue":y=>e.isCheck=y,onChange:y=>J(e)},{default:r(()=>[u("div",ue,[R(z(e.data_range!==null?`${e.name}(${E.value(e.data_range,e.dept)})`:e.name)+" ",1),C(u("span",{onClick:Q(y=>O(e),["stop","prevent"])},[o(X,null,{default:r(()=>[o(K)]),_:1})],8,re),[[x,e.isCheck]])])]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"]))),128))])):q("",!0),o(G,{modelValue:p.value,"onUpdate:modelValue":a[5]||(a[5]=e=>p.value=e),title:"数据权限配置",width:"400px","close-on-click-modal":!1,"before-close":M},{footer:r(()=>[u("div",null,[o(D,{type:"primary",onClick:L},{default:r(()=>a[8]||(a[8]=[R(" 确定")])),_:1}),o(D,{onClick:M},{default:r(()=>a[9]||(a[9]=[R(" 取消")])),_:1})])]),default:r(()=>[u("div",ie,[o(i,{modelValue:n.value.data_range,"onUpdate:modelValue":a[3]||(a[3]=e=>n.value.data_range=e),onChange:A,placeholder:"请选择"},{default:r(()=>[(d(!0),_(v,null,V(h.value,e=>(d(),b(c,{key:e.value,label:e.label,value:e.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),C(o(S,{"node-key":"id",modelValue:n.value.dept,"onUpdate:modelValue":a[4]||(a[4]=e=>n.value.dept=e),props:B,data:k.value,multiple:"","check-strictly":"","render-after-expand":!1,"show-checkbox":"",class:"dialog-tree"},null,8,["modelValue","data"]),[[x,n.value.data_range===4]])])]),_:1},8,["modelValue"])],64)}}}),ke=ne(ce,[["__scopeId","data-v-e4db1c3e"]]);export{ke as default}; diff --git a/web/dist/assets/RoleMenuBtn.Bp4G33F9.js b/web/dist/assets/RoleMenuBtn.Bp4G33F9.js deleted file mode 100644 index 1da0ce74f7..0000000000 --- a/web/dist/assets/RoleMenuBtn.Bp4G33F9.js +++ /dev/null @@ -1 +0,0 @@ -import{w as G,D as m,F as K,O as j,aA as s,x as _,y as d,a2 as H,a7 as o,G as U,z as u,a1 as C,a0 as r,a6 as v,aq as V,$ as x,a8 as R,a4 as b,a5 as Q,ad as W}from"./vue.Cw4Y52yh.js";import{R as Y,a as Z,s as ee,b as ae}from"./api.7fuRR03W.js";import{R as le}from"./RoleMenuBtnStores.jih0HPlG.js";import{R as te}from"./RoleMenuTreeStores.CcYKMfIL.js";import{L as g,X as $,E as T}from"./index.CkCcWuPb.js";import{_ as ne}from"./_plugin-vue_export-helper.DlAUqK2U.js";const oe={key:0,class:"pccm-item"},se={class:"menu-form-alert"},de={style:{display:"flex","align-items":"center","white-space":"nowrap","margin-bottom":"10px"}},ue={class:"btn-item"},re=["onClick"],ie={class:"pc-dialog"},ce=G({__name:"RoleMenuBtn",setup(pe){const w=Y(),I=te(),f=le(),p=m(!1),t=m({id:0,menu_btn_pre_id:0,isCheck:!1,name:"",data_range:g.get("role_default_data_range"),dept:g.get("role_default_custom_dept")}),n=m({id:0,menu_btn_pre_id:0,isCheck:!1,name:"",data_range:0,dept:[]}),h=m([{label:"仅本人数据权限",value:0},{label:"本部门及以下数据权限",value:1},{label:"本部门数据权限",value:2},{label:"全部数据权限",value:3},{label:"自定数据权限",value:4}]),B={children:"children",label:"name",value:"id"},N=async l=>{t.value.data_range=l,g.set("role_default_data_range",l)},P=async l=>{t.value.dept=l,g.set("role_default_custom_dept",l)},A=async l=>{l<4&&(n.value.dept=[])},E=K(()=>function(l,a){const c=$.find(h.value,i=>{if(i.value===l)return i.label});return l===t.value.data_range&&(l!==4||JSON.stringify(a)===JSON.stringify(t.value.dept))?"默认接口权限":c.label}),O=async l=>{n.value=t.value;const a={isCheck:l.isCheck,roleId:w.roleId,menuId:I.id,btnId:l.id,data_range:t.value.data_range,dept:t.value.dept},{data:c,msg:i}=await ae(a);f.updateState(c),T({message:i,type:"success"})},L=async()=>{const{data:l,msg:a}=await ee(n.value);n.value=l,p.value=!1,T({message:a,type:"success"})},D=()=>{p.value=!1},F=async l=>{n.value=l,p.value=!0},k=m([]);return j(async()=>{const l=await Z({role:w.roleId,menu_button:n.value.id}),a=$.toArrayTree(l.data,{parentKey:"parent",strict:!1});k.value=a}),(l,a)=>{const c=s("el-option"),i=s("el-select"),M=s("el-tree-select"),J=s("Setting"),X=s("el-icon"),q=s("el-checkbox"),S=s("el-button"),z=s("el-dialog");return d(),_(v,null,[U(f).$state.length>0?(d(),_("div",oe,[u("div",se,[u("div",de,[a[6]||(a[6]=u("span",null,"默认接口权限:",-1)),o(i,{modelValue:t.value.data_range,"onUpdate:modelValue":a[0]||(a[0]=e=>t.value.data_range=e),onChange:N,placeholder:"请选择",style:{"margin-left":"5px",width:"250px","min-width":"250px"}},{default:r(()=>[(d(!0),_(v,null,V(h.value,e=>(d(),x(c,{key:e.value,label:e.label,value:e.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),C(o(M,{"node-key":"id",modelValue:t.value.dept,"onUpdate:modelValue":a[1]||(a[1]=e=>t.value.dept=e),props:B,data:k.value,onChange:a[2]||(a[2]=e=>P(t.value.dept)),placeholder:"请选择自定义部门",multiple:"","check-strictly":"","render-after-expand":!1,"show-checkbox":"",class:"dialog-tree",style:{"margin-left":"15px",width:"AUTO","min-width":"250px","margin-top":"0"}},null,8,["modelValue","data"]),[[R,t.value.data_range===4]])]),a[7]||(a[7]=u("span",null,"配置操作功能接口权限,配置数据权限点击小齿轮",-1))]),(d(!0),_(v,null,V(U(f).$state,e=>(d(),x(q,{key:e.id,modelValue:e.isCheck,"onUpdate:modelValue":y=>e.isCheck=y,onChange:y=>O(e)},{default:r(()=>[u("div",ue,[b(Q(e.data_range!==null?`${e.name}(${E.value(e.data_range,e.dept)})`:e.name)+" ",1),C(u("span",{onClick:W(y=>F(e),["stop","prevent"])},[o(X,null,{default:r(()=>[o(J)]),_:1})],8,re),[[R,e.isCheck]])])]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"]))),128))])):H("",!0),o(z,{modelValue:p.value,"onUpdate:modelValue":a[5]||(a[5]=e=>p.value=e),title:"数据权限配置",width:"400px","close-on-click-modal":!1,"before-close":D},{footer:r(()=>[u("div",null,[o(S,{type:"primary",onClick:L},{default:r(()=>a[8]||(a[8]=[b(" 确定")])),_:1}),o(S,{onClick:D},{default:r(()=>a[9]||(a[9]=[b(" 取消")])),_:1})])]),default:r(()=>[u("div",ie,[o(i,{modelValue:n.value.data_range,"onUpdate:modelValue":a[3]||(a[3]=e=>n.value.data_range=e),onChange:A,placeholder:"请选择"},{default:r(()=>[(d(!0),_(v,null,V(h.value,e=>(d(),x(c,{key:e.value,label:e.label,value:e.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),C(o(M,{"node-key":"id",modelValue:n.value.dept,"onUpdate:modelValue":a[4]||(a[4]=e=>n.value.dept=e),props:B,data:k.value,multiple:"","check-strictly":"","render-after-expand":!1,"show-checkbox":"",class:"dialog-tree"},null,8,["modelValue","data"]),[[R,n.value.data_range===4]])])]),_:1},8,["modelValue"])],64)}}}),ke=ne(ce,[["__scopeId","data-v-e4db1c3e"]]);export{ke as default}; diff --git a/web/dist/assets/RoleMenuBtnStores.jih0HPlG.js b/web/dist/assets/RoleMenuBtnStores.BlTPwy92.js similarity index 74% rename from web/dist/assets/RoleMenuBtnStores.jih0HPlG.js rename to web/dist/assets/RoleMenuBtnStores.BlTPwy92.js index b7b3cb1888..20c3a57458 100644 --- a/web/dist/assets/RoleMenuBtnStores.jih0HPlG.js +++ b/web/dist/assets/RoleMenuBtnStores.BlTPwy92.js @@ -1 +1 @@ -import{v as n}from"./vue.Cw4Y52yh.js";const o=n("RoleMenuBtnStores",{state:()=>[],actions:{setState(t){this.$state=t,this.$state.length=t.length},updateState(t){const e=this.$state.findIndex(s=>s.id===t.id);e!==-1&&(this.$state[e]=t)}}});export{o as R}; +import{M as n}from"./vue.DmuWcDrn.js";const o=n("RoleMenuBtnStores",{state:()=>[],actions:{setState(t){this.$state=t,this.$state.length=t.length},updateState(t){const e=this.$state.findIndex(s=>s.id===t.id);e!==-1&&(this.$state[e]=t)}}});export{o as R}; diff --git a/web/dist/assets/RoleMenuField.DRUPXFSE.js b/web/dist/assets/RoleMenuField.DRUPXFSE.js new file mode 100644 index 0000000000..c522feecb1 --- /dev/null +++ b/web/dist/assets/RoleMenuField.DRUPXFSE.js @@ -0,0 +1 @@ +import{R as C,h as F}from"./api.BMXTwPHc.js";import{R as M,a as $}from"./RoleMenuFieldStores.DWC1Blrk.js";import{b as y}from"./index.XK2ik2qb.js";import{d as S,h as f,a as l,J as N,u as c,o as a,e as t,k as m,m as k,w as v,G as p,H as _,K as V}from"./vue.DmuWcDrn.js";import{_ as U}from"./_plugin-vue_export-helper.DlAUqK2U.js";const B={key:0,class:"pccm-item"},D={class:"menu-form-alert"},H={class:"columns-list"},E={class:"columns-head"},I={class:"columns-content"},z={class:"width-txt"},G=S({__name:"RoleMenuField",setup(J){const d=M(),h=$(),R=C(),b=(r,s,u)=>{for(const n of d.$state)n[s]=n[u]?n[s]:r},g=async()=>{const r=await F(R.$state.roleId,d.$state);y({message:r.msg,type:"success"})};return(r,s)=>{const u=f("el-button"),n=f("el-checkbox");return c(d).$state.length>0?(a(),l("div",B,[t("div",D,[m(u,{size:"small",onClick:g},{default:v(()=>s[0]||(s[0]=[k("保存 ")])),_:1}),s[1]||(s[1]=k(" 配置数据列字段权限 "))]),t("ul",H,[t("li",E,[s[2]||(s[2]=t("div",{class:"width-txt"},[t("span",null,"字段")],-1)),(a(!0),l(p,null,_(c(h).$state,(e,i)=>(a(),l("div",{key:i,class:"width-check"},[m(n,{modelValue:e.checked,"onUpdate:modelValue":o=>e.checked=o,onChange:o=>b(o,e.value,e.disabled)},{default:v(()=>[t("span",null,V(e.label),1)]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])]))),128))]),t("div",I,[(a(!0),l(p,null,_(c(d).$state,(e,i)=>(a(),l("li",{key:i,class:"columns-item"},[t("div",z,V(e.title),1),(a(!0),l(p,null,_(c(h).$state,(o,w)=>(a(),l("div",{key:w,class:"width-check"},[m(n,{modelValue:e[o.value],"onUpdate:modelValue":x=>e[o.value]=x,class:"ci-checkout",disabled:e[o.disabled]},null,8,["modelValue","onUpdate:modelValue","disabled"])]))),128))]))),128))])])])):N("",!0)}}}),O=U(G,[["__scopeId","data-v-088391a4"]]);export{O as default}; diff --git a/web/dist/assets/RoleMenuField.yC8sUp8w.js b/web/dist/assets/RoleMenuField.yC8sUp8w.js deleted file mode 100644 index 674a1b41eb..0000000000 --- a/web/dist/assets/RoleMenuField.yC8sUp8w.js +++ /dev/null @@ -1 +0,0 @@ -import{R as F,c as b}from"./api.7fuRR03W.js";import{R as M,a as y}from"./RoleMenuFieldStores.DOA5KVAo.js";import{E as $}from"./index.CkCcWuPb.js";import{w as S,aA as f,x as a,a2 as N,G as c,y as l,z as t,a7 as m,a4 as k,a0 as v,a6 as p,aq as _,a5 as V}from"./vue.Cw4Y52yh.js";import{_ as U}from"./_plugin-vue_export-helper.DlAUqK2U.js";const B={key:0,class:"pccm-item"},D={class:"menu-form-alert"},E={class:"columns-list"},z={class:"columns-head"},H={class:"columns-content"},I={class:"width-txt"},q=S({__name:"RoleMenuField",setup(A){const d=M(),h=y(),R=F(),x=(r,s,u)=>{for(const n of d.$state)n[s]=n[u]?n[s]:r},g=async()=>{const r=await b(R.$state.roleId,d.$state);$({message:r.msg,type:"success"})};return(r,s)=>{const u=f("el-button"),n=f("el-checkbox");return c(d).$state.length>0?(l(),a("div",B,[t("div",D,[m(u,{size:"small",onClick:g},{default:v(()=>s[0]||(s[0]=[k("保存 ")])),_:1}),s[1]||(s[1]=k(" 配置数据列字段权限 "))]),t("ul",E,[t("li",z,[s[2]||(s[2]=t("div",{class:"width-txt"},[t("span",null,"字段")],-1)),(l(!0),a(p,null,_(c(h).$state,(e,i)=>(l(),a("div",{key:i,class:"width-check"},[m(n,{modelValue:e.checked,"onUpdate:modelValue":o=>e.checked=o,onChange:o=>x(o,e.value,e.disabled)},{default:v(()=>[t("span",null,V(e.label),1)]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])]))),128))]),t("div",H,[(l(!0),a(p,null,_(c(d).$state,(e,i)=>(l(),a("li",{key:i,class:"columns-item"},[t("div",I,V(e.title),1),(l(!0),a(p,null,_(c(h).$state,(o,w)=>(l(),a("div",{key:w,class:"width-check"},[m(n,{modelValue:e[o.value],"onUpdate:modelValue":C=>e[o.value]=C,class:"ci-checkout",disabled:e[o.disabled]},null,8,["modelValue","onUpdate:modelValue","disabled"])]))),128))]))),128))])])])):N("",!0)}}}),O=U(q,[["__scopeId","data-v-088391a4"]]);export{O as default}; diff --git a/web/dist/assets/RoleMenuFieldStores.DOA5KVAo.js b/web/dist/assets/RoleMenuFieldStores.DWC1Blrk.js similarity index 85% rename from web/dist/assets/RoleMenuFieldStores.DOA5KVAo.js rename to web/dist/assets/RoleMenuFieldStores.DWC1Blrk.js index 635880069b..f25d4c06ce 100644 --- a/web/dist/assets/RoleMenuFieldStores.DOA5KVAo.js +++ b/web/dist/assets/RoleMenuFieldStores.DWC1Blrk.js @@ -1 +1 @@ -import{v as a}from"./vue.Cw4Y52yh.js";const l=a("RoleMenuFieldStores",{state:()=>[],actions:{setState(e){this.$state=e,this.$state.length=e.length}}}),t=a("RoleMenuFieldHeaderStores",{state:()=>[{value:"is_create",label:"新增可见",disabled:"disabled_create",checked:!1},{value:"is_update",label:"编辑可见",disabled:"disabled_update",checked:!1},{value:"is_query",label:"列表可见",disabled:"disabled_query",checked:!1}]});export{l as R,t as a}; +import{M as a}from"./vue.DmuWcDrn.js";const l=a("RoleMenuFieldStores",{state:()=>[],actions:{setState(e){this.$state=e,this.$state.length=e.length}}}),t=a("RoleMenuFieldHeaderStores",{state:()=>[{value:"is_create",label:"新增可见",disabled:"disabled_create",checked:!1},{value:"is_update",label:"编辑可见",disabled:"disabled_update",checked:!1},{value:"is_query",label:"列表可见",disabled:"disabled_query",checked:!1}]});export{l as R,t as a}; diff --git a/web/dist/assets/RoleMenuTree.C_dfgRWh.js b/web/dist/assets/RoleMenuTree.C_dfgRWh.js deleted file mode 100644 index 7b1ad0a5a1..0000000000 --- a/web/dist/assets/RoleMenuTree.C_dfgRWh.js +++ /dev/null @@ -1 +0,0 @@ -import{R as h,d as p,e as R,f as M}from"./api.7fuRR03W.js";import{R as k}from"./RoleMenuTreeStores.CcYKMfIL.js";import{R as _}from"./RoleMenuBtnStores.jih0HPlG.js";import{R as g,a as y}from"./RoleMenuFieldStores.DOA5KVAo.js";import{X as C,E as S}from"./index.CkCcWuPb.js";import{w as I,D as c,O as v,aA as w,$ as T,y as B}from"./vue.Cw4Y52yh.js";const X=I({__name:"RoleMenuTree",setup(D){const o=h(),d=k(),s=_(),l=g(),u=y(),a=c([]),r=c([]),i={children:"children",label:"name",value:"id"},m=(e,t)=>{R({roleId:o.roleId,menuId:e.id,isCheck:t}).then(n=>{S({message:n.msg,type:"success"})})},f=async e=>{if(e.is_catalog)s.setState([]),l.setState([]);else{d.setRoleMenuTree(e);const{data:t}=await M({roleId:o.roleId,menuId:e.id});s.setState(t.menu_btn),l.setState(t.menu_field)}u.$reset()};return v(async()=>{a.value=await p({roleId:o.roleId}),r.value=C.toTreeArray(a.value).filter(e=>e.isCheck).map(e=>e.id)}),(e,t)=>{const n=w("el-tree");return B(),T(n,{ref:"treeRef",data:a.value,props:i,"default-checked-keys":r.value,onCheckChange:m,onNodeClick:f,"node-key":"id","check-strictly":"","highlight-current":"","show-checkbox":"","default-expand-all":""},null,8,["data","default-checked-keys"])}}});export{X as default}; diff --git a/web/dist/assets/RoleMenuTree.DcvolyEz.js b/web/dist/assets/RoleMenuTree.DcvolyEz.js new file mode 100644 index 0000000000..69da1f6540 --- /dev/null +++ b/web/dist/assets/RoleMenuTree.DcvolyEz.js @@ -0,0 +1 @@ +import{R as f,a as p,s as R,b as M}from"./api.BMXTwPHc.js";import{R as k}from"./RoleMenuTreeStores.CLogX8g4.js";import{R as _}from"./RoleMenuBtnStores.BlTPwy92.js";import{R as g,a as C}from"./RoleMenuFieldStores.DWC1Blrk.js";import{X as y,b as S}from"./index.XK2ik2qb.js";import{d as I,g as c,x as v,h as b,b as T,o as w}from"./vue.DmuWcDrn.js";const A=I({__name:"RoleMenuTree",setup(x){const o=f(),d=k(),s=_(),l=g(),u=C(),a=c([]),r=c([]),i={children:"children",label:"name",value:"id"},m=(e,t)=>{R({roleId:o.roleId,menuId:e.id,isCheck:t}).then(n=>{S({message:n.msg,type:"success"})})},h=async e=>{if(e.is_catalog)s.setState([]),l.setState([]);else{d.setRoleMenuTree(e);const{data:t}=await M({roleId:o.roleId,menuId:e.id});s.setState(t.menu_btn),l.setState(t.menu_field)}u.$reset()};return v(async()=>{a.value=await p({roleId:o.roleId}),r.value=y.toTreeArray(a.value).filter(e=>e.isCheck).map(e=>e.id)}),(e,t)=>{const n=b("el-tree");return w(),T(n,{ref:"treeRef",data:a.value,props:i,"default-checked-keys":r.value,onCheckChange:m,onNodeClick:h,"node-key":"id","check-strictly":"","highlight-current":"","show-checkbox":"","default-expand-all":""},null,8,["data","default-checked-keys"])}}});export{A as default}; diff --git a/web/dist/assets/RoleMenuTreeStores.CcYKMfIL.js b/web/dist/assets/RoleMenuTreeStores.CLogX8g4.js similarity index 66% rename from web/dist/assets/RoleMenuTreeStores.CcYKMfIL.js rename to web/dist/assets/RoleMenuTreeStores.CLogX8g4.js index 8dff6661ed..345b1e2230 100644 --- a/web/dist/assets/RoleMenuTreeStores.CcYKMfIL.js +++ b/web/dist/assets/RoleMenuTreeStores.CLogX8g4.js @@ -1 +1 @@ -import{v as t}from"./vue.Cw4Y52yh.js";const o=t("RoleMenuTreeStores",{state:()=>({id:0,parent:0,name:"",isCheck:!1,is_catalog:!1}),actions:{setRoleMenuTree(e){this.$state=e}}});export{o as R}; +import{M as t}from"./vue.DmuWcDrn.js";const o=t("RoleMenuTreeStores",{state:()=>({id:0,parent:0,name:"",isCheck:!1,is_catalog:!1}),actions:{setRoleMenuTree(e){this.$state=e}}});export{o as R}; diff --git a/web/dist/assets/RoleUserStores.B3zDIJVl.js b/web/dist/assets/RoleUserStores.RiNc6kdN.js similarity index 77% rename from web/dist/assets/RoleUserStores.B3zDIJVl.js rename to web/dist/assets/RoleUserStores.RiNc6kdN.js index cf5e405859..c73fca8ffc 100644 --- a/web/dist/assets/RoleUserStores.B3zDIJVl.js +++ b/web/dist/assets/RoleUserStores.RiNc6kdN.js @@ -1 +1 @@ -import{v as r}from"./vue.Cw4Y52yh.js";const i=r("RoleUserStores",{state:()=>({drawerVisible:!1,role_id:void 0,role_name:void 0}),actions:{handleDrawerOpen(e){this.drawerVisible=!0,this.role_name=e.name,this.role_id=e.id},handleDrawerClose(){this.drawerVisible=!1}}});export{i as R}; +import{M as r}from"./vue.DmuWcDrn.js";const i=r("RoleUserStores",{state:()=>({drawerVisible:!1,role_id:void 0,role_name:void 0}),actions:{handleDrawerOpen(e){this.drawerVisible=!0,this.role_name=e.name,this.role_id=e.id},handleDrawerClose(){this.drawerVisible=!1}}});export{i as R}; diff --git a/web/dist/assets/RoleUsers.BFQCapvX.js b/web/dist/assets/RoleUsers.BFQCapvX.js new file mode 100644 index 0000000000..ecd256508e --- /dev/null +++ b/web/dist/assets/RoleUsers.BFQCapvX.js @@ -0,0 +1 @@ +import{R as m,c as p}from"./api.BMXTwPHc.js";import{R as u}from"./RoleUsersStores.D14armsj.js";import{b as d}from"./index.XK2ik2qb.js";import{d as _,h as c,b as f,o as i,u as o}from"./vue.DmuWcDrn.js";const C=_({__name:"RoleUsers",setup(R){const r=m(),t=u(),l=(n,e,a)=>{p(r.$state.roleId,{direction:e,movedKeys:a}).then(s=>{r.set_state(s.data),d({message:s.msg,type:"success"})})};return(n,e)=>{const a=c("el-transfer");return i(),f(a,{modelValue:o(t).$state.right_users,"onUpdate:modelValue":e[0]||(e[0]=s=>o(t).$state.right_users=s),filterable:"",titles:["未授权用户","已授权用户"],data:o(t).$state.all_users,props:{key:"id",label:"name"},onChange:l},null,8,["modelValue","data"])}}});export{C as default}; diff --git a/web/dist/assets/RoleUsers.BQsqUzR_.js b/web/dist/assets/RoleUsers.BQsqUzR_.js deleted file mode 100644 index 887361d0bf..0000000000 --- a/web/dist/assets/RoleUsers.BQsqUzR_.js +++ /dev/null @@ -1 +0,0 @@ -import{R as m,h as p}from"./api.7fuRR03W.js";import{R as u}from"./RoleUsersStores.Co01fjT9.js";import{E as _}from"./index.CkCcWuPb.js";import{w as d,aA as c,$ as f,y as i,G as o}from"./vue.Cw4Y52yh.js";const C=d({__name:"RoleUsers",setup(R){const r=m(),t=u(),l=(n,e,a)=>{p(r.$state.roleId,{direction:e,movedKeys:a}).then(s=>{r.set_state(s.data),_({message:s.msg,type:"success"})})};return(n,e)=>{const a=c("el-transfer");return i(),f(a,{modelValue:o(t).$state.right_users,"onUpdate:modelValue":e[0]||(e[0]=s=>o(t).$state.right_users=s),filterable:"",titles:["未授权用户","已授权用户"],data:o(t).$state.all_users,props:{key:"id",label:"name"},onChange:l},null,8,["modelValue","data"])}}});export{C as default}; diff --git a/web/dist/assets/RoleUsersStores.Co01fjT9.js b/web/dist/assets/RoleUsersStores.D14armsj.js similarity index 61% rename from web/dist/assets/RoleUsersStores.Co01fjT9.js rename to web/dist/assets/RoleUsersStores.D14armsj.js index cbce89761d..1b9b0e1ae9 100644 --- a/web/dist/assets/RoleUsersStores.Co01fjT9.js +++ b/web/dist/assets/RoleUsersStores.D14armsj.js @@ -1 +1 @@ -import{v as e}from"./vue.Cw4Y52yh.js";import{g as r}from"./api.7fuRR03W.js";import{X as o}from"./index.CkCcWuPb.js";const _=e("RoleUsersStores",{state:()=>({all_users:[],right_users:[]}),actions:{get_all_users(){r().then(s=>{this.$state.all_users=s})},set_right_users(s){this.$state.right_users=o.map(s,t=>t.id)}}});export{_ as R}; +import{M as e}from"./vue.DmuWcDrn.js";import{g as r}from"./api.BMXTwPHc.js";import{X as o}from"./index.XK2ik2qb.js";const _=e("RoleUsersStores",{state:()=>({all_users:[],right_users:[]}),actions:{get_all_users(){r().then(s=>{this.$state.all_users=s})},set_right_users(s){this.$state.right_users=o.map(s,t=>t.id)}}});export{_ as R}; diff --git a/web/dist/assets/Score.DUabvE8p.js b/web/dist/assets/Score.DUabvE8p.js new file mode 100644 index 0000000000..03c049386c --- /dev/null +++ b/web/dist/assets/Score.DUabvE8p.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{c,h as f,b as d,o as v}from"./vue.DmuWcDrn.js";const w={__name:"Score",props:{...r.props},emits:[...r.emits],setup(l,{emit:a}){const e=l,t=a,n=c(r.computed._value(e,t)),p=c(()=>{const o=e.config.props.icon;return[o,o,o]}),i=c(()=>{const o=e.config.props.color;return[o,o,o]});return(o,s)=>{const m=f("el-rate");return v(),d(m,{"allow-half":o.config.props.enableHalf,clearable:"","void-icon":e.config.props.icon,max:o.config.props.max,"show-score":o.config.props.showScore,"text-color":o.config.props.color,modelValue:n.value,"onUpdate:modelValue":s[0]||(s[0]=u=>n.value=u),colors:i.value,icons:p.value},null,8,["allow-half","void-icon","max","show-score","text-color","modelValue","colors","icons"])}}};export{w as default}; diff --git a/web/dist/assets/Score.nTTEFCHc.js b/web/dist/assets/Score.nTTEFCHc.js new file mode 100644 index 0000000000..0650cda43a --- /dev/null +++ b/web/dist/assets/Score.nTTEFCHc.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as u,a as w,o as F,k as e,w as l,G as S}from"./vue.DmuWcDrn.js";const C={__name:"Score",props:{...r.props},emits:[...r.emits],setup(k,{emit:v}){return(o,n)=>{const i=u("el-input"),d=u("el-form-item"),s=u("StarFilled"),p=u("el-icon"),t=u("el-radio-button"),f=u("View"),_=u("UserFilled"),V=u("Medal"),g=u("Sunny"),b=u("el-radio-group"),c=u("el-input-number"),m=u("el-switch"),U=u("el-color-picker");return F(),w(S,null,[e(d,{label:"字段KEY"},{default:l(()=>[e(i,{modelValue:o.config.key,"onUpdate:modelValue":n[0]||(n[0]=a=>o.config.key=a),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),e(d,{label:"字段名称"},{default:l(()=>[e(i,{modelValue:o.config.name,"onUpdate:modelValue":n[1]||(n[1]=a=>o.config.name=a),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),e(d,{label:"图标设置"},{default:l(()=>[e(b,{size:"small",modelValue:o.config.props.icon,"onUpdate:modelValue":n[2]||(n[2]=a=>o.config.props.icon=a)},{default:l(()=>[e(t,{value:"StarFilled"},{default:l(()=>[e(p,null,{default:l(()=>[e(s)]),_:1})]),_:1}),e(t,{value:"View"},{default:l(()=>[e(p,null,{default:l(()=>[e(f)]),_:1})]),_:1}),e(t,{value:"UserFilled"},{default:l(()=>[e(p,null,{default:l(()=>[e(_)]),_:1})]),_:1}),e(t,{value:"Medal"},{default:l(()=>[e(p,null,{default:l(()=>[e(V)]),_:1})]),_:1}),e(t,{value:"Sunny"},{default:l(()=>[e(p,null,{default:l(()=>[e(g)]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(d,{label:"最大分值"},{default:l(()=>[e(c,{precision:0,min:0,max:20,modelValue:o.config.props.max,"onUpdate:modelValue":n[3]||(n[3]=a=>o.config.props.max=a)},null,8,["modelValue"])]),_:1}),e(d,{label:"显示分值"},{default:l(()=>[e(m,{modelValue:o.config.props.showScore,"onUpdate:modelValue":n[4]||(n[4]=a=>o.config.props.showScore=a)},null,8,["modelValue"])]),_:1}),e(d,{label:"允许半分"},{default:l(()=>[e(m,{modelValue:o.config.props.enableHalf,"onUpdate:modelValue":n[5]||(n[5]=a=>o.config.props.enableHalf=a)},null,8,["modelValue"])]),_:1}),e(d,{label:"图标颜色"},{default:l(()=>[e(U,{modelValue:o.config.props.color,"onUpdate:modelValue":n[6]||(n[6]=a=>o.config.props.color=a)},null,8,["modelValue"])]),_:1}),e(d,{label:"隐藏名称"},{default:l(()=>[e(m,{modelValue:o.config.props.hideLabel,"onUpdate:modelValue":n[7]||(n[7]=a=>o.config.props.hideLabel=a)},null,8,["modelValue"])]),_:1}),e(d,{label:"是否必填"},{default:l(()=>[e(m,{modelValue:o.config.props.required,"onUpdate:modelValue":n[8]||(n[8]=a=>o.config.props.required=a)},null,8,["modelValue"])]),_:1})],64)}}};export{C as default}; diff --git a/web/dist/assets/SinglePicker.D6U6j9Wo.js b/web/dist/assets/SinglePicker.D6U6j9Wo.js new file mode 100644 index 0000000000..e9a9392563 --- /dev/null +++ b/web/dist/assets/SinglePicker.D6U6j9Wo.js @@ -0,0 +1 @@ +import{F as g}from"./FormComponentMixin.C3yPnfoW.js";import{l as w}from"./vue-draggable-plus.DFq4KU1k.js";import{_ as y}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{h as t,a as V,o as r,k as e,w as p,m as C,u as v,G as c,H as B,b as F}from"./vue.DmuWcDrn.js";const L={__name:"SinglePicker",props:{...g.props},emits:[...g.emits],setup(k,{emit:q}){const m=k;function b(){m.config.props.options.push(`选项${m.config.props.options.length+1}`)}return(o,l)=>{const i=t("el-input"),a=t("el-form-item"),u=t("el-button"),U=t("Rank"),_=t("el-icon"),s=t("el-switch");return r(),V(c,null,[e(a,{label:"字段KEY"},{default:p(()=>[e(i,{modelValue:o.config.key,"onUpdate:modelValue":l[0]||(l[0]=n=>o.config.key=n),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),e(a,{label:"字段名称"},{default:p(()=>[e(i,{modelValue:o.config.name,"onUpdate:modelValue":l[1]||(l[1]=n=>o.config.name=n),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),e(a,{label:"提示文字"},{default:p(()=>[e(i,{modelValue:o.config.props.placeholder,"onUpdate:modelValue":l[2]||(l[2]=n=>o.config.props.placeholder=n),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),e(a,{label:"选项设置"},{default:p(()=>[e(u,{style:{margin:"7px"},link:"",type:"primary",icon:"plus",onClick:b},{default:p(()=>l[7]||(l[7]=[C("添加选项")])),_:1}),e(v(w),{class:"w-fd-options",handle:".w-move",animation:150,modelValue:o.config.props.options,"onUpdate:modelValue":l[3]||(l[3]=n=>o.config.props.options=n)},{default:p(()=>[(r(!0),V(c,null,B(o.config.props.options,(n,d)=>(r(),F(i,{modelValue:o.config.props.options[d],"onUpdate:modelValue":f=>o.config.props.options[d]=f},{prepend:p(()=>[e(_,{class:"w-move"},{default:p(()=>[e(U)]),_:1})]),append:p(()=>[e(u,{icon:"Delete",onClick:f=>o.config.props.options.splice(d,1)},null,8,["onClick"])]),_:2},1032,["modelValue","onUpdate:modelValue"]))),256))]),_:1},8,["modelValue"])]),_:1}),e(a,{label:"选项展开"},{default:p(()=>[e(s,{modelValue:o.config.props.expanding,"onUpdate:modelValue":l[4]||(l[4]=n=>o.config.props.expanding=n)},null,8,["modelValue"])]),_:1}),e(a,{label:"隐藏名称"},{default:p(()=>[e(s,{modelValue:o.config.props.hideLabel,"onUpdate:modelValue":l[5]||(l[5]=n=>o.config.props.hideLabel=n)},null,8,["modelValue"])]),_:1}),e(a,{label:"是否必填"},{default:p(()=>[e(s,{modelValue:o.config.props.required,"onUpdate:modelValue":l[6]||(l[6]=n=>o.config.props.required=n)},null,8,["modelValue"])]),_:1})],64)}}},S=y(L,[["__scopeId","data-v-3aa01aba"]]);export{S as default}; diff --git a/web/dist/assets/SinglePicker.DJx3KAyh.css b/web/dist/assets/SinglePicker.DJx3KAyh.css new file mode 100644 index 0000000000..1d329031b5 --- /dev/null +++ b/web/dist/assets/SinglePicker.DJx3KAyh.css @@ -0,0 +1 @@ +[data-v-3aa01aba] .w-fd-options .el-input-group__append,[data-v-3aa01aba] .w-fd-options .el-input-group__prepend{padding:0 10px}.w-move[data-v-3aa01aba]{cursor:move} diff --git a/web/dist/assets/SinglePicker.DvSZcB6W.js b/web/dist/assets/SinglePicker.DvSZcB6W.js new file mode 100644 index 0000000000..a4778ba34e --- /dev/null +++ b/web/dist/assets/SinglePicker.DvSZcB6W.js @@ -0,0 +1 @@ +import{F as s}from"./FormComponentMixin.C3yPnfoW.js";import{c as B,h as t,b as a,o,w as u,a as p,G as i,H as m}from"./vue.DmuWcDrn.js";const w={__name:"SinglePicker",props:{...s.props},emits:[...s.emits],setup(c,{emit:d}){const _=c,v=d,l=B(s.computed._value(_,v));return(r,n)=>{const f=t("el-radio"),g=t("el-radio-group"),k=t("el-option"),V=t("el-select");return r.config.props.expanding?(o(),a(g,{key:0,modelValue:l.value,"onUpdate:modelValue":n[0]||(n[0]=e=>l.value=e)},{default:u(()=>[(o(!0),p(i,null,m(r.config.props.options,(e,b)=>(o(),a(f,{label:e,value:e},null,8,["label","value"]))),256))]),_:1},8,["modelValue"])):(o(),a(V,{key:1,modelValue:l.value,"onUpdate:modelValue":n[1]||(n[1]=e=>l.value=e)},{default:u(()=>[(o(!0),p(i,null,m(r.config.props.options,(e,b)=>(o(),a(k,{label:e,value:e},null,8,["label","value"]))),256))]),_:1},8,["modelValue"]))}}};export{w as default}; diff --git a/web/dist/assets/SpanLayout.CKTqSyyT.js b/web/dist/assets/SpanLayout.CKTqSyyT.js new file mode 100644 index 0000000000..0c0adc8cee --- /dev/null +++ b/web/dist/assets/SpanLayout.CKTqSyyT.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as a,a as i,o as d,k as e,w as p}from"./vue.DmuWcDrn.js";const c={__name:"SpanLayout",props:{...r.props},emits:[...r.emits],setup(f,{emit:_}){return(l,o)=>{const u=a("el-input"),m=a("el-form-item"),n=a("el-option"),s=a("el-select");return d(),i("div",null,[e(m,{label:"字段KEY"},{default:p(()=>[e(u,{modelValue:l.config.key,"onUpdate:modelValue":o[0]||(o[0]=t=>l.config.key=t),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),e(m,{label:"分栏数"},{default:p(()=>[e(s,{modelValue:l.config.props.number,"onUpdate:modelValue":o[1]||(o[1]=t=>l.config.props.number=t)},{default:p(()=>[e(n,{label:"分2栏",value:2}),e(n,{label:"分3栏",value:3}),e(n,{label:"分4栏",value:4}),e(n,{label:"分6栏",value:6}),e(n,{label:"分8栏",value:8})]),_:1},8,["modelValue"])]),_:1}),e(m,{label:"栏间隔"},{default:p(()=>[e(u,{modelValue:l.config.props.gutter,"onUpdate:modelValue":o[2]||(o[2]=t=>l.config.props.gutter=t),type:"number",placeholder:"每栏间隔多少"},null,8,["modelValue"])]),_:1})])}}};export{c as default}; diff --git a/web/dist/assets/SpanLayout.D0ohsIM7.js b/web/dist/assets/SpanLayout.D0ohsIM7.js new file mode 100644 index 0000000000..b5d910a027 --- /dev/null +++ b/web/dist/assets/SpanLayout.D0ohsIM7.js @@ -0,0 +1 @@ +import{c as f,I,C as z,h as v,b as u,o as r,w as m,a as g,G as _,H as U,k as h,u as D,f as k,Y as F}from"./vue.DmuWcDrn.js";import{F as c}from"./FormComponentMixin.C3yPnfoW.js";import{l as E}from"./vue-draggable-plus.DFq4KU1k.js";import B from"./FormComponent.BFjxV9c8.js";import{_ as G}from"./_plugin-vue_export-helper.DlAUqK2U.js";import"./FormComponents.BoFxZNqy.js";import"./index.XK2ik2qb.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";const H={__name:"SpanLayout",props:{...c.props,modelValue:{default:()=>({})}},emits:[...c.emits],setup(L,{emit:M}){const t=L,y=M,n=f(c.computed._active(t,y)),p=f(c.computed._value(t,y)),s=f(()=>t.mode==="free");function w(){const o=t.config.props;if(o.number>o.columns.length)for(let a=0;at.config.props.number,w),(o,a)=>{const q=v("el-form-item"),S=v("el-col"),$=v("el-row");return r(),u($,{gutter:o.config.props.gutter},{default:m(()=>[(r(!0),g(_,null,U(o.config.props.columns,(d,i)=>(r(),u(S,{span:o.config.props.span/o.config.props.number,key:`col_${i}`},{default:m(()=>[h(D(E),{modelValue:o.config.props.columns[i],"onUpdate:modelValue":e=>o.config.props.columns[i]=e,animation:150,group:"FormDesign",disabled:!s.value,ghostClass:s.value?"w-f-cp-select":"",class:k({"w-f-cp-ct":s.value})},{default:m(()=>[(r(!0),g(_,null,U(d,(e,C)=>{var V,b;return r(),g(_,{key:e.id},[e.props.isContainer?(r(),u(B,{key:1,config:e,mode:o.mode,active:n.value,"onUpdate:active":a[1]||(a[1]=l=>n.value=l),type:e.type,onClick:F(l=>n.value=e,["stop"]),modelValue:p.value,"onUpdate:modelValue":a[2]||(a[2]=l=>p.value=l),index:C,parents:d,class:k({"w-form-d-item":s.value,"w-form-cp-active":((b=n.value)==null?void 0:b.id)===e.id&&s.value})},null,8,["config","mode","active","type","onClick","modelValue","index","parents","class"])):(r(),u(q,{key:0,label:e.name,required:e.props.required,prop:e.key,onClick:F(l=>n.value=e,["stop"]),class:k({"w-form-d-item":s.value,"w-form-cp-active":((V=n.value)==null?void 0:V.id)===e.id&&s.value,"w-form-cp-nlb":e.props.hideLabel})},{default:m(()=>[h(B,{index:C,parents:d,config:e,mode:o.mode,active:n.value,"onUpdate:active":a[0]||(a[0]=l=>n.value=l),modelValue:p.value[e.key],"onUpdate:modelValue":l=>p.value[e.key]=l,type:e.type},null,8,["index","parents","config","mode","active","modelValue","onUpdate:modelValue","type"])]),_:2},1032,["label","required","prop","onClick","class"]))],64)}),128))]),_:2},1032,["modelValue","onUpdate:modelValue","disabled","ghostClass","class"])]),_:2},1032,["span"]))),128))]),_:1},8,["gutter"])}}},Q=G(H,[["__scopeId","data-v-946e99c5"]]);export{Q as default}; diff --git a/web/dist/assets/SpanLayout.DQHViipG.css b/web/dist/assets/SpanLayout.DQHViipG.css new file mode 100644 index 0000000000..4cfd44ec0b --- /dev/null +++ b/web/dist/assets/SpanLayout.DQHViipG.css @@ -0,0 +1 @@ +.w-node-err[data-v-946e99c5]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}[data-v-946e99c5] .w-f-cp-ct{width:100%;min-height:50px;background-color:#f5f6f6}.w-f-cp-select[data-v-946e99c5]{border-radius:2px;border:1px dashed var(--el-color-primary)!important} diff --git a/web/dist/assets/Start.BIqQDQeS.js b/web/dist/assets/Start.BIqQDQeS.js new file mode 100644 index 0000000000..0966ee568b --- /dev/null +++ b/web/dist/assets/Start.BIqQDQeS.js @@ -0,0 +1 @@ +import c from"./Node.Do50r9uM.js";import{n as t}from"./NodeMixin.CdUK7SNa.js";import{c as v,g as s,b as w,o as V}from"./vue.DmuWcDrn.js";import"./InsertBtn.A0117t9o.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const U={__name:"Start",props:{...t.props},emits:t.emits,setup(a,{expose:i,emit:m}){const p=a,n=m,l=v(t.computed._value(p,n)),d=s(!1),u=s(null);i({validate:f});function f(o){}return(o,e)=>(V(),w(c,{modelValue:l.value,"onUpdate:modelValue":e[0]||(e[0]=r=>l.value=r),readonly:o.readonly,"show-close":!1,"show-error":d.value,onSelect:e[1]||(e[1]=r=>n("select",o.modelValue)),"error-info":u.value,onInsertNode:e[2]||(e[2]=r=>n("insertNode",o.branch,o.index,r)),"header-color":"#80929C","header-icon":"UserFilled",content:"流程从本节点开始"},null,8,["modelValue","readonly","show-error","error-info"]))}};export{U as default}; diff --git a/web/dist/assets/Start.D_HyHccb.js b/web/dist/assets/Start.D_HyHccb.js new file mode 100644 index 0000000000..2c2c5cf19d --- /dev/null +++ b/web/dist/assets/Start.D_HyHccb.js @@ -0,0 +1 @@ +import{n as e}from"./NodeMixin.CdUK7SNa.js";import i from"./FormPermConf.CE-WaGhp.js";import{c as d,h as a,b,o as v,w as m,k as s}from"./vue.DmuWcDrn.js";import"./FormInterface.vRCiFeo3.js";const w={__name:"Start",props:{...e.props},emits:e.emits,setup(r,{emit:l}){const n=r,p=l,o=d(e.computed._value(n,p));return(u,t)=>{const _=a("el-tab-pane"),c=a("el-tabs");return v(),b(c,null,{default:m(()=>[s(_,{lazy:"",label:"表单权限设置"},{default:m(()=>[s(i,{"default-perm":"E",formItems:u.formItems,modelValue:o.value.props.formPerms,"onUpdate:modelValue":t[0]||(t[0]=f=>o.value.props.formPerms=f)},null,8,["formItems","modelValue"])]),_:1})]),_:1})}}};export{w as default}; diff --git a/web/dist/assets/TabelList.DtkekVLW.js b/web/dist/assets/TabelList.DtkekVLW.js new file mode 100644 index 0000000000..4f40cb0922 --- /dev/null +++ b/web/dist/assets/TabelList.DtkekVLW.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as t,a as u,o as d,k as o,w as m,G as s}from"./vue.DmuWcDrn.js";const b={__name:"TabelList",props:{...r.props},emits:[...r.emits],setup(f,{emit:V}){return(e,l)=>{const p=t("el-input"),a=t("el-form-item"),i=t("el-switch");return d(),u(s,null,[o(a,{label:"字段KEY"},{default:m(()=>[o(p,{modelValue:e.config.key,"onUpdate:modelValue":l[0]||(l[0]=n=>e.config.key=n),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),o(a,{label:"字段名称"},{default:m(()=>[o(p,{modelValue:e.config.name,"onUpdate:modelValue":l[1]||(l[1]=n=>e.config.name=n),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),o(a,{label:"隐藏名称"},{default:m(()=>[o(i,{modelValue:e.config.props.hideLabel,"onUpdate:modelValue":l[2]||(l[2]=n=>e.config.props.hideLabel=n)},null,8,["modelValue"])]),_:1}),o(a,{label:"是否必填"},{default:m(()=>[o(i,{modelValue:e.config.props.required,"onUpdate:modelValue":l[3]||(l[3]=n=>e.config.props.required=n)},null,8,["modelValue"])]),_:1})],64)}}};export{b as default}; diff --git a/web/dist/assets/TableList.Cc91hF7e.js b/web/dist/assets/TableList.Cc91hF7e.js new file mode 100644 index 0000000000..4e7bdf743b --- /dev/null +++ b/web/dist/assets/TableList.Cc91hF7e.js @@ -0,0 +1 @@ +import{F as k}from"./FormComponentMixin.C3yPnfoW.js";import{l as A}from"./vue-draggable-plus.DFq4KU1k.js";import{c as G,a as I,d as J}from"./GlobalFunc.9BrjVkDm.js";import K from"./FormComponent.BFjxV9c8.js";import{_ as P}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as b,h as a,b as y,o as r,w as t,k as l,Z,a as D,G as j,H as q,e as _,f as O,J as h,u as g,K as Q,m as B}from"./vue.DmuWcDrn.js";import"./ProcessUtil.B7gNiVp1.js";import"./FormComponents.BoFxZNqy.js";import"./index.XK2ik2qb.js";const W={key:0,class:"w-form-component"},X={__name:"TableList",props:{...k.props,modelValue:{type:Array,default:()=>[]}},emits:[...k.emits],setup(N,{emit:R}){const i=N,c=R,f=b(k.computed._active(i,c)),s=b(k.computed._value(i,c)),d=b(()=>i.mode==="free"),U={background:"#e8e8e8",padding:"10px 0"};function C(e,o){o.stopPropagation();const v=i.config.props.columns[e.no];v&&c("update:active",v)}function x(){let e={};return i.config.props.columns.forEach(o=>e[o.key]=null),e}function L(){c("update:modelValue",[...s.value||[],x()])}function S(e){s.value.splice(e,1)}function T(e){s.value.push(J(e))}return(e,o)=>{const v=a("CopyDocument"),w=a("el-icon"),E=a("Delete"),V=a("el-table-column"),H=a("el-button"),$=a("el-link"),M=a("el-divider"),z=a("el-table");return r(),y(g(A),{modelValue:e.config.props.columns,"onUpdate:modelValue":o[1]||(o[1]=n=>e.config.props.columns=n),target:".w-tb-header-cell",group:"FormDesign",filter:".w-tb-op",animation:150,disabled:!d.value,ghostClass:d.value?"w-f-cp-select":"",class:"w-f-cp-ct"},{default:t(()=>[l(z,{data:s.value,"cell-style":{padding:0},"header-row-class-name":"w-tb-header-cell",border:"","header-cell-style":U,onHeaderClick:C},Z({default:t(()=>[(r(!0),D(j,null,q(e.config.props.columns,(n,p)=>{var F;return r(),y(V,{ref_for:!0,ref:"col",prop:n.key,label:n.name,key:`col_${n.id}`,"class-name":`${e.mode==="free"?"w-form-d-item":""} ${((F=f.value)==null?void 0:F.id)===n.id&&d.value?"w-form-cp-active":""}`},{header:t(()=>{var m;return[_("div",{style:{border:"none !important"},class:O({"w-form-cp-active":((m=f.value)==null?void 0:m.id)===n.id&&d.value})},[e.mode==="free"?(r(),D("div",W,[l(w,{color:"#ffffff",onClick:u=>g(G)(e.config.props.columns,p)},{default:t(()=>[l(v)]),_:2},1032,["onClick"]),l(w,{color:"#ffffff",onClick:u=>g(I)(e.config.props.columns,p)},{default:t(()=>[l(E)]),_:2},1032,["onClick"])])):h("",!0),_("div",null,Q(n.name),1)],2)]}),default:t(m=>[(r(),y(K,{index:p,parents:e.config.props.columns,config:n,mode:e.mode,active:f.value,"onUpdate:active":o[0]||(o[0]=u=>f.value=u),modelValue:s.value[m.$index][n.key],"onUpdate:modelValue":u=>s.value[m.$index][n.key]=u,key:n.id,type:n.type},null,8,["index","parents","config","mode","active","modelValue","onUpdate:modelValue","type"]))]),_:2},1032,["prop","label","class-name"])}),128)),l(V,{fixed:"right",width:"120",label:"操作",onClick:C,"class-name":"w-tb-op"},{header:t(()=>[o[3]||(o[3]=_("span",null,"操作",-1)),e.mode==="normal"?(r(),y(H,{key:0,icon:"plus",onClick:L,circle:"",class:"w-tb-op-add"})):h("",!0)]),default:t(n=>[l($,{type:"danger",underline:!1,onClick:p=>S(n.$index)},{default:t(()=>o[4]||(o[4]=[B("删除")])),_:2},1032,["onClick"]),l(M,{direction:"vertical"}),l($,{type:"primary",underline:!1,onClick:p=>T(n.row)},{default:t(()=>o[5]||(o[5]=[B("复制")])),_:2},1032,["onClick"])]),_:1})]),_:2},[d.value?{name:"empty",fn:t(()=>[o[2]||(o[2]=_("span",null,"👆拖拽字段到上方列内",-1))]),key:"0"}:void 0]),1032,["data"])]),_:1},8,["modelValue","disabled","ghostClass"])}}},ie=P(X,[["__scopeId","data-v-9b116fa1"]]);export{ie as default}; diff --git a/web/dist/assets/TableList.ToArSLcu.css b/web/dist/assets/TableList.ToArSLcu.css new file mode 100644 index 0000000000..0b390d1d87 --- /dev/null +++ b/web/dist/assets/TableList.ToArSLcu.css @@ -0,0 +1 @@ +.w-node-err[data-v-9b116fa1]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}.w-f-cp-ct[data-v-9b116fa1]{width:100%;height:100%;min-height:50px;background-color:#f5f6f6}.w-tb-op[data-v-9b116fa1]{position:relative}.w-tb-op .w-tb-op-add[data-v-9b116fa1]{position:absolute;top:5px;right:5px}[data-v-9b116fa1] .w-tb-header-cell{cursor:grab}[data-v-9b116fa1] .w-tb-header-cell .w-form-d-item{position:relative;padding:5px;margin:2px;border:1px dashed white}[data-v-9b116fa1] .w-tb-header-cell .w-form-d-item:hover{border:1px dashed #8d8d8d}[data-v-9b116fa1] .w-tb-header-cell .w-form-cp-active{border:1px dashed var(--el-color-primary)!important}.w-f-cp-select[data-v-9b116fa1]{border-radius:2px;border:1px dashed var(--el-color-primary)!important}.w-form-component[data-v-9b116fa1]{position:absolute;bottom:0;right:0;z-index:9;display:none;border-radius:5px 0 0;overflow:hidden}.w-form-component i[data-v-9b116fa1]{padding:5px;cursor:pointer;background:var(--el-color-primary)}.w-form-component i[data-v-9b116fa1]:hover{background:var(--el-color-primary-light-3)} diff --git a/web/dist/assets/TextInput.DqRxUp4L.js b/web/dist/assets/TextInput.DqRxUp4L.js new file mode 100644 index 0000000000..d78b15963b --- /dev/null +++ b/web/dist/assets/TextInput.DqRxUp4L.js @@ -0,0 +1 @@ +import{F as u}from"./FormComponentMixin.C3yPnfoW.js";import{h as d,a as r,o as i,k as o,w as p,G as s}from"./vue.DmuWcDrn.js";const k={__name:"TextInput",props:{...u.props},emits:[...u.emits],setup(f,{emit:V}){return(e,l)=>{const m=d("el-input"),a=d("el-form-item"),t=d("el-switch");return i(),r(s,null,[o(a,{label:"字段KEY"},{default:p(()=>[o(m,{modelValue:e.config.key,"onUpdate:modelValue":l[0]||(l[0]=n=>e.config.key=n),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),o(a,{label:"字段名称"},{default:p(()=>[o(m,{modelValue:e.config.name,"onUpdate:modelValue":l[1]||(l[1]=n=>e.config.name=n),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),o(a,{label:"提示文字"},{default:p(()=>[o(m,{modelValue:e.config.props.placeholder,"onUpdate:modelValue":l[2]||(l[2]=n=>e.config.props.placeholder=n),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),o(a,{label:"隐藏名称"},{default:p(()=>[o(t,{modelValue:e.config.props.hideLabel,"onUpdate:modelValue":l[3]||(l[3]=n=>e.config.props.hideLabel=n)},null,8,["modelValue"])]),_:1}),o(a,{label:"是否必填"},{default:p(()=>[o(t,{modelValue:e.config.props.required,"onUpdate:modelValue":l[4]||(l[4]=n=>e.config.props.required=n)},null,8,["modelValue"])]),_:1})],64)}}};export{k as default}; diff --git a/web/dist/assets/TextInput.VohADZme.js b/web/dist/assets/TextInput.VohADZme.js new file mode 100644 index 0000000000..78dfd4f38e --- /dev/null +++ b/web/dist/assets/TextInput.VohADZme.js @@ -0,0 +1 @@ +import{F as e}from"./FormComponentMixin.C3yPnfoW.js";import{c as u,h as c,b as i,o as d}from"./vue.DmuWcDrn.js";const v={__name:"TextInput",props:{...e.props},emits:[...e.emits],setup(p,{emit:l}){const n=p,a=l,o=u(e.computed._value(n,a));return(s,t)=>{const m=c("el-input");return d(),i(m,{placeholder:s.config.props.placeholder,modelValue:o.value,"onUpdate:modelValue":t[0]||(t[0]=r=>o.value=r)},null,8,["placeholder","modelValue"])}}};export{v as default}; diff --git a/web/dist/assets/TextareaInput.a4aUy-y1.js b/web/dist/assets/TextareaInput.a4aUy-y1.js new file mode 100644 index 0000000000..f44639c697 --- /dev/null +++ b/web/dist/assets/TextareaInput.a4aUy-y1.js @@ -0,0 +1 @@ +import{F as p}from"./FormComponentMixin.C3yPnfoW.js";import{h as r,b as n,o as t}from"./vue.DmuWcDrn.js";const c={__name:"TextareaInput",props:{...p.props},setup(a){return(o,l)=>{const e=r("el-input");return t(),n(e,{"show-word-limit":"",rows:3,type:"textarea",maxlength:o.config.props.max||255,placeholder:o.config.props.placeholder},null,8,["maxlength","placeholder"])}}};export{c as default}; diff --git a/web/dist/assets/TextareaInput.tZJpkb2p.js b/web/dist/assets/TextareaInput.tZJpkb2p.js new file mode 100644 index 0000000000..508c622267 --- /dev/null +++ b/web/dist/assets/TextareaInput.tZJpkb2p.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as m,a as i,o as s,k as o,w as p,G as f}from"./vue.DmuWcDrn.js";const U={__name:"TextareaInput",props:{...r.props},emits:[...r.emits],setup(V,{emit:g}){return(e,l)=>{const u=m("el-input"),a=m("el-form-item"),t=m("el-input-number"),d=m("el-switch");return s(),i(f,null,[o(a,{label:"字段KEY"},{default:p(()=>[o(u,{modelValue:e.config.key,"onUpdate:modelValue":l[0]||(l[0]=n=>e.config.key=n),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),o(a,{label:"字段名称"},{default:p(()=>[o(u,{modelValue:e.config.name,"onUpdate:modelValue":l[1]||(l[1]=n=>e.config.name=n),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),o(a,{label:"提示文字"},{default:p(()=>[o(u,{modelValue:e.config.props.placeholder,"onUpdate:modelValue":l[2]||(l[2]=n=>e.config.props.placeholder=n),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),o(a,{label:"最大字数"},{default:p(()=>[o(t,{precision:0,min:1,modelValue:e.config.props.max,"onUpdate:modelValue":l[3]||(l[3]=n=>e.config.props.max=n)},null,8,["modelValue"])]),_:1}),o(a,{label:"隐藏名称"},{default:p(()=>[o(d,{modelValue:e.config.props.hideLabel,"onUpdate:modelValue":l[4]||(l[4]=n=>e.config.props.hideLabel=n)},null,8,["modelValue"])]),_:1}),o(a,{label:"是否必填"},{default:p(()=>[o(d,{modelValue:e.config.props.required,"onUpdate:modelValue":l[5]||(l[5]=n=>e.config.props.required=n)},null,8,["modelValue"])]),_:1})],64)}}};export{U as default}; diff --git a/web/dist/assets/UserPicker.B0pD0EhW.js b/web/dist/assets/UserPicker.B0pD0EhW.js new file mode 100644 index 0000000000..920c2c1e73 --- /dev/null +++ b/web/dist/assets/UserPicker.B0pD0EhW.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import k from"./WOrgPicker.B_7Qd6r5.js";import v from"./WOrgTags.Bgj5L3ZH.js";import{_ as g}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as x,g as y,h as a,a as V,o as p,k as s,b as C,J as P,w as O,m as b,K as h}from"./vue.DmuWcDrn.js";import"./WDialog.D9OIgJAb.js";import"./request.FMdsBF9A.js";import"./index.XK2ik2qb.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";const w={style:{display:"flex","align-items":"center"}},B={__name:"UserPicker",props:{...r.props},emits:[...r.emits],setup(i,{emit:m}){const c=i,u=m,e=x(r.computed._value(c,u)),l=y();function d(o){e.value=o,l.value.close()}return(o,t)=>{const _=a("el-button"),f=a("el-text");return p(),V("div",w,[s(_,{icon:"plus",onClick:t[0]||(t[0]=n=>l.value.open()),round:""}),(e.value||[]).length>0?(p(),C(v,{key:0,inline:"",modelValue:e.value,"onUpdate:modelValue":t[1]||(t[1]=n=>e.value=n)},null,8,["modelValue"])):P("",!0),s(f,{class:"w-placeholder"},{default:O(()=>[b(h(o.config.props.placeholder),1)]),_:1}),s(k,{multiple:o.config.props.multiple,ref_key:"orgPicker",ref:l,type:"user",selected:e.value,onOk:d},null,8,["multiple","selected"])])}}},M=g(B,[["__scopeId","data-v-849c8dc4"]]);export{M as default}; diff --git a/web/dist/assets/UserPicker.C5eFQ_EL.css b/web/dist/assets/UserPicker.C5eFQ_EL.css new file mode 100644 index 0000000000..5a0b7d4ee7 --- /dev/null +++ b/web/dist/assets/UserPicker.C5eFQ_EL.css @@ -0,0 +1 @@ +.w-placeholder[data-v-849c8dc4]{margin-left:10px;color:var(--el-text-color-placeholder)} diff --git a/web/dist/assets/UserPicker.IE_X13SV.js b/web/dist/assets/UserPicker.IE_X13SV.js new file mode 100644 index 0000000000..7085c85e7b --- /dev/null +++ b/web/dist/assets/UserPicker.IE_X13SV.js @@ -0,0 +1 @@ +import{F as r}from"./FormComponentMixin.C3yPnfoW.js";import{h as u,a as i,o as t,k as o,w as p,G as s}from"./vue.DmuWcDrn.js";const k={__name:"UserPicker",props:{...r.props},emits:[...r.emits],setup(f,{emit:V}){return(e,l)=>{const m=u("el-input"),a=u("el-form-item"),d=u("el-switch");return t(),i(s,null,[o(a,{label:"字段KEY"},{default:p(()=>[o(m,{modelValue:e.config.key,"onUpdate:modelValue":l[0]||(l[0]=n=>e.config.key=n),placeholder:"请输入字段唯一key值"},null,8,["modelValue"])]),_:1}),o(a,{label:"字段名称"},{default:p(()=>[o(m,{modelValue:e.config.name,"onUpdate:modelValue":l[1]||(l[1]=n=>e.config.name=n),placeholder:"请设置字段名称"},null,8,["modelValue"])]),_:1}),o(a,{label:"提示文字"},{default:p(()=>[o(m,{modelValue:e.config.props.placeholder,"onUpdate:modelValue":l[2]||(l[2]=n=>e.config.props.placeholder=n),placeholder:"输入提示"},null,8,["modelValue"])]),_:1}),o(a,{label:"是否多选"},{default:p(()=>[o(d,{modelValue:e.config.props.multiple,"onUpdate:modelValue":l[3]||(l[3]=n=>e.config.props.multiple=n)},null,8,["modelValue"])]),_:1}),o(a,{label:"隐藏名称"},{default:p(()=>[o(d,{modelValue:e.config.props.hideLabel,"onUpdate:modelValue":l[4]||(l[4]=n=>e.config.props.hideLabel=n)},null,8,["modelValue"])]),_:1}),o(a,{label:"是否必填"},{default:p(()=>[o(d,{modelValue:e.config.props.required,"onUpdate:modelValue":l[5]||(l[5]=n=>e.config.props.required=n)},null,8,["modelValue"])]),_:1})],64)}}};export{k as default}; diff --git a/web/dist/assets/WDialog.D9OIgJAb.js b/web/dist/assets/WDialog.D9OIgJAb.js new file mode 100644 index 0000000000..27d49d1f4a --- /dev/null +++ b/web/dist/assets/WDialog.D9OIgJAb.js @@ -0,0 +1 @@ +import{_ as k}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{h as s,b as y,o as i,w as a,l as u,a as g,J as p,k as r,m as f,K as m,f as w}from"./vue.DmuWcDrn.js";const v={name:"WDialog",components:{},props:{title:{type:String,default:""},width:{type:String,default:"50%"},fullscreen:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!1},clickClose:{type:Boolean,default:!1},closeFree:{type:Boolean,default:!1},showFooter:{type:Boolean,default:!0},cancelText:{type:String,default:"取 消"},okText:{type:String,default:"确 定"},okLoading:!1,border:{type:Boolean,default:!0}},computed:{_value:{get(){return this.modelValue},set(l){this.$emit("update:modelValue",l)}}},data(){return{}},methods:{},emits:["opened","closed","cancel","ok","update:modelValue"]},B={key:0};function V(l,t,e,b,C,d){const n=s("el-button"),c=s("el-dialog");return i(),y(c,{class:w({"w-dialog":!0,"w-dialog-border":e.border,"w-fullscreen":e.fullscreen}),width:e.width,title:e.title,"append-to-body":"","close-on-click-modal":e.clickClose,onOpened:t[2]||(t[2]=o=>l.$emit("opened")),onClosed:t[3]||(t[3]=o=>l.$emit("closed")),"destroy-on-close":e.closeFree,modelValue:d._value,"onUpdate:modelValue":t[4]||(t[4]=o=>d._value=o)},{header:a(()=>[u(l.$slots,"title")]),footer:a(()=>[e.showFooter?(i(),g("div",B,[r(n,{size:"default",onClick:t[0]||(t[0]=o=>{d._value=!1,l.$emit("cancel")})},{default:a(()=>[f(m(e.cancelText),1)]),_:1}),r(n,{size:"default",icon:e.okLoading?"loading":"",disabled:e.okLoading,type:"primary",onClick:t[1]||(t[1]=o=>l.$emit("ok"))},{default:a(()=>[f(m(e.okText),1)]),_:1},8,["icon","disabled"])])):p("",!0)]),default:a(()=>[u(l.$slots,"default")]),_:3},8,["class","width","title","close-on-click-modal","destroy-on-close","modelValue"])}const T=k(v,[["render",V]]);export{T as default}; diff --git a/web/dist/assets/WDialog.DTkfzpzg.css b/web/dist/assets/WDialog.DTkfzpzg.css new file mode 100644 index 0000000000..01e37b8761 --- /dev/null +++ b/web/dist/assets/WDialog.DTkfzpzg.css @@ -0,0 +1 @@ +.w-dialog-border .el-dialog__header{border-bottom:1px solid var(--el-border-color)}.w-dialog-border .el-dialog__footer{border-top:1px solid var(--el-border-color)}.w-dialog{padding:8px!important}.w-dialog .el-dialog__header{padding-bottom:8px}.w-dialog .el-dialog__footer{padding-top:8px}.w-dialog .el-dialog__body{padding:10px 0}.w-fullscreen{overflow:hidden;margin-top:0!important;width:100%!important;height:100%!important}.w-fullscreen .el-dialog__body{padding:0;height:calc(100vh - 94px)} diff --git a/web/dist/assets/WOrgPicker.B_7Qd6r5.js b/web/dist/assets/WOrgPicker.B_7Qd6r5.js new file mode 100644 index 0000000000..a274063057 --- /dev/null +++ b/web/dist/assets/WOrgPicker.B_7Qd6r5.js @@ -0,0 +1 @@ +import pe from"./WDialog.D9OIgJAb.js";import{s as S}from"./request.FMdsBF9A.js";import{d as me}from"./GlobalFunc.9BrjVkDm.js";import{_ as fe}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as V,g as v,h as s,j as ve,b as d,o,w as a,k as u,p as ge,e as x,a as g,J as C,G as N,H as A,m as p,K as h}from"./vue.DmuWcDrn.js";import"./index.XK2ik2qb.js";import"./ProcessUtil.B7gNiVp1.js";function ye(r){return S({url:"/api/dvadmin3_flow/flow_info/org_tree/",method:"get",params:r})}function _e(){return S({url:"/api/system/role/",method:"get"})}function ke(r){return S({url:"/api/dvadmin3_flow/flow_info/user_search/",method:"get",params:r})}function he(r){return S({url:`oa/org/user/${r}/dept`,method:"get"})}const K={getOrgTree:ye,getUserByName:ke,getRole:_e,getUserDepts:he},be={class:"w-org-picker-nav"},we={key:0,class:"w-org-list-path"},Ve={key:0},xe={class:"w-org-list"},Ce={class:"w-org-picker-select"},Be={__name:"WOrgPicker",props:{title:{type:String,default:"请选择"},size:{default:20},parentId:{type:Number,default:0},type:{type:String,default:"org"},selected:{type:Array,default:()=>[]},multiple:Boolean},emits:["update:modelValue","ok"],setup(r,{expose:q,emit:M}){const m=r;V({get(){return m.modelValue},set(e){Q("update:modelValue",e)}}),q({open:Y,close:Z});const Q=M,f=v(!1),B=v(!1),n=v([]),$=v([]),b=v(null),O=v([]),c=v([{id:m.parentId,name:""}]),I=V(()=>(b.value||"").trim()!==""),w=V(()=>I.value?O.value:$.value),X=V(()=>!U.value&&n.value.some(e=>w.value.some(t=>D(t,e)))),U=V({get(){return w.value.every(e=>n.value.some(t=>D(t,e)))},set(e){const t=w.value.filter(i=>{const y=!n.value.some(_=>D(_,i));switch(m.type){case"user":return y&&i.type==="user";case"dept":case"role":return y&&m.type===i.type}return!0});e?n.value.push(...t):n.value=t}});function D(e,t){return e.id===t.id&&e.type===t.type}function Y(){setTimeout(()=>{c.value.length=1,b.value=null,z(m.parentId),n.value=me(m.selected),B.value=!0},100)}function Z(){B.value=!1,c.value.length=1}function R(e,t){c.value.length=t+1,z(e.id)}function ee(e){z(e.id,t=>{c.value.push(e)})}function te(){R(c.value[c.value.length-2],c.value.length-2)}function le(){I.value&&(f.value=!0,K.getUserByName({userName:b.value}).then(e=>{f.value=!1,O.value=e.data,W(O.value)}).catch(e=>{f.value=!1}))}function z(e,t){f.value=!0,K.getOrgTree({deptId:e,type:m.type}).then(i=>{console.log(i),f.value=!1,$.value=i.data,W($.value),t&&t(i.data)}).catch(i=>{f.value=!1})}async function W(e){if(n.value.length>0)for(let t in e){let i=n.value.findIndex(y=>D(y,e[t]));i>-1&&(e[t]=n.value[i])}}function j(e){return(e||"").length>2?e.substring(e.length-2,e.length):e}function ae(e){m.multiple||(n.value=[e[e.length-1]])}function ne(){return n.value.map(e=>({id:e.id,name:e.name,type:e.type,avatar:e.avatar}))}return(e,t)=>{const i=s("el-input"),y=s("OfficeBuilding"),_=s("el-icon"),T=s("el-text"),L=s("el-scrollbar"),E=s("el-checkbox"),oe=s("TopLeft"),P=s("el-button"),F=s("el-avatar"),G=s("el-image"),ue=s("BottomRight"),se=s("el-checkbox-group"),H=s("el-empty"),J=s("el-col"),re=s("Close"),ie=s("el-row"),de=ve("loading");return o(),d(pe,{border:!1,width:"550",title:r.title,modelValue:B.value,"onUpdate:modelValue":t[4]||(t[4]=l=>B.value=l),onOk:t[5]||(t[5]=l=>e.$emit("ok",ne()))},{default:a(()=>[u(ie,null,{default:a(()=>[ge((o(),d(J,{span:12,class:"w-org-picker-span"},{default:a(()=>[u(i,{modelValue:b.value,"onUpdate:modelValue":t[0]||(t[0]=l=>b.value=l),onInput:le,class:"w-org-picker-s-input",clearable:"",disabled:r.type!=="user"&&r.type!=="org",placeholder:"搜索人员,支持姓名","prefix-icon":"search"},null,8,["modelValue","disabled"]),x("div",be,[u(_,null,{default:a(()=>[u(y)]),_:1}),u(L,null,{default:a(()=>[r.type!=="role"?(o(),g("div",we,[(o(!0),g(N,null,A(c.value,(l,k)=>(o(),g(N,null,[k>1?(o(),g("span",Ve," > ")):C("",!0),u(T,{size:"small",style:{cursor:"pointer"},onClick:ce=>R(l,k),type:k===c.value.length-1?"primary":"info"},{default:a(()=>[p(h(l.name),1)]),_:2},1032,["onClick","type"])],64))),256))])):C("",!0)]),_:1})]),x("div",xe,[x("div",null,[u(E,{modelValue:U.value,"onUpdate:modelValue":t[1]||(t[1]=l=>U.value=l),indeterminate:X.value,style:{padding:"0 5px"},disabled:!r.multiple&&r.type!=="user"},{default:a(()=>t[6]||(t[6]=[p("全选")])),_:1},8,["modelValue","indeterminate","disabled"]),u(P,{link:"",type:"primary",onClick:te,disabled:c.value.length<=1||I.value},{default:a(()=>[u(_,null,{default:a(()=>[u(oe)]),_:1}),t[7]||(t[7]=p("上级 "))]),_:1},8,["disabled"])]),w.value.length>0?(o(),d(L,{key:0},{default:a(()=>[u(se,{modelValue:n.value,"onUpdate:modelValue":t[2]||(t[2]=l=>n.value=l),class:"w-org-list-org",onChange:ae},{default:a(()=>[(o(!0),g(N,null,A(w.value,l=>(o(),d(E,{disabled:r.type==="user"&&l.type==="dept",key:l.type+l.id,label:l.name,value:l},{default:a(()=>[l.type==="user"?(o(),d(F,{key:0,size:35,src:l.avatar},{default:a(()=>[p(h(j(l.name)),1)]),_:2},1032,["src"])):l.type!=="user"?(o(),d(G,{key:1,class:"w-org-dept-img",fit:"fill",src:`/image/${l.type}.png`},null,8,["src"])):C("",!0),u(T,{style:{"margin-left":"5px",flex:"1"}},{default:a(()=>[p(h(l.name),1)]),_:2},1024),l.type==="dept"?(o(),d(P,{key:2,type:"primary",link:"",class:"w-org-child",underline:!1,onClick:k=>ee(l)},{default:a(()=>[t[8]||(t[8]=p("下级 ")),u(_,null,{default:a(()=>[u(ue)]),_:1})]),_:2},1032,["onClick"])):C("",!0)]),_:2},1032,["disabled","label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})):(o(),d(H,{key:1,"image-size":100,description:"未找到对应组织数据"}))])]),_:1})),[[de,f.value]]),u(J,{span:12,class:"w-org-picker-span"},{default:a(()=>[x("div",null,[x("span",null,"已选 "+h(n.value.length)+" 项",1),u(P,{link:"",type:"danger",disabled:n.value.length===0,onClick:t[3]||(t[3]=l=>n.value.length=0)},{default:a(()=>t[9]||(t[9]=[p("清空")])),_:1},8,["disabled"])]),n.value.length>0?(o(),d(L,{key:0},{default:a(()=>[(o(!0),g(N,null,A(n.value,(l,k)=>(o(),g("div",Ce,[l.type==="user"?(o(),d(F,{key:0,size:35,src:l.avatar},{default:a(()=>[p(h(j(l.name)),1)]),_:2},1032,["src"])):l.type!=="user"?(o(),d(G,{key:1,class:"w-org-dept-img",fit:"fill",src:`/image/${l.type}.png`},null,8,["src"])):C("",!0),u(T,{style:{"margin-left":"5px",flex:"1"}},{default:a(()=>[p(h(l.name),1)]),_:2},1024),u(_,{onClick:ce=>n.value.splice(k,1)},{default:a(()=>[u(re)]),_:2},1032,["onClick"])]))),256))]),_:1})):(o(),d(H,{key:1,"image-size":100,description:"未选中任何数据"}))]),_:1})]),_:1})]),_:1},8,["title","modelValue"])}}},ze=fe(Be,[["__scopeId","data-v-b015a3e1"]]);export{ze as default}; diff --git a/web/dist/assets/WOrgPicker.CaxAS1JB.css b/web/dist/assets/WOrgPicker.CaxAS1JB.css new file mode 100644 index 0000000000..7522e789bd --- /dev/null +++ b/web/dist/assets/WOrgPicker.CaxAS1JB.css @@ -0,0 +1 @@ +.w-node-err[data-v-b015a3e1]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}.w-org-picker-span[data-v-b015a3e1]{display:flex;flex-direction:column;height:400px;border:1px solid var(--el-border-color)}.w-org-picker-span[data-v-b015a3e1]:first-child{border-right:none}.w-org-picker-span:first-child .w-org-picker-s-input[data-v-b015a3e1]{padding:5px}.w-org-picker-span[data-v-b015a3e1]:last-child>:first-child{display:flex;align-items:center;height:40px;padding:0 10px;justify-content:space-between;border-bottom:1px solid var(--el-border-color)}.w-org-picker-nav[data-v-b015a3e1]{padding:0 5px;display:flex;align-items:center}.w-org-picker-nav i[data-v-b015a3e1]{margin-right:5px}.w-org-dept-img[data-v-b015a3e1]{width:20px;height:20px;padding:8px 0}.w-org-picker-select[data-v-b015a3e1]{display:flex;align-items:center;padding:3px 5px}.w-org-picker-select .el-avatar[data-v-b015a3e1]{background-color:var(--el-color-primary)}.w-org-picker-select i[data-v-b015a3e1]{cursor:pointer;padding:5px}.w-org-picker-select[data-v-b015a3e1]:hover{background-color:#f7f7f9}[data-v-b015a3e1] .w-org-list-org{display:flex;flex-direction:column;height:275px}[data-v-b015a3e1] .w-org-list-org>.el-checkbox{height:auto;padding:3px 5px;margin-right:0}[data-v-b015a3e1] .w-org-list-org>.el-checkbox:hover{background-color:#f7f7f9}[data-v-b015a3e1] .w-org-list-org .w-org-child{color:var(--el-color-primary)}[data-v-b015a3e1] .w-org-list-org .el-checkbox__label{display:flex;position:relative;flex:1}[data-v-b015a3e1] .w-org-list-org .el-avatar{background-color:var(--el-color-primary)}.w-org-list>div[data-v-b015a3e1]:first-child{display:flex;align-items:center;position:relative}.w-org-list>div[data-v-b015a3e1]:first-child>:first-child{flex:1}.w-org-list>div[data-v-b015a3e1]:first-child>:last-child{margin-right:5px}.w-org-list .w-org-list-path[data-v-b015a3e1]{display:flex} diff --git a/web/dist/assets/WOrgTags.Bgj5L3ZH.js b/web/dist/assets/WOrgTags.Bgj5L3ZH.js new file mode 100644 index 0000000000..883e5f10fc --- /dev/null +++ b/web/dist/assets/WOrgTags.Bgj5L3ZH.js @@ -0,0 +1 @@ +import{_ as B}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as _,z as b,h as l,a as d,o as p,e as g,G as N,H as A,k as o,w as m,K as y,f as I,m as S,n as T}from"./vue.DmuWcDrn.js";const E={class:"w-org-items"},O={__name:"WOrgTags",props:{modelValue:{type:Array,default:()=>[]},disabled:{default:!1},size:{default:20},inline:Boolean},emits:["update:modelValue"],setup(r,{emit:h}){const v=r,i=_({get(){return v.modelValue},set(e){x("update:modelValue",e)}}),x=h,c=b({user:{},dept:{},role:{}}),u=_(()=>{let e={...c};const s=i.value.filter(a=>(c[a.type]||{})[a.id]===void 0);return s.length>0&&z(s).then(a=>{a.forEach(t=>{t.type==="role"?t.avatar="./image/role.png":t.type==="dept"&&(t.avatar="./image/dept.png"),e[t.type][t.id]=t,c[t.type][t.id]=t})}),e});function z(e){return new Promise((s,a)=>{s(e)})}function k(e){return(e||"").length>2?e.substring(e.length-2,e.length):e}function C(e){return u.value[e.type]&&u.value[e.type][e.id]?u.value[e.type][e.id].avatar:null}return(e,s)=>{const a=l("el-avatar"),t=l("el-text"),V=l("Close"),w=l("el-icon");return p(),d("div",{style:T({display:r.inline?"inline-block":"block"})},[g("div",E,[(p(!0),d(N,null,A(i.value,(n,f)=>(p(),d("div",{key:f},[o(a,{size:r.size,class:I("w-avatar-"+n.type),src:C(n)},{default:m(()=>[g("span",null,y(k(n.name)),1)]),_:2},1032,["size","class","src"]),o(t,{size:"small",style:{height:"20px","line-height":"20px"}},{default:m(()=>[S(y(n.name),1)]),_:2},1024),o(w,{size:"10",onClick:W=>i.value.splice(f,1)},{default:m(()=>[o(V)]),_:2},1032,["onClick"])]))),128))])],4)}}},F=B(O,[["__scopeId","data-v-44aae54f"]]);export{F as default}; diff --git a/web/dist/assets/WOrgTags.C3Esetp_.css b/web/dist/assets/WOrgTags.C3Esetp_.css new file mode 100644 index 0000000000..cad739abe0 --- /dev/null +++ b/web/dist/assets/WOrgTags.C3Esetp_.css @@ -0,0 +1 @@ +.w-node-err[data-v-44aae54f]{border:1px solid #f56c6c;box-shadow:0 0 5px #f56c6c!important}.w-org-items[data-v-44aae54f]{display:flex;align-items:center;flex-wrap:wrap}.w-org-items>div[data-v-44aae54f]{display:flex;align-items:center;margin:5px;padding:3px 5px;border-radius:15px;background-color:#f5f6f6}.w-org-items>div .w-avatar-user[data-v-44aae54f]{background-color:var(--el-color-primary)}.w-org-items>div .w-avatar-dept[data-v-44aae54f],.w-org-items>div .w-avatar-role[data-v-44aae54f]{background:none}.w-org-items>div .el-avatar[data-v-44aae54f]{margin-right:3px}.w-org-items>div .el-avatar span[data-v-44aae54f]{transform:scale(.5);position:absolute;display:flex;align-items:center}.w-org-items>div i[data-v-44aae54f]{cursor:pointer;padding:2px;margin-left:2px}.w-org-items>div i[data-v-44aae54f]:hover{background-color:#c4c4c4;border-radius:50%} diff --git a/web/dist/assets/account.Ck0WfhoZ.js b/web/dist/assets/account.Ck0WfhoZ.js deleted file mode 100644 index ca6b1a5b56..0000000000 --- a/web/dist/assets/account.Ck0WfhoZ.js +++ /dev/null @@ -1 +0,0 @@ -import{w as E,aR as R,aQ as K,aU as N,af as $,D as M,F as V,O,ax as z,aA as t,x as P,y as k,a7 as a,a2 as U,a0 as o,$ as j,z as F,Y as L,a5 as J,ao as Q,a6 as Y}from"./vue.Cw4Y52yh.js";import{v as G,u as H,c as q,d as T,f as W,R as X,S as Z,T as x,U as ee,A as ae,F as oe,E as se,N as ne}from"./index.CkCcWuPb.js";import{a as te}from"./formatTime.in1fXasu.js";import{g as A,l as le}from"./api.jJ3Ot51X.js";import{M as re}from"./md5.DLPczxzP.js";import{_ as ce}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ie=E({name:"loginAccount",setup(){const{t:e}=G.useI18n(),s=H(),{themeConfig:S}=R(s),{userInfos:B}=R(q()),p=K(),_=N(),n=$({isShowPassword:!1,ruleForm:{username:"",password:"",captcha:"",captchaKey:"",captchaImgBase:""},loading:{signIn:!1}}),m=$({username:[{required:!0,message:"请填写账号",trigger:"blur"}],password:[{required:!0,message:"请填写密码",trigger:"blur"}],captcha:[{required:!0,message:"请填写验证码",trigger:"blur"}]}),r=M(),i=V(()=>te(new Date)),w=V(()=>T().systemConfig["base.captcha_state"]),C=async()=>{A().then(l=>{n.ruleForm.captchaImgBase=l.data.image_base,n.ruleForm.captchaKey=l.data.key})},d=async()=>{window.open(W("/api/system/apply_for_trial/"))},y=async()=>{n.ruleForm.captcha="",A().then(l=>{n.ruleForm.captchaImgBase=l.data.image_base,n.ruleForm.captchaKey=l.data.key})},g=async()=>{r.value&&await r.value.validate(l=>{l?le({...n.ruleForm,password:re.hashStr(n.ruleForm.password)}).then(u=>{if(u.code===2e3){const{data:h}=u;if(X.set("username",u.data.username),Z.set("token",u.data.access),q().setPwdChangeCount(h.pwd_change_count),h.pwd_change_count==0)return _.push("/login");S.value.isRequestRoutes?(ee(),f()):(x(),f())}}).catch(u=>{y()}):ae("请填写登录信息")})},f=()=>{var h,I,b,v;oe().getSystemDictionarys();let l=i.value;if(B.value.pwd_change_count>0){(h=p.query)!=null&&h.redirect?_.push({path:(I=p.query)==null?void 0:I.redirect,query:Object.keys((b=p.query)==null?void 0:b.params).length>0?JSON.parse((v=p.query)==null?void 0:v.params):""}):_.push("/"),n.loading.signIn=!0;const D=e("message.signInText");se.success(`${l},${D}`)}ne.start()};return O(()=>{C(),T().getSystemConfigs()}),{refreshCaptcha:y,loginClick:g,loginSuccess:f,isShowCaptcha:w,state:n,formRef:r,rules:m,applyBtnClick:d,showApply:()=>window.location.href.indexOf("public")!=-1,...z(n)}}}),ue={key:0,style:{"text-align":"center"}};function pe(e,s,S,B,p,_){const n=t("ele-User"),m=t("el-icon"),r=t("el-input"),i=t("el-form-item"),w=t("ele-Unlock"),C=t("ele-Position"),d=t("el-col"),y=t("el-image"),g=t("el-button"),f=t("el-form");return k(),P(Y,null,[a(f,{ref:"formRef",size:"large",class:"login-content-form",model:e.state.ruleForm,rules:e.rules,onKeyup:Q(e.loginClick,["enter"])},{default:o(()=>[a(i,{class:"login-animation1",prop:"username"},{default:o(()=>[a(r,{type:"text",placeholder:e.$t("message.account.accountPlaceholder1"),modelValue:e.ruleForm.username,"onUpdate:modelValue":s[0]||(s[0]=c=>e.ruleForm.username=c),clearable:"",autocomplete:"off"},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(n)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),a(i,{class:"login-animation2",prop:"password"},{default:o(()=>[a(r,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder2"),modelValue:e.ruleForm.password,"onUpdate:modelValue":s[2]||(s[2]=c=>e.ruleForm.password=c)},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(w)]),_:1})]),suffix:o(()=>[F("i",{class:L(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:s[1]||(s[1]=c=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),e.isShowCaptcha?(k(),j(i,{key:0,class:"login-animation3",prop:"captcha"},{default:o(()=>[a(d,{span:15},{default:o(()=>[a(r,{type:"text",maxlength:"4",placeholder:e.$t("message.account.accountPlaceholder3"),modelValue:e.ruleForm.captcha,"onUpdate:modelValue":s[3]||(s[3]=c=>e.ruleForm.captcha=c),clearable:"",autocomplete:"off"},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(C)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),a(d,{span:1}),a(d,{span:8},{default:o(()=>[a(g,{class:"login-content-captcha"},{default:o(()=>[a(y,{src:e.ruleForm.captchaImgBase,onClick:e.refreshCaptcha},null,8,["src","onClick"])]),_:1})]),_:1})]),_:1})):U("",!0),a(i,{class:"login-animation4"},{default:o(()=>[a(g,{type:"primary",class:"login-content-submit",round:"",onClick:e.loginClick,loading:e.loading.signIn},{default:o(()=>[F("span",null,J(e.$t("message.account.accountBtnText")),1)]),_:1},8,["onClick","loading"])]),_:1})]),_:1},8,["model","rules","onKeyup"]),e.showApply()?(k(),P("div",ue,[a(g,{class:"login-content-apply",link:"",type:"primary",plain:"",round:"",onClick:e.applyBtnClick},{default:o(()=>s[4]||(s[4]=[F("span",null,"申请试用",-1)])),_:1},8,["onClick"])])):U("",!0)],64)}const ye=ce(ie,[["render",pe],["__scopeId","data-v-c978d4da"]]);export{ye as default}; diff --git a/web/dist/assets/account.qOJbL1yX.js b/web/dist/assets/account.qOJbL1yX.js new file mode 100644 index 0000000000..f9f32f784a --- /dev/null +++ b/web/dist/assets/account.qOJbL1yX.js @@ -0,0 +1 @@ +import{d as N,T as V,s as A,v as E,z as $,g as M,c as P,x as z,y as O,h as t,a as R,o as k,k as a,J as q,w as o,b as j,e as F,f as G,K as J,a0 as L,G as H}from"./vue.DmuWcDrn.js";import{a0 as Q,u as W,a1 as T,H as U,g as X,a2 as Y,S as Z,a3 as x,a4 as ee,G as ae,D as oe,b as se,N as ne}from"./index.XK2ik2qb.js";import{a as te}from"./formatTime.in1fXasu.js";import{g as K,l as le}from"./api.DMCQHntY.js";import{M as re}from"./md5.DLPczxzP.js";import{_ as ce}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ie=N({name:"loginAccount",setup(){const{t:e}=Q.useI18n(),s=W(),{themeConfig:S}=V(s),{userInfos:b}=V(T()),p=A(),_=E(),n=$({isShowPassword:!1,ruleForm:{username:"",password:"",captcha:"",captchaKey:"",captchaImgBase:""},loading:{signIn:!1}}),m=$({username:[{required:!0,message:"请填写账号",trigger:"blur"}],password:[{required:!0,message:"请填写密码",trigger:"blur"}],captcha:[{required:!0,message:"请填写验证码",trigger:"blur"}]}),r=M(),i=P(()=>te(new Date)),w=P(()=>U().systemConfig["base.captcha_state"]),C=async()=>{K().then(l=>{n.ruleForm.captchaImgBase=l.data.image_base,n.ruleForm.captchaKey=l.data.key})},d=async()=>{window.open(X("/api/system/apply_for_trial/"))},y=async()=>{n.ruleForm.captcha="",K().then(l=>{n.ruleForm.captchaImgBase=l.data.image_base,n.ruleForm.captchaKey=l.data.key})},g=async()=>{r.value&&await r.value.validate(l=>{l?le({...n.ruleForm,password:re.hashStr(n.ruleForm.password)}).then(u=>{if(u.code===2e3){const{data:h}=u;if(Y.set("username",u.data.username),Z.set("token",u.data.access),T().setPwdChangeCount(h.pwd_change_count),h.pwd_change_count==0)return _.push("/login");S.value.isRequestRoutes?(ee(),f()):(x(),f())}}).catch(u=>{y()}):ae("请填写登录信息")})},f=()=>{var h,B,I,v;oe().getSystemDictionarys();let l=i.value;if(b.value.pwd_change_count>0){(h=p.query)!=null&&h.redirect?_.push({path:(B=p.query)==null?void 0:B.redirect,query:Object.keys((I=p.query)==null?void 0:I.params).length>0?JSON.parse((v=p.query)==null?void 0:v.params):""}):_.push("/"),n.loading.signIn=!0;const D=e("message.signInText");se.success(`${l},${D}`)}ne.start()};return z(()=>{C(),U().getSystemConfigs()}),{refreshCaptcha:y,loginClick:g,loginSuccess:f,isShowCaptcha:w,state:n,formRef:r,rules:m,applyBtnClick:d,showApply:()=>window.location.href.indexOf("public")!=-1,...O(n)}}}),ue={key:0,style:{"text-align":"center"}};function pe(e,s,S,b,p,_){const n=t("ele-User"),m=t("el-icon"),r=t("el-input"),i=t("el-form-item"),w=t("ele-Unlock"),C=t("ele-Position"),d=t("el-col"),y=t("el-image"),g=t("el-button"),f=t("el-form");return k(),R(H,null,[a(f,{ref:"formRef",size:"large",class:"login-content-form",model:e.state.ruleForm,rules:e.rules,onKeyup:L(e.loginClick,["enter"])},{default:o(()=>[a(i,{class:"login-animation1",prop:"username"},{default:o(()=>[a(r,{type:"text",placeholder:e.$t("message.account.accountPlaceholder1"),modelValue:e.ruleForm.username,"onUpdate:modelValue":s[0]||(s[0]=c=>e.ruleForm.username=c),clearable:"",autocomplete:"off"},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(n)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),a(i,{class:"login-animation2",prop:"password"},{default:o(()=>[a(r,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder2"),modelValue:e.ruleForm.password,"onUpdate:modelValue":s[2]||(s[2]=c=>e.ruleForm.password=c)},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(w)]),_:1})]),suffix:o(()=>[F("i",{class:G(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:s[1]||(s[1]=c=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),e.isShowCaptcha?(k(),j(i,{key:0,class:"login-animation3",prop:"captcha"},{default:o(()=>[a(d,{span:15},{default:o(()=>[a(r,{type:"text",maxlength:"4",placeholder:e.$t("message.account.accountPlaceholder3"),modelValue:e.ruleForm.captcha,"onUpdate:modelValue":s[3]||(s[3]=c=>e.ruleForm.captcha=c),clearable:"",autocomplete:"off"},{prefix:o(()=>[a(m,{class:"el-input__icon"},{default:o(()=>[a(C)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),a(d,{span:1}),a(d,{span:8},{default:o(()=>[a(g,{class:"login-content-captcha"},{default:o(()=>[a(y,{src:e.ruleForm.captchaImgBase,onClick:e.refreshCaptcha},null,8,["src","onClick"])]),_:1})]),_:1})]),_:1})):q("",!0),a(i,{class:"login-animation4"},{default:o(()=>[a(g,{type:"primary",class:"login-content-submit",round:"",onClick:e.loginClick,loading:e.loading.signIn},{default:o(()=>[F("span",null,J(e.$t("message.account.accountBtnText")),1)]),_:1},8,["onClick","loading"])]),_:1})]),_:1},8,["model","rules","onKeyup"]),e.showApply()?(k(),R("div",ue,[a(g,{class:"login-content-apply",link:"",type:"primary",plain:"",round:"",onClick:e.applyBtnClick},{default:o(()=>s[4]||(s[4]=[F("span",null,"申请试用",-1)])),_:1},8,["onClick"])])):q("",!0)],64)}const ye=ce(ie,[["render",pe],["__scopeId","data-v-c978d4da"]]);export{ye as default}; diff --git a/web/dist/assets/addContent.CXxahEvw.js b/web/dist/assets/addContent.CXxahEvw.js new file mode 100644 index 0000000000..a59fd2833b --- /dev/null +++ b/web/dist/assets/addContent.CXxahEvw.js @@ -0,0 +1 @@ +import{_ as o}from"./addContent.vue_vue_type_script_setup_true_lang.Do7TlUJ8.js";import"./api.BZTxDs4c.js";import"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";import"./associationTable.vue_vue_type_script_setup_true_lang.CRkFTsQv.js";import"./dictionary.DnyXy1XL.js";export{o as default}; diff --git a/web/dist/assets/addContent.DqE5gM-b.js b/web/dist/assets/addContent.DqE5gM-b.js deleted file mode 100644 index 9383a471fc..0000000000 --- a/web/dist/assets/addContent.DqE5gM-b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js";import"./api.Dw2kt7dJ.js";import"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";import"./associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js";import"./dictionary.CH8ZDdyo.js";export{o as default}; diff --git a/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js b/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js deleted file mode 100644 index d918a2f1bb..0000000000 --- a/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.CGM52RJA.js +++ /dev/null @@ -1 +0,0 @@ -import{G as j,A as B}from"./api.Dw2kt7dJ.js";import{_ as G}from"./associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js";import{s as N}from"./index.CkCcWuPb.js";import{d as M}from"./dictionary.CH8ZDdyo.js";import{w as P,af as U,D as V,C as S,O as z,aA as m,x as f,y as u,a7 as o,a0 as r,$ as y,a2 as x,G as t,a6 as c,aq as g,a4 as D}from"./vue.Cw4Y52yh.js";const F={style:{padding:"20px"}},Z={key:1},W=P({__name:"addContent",setup(E){let a=U({parent:null,title:null,key:null,form_item_type:"",rule:null,placeholder:null});const k=V(),_=V(),q=U({parent:[{required:!0,message:"请选择"}],title:[{required:!0,message:"请输入"}],key:[{required:!0,message:"请输入"},{pattern:/^[A-Za-z0-9_]+$/,message:"请输入数字、字母或下划线"}],form_item_type:[{required:!0,message:"请输入"}]});let v=V([]),w=V([{label:"必填项",value:'{"required": true, "message": "必填项不能为空"}'},{label:"邮箱",value:'{ "type": "email", "message": "请输入正确的邮箱地址"}'},{label:"URL地址",value:'{ "type": "url", "message": "请输入正确的URL地址"}'}]);const C=()=>{j({parent__isnull:!0,limit:999}).then(s=>{v.value=s.data})},O=S("refreshView"),R=async s=>{s&&await s.validate((l,d)=>{l?B(a).then(i=>{i.code==2e3&&(N("新增成功"),O())}):console.log("error submit!",d)})},A=()=>new Promise(function(s,l){if(_){if(!_.onSubmit())return l(!1);const{formObj:d}=_;return a.setting=d,s(!0)}else return s(!0)});return z(()=>{C()}),(s,l)=>{const d=m("el-option"),i=m("el-select"),n=m("el-form-item"),b=m("el-input"),L=m("el-input-number"),T=m("el-button"),$=m("el-form");return u(),f("div",F,[o($,{ref_key:"formRef",ref:k,model:t(a),rules:q,"label-width":"80px"},{default:r(()=>[o(n,{label:"所属分组",prop:"parent"},{default:r(()=>[o(i,{modelValue:t(a).parent,"onUpdate:modelValue":l[0]||(l[0]=e=>t(a).parent=e),placeholder:"请选择分组",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(v),(e,p)=>(u(),y(d,{label:e.title,value:e.id,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"标题",prop:"title"},{default:r(()=>[o(b,{modelValue:t(a).title,"onUpdate:modelValue":l[1]||(l[1]=e=>t(a).title=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"key值",prop:"key"},{default:r(()=>[o(b,{modelValue:t(a).key,"onUpdate:modelValue":l[2]||(l[2]=e=>t(a).key=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"表单类型",prop:"form_item_type"},{default:r(()=>[o(i,{modelValue:t(a).form_item_type,"onUpdate:modelValue":l[3]||(l[3]=e=>t(a).form_item_type=e),placeholder:"请选择",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(M)("config_form_type"),(e,p)=>(u(),y(d,{label:e.label,value:e.value,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),[4,5,6].indexOf(t(a).form_item_type)>-1?(u(),y(n,{key:0,label:"字典key",prop:"setting",rules:[{required:!0,message:"不能为空"}]},{default:r(()=>[o(b,{modelValue:t(a).setting,"onUpdate:modelValue":l[4]||(l[4]=e=>t(a).setting=e),placeholder:"请输入dictionary中key值",clearable:""},null,8,["modelValue"])]),_:1})):x("",!0),[13,14].indexOf(t(a).form_item_type)>-1?(u(),f("div",Z,[o(G,{ref_key:"associationTableRef",ref:_,modelValue:t(a).setting,"onUpdate:modelValue":l[5]||(l[5]=e=>t(a).setting=e),onUpdateVal:A},null,8,["modelValue"])])):x("",!0),o(n,{label:"校验规则"},{default:r(()=>[o(i,{modelValue:t(a).rule,"onUpdate:modelValue":l[6]||(l[6]=e=>t(a).rule=e),multiple:"",placeholder:"请选择(可多选)",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(w),(e,p)=>(u(),y(d,{label:e.label,value:e.value,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"提示信息",prop:"placeholder"},{default:r(()=>[o(b,{modelValue:t(a).placeholder,"onUpdate:modelValue":l[7]||(l[7]=e=>t(a).placeholder=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"排序",prop:"sort"},{default:r(()=>[o(L,{modelValue:t(a).sort,"onUpdate:modelValue":l[8]||(l[8]=e=>t(a).sort=e),min:0,max:99},null,8,["modelValue"])]),_:1}),o(n,null,{default:r(()=>[o(T,{type:"primary",onClick:l[9]||(l[9]=e=>R(k.value))},{default:r(()=>l[10]||(l[10]=[D("立即创建")])),_:1})]),_:1})]),_:1},8,["model","rules"])])}}});export{W as _}; diff --git a/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.Do7TlUJ8.js b/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.Do7TlUJ8.js new file mode 100644 index 0000000000..4ceefc09d0 --- /dev/null +++ b/web/dist/assets/addContent.vue_vue_type_script_setup_true_lang.Do7TlUJ8.js @@ -0,0 +1 @@ +import{G as B,A as G}from"./api.BZTxDs4c.js";import{_ as N}from"./associationTable.vue_vue_type_script_setup_true_lang.CRkFTsQv.js";import{s as $}from"./index.XK2ik2qb.js";import{d as z}from"./dictionary.DnyXy1XL.js";import{d as M,z as U,g as V,i as P,x as S,h as m,a as f,o as u,k as o,w as r,b as y,J as x,u as t,G as c,H as g,m as F}from"./vue.DmuWcDrn.js";const H={style:{padding:"20px"}},J={key:1},W=M({__name:"addContent",setup(Z){let a=U({parent:null,title:null,key:null,form_item_type:"",rule:null,placeholder:null});const k=V(),_=V(),w=U({parent:[{required:!0,message:"请选择"}],title:[{required:!0,message:"请输入"}],key:[{required:!0,message:"请输入"},{pattern:/^[A-Za-z0-9_]+$/,message:"请输入数字、字母或下划线"}],form_item_type:[{required:!0,message:"请输入"}]});let v=V([]),q=V([{label:"必填项",value:'{"required": true, "message": "必填项不能为空"}'},{label:"邮箱",value:'{ "type": "email", "message": "请输入正确的邮箱地址"}'},{label:"URL地址",value:'{ "type": "url", "message": "请输入正确的URL地址"}'}]);const C=()=>{B({parent__isnull:!0,limit:999}).then(s=>{v.value=s.data})},O=P("refreshView"),R=async s=>{s&&await s.validate((l,d)=>{l?G(a).then(i=>{i.code==2e3&&($("新增成功"),O())}):console.log("error submit!",d)})},L=()=>new Promise(function(s,l){if(_){if(!_.onSubmit())return l(!1);const{formObj:d}=_;return a.setting=d,s(!0)}else return s(!0)});return S(()=>{C()}),(s,l)=>{const d=m("el-option"),i=m("el-select"),n=m("el-form-item"),b=m("el-input"),T=m("el-input-number"),j=m("el-button"),A=m("el-form");return u(),f("div",H,[o(A,{ref_key:"formRef",ref:k,model:t(a),rules:w,"label-width":"80px"},{default:r(()=>[o(n,{label:"所属分组",prop:"parent"},{default:r(()=>[o(i,{modelValue:t(a).parent,"onUpdate:modelValue":l[0]||(l[0]=e=>t(a).parent=e),placeholder:"请选择分组",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(v),(e,p)=>(u(),y(d,{label:e.title,value:e.id,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"标题",prop:"title"},{default:r(()=>[o(b,{modelValue:t(a).title,"onUpdate:modelValue":l[1]||(l[1]=e=>t(a).title=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"key值",prop:"key"},{default:r(()=>[o(b,{modelValue:t(a).key,"onUpdate:modelValue":l[2]||(l[2]=e=>t(a).key=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"表单类型",prop:"form_item_type"},{default:r(()=>[o(i,{modelValue:t(a).form_item_type,"onUpdate:modelValue":l[3]||(l[3]=e=>t(a).form_item_type=e),placeholder:"请选择",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(z)("config_form_type"),(e,p)=>(u(),y(d,{label:e.label,value:e.value,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),[4,5,6].indexOf(t(a).form_item_type)>-1?(u(),y(n,{key:0,label:"字典key",prop:"setting",rules:[{required:!0,message:"不能为空"}]},{default:r(()=>[o(b,{modelValue:t(a).setting,"onUpdate:modelValue":l[4]||(l[4]=e=>t(a).setting=e),placeholder:"请输入dictionary中key值",clearable:""},null,8,["modelValue"])]),_:1})):x("",!0),[13,14].indexOf(t(a).form_item_type)>-1?(u(),f("div",J,[o(N,{ref_key:"associationTableRef",ref:_,modelValue:t(a).setting,"onUpdate:modelValue":l[5]||(l[5]=e=>t(a).setting=e),onUpdateVal:L},null,8,["modelValue"])])):x("",!0),o(n,{label:"校验规则"},{default:r(()=>[o(i,{modelValue:t(a).rule,"onUpdate:modelValue":l[6]||(l[6]=e=>t(a).rule=e),multiple:"",placeholder:"请选择(可多选)",clearable:""},{default:r(()=>[(u(!0),f(c,null,g(t(q),(e,p)=>(u(),y(d,{label:e.label,value:e.value,key:p},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"提示信息",prop:"placeholder"},{default:r(()=>[o(b,{modelValue:t(a).placeholder,"onUpdate:modelValue":l[7]||(l[7]=e=>t(a).placeholder=e),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"排序",prop:"sort"},{default:r(()=>[o(T,{modelValue:t(a).sort,"onUpdate:modelValue":l[8]||(l[8]=e=>t(a).sort=e),min:0,max:99},null,8,["modelValue"])]),_:1}),o(n,null,{default:r(()=>[o(j,{type:"primary",onClick:l[9]||(l[9]=e=>R(k.value))},{default:r(()=>l[10]||(l[10]=[F("立即创建")])),_:1})]),_:1})]),_:1},8,["model","rules"])])}}});export{W as _}; diff --git a/web/dist/assets/addTabs.BpUOg-6O.js b/web/dist/assets/addTabs.DFe8wYvR.js similarity index 35% rename from web/dist/assets/addTabs.BpUOg-6O.js rename to web/dist/assets/addTabs.DFe8wYvR.js index 42befbe22f..bd78cf2e31 100644 --- a/web/dist/assets/addTabs.BpUOg-6O.js +++ b/web/dist/assets/addTabs.DFe8wYvR.js @@ -1 +1 @@ -import{_ as o}from"./addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js";import"./api.Dw2kt7dJ.js";import"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";export{o as default}; +import{_ as o}from"./addTabs.vue_vue_type_script_setup_true_lang.B-lxowTP.js";import"./api.BZTxDs4c.js";import"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";export{o as default}; diff --git a/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.B-lxowTP.js b/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.B-lxowTP.js new file mode 100644 index 0000000000..c2ee45c90d --- /dev/null +++ b/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.B-lxowTP.js @@ -0,0 +1 @@ +import{A as V}from"./api.BZTxDs4c.js";import{s as b}from"./index.XK2ik2qb.js";import{d as g,z as f,g as v,i as w,h as m,a as x,o as C,k as t,w as l,u as s,m as p}from"./vue.DmuWcDrn.js";const A={style:{padding:"20px"}},N=g({__name:"addTabs",setup(j){let o=f({title:null,key:null});const i=v(),_=f({title:[{required:!0,message:"请输入"}],key:[{required:!0,message:"请输入"},{pattern:/^[A-Za-z0-9]+$/,message:"只能是英文和数字"}]}),c=w("refreshView"),k=async u=>{u&&await u.validate((e,r)=>{e?V(o).then(n=>{n.code==2e3&&(b("新增成功"),c())}):console.log("error submit!",r)})};return(u,e)=>{const r=m("el-input"),n=m("el-form-item"),d=m("el-button"),y=m("el-form");return C(),x("div",A,[t(y,{ref_key:"formRef",ref:i,model:s(o),rules:_,"label-width":"80px"},{default:l(()=>[t(n,{label:"标题",prop:"title"},{default:l(()=>[t(r,{modelValue:s(o).title,"onUpdate:modelValue":e[0]||(e[0]=a=>s(o).title=a)},null,8,["modelValue"])]),_:1}),t(n,{label:"key值",prop:"key"},{default:l(()=>[t(r,{modelValue:s(o).key,"onUpdate:modelValue":e[1]||(e[1]=a=>s(o).key=a)},null,8,["modelValue"])]),_:1}),t(n,null,{default:l(()=>[t(d,{type:"primary",onClick:e[2]||(e[2]=a=>k(i.value))},{default:l(()=>e[3]||(e[3]=[p("立即创建")])),_:1}),t(d,null,{default:l(()=>e[4]||(e[4]=[p("取消")])),_:1})]),_:1})]),_:1},8,["model","rules"])])}}});export{N as _}; diff --git a/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js b/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js deleted file mode 100644 index a358f3f0f1..0000000000 --- a/web/dist/assets/addTabs.vue_vue_type_script_setup_true_lang.C5irVEUK.js +++ /dev/null @@ -1 +0,0 @@ -import{A as V}from"./api.Dw2kt7dJ.js";import{s as b}from"./index.CkCcWuPb.js";import{w as x,af as f,D as g,C as v,aA as m,x as w,y as C,a7 as t,a0 as o,G as s,a4 as p}from"./vue.Cw4Y52yh.js";const A={style:{padding:"20px"}},R=x({__name:"addTabs",setup(j){let l=f({title:null,key:null});const i=g(),_=f({title:[{required:!0,message:"请输入"}],key:[{required:!0,message:"请输入"},{pattern:/^[A-Za-z0-9]+$/,message:"只能是英文和数字"}]}),y=v("refreshView"),c=async u=>{u&&await u.validate((e,a)=>{e?V(l).then(n=>{n.code==2e3&&(b("新增成功"),y())}):console.log("error submit!",a)})};return(u,e)=>{const a=m("el-input"),n=m("el-form-item"),d=m("el-button"),k=m("el-form");return C(),w("div",A,[t(k,{ref_key:"formRef",ref:i,model:s(l),rules:_,"label-width":"80px"},{default:o(()=>[t(n,{label:"标题",prop:"title"},{default:o(()=>[t(a,{modelValue:s(l).title,"onUpdate:modelValue":e[0]||(e[0]=r=>s(l).title=r)},null,8,["modelValue"])]),_:1}),t(n,{label:"key值",prop:"key"},{default:o(()=>[t(a,{modelValue:s(l).key,"onUpdate:modelValue":e[1]||(e[1]=r=>s(l).key=r)},null,8,["modelValue"])]),_:1}),t(n,null,{default:o(()=>[t(d,{type:"primary",onClick:e[2]||(e[2]=r=>c(i.value))},{default:o(()=>e[3]||(e[3]=[p("立即创建")])),_:1}),t(d,null,{default:o(()=>e[4]||(e[4]=[p("取消")])),_:1})]),_:1})]),_:1},8,["model","rules"])])}}});export{R as _}; diff --git a/web/dist/assets/api.7fuRR03W.js b/web/dist/assets/api.BMXTwPHc.js similarity index 85% rename from web/dist/assets/api.7fuRR03W.js rename to web/dist/assets/api.BMXTwPHc.js index d4520606c7..15c6225faa 100644 --- a/web/dist/assets/api.7fuRR03W.js +++ b/web/dist/assets/api.BMXTwPHc.js @@ -1 +1 @@ -import{v as o}from"./vue.Cw4Y52yh.js";import{r as t,X as n}from"./index.CkCcWuPb.js";const s={drawerVisible:!1,roleId:void 0,roleName:void 0,users:[]},i=o("RoleDrawerStores",{state:()=>({...s}),actions:{handleDrawerOpen(e){this.drawerVisible=!0,this.set_state(e)},set_state(e){this.roleName=e.name,this.roleId=e.id,this.users=e.users},handleDrawerClose(){Object.assign(this.$state,s)}}});function l(e){return t({url:"/api/system/role_menu_button_permission/get_role_menu/",method:"get",params:e}).then(r=>n.toArrayTree(r.data,{key:"id",parentKey:"parent",children:"children",strict:!1}))}function m(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu/",method:"put",data:e})}function _(e){return t({url:"/api/system/role_menu_button_permission/get_role_menu_btn_field/",method:"get",params:e})}function p(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu_btn/",method:"put",data:e})}function d(e,r){return t({url:`/api/system/role_menu_button_permission/${e}/set_role_menu_field/`,method:"put",data:r})}function h(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu_btn_data_range/",method:"put",data:e})}function c(e){return t({url:"/api/system/role_menu_button_permission/role_to_dept_all/",method:"get",params:e})}function f(){return t({url:"/api/system/user/",method:"get",params:{limit:999}}).then(e=>n.map(e.data,r=>({id:r.id,name:r.name})))}function b(e,r){return t({url:`/api/system/role/${e}/set_role_users/`,method:"put",data:r})}export{i as R,c as a,p as b,d as c,l as d,m as e,_ as f,f as g,b as h,h as s}; +import{M as o}from"./vue.DmuWcDrn.js";import{r as t,X as n}from"./index.XK2ik2qb.js";const s={drawerVisible:!1,roleId:void 0,roleName:void 0,users:[]},i=o("RoleDrawerStores",{state:()=>({...s}),actions:{handleDrawerOpen(e){this.drawerVisible=!0,this.set_state(e)},set_state(e){this.roleName=e.name,this.roleId=e.id,this.users=e.users},handleDrawerClose(){Object.assign(this.$state,s)}}});function l(e){return t({url:"/api/system/role_menu_button_permission/get_role_menu/",method:"get",params:e}).then(r=>n.toArrayTree(r.data,{key:"id",parentKey:"parent",children:"children",strict:!1}))}function m(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu/",method:"put",data:e})}function _(e){return t({url:"/api/system/role_menu_button_permission/get_role_menu_btn_field/",method:"get",params:e})}function p(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu_btn/",method:"put",data:e})}function d(e,r){return t({url:`/api/system/role_menu_button_permission/${e}/set_role_menu_field/`,method:"put",data:r})}function h(e){return t({url:"/api/system/role_menu_button_permission/set_role_menu_btn_data_range/",method:"put",data:e})}function c(e){return t({url:"/api/system/role_menu_button_permission/role_to_dept_all/",method:"get",params:e})}function f(){return t({url:"/api/system/user/",method:"get",params:{limit:999}}).then(e=>n.map(e.data,r=>({id:r.id,name:r.name})))}function b(e,r){return t({url:`/api/system/role/${e}/set_role_users/`,method:"put",data:r})}export{i as R,l as a,_ as b,b as c,c as d,h as e,p as f,f as g,d as h,m as s}; diff --git a/web/dist/assets/api.Dw2kt7dJ.js b/web/dist/assets/api.BZTxDs4c.js similarity index 84% rename from web/dist/assets/api.Dw2kt7dJ.js rename to web/dist/assets/api.BZTxDs4c.js index c646c7a985..03e5254418 100644 --- a/web/dist/assets/api.Dw2kt7dJ.js +++ b/web/dist/assets/api.BZTxDs4c.js @@ -1 +1 @@ -import{r as e}from"./index.CkCcWuPb.js";const r="/api/system/system_config/";function a(t){return e({url:r,method:"get",params:t})}function s(t){return e({url:r,method:"post",data:t})}function u(t){return e({url:r+t.id+"/",method:"put",data:t})}function o(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}function d(t){return e({url:r+"save_content/",method:"put",data:t})}export{s as A,o as D,a as G,u as U,d as s}; +import{r as e}from"./index.XK2ik2qb.js";const r="/api/system/system_config/";function a(t){return e({url:r,method:"get",params:t})}function s(t){return e({url:r,method:"post",data:t})}function u(t){return e({url:r+t.id+"/",method:"put",data:t})}function o(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}function d(t){return e({url:r+"save_content/",method:"put",data:t})}export{s as A,o as D,a as G,u as U,d as s}; diff --git a/web/dist/assets/api.CQml_ETa.js b/web/dist/assets/api.CQml_ETa.js new file mode 100644 index 0000000000..be409266c8 --- /dev/null +++ b/web/dist/assets/api.CQml_ETa.js @@ -0,0 +1 @@ +import{r as e}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const r="/api/dvadmin3_flow/flow_info/";function u(t){return e({url:r,method:"get",params:t})}function d(t){return e({url:r+t,method:"get"})}function a(t){return e({url:r,method:"post",data:t})}function i(t){return e({url:r+t.id+"/",method:"put",data:t})}function f(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}export{a as AddObj,f as DelObj,u as GetList,d as GetObj,i as UpdateObj,r as apiPrefix}; diff --git a/web/dist/assets/api.CXQZ_GZz.js b/web/dist/assets/api.CXQZ_GZz.js new file mode 100644 index 0000000000..82cf9fc9f5 --- /dev/null +++ b/web/dist/assets/api.CXQZ_GZz.js @@ -0,0 +1 @@ +import{r as e}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const r="/api/dvadmin3_flow/flow_data/get_all_flow_data/";function n(t){return e({url:r,method:"get",params:t})}function u(t){return e({url:r+t,method:"get"})}function d(t){return e({url:r,method:"post",data:t})}function i(t){return e({url:r+t.id+"/",method:"put",data:t})}function l(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}export{d as AddObj,l as DelObj,n as GetList,u as GetObj,i as UpdateObj,r as apiPrefix}; diff --git a/web/dist/assets/api.CqMNLOVM.js b/web/dist/assets/api.CYNTogYL.js similarity index 87% rename from web/dist/assets/api.CqMNLOVM.js rename to web/dist/assets/api.CYNTogYL.js index 4c17b2dbc4..2aeab549d0 100644 --- a/web/dist/assets/api.CqMNLOVM.js +++ b/web/dist/assets/api.CYNTogYL.js @@ -1 +1 @@ -import{r as e}from"./index.CkCcWuPb.js";const r="/api/system/menu/";function u(t){return e({url:r,method:"get",params:t})}function o(t){return e({url:r,method:"post",data:t})}function a(t){return e({url:r+t.id+"/",method:"put",data:t})}function d(t){return e({url:r+t+"/",method:"delete"})}function m(t){return e({url:r,method:"get",params:t})}function s(t){return e({url:r+"move_up/",method:"post",data:t})}function i(t){return e({url:r+"move_down/",method:"post",data:t})}export{o as A,d as D,u as G,a as U,i as a,m as l,s as m}; +import{r as e}from"./index.XK2ik2qb.js";const r="/api/system/menu/";function u(t){return e({url:r,method:"get",params:t})}function o(t){return e({url:r,method:"post",data:t})}function a(t){return e({url:r+t.id+"/",method:"put",data:t})}function d(t){return e({url:r+t+"/",method:"delete"})}function m(t){return e({url:r,method:"get",params:t})}function s(t){return e({url:r+"move_up/",method:"post",data:t})}function i(t){return e({url:r+"move_down/",method:"post",data:t})}export{o as A,d as D,u as G,a as U,i as a,m as l,s as m}; diff --git a/web/dist/assets/api.CgqMcKh6.js b/web/dist/assets/api.CgqMcKh6.js new file mode 100644 index 0000000000..7e691a5b1e --- /dev/null +++ b/web/dist/assets/api.CgqMcKh6.js @@ -0,0 +1 @@ +import{r as e}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const r="/api/dvadmin_celery/task_detail/";function a(t){return e({url:r,method:"get",params:t})}function d(t){return e({url:r+t,method:"get"})}function o(t){return e({url:r,method:"post",data:t})}function i(t){return e({url:r+t.id+"/",method:"put",data:t})}function m(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}export{o as AddObj,m as DelObj,a as GetList,d as GetObj,i as UpdateObj,r as apiPrefix}; diff --git a/web/dist/assets/api.Cpc88qFC.js b/web/dist/assets/api.Cpc88qFC.js new file mode 100644 index 0000000000..175f4acc2a --- /dev/null +++ b/web/dist/assets/api.Cpc88qFC.js @@ -0,0 +1 @@ +import{r as e}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const r="/api/dvadmin3_flow/flow_data/my_pending_handle/";function d(t){return t.handle_status=0,e({url:r,method:"get",params:t})}function u(t){return e({url:r+t,method:"get",params:{handle_status:0}})}function o(t){return e({url:r,method:"post",data:t})}function i(t){return e({url:r+t.id+"/",method:"put",data:t})}function l(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}export{o as AddObj,l as DelObj,d as GetList,u as GetObj,i as UpdateObj,r as apiPrefix}; diff --git a/web/dist/assets/api.DG102jwl.js b/web/dist/assets/api.DG102jwl.js new file mode 100644 index 0000000000..dd8cfedaed --- /dev/null +++ b/web/dist/assets/api.DG102jwl.js @@ -0,0 +1 @@ +import{r}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const e="/api/dvadmin_celery/task/";function u(){return r({url:e+"field_permission/",method:"get"})}function i(t){return r({url:e,method:"get",params:t})}function s(t){return r({url:e+t,method:"get"})}function d(t){return t.kwargs&&(t.kwargs=JSON.stringify(t.kwargs)),r({url:e,method:"post",data:t})}function o(t){return t.kwargs&&(t.kwargs=JSON.stringify(t.kwargs)),r({url:e+t.id+"/",method:"put",data:t})}function f(t){return r({url:e+t+"/",method:"delete",data:{id:t}})}function m(t){return r({url:e+t.id+"/update_status/",method:"post",data:t})}function p(t){return r({url:e+t.id+"/run_task/",method:"post",data:t})}export{d as AddObj,f as DelObj,i as GetList,s as GetObj,u as GetPermission,p as RunTask,o as UpdateObj,m as UpdateTask,e as apiPrefix}; diff --git a/web/dist/assets/api.jJ3Ot51X.js b/web/dist/assets/api.DMCQHntY.js similarity index 77% rename from web/dist/assets/api.jJ3Ot51X.js rename to web/dist/assets/api.DMCQHntY.js index 22729afc22..e021287352 100644 --- a/web/dist/assets/api.jJ3Ot51X.js +++ b/web/dist/assets/api.DMCQHntY.js @@ -1 +1 @@ -import{r as a}from"./index.CkCcWuPb.js";function r(){return a({url:"/api/captcha/",method:"get"})}function e(t){return a({url:"/api/login/",method:"post",data:t})}function n(t){return a({url:"/api/system/user/login_change_password/",method:"post",data:t})}export{n as a,r as g,e as l}; +import{r as a}from"./index.XK2ik2qb.js";function r(){return a({url:"/api/captcha/",method:"get"})}function e(t){return a({url:"/api/login/",method:"post",data:t})}function n(t){return a({url:"/api/system/user/login_change_password/",method:"post",data:t})}export{n as a,r as g,e as l}; diff --git a/web/dist/assets/api.DWbfkKZe.js b/web/dist/assets/api.DWbfkKZe.js new file mode 100644 index 0000000000..b569d1de39 --- /dev/null +++ b/web/dist/assets/api.DWbfkKZe.js @@ -0,0 +1 @@ +import{r as e}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const r="/api/dvadmin3_flow/flow_data/my_pending_handle/";function d(t){return t.handle_status=3,e({url:r,method:"get",params:t})}function o(t){return e({url:r+t,method:"get"})}function u(t){return e({url:r,method:"post",data:t})}function i(t){return e({url:r+t.id+"/",method:"put",data:t})}function l(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}export{u as AddObj,l as DelObj,d as GetList,o as GetObj,i as UpdateObj,r as apiPrefix}; diff --git a/web/dist/assets/api.Duj3eJXG.js b/web/dist/assets/api.Duj3eJXG.js new file mode 100644 index 0000000000..95cf968d09 --- /dev/null +++ b/web/dist/assets/api.Duj3eJXG.js @@ -0,0 +1 @@ +import{r as e}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const r="/api/dvadmin3_flow/flow_data/my_pending_handle/";function d(t){return t.handle_status=2,e({url:r,method:"get",params:t})}function o(t){return e({url:r+t,method:"get"})}function u(t){return e({url:r,method:"post",data:t})}function i(t){return e({url:r+t.id+"/",method:"put",data:t})}function l(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}export{u as AddObj,l as DelObj,d as GetList,o as GetObj,i as UpdateObj,r as apiPrefix}; diff --git a/web/dist/assets/api.C_BUo8_Z.js b/web/dist/assets/api.KWPB0rj1.js similarity index 87% rename from web/dist/assets/api.C_BUo8_Z.js rename to web/dist/assets/api.KWPB0rj1.js index 81bc1af98b..2b528a593d 100644 --- a/web/dist/assets/api.C_BUo8_Z.js +++ b/web/dist/assets/api.KWPB0rj1.js @@ -1 +1 @@ -import{r as e}from"./index.CkCcWuPb.js";const r="/api/system/dept/";function a(t){return e({url:r,method:"get",params:t})}function n(t){return e({url:r,method:"post",data:t})}function u(t){return e({url:r+t.id+"/",method:"put",data:t})}function d(t){return e({url:r+t+"/",method:"delete"})}function s(t){return e({url:r,method:"get",params:t})}function p(t){return e({url:r+"move_up/",method:"post",data:t})}function m(t){return e({url:r+"move_down/",method:"post",data:t})}export{n as A,d as D,a as G,u as U,m as a,p as d,s as l}; +import{r as e}from"./index.XK2ik2qb.js";const r="/api/system/dept/";function a(t){return e({url:r,method:"get",params:t})}function n(t){return e({url:r,method:"post",data:t})}function u(t){return e({url:r+t.id+"/",method:"put",data:t})}function d(t){return e({url:r+t+"/",method:"delete"})}function s(t){return e({url:r,method:"get",params:t})}function p(t){return e({url:r+"move_up/",method:"post",data:t})}function m(t){return e({url:r+"move_down/",method:"post",data:t})}export{n as A,d as D,a as G,u as U,m as a,p as d,s as l}; diff --git a/web/dist/assets/api.Rm0uCpyl.js b/web/dist/assets/api.Rm0uCpyl.js new file mode 100644 index 0000000000..e0fbf9ec1b --- /dev/null +++ b/web/dist/assets/api.Rm0uCpyl.js @@ -0,0 +1 @@ +import{r as e}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const r="/api/dvadmin3_flow/flow_data/my_pending_handle/";function d(t){return t.handle_status=1,e({url:r,method:"get",params:t})}function o(t){return e({url:r+t,method:"get"})}function u(t){return e({url:r,method:"post",data:t})}function i(t){return e({url:r+t.id+"/",method:"put",data:t})}function l(t){return e({url:r+t+"/",method:"delete",data:{id:t}})}export{u as AddObj,l as DelObj,d as GetList,o as GetObj,i as UpdateObj,r as apiPrefix}; diff --git a/web/dist/assets/api.DcIfMooN.js b/web/dist/assets/api.ixj0nmKJ.js similarity index 73% rename from web/dist/assets/api.DcIfMooN.js rename to web/dist/assets/api.ixj0nmKJ.js index 25fb6865b6..f3b832c991 100644 --- a/web/dist/assets/api.DcIfMooN.js +++ b/web/dist/assets/api.ixj0nmKJ.js @@ -1 +1 @@ -import{r as u}from"./index.CkCcWuPb.js";function e(t){return u({url:"/api/system/column/",method:"get",params:t})}function o(t){return u({url:"/api/system/column/auto_match_fields/",method:"post",data:t})}function s(t){return u({url:"/api/system/column/",method:"post",data:t})}function m(t){return u({url:`/api/system/column/${t}/`,method:"delete"})}function n(t){return u({url:`/api/system/column/${t.id}/`,method:"put",data:t})}export{o as a,s as b,m as d,e as g,n as u}; +import{r as u}from"./index.XK2ik2qb.js";function e(t){return u({url:"/api/system/column/",method:"get",params:t})}function o(t){return u({url:"/api/system/column/auto_match_fields/",method:"post",data:t})}function s(t){return u({url:"/api/system/column/",method:"post",data:t})}function m(t){return u({url:`/api/system/column/${t}/`,method:"delete"})}function n(t){return u({url:`/api/system/column/${t.id}/`,method:"put",data:t})}export{s as a,o as b,m as d,e as g,n as u}; diff --git a/web/dist/assets/aside.CcbNtRz7.js b/web/dist/assets/aside.CcbNtRz7.js deleted file mode 100644 index 8e9e7d71ca..0000000000 --- a/web/dist/assets/aside.CcbNtRz7.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.BB25-PUl.js","assets/vue.Cw4Y52yh.js","assets/index.CkCcWuPb.js","assets/index.DvQZPXXd.css","assets/logo-mini.Cm36vqeJ.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/index.DayMOj0i.css","assets/vertical.D5BzUQaZ.js"])))=>i.map(i=>d[i]); -import{ae as N,u as O,b as $,e as u,af as q,_ as F}from"./index.CkCcWuPb.js";import{w as I,aQ as z,D as S,aR as p,af as j,F as x,am as G,H as R,aA as w,a1 as Q,a8 as Y,G as y,x as J,y as A,a7 as v,a0 as M,$ as K,a2 as U,aP as T,Y as X}from"./vue.Cw4Y52yh.js";const Z={class:"h100"},ee=I({name:"layoutAside"}),ne=I({...ee,setup(te){const B=z(),E=T(()=>F(()=>import("./index.BB25-PUl.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),V=T(()=>F(()=>import("./vertical.D5BzUQaZ.js"),__vite__mapDeps([7,2,1,3]))),d=S(),f=S(0),_=N(),W=O(),k=$(),{routesList:r}=p(_),{themeConfig:n}=p(W),{isTagsViewCurrenFull:D}=p(k),l=j({menuList:[],clientWidth:0}),P=x(()=>{const{layout:e,isCollapse:t,menuBar:s}=n.value,o=["#FFFFFF","#FFF","#fff","#ffffff"].includes(s)?"layout-el-aside-br-color":"";if(l.clientWidth<=1e3)if(t){document.body.setAttribute("class","el-popup-parent--hidden");const g=document.querySelector(".layout-container"),i=document.createElement("div");return i.setAttribute("class","layout-aside-mobile-mode"),g.appendChild(i),i.addEventListener("click",m),[o,"layout-aside-mobile","layout-aside-mobile-open"]}else return m(),[o,"layout-aside-mobile","layout-aside-mobile-close"];else return e==="columns"?t?[o,"layout-aside-pc-1"]:[o,"layout-aside-pc-220"]:t?[o,"layout-aside-pc-64"]:[o,"layout-aside-pc-220"]}),H=x(()=>{let{layout:e,isShowLogo:t}=n.value;return t&&e==="defaults"||t&&e==="columns"}),m=()=>{const e=document.querySelector(".layout-aside-mobile-mode");e==null||e.setAttribute("style","animation: error-img-two 0.3s"),setTimeout(()=>{var s;(s=e==null?void 0:e.parentNode)==null||s.removeChild(e)},300),document.body.clientWidth<1e3&&(n.value.isCollapse=!1),document.body.setAttribute("class","")},C=(e,t)=>{for(let s=0;s0&&(a.children.findIndex(i=>i.path===t)!==-1||C(a.children,t)!==null))return s}return null},c=(e="")=>{if(n.value.layout==="columns")return!1;let{layout:t,isClassicSplitMenu:s}=n.value;t==="classic"&&s?(f.value=C(r.value,e||B.path)||0,l.menuList=h(r.value[f.value].children||[r.value[f.value]])):l.menuList=h(r.value)},h=e=>e.filter(t=>{var s;return!((s=t.meta)!=null&&s.isHide)}).map(t=>(t=Object.assign({},t),t.children&&(t.children=h(t.children)),t)),b=e=>{l.clientWidth=e},L=e=>{let{layout:t}=n.value;if(t!=="columns")return!1;e||u.emit("restoreDefault"),_.setColumnsMenuHover(e)};return G(()=>{b(document.body.clientWidth),c(),u.on("setSendColumnsChildren",e=>{l.menuList=e.children}),u.on("setSendClassicChildren",e=>{let{layout:t,isClassicSplitMenu:s}=n.value;t==="classic"&&s&&(l.menuList=[],c(e.path))}),u.on("getBreadcrumbIndexSetFilterRoutes",()=>{c()}),u.on("layoutMobileResize",e=>{b(e.clientWidth),m()})}),R(n.value,e=>{e.isShowLogoChange!==e.isShowLogo&&d.value&&d.value.update()}),R(q.state,e=>{let{layout:t,isClassicSplitMenu:s}=e.themeConfig.themeConfig;if(t==="classic"&&s)return!1;c()},{deep:!0}),(e,t)=>{const s=w("el-scrollbar"),a=w("el-aside");return Q((A(),J("div",Z,[v(a,{class:X(["layout-aside",P.value])},{default:M(()=>[H.value?(A(),K(y(E),{key:0})):U("",!0),v(s,{class:"flex-auto",ref_key:"layoutAsideScrollbarRef",ref:d,onMouseenter:t[0]||(t[0]=o=>L(!0)),onMouseleave:t[1]||(t[1]=o=>L(!1))},{default:M(()=>[v(y(V),{menuList:l.menuList},null,8,["menuList"])]),_:1},512)]),_:1},8,["class"])],512)),[[Y,!y(D)]])}}});export{ne as default}; diff --git a/web/dist/assets/aside.D4ng9uQr.js b/web/dist/assets/aside.D4ng9uQr.js new file mode 100644 index 0000000000..fd8fab9f22 --- /dev/null +++ b/web/dist/assets/aside.D4ng9uQr.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.CCNs2Hev.js","assets/vue.DmuWcDrn.js","assets/index.XK2ik2qb.js","assets/index.JncG-tMh.css","assets/logo-mini.Cm36vqeJ.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/index.DayMOj0i.css","assets/vertical.DfG__Lvt.js"])))=>i.map(i=>d[i]); +import{M as P,u as q,O as z,p as u,P as H,_ as S}from"./index.XK2ik2qb.js";import{d as I,s as $,g as F,T as p,z as j,c as x,I as J,C as w,h as R,p as G,N as K,u as v,a as Q,o as A,k as y,w as M,b as U,J as X,q as T,f as Y}from"./vue.DmuWcDrn.js";const Z={class:"h100"},ee=I({name:"layoutAside"}),ne=I({...ee,setup(te){const B=$(),E=T(()=>S(()=>import("./index.CCNs2Hev.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),V=T(()=>S(()=>import("./vertical.DfG__Lvt.js"),__vite__mapDeps([7,2,1,3]))),d=F(),f=F(0),_=P(),W=q(),k=z(),{routesList:r}=p(_),{themeConfig:n}=p(W),{isTagsViewCurrenFull:D}=p(k),l=j({menuList:[],clientWidth:0}),N=x(()=>{const{layout:e,isCollapse:t,menuBar:s}=n.value,o=["#FFFFFF","#FFF","#fff","#ffffff"].includes(s)?"layout-el-aside-br-color":"";if(l.clientWidth<=1e3)if(t){document.body.setAttribute("class","el-popup-parent--hidden");const g=document.querySelector(".layout-container"),a=document.createElement("div");return a.setAttribute("class","layout-aside-mobile-mode"),g.appendChild(a),a.addEventListener("click",m),[o,"layout-aside-mobile","layout-aside-mobile-open"]}else return m(),[o,"layout-aside-mobile","layout-aside-mobile-close"];else return e==="columns"?t?[o,"layout-aside-pc-1"]:[o,"layout-aside-pc-220"]:t?[o,"layout-aside-pc-64"]:[o,"layout-aside-pc-220"]}),O=x(()=>{let{layout:e,isShowLogo:t}=n.value;return t&&e==="defaults"||t&&e==="columns"}),m=()=>{const e=document.querySelector(".layout-aside-mobile-mode");e==null||e.setAttribute("style","animation: error-img-two 0.3s"),setTimeout(()=>{var s;(s=e==null?void 0:e.parentNode)==null||s.removeChild(e)},300),document.body.clientWidth<1e3&&(n.value.isCollapse=!1),document.body.setAttribute("class","")},C=(e,t)=>{for(let s=0;s0&&(i.children.findIndex(a=>a.path===t)!==-1||C(i.children,t)!==null))return s}return null},c=(e="")=>{if(n.value.layout==="columns")return!1;let{layout:t,isClassicSplitMenu:s}=n.value;t==="classic"&&s?(f.value=C(r.value,e||B.path)||0,l.menuList=h(r.value[f.value].children||[r.value[f.value]])):l.menuList=h(r.value)},h=e=>e.filter(t=>{var s;return!((s=t.meta)!=null&&s.isHide)}).map(t=>(t=Object.assign({},t),t.children&&(t.children=h(t.children)),t)),b=e=>{l.clientWidth=e},L=e=>{let{layout:t}=n.value;if(t!=="columns")return!1;e||u.emit("restoreDefault"),_.setColumnsMenuHover(e)};return J(()=>{b(document.body.clientWidth),c(),u.on("setSendColumnsChildren",e=>{l.menuList=e.children}),u.on("setSendClassicChildren",e=>{let{layout:t,isClassicSplitMenu:s}=n.value;t==="classic"&&s&&(l.menuList=[],c(e.path))}),u.on("getBreadcrumbIndexSetFilterRoutes",()=>{c()}),u.on("layoutMobileResize",e=>{b(e.clientWidth),m()})}),w(n.value,e=>{e.isShowLogoChange!==e.isShowLogo&&d.value&&d.value.update()}),w(H.state,e=>{let{layout:t,isClassicSplitMenu:s}=e.themeConfig.themeConfig;if(t==="classic"&&s)return!1;c()},{deep:!0}),(e,t)=>{const s=R("el-scrollbar"),i=R("el-aside");return G((A(),Q("div",Z,[y(i,{class:Y(["layout-aside",N.value])},{default:M(()=>[O.value?(A(),U(v(E),{key:0})):X("",!0),y(s,{class:"flex-auto",ref_key:"layoutAsideScrollbarRef",ref:d,onMouseenter:t[0]||(t[0]=o=>L(!0)),onMouseleave:t[1]||(t[1]=o=>L(!1))},{default:M(()=>[y(v(V),{menuList:l.menuList},null,8,["menuList"])]),_:1},512)]),_:1},8,["class"])],512)),[[K,!v(D)]])}}});export{ne as default}; diff --git a/web/dist/assets/associationTable.BfghxRvS.js b/web/dist/assets/associationTable.OK4-bur0.js similarity index 39% rename from web/dist/assets/associationTable.BfghxRvS.js rename to web/dist/assets/associationTable.OK4-bur0.js index 48d5d24bbc..95b59340af 100644 --- a/web/dist/assets/associationTable.BfghxRvS.js +++ b/web/dist/assets/associationTable.OK4-bur0.js @@ -1 +1 @@ -import{_ as o}from"./associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js";import"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";export{o as default}; +import{_ as o}from"./associationTable.vue_vue_type_script_setup_true_lang.CRkFTsQv.js";import"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";export{o as default}; diff --git a/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.CRkFTsQv.js b/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.CRkFTsQv.js new file mode 100644 index 0000000000..0c5503470b --- /dev/null +++ b/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.CRkFTsQv.js @@ -0,0 +1 @@ +import"./index.XK2ik2qb.js";import{d as S,z,g as b,h as m,a as f,o as r,k as s,u as l,w as a,G as h,H as g,b as y,e as d,K as u}from"./vue.DmuWcDrn.js";const q={style:{float:"left"}},B={style:{float:"right",color:"#8492a6","font-size":"13px"}},N={style:{float:"left"}},O={style:{float:"right",color:"#8492a6","font-size":"13px"}},U={style:{float:"left"}},w={style:{float:"right",color:"#8492a6","font-size":"13px"}},R={style:{float:"left"}},j={style:{float:"right",color:"#8492a6","font-size":"13px"}},K=S({__name:"associationTable",props:["value"],emits:["updateVal"],setup(D,{emit:E}){let o=z({table:null,primarykey:null,field:null,searchField:null,oldSearchField:null});b("");let k=b([]),i=b([]);const v=b(),x=p=>{const{tableFields:t}=k.find(n=>n.table===p);i=t},F=p=>{const t=i.filter(n=>p.indexOf(n.field)>-1);o.searchField=t};return(p,t)=>{const n=m("el-option"),_=m("el-select"),c=m("el-form-item"),C=m("el-form");return r(),f("div",null,[s(C,{model:l(o),ref_key:"associationRef",ref:v},{default:a(()=>[s(c,{label:"关联表",prop:"table",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).table,"onUpdate:modelValue":t[0]||(t[0]=e=>l(o).table=e),filterable:"",clearable:"",placeholder:"请选择",onChange:x},{default:a(()=>[(r(!0),f(h,null,g(l(k),e=>(r(),y(n,{key:e.table,label:e.tableName,value:e.table},{default:a(()=>[d("span",q,u(e.tableName),1),d("span",B,u(e.table),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"显示字段",prop:"field",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).field,"onUpdate:modelValue":t[1]||(t[1]=e=>l(o).field=e),filterable:"",clearable:"",placeholder:"请选择"},{default:a(()=>[(r(!0),f(h,null,g(l(i),e=>(r(),y(n,{key:e.table,label:e.title,value:e.field},{default:a(()=>[d("span",N,u(e.field),1),d("span",O,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"储存字段",prop:"primarykey",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).primarykey,"onUpdate:modelValue":t[2]||(t[2]=e=>l(o).primarykey=e),filterable:"",clearable:"",placeholder:"请选择"},{default:a(()=>[(r(!0),f(h,null,g(l(i),(e,V)=>(r(),y(n,{key:V,label:e.title,value:e.field},{default:a(()=>[d("span",U,u(e.field),1),d("span",w,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"过滤条件",prop:"oldSearchField",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).oldSearchField,"onUpdate:modelValue":t[3]||(t[3]=e=>l(o).oldSearchField=e),multiple:"",filterable:"",clearable:"",placeholder:"请选择",onChange:F},{default:a(()=>[(r(!0),f(h,null,g(l(i),(e,V)=>(r(),y(n,{key:V,label:e.title,value:e.field},{default:a(()=>[d("span",R,u(e.field),1),d("span",j,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])])}}});export{K as _}; diff --git a/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js b/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js deleted file mode 100644 index fb6cb55ba3..0000000000 --- a/web/dist/assets/associationTable.vue_vue_type_script_setup_true_lang.D723xajV.js +++ /dev/null @@ -1 +0,0 @@ -import"./index.CkCcWuPb.js";import{w as S,af as q,D as b,aA as m,x as f,y as r,a7 as s,G as l,a0 as a,a6 as y,aq as h,$ as g,z as d,a5 as u}from"./vue.Cw4Y52yh.js";const z={style:{float:"left"}},B={style:{float:"right",color:"#8492a6","font-size":"13px"}},N={style:{float:"left"}},O={style:{float:"right",color:"#8492a6","font-size":"13px"}},U={style:{float:"left"}},w={style:{float:"right",color:"#8492a6","font-size":"13px"}},D={style:{float:"left"}},R={style:{float:"right",color:"#8492a6","font-size":"13px"}},L=S({__name:"associationTable",props:["value"],emits:["updateVal"],setup(j,{emit:A}){let o=q({table:null,primarykey:null,field:null,searchField:null,oldSearchField:null});b("");let k=b([]),i=b([]);const v=b(),x=p=>{const{tableFields:t}=k.find(n=>n.table===p);i=t},F=p=>{const t=i.filter(n=>p.indexOf(n.field)>-1);o.searchField=t};return(p,t)=>{const n=m("el-option"),_=m("el-select"),c=m("el-form-item"),C=m("el-form");return r(),f("div",null,[s(C,{model:l(o),ref_key:"associationRef",ref:v},{default:a(()=>[s(c,{label:"关联表",prop:"table",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).table,"onUpdate:modelValue":t[0]||(t[0]=e=>l(o).table=e),filterable:"",clearable:"",placeholder:"请选择",onChange:x},{default:a(()=>[(r(!0),f(y,null,h(l(k),e=>(r(),g(n,{key:e.table,label:e.tableName,value:e.table},{default:a(()=>[d("span",z,u(e.tableName),1),d("span",B,u(e.table),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"显示字段",prop:"field",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).field,"onUpdate:modelValue":t[1]||(t[1]=e=>l(o).field=e),filterable:"",clearable:"",placeholder:"请选择"},{default:a(()=>[(r(!0),f(y,null,h(l(i),e=>(r(),g(n,{key:e.table,label:e.title,value:e.field},{default:a(()=>[d("span",N,u(e.field),1),d("span",O,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"储存字段",prop:"primarykey",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).primarykey,"onUpdate:modelValue":t[2]||(t[2]=e=>l(o).primarykey=e),filterable:"",clearable:"",placeholder:"请选择"},{default:a(()=>[(r(!0),f(y,null,h(l(i),(e,V)=>(r(),g(n,{key:V,label:e.title,value:e.field},{default:a(()=>[d("span",U,u(e.field),1),d("span",w,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(c,{label:"过滤条件",prop:"oldSearchField",rules:[{required:!0,message:"必填项",trigger:"blur"}]},{default:a(()=>[s(_,{modelValue:l(o).oldSearchField,"onUpdate:modelValue":t[3]||(t[3]=e=>l(o).oldSearchField=e),multiple:"",filterable:"",clearable:"",placeholder:"请选择",onChange:F},{default:a(()=>[(r(!0),f(y,null,h(l(i),(e,V)=>(r(),g(n,{key:V,label:e.title,value:e.field},{default:a(()=>[d("span",D,u(e.field),1),d("span",R,u(e.title),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])])}}});export{L as _}; diff --git a/web/dist/assets/authFunction.Br9oRcVU.js b/web/dist/assets/authFunction.CZ5a1pu0.js similarity index 33% rename from web/dist/assets/authFunction.Br9oRcVU.js rename to web/dist/assets/authFunction.CZ5a1pu0.js index 10e1dff678..30dac2b64c 100644 --- a/web/dist/assets/authFunction.Br9oRcVU.js +++ b/web/dist/assets/authFunction.CZ5a1pu0.js @@ -1 +1 @@ -import{H as s}from"./index.CkCcWuPb.js";function a(t){return s().data.some(o=>o===t)}export{a}; +import{B as s}from"./index.XK2ik2qb.js";function a(t){return s().data.some(o=>o===t)}export{a}; diff --git a/web/dist/assets/bakindex.DQYhiPKZ.js b/web/dist/assets/bakindex.DQYhiPKZ.js new file mode 100644 index 0000000000..393deba68a --- /dev/null +++ b/web/dist/assets/bakindex.DQYhiPKZ.js @@ -0,0 +1 @@ +import{i as z,L as u}from"./echarts.8mhZIf8A.js";import{d as H,g as x,T as M,z as K,x as Y,a1 as G,C as W,D as S,y as V,h as D,a as g,o as d,k as n,w as i,G as N,H as B,b as I,f,e as o,K as p,n as y}from"./vue.DmuWcDrn.js";import{O as X,u as Z}from"./index.XK2ik2qb.js";import{_ as Q}from"./_plugin-vue_export-helper.DlAUqK2U.js";let t={homeChartOne:null,homeChartTwo:null,homeCharThree:null,dispose:[null,"",void 0]};const J=H({name:"home",setup(){const c=x(),m=x(),b=x(),A=X(),T=Z(),{themeConfig:w}=M(T),{isTagsViewCurrenFull:r}=M(A),e=K({homeOne:[{num1:"125,12",num2:"-12.32",num3:"订单统计信息",num4:"fa fa-meetup",color1:"#FF6462",color2:"--next-color-primary-lighter",color3:"--el-color-primary"},{num1:"653,33",num2:"+42.32",num3:"月度计划信息",num4:"iconfont icon-ditu",color1:"#6690F9",color2:"--next-color-success-lighter",color3:"--el-color-success"},{num1:"125,65",num2:"+17.32",num3:"年度计划信息",num4:"iconfont icon-zaosheng",color1:"#6690F9",color2:"--next-color-warning-lighter",color3:"--el-color-warning"},{num1:"520,43",num2:"-10.01",num3:"访问统计信息",num4:"fa fa-github-alt",color1:"#FF6462",color2:"--next-color-danger-lighter",color3:"--el-color-danger"}],homeThree:[{icon:"iconfont icon-yangan",label:"浅粉红",value:"2.1%OBS/M",iconColor:"#F72B3F"},{icon:"iconfont icon-wendu",label:"深红(猩红)",value:"30℃",iconColor:"#91BFF8"},{icon:"iconfont icon-shidu",label:"淡紫红",value:"57%RH",iconColor:"#88D565"},{icon:"iconfont icon-shidu",label:"弱紫罗兰红",value:"107w",iconColor:"#88D565"},{icon:"iconfont icon-zaosheng",label:"中紫罗兰红",value:"57DB",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"紫罗兰",value:"57PV",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"暗紫罗兰",value:"517Cpd",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"幽灵白",value:"12kg",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"海军蓝",value:"64fm",iconColor:"#FBD4A0"}],myCharts:[],charts:{theme:"",bgColor:"",color:"#303133"}}),s=()=>{t.dispose.some(h=>h===t.homeChartOne)||t.homeChartOne.dispose(),t.homeChartOne=z(c.value,e.charts.theme);const a={backgroundColor:e.charts.bgColor,title:{text:"政策补贴额度",x:"left",textStyle:{fontSize:"15",color:e.charts.color}},grid:{top:70,right:20,bottom:30,left:30},tooltip:{trigger:"axis"},legend:{data:["预购队列","最新成交价"],right:0},xAxis:{data:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]},yAxis:[{type:"value",name:"价格",splitLine:{show:!0,lineStyle:{type:"dashed",color:"#f5f5f5"}}}],series:[{name:"预购队列",type:"line",symbolSize:6,symbol:"circle",smooth:!0,data:[0,41.1,30.4,65.1,53.3,53.3,53.3,41.1,30.4,65.1,53.3,10],lineStyle:{color:"#fe9a8b"},itemStyle:{color:"#fe9a8b",borderColor:"#fe9a8b"},areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"#fe9a8bb3"},{offset:1,color:"#fe9a8b03"}])}},{name:"最新成交价",type:"line",symbolSize:6,symbol:"circle",smooth:!0,data:[0,24.1,7.2,15.5,42.4,42.4,42.4,24.1,7.2,15.5,42.4,0],lineStyle:{color:"#9E87FF"},itemStyle:{color:"#9E87FF",borderColor:"#9E87FF"},areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"#9E87FFb3"},{offset:1,color:"#9E87FF03"}])},emphasis:{itemStyle:{color:{type:"radial",x:.5,y:.5,r:.5,colorStops:[{offset:0,color:"#9E87FF"},{offset:.4,color:"#9E87FF"},{offset:.5,color:"#fff"},{offset:.7,color:"#fff"},{offset:.8,color:"#fff"},{offset:1,color:"#fff"}]},borderColor:"#9E87FF",borderWidth:2}}}]};t.homeChartOne.setOption(a),e.myCharts.push(t.homeChartOne)},l=()=>{t.dispose.some(F=>F===t.homeChartTwo)||t.homeChartTwo.dispose(),t.homeChartTwo=z(m.value,e.charts.theme);for(var a=["房屋及结构物","专用设备","通用设备","文物和陈列品","图书、档案"],h=[34.2,38.87,17.88,9.05,2.05],E=[],v=0;v {c}%"},graphic:{elements:[{type:"image",z:-1,style:{image:w.value.isIsDark?"":"data:image/png;base64,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",width:230,height:230},left:"16.5%",top:"center"}]},legend:{type:"scroll",orient:"vertical",right:"0%",left:"65%",top:"center",itemWidth:14,itemHeight:14,data:a,textStyle:{rich:{name:{fontSize:14,fontWeight:400,width:200,height:35,padding:[0,0,0,60],color:e.charts.color},rate:{fontSize:15,fontWeight:500,height:35,width:40,padding:[0,0,0,30],color:e.charts.color}}}},series:[{type:"pie",radius:["82",w.value.isIsDark?"50":"102"],center:["32%","50%"],itemStyle:{color:function(F){return L[F.dataIndex]}},label:{show:!1},labelLine:{show:!1},data:E}]};t.homeChartTwo.setOption(O),e.myCharts.push(t.homeChartTwo)},P=()=>{t.dispose.some(h=>h===t.homeCharThree)||t.homeCharThree.dispose(),t.homeCharThree=z(b.value,e.charts.theme);const a={backgroundColor:e.charts.bgColor,title:{text:"地热开发利用",x:"left",textStyle:{fontSize:"15",color:e.charts.color}},tooltip:{trigger:"axis"},legend:{data:["供温","回温","压力值(Mpa)"],right:0},grid:{top:70,right:80,bottom:30,left:80},xAxis:[{type:"category",data:["1km","2km","3km","4km","5km","6km"],boundaryGap:!0,axisTick:{show:!1}}],yAxis:[{name:"供回温度(℃)",nameLocation:"middle",nameTextStyle:{padding:[3,4,50,6]},splitLine:{show:!0,lineStyle:{type:"dashed",color:"#f5f5f5"}},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:e.charts.color,formatter:"{value} "}},{name:"压力值(Mpa)",nameLocation:"middle",nameTextStyle:{padding:[50,4,5,6]},splitLine:{show:!1},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:e.charts.color,formatter:"{value} "}}],series:[{name:"供温",type:"line",smooth:!0,showSymbol:!0,symbol:"path://M150 0 L80 175 L250 75 L50 75 L220 175 Z",symbolSize:12,yAxisIndex:0,areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(250,180,101,0.3)"},{offset:1,color:"rgba(250,180,101,0)"}]),shadowColor:"rgba(250,180,101,0.2)",shadowBlur:20},itemStyle:{color:"#FF8000"},data:[{value:1,stationName:"s1"},{value:3,stationName:"s2"},{value:4,stationName:"s3"},{value:9,stationName:"s4"},{value:3,stationName:"s5"},{value:2,stationName:"s6"}]},{name:"回温",type:"line",smooth:!0,showSymbol:!0,symbol:"emptyCircle",symbolSize:12,yAxisIndex:0,areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(199, 237, 250,0.5)"},{offset:1,color:"rgba(199, 237, 250,0.2)"}],!1)},itemStyle:{color:"#3bbc86"},data:[{value:31,stationName:"s1"},{value:36,stationName:"s2"},{value:54,stationName:"s3"},{value:24,stationName:"s4"},{value:73,stationName:"s5"},{value:22,stationName:"s6"}]},{name:"压力值(Mpa)",type:"bar",barWidth:30,yAxisIndex:1,itemStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(108,80,243,0.3)"},{offset:1,color:"rgba(108,80,243,0)"}]),borderRadius:[30,30,0,0]},data:[{value:11,stationName:"s1"},{value:34,stationName:"s2"},{value:54,stationName:"s3"},{value:39,stationName:"s4"},{value:63,stationName:"s5"},{value:24,stationName:"s6"}]}]};t.homeCharThree.setOption(a),e.myCharts.push(t.homeCharThree)},C=()=>{S(()=>{for(let a=0;a{e.myCharts[a].resize()},a*1e3)})},R=()=>{window.addEventListener("resize",C)};return Y(()=>{R()}),G(()=>{C()}),W(()=>r.value,()=>{C()}),W(()=>w.value.isIsDark,a=>{S(()=>{e.charts.theme=a?"dark":"",e.charts.bgColor=a?"transparent":"",e.charts.color=a?"#dadada":"#303133",setTimeout(()=>{s()},500),setTimeout(()=>{l()},700),setTimeout(()=>{P()},1e3)})},{deep:!0,immediate:!0}),{homeLineRef:c,homePieRef:m,homeBarRef:b,...V(e)}}}),k={class:"home-container"},q={class:"home-card-item flex"},j={class:"flex-auto"},U={class:"font30"},_={class:"mt10"},$={class:"home-card-item"},ee={style:{height:"100%"},ref:"homeLineRef"},oe={class:"home-card-item"},te={style:{height:"100%"},ref:"homePieRef"},ae={class:"home-card-item"},se={class:"home-monitor"},le={class:"flex-warp"},ie={class:"flex-margin"},re={class:"pl5"},ne={class:"mt10"},ce={class:"home-card-item"},me={style:{height:"100%"},ref:"homeBarRef"};function he(c,m,b,A,T,w){const r=D("el-col"),e=D("el-row");return d(),g("div",k,[n(e,{gutter:15,class:"home-card-one mb15"},{default:i(()=>[(d(!0),g(N,null,B(c.homeOne,(s,l)=>(d(),I(r,{xs:24,sm:12,md:12,lg:6,xl:6,key:l,class:f({"home-media home-media-lg":l>1,"home-media-sm":l===1})},{default:i(()=>[o("div",q,[o("div",{class:f(["flex-margin flex w100",` home-one-animation${l}`])},[o("div",j,[o("span",U,p(s.num1),1),o("span",{class:"ml5 font16",style:y({color:s.color1})},p(s.num2)+"%",5),o("div",_,p(s.num3),1)]),o("div",{class:"home-card-item-icon flex",style:y({background:`var(${s.color2})`})},[o("i",{class:f(["flex-margin font32",s.num4]),style:y({color:`var(${s.color3})`})},null,6)],4)],2)])]),_:2},1032,["class"]))),128))]),_:1}),n(e,{gutter:15,class:"home-card-two mb15"},{default:i(()=>[n(r,{xs:24,sm:14,md:14,lg:16,xl:16},{default:i(()=>[o("div",$,[o("div",ee,null,512)])]),_:1}),n(r,{xs:24,sm:10,md:10,lg:8,xl:8,class:"home-media"},{default:i(()=>[o("div",oe,[o("div",te,null,512)])]),_:1})]),_:1}),n(e,{gutter:15,class:"home-card-three"},{default:i(()=>[n(r,{xs:24,sm:10,md:10,lg:8,xl:8},{default:i(()=>[o("div",ae,[m[0]||(m[0]=o("div",{class:"home-card-item-title"},"快捷导航工具",-1)),o("div",se,[o("div",le,[(d(!0),g(N,null,B(c.homeThree,(s,l)=>(d(),g("div",{class:"flex-warp-item",key:l},[o("div",{class:f(["flex-warp-item-box",`home-animation${l}`])},[o("div",ie,[o("i",{class:f(s.icon),style:y({color:s.iconColor})},null,6),o("span",re,p(s.label),1),o("div",ne,p(s.value),1)])],2)]))),128))])])])]),_:1}),n(r,{xs:24,sm:14,md:14,lg:16,xl:16,class:"home-media"},{default:i(()=>[o("div",ce,[o("div",me,null,512)])]),_:1})]),_:1})])}const we=Q(J,[["render",he],["__scopeId","data-v-36645091"]]);export{we as default}; diff --git a/web/dist/assets/bakindex.PZnjOQZJ.js b/web/dist/assets/bakindex.PZnjOQZJ.js deleted file mode 100644 index 7956c64b8b..0000000000 --- a/web/dist/assets/bakindex.PZnjOQZJ.js +++ /dev/null @@ -1 +0,0 @@ -import{i as x,L as u}from"./echarts.8mhZIf8A.js";import{w as H,D as z,aR as M,af as Y,O as K,ag as G,H as W,P as S,ax as V,aA as D,x as g,y as d,a7 as n,a0 as i,a6 as N,aq as P,$ as I,Y as f,z as o,a5 as p,X as y}from"./vue.Cw4Y52yh.js";import{b as X,u as Z}from"./index.CkCcWuPb.js";import{_ as Q}from"./_plugin-vue_export-helper.DlAUqK2U.js";let t={homeChartOne:null,homeChartTwo:null,homeCharThree:null,dispose:[null,"",void 0]};const J=H({name:"home",setup(){const c=z(),m=z(),b=z(),A=X(),T=Z(),{themeConfig:w}=M(T),{isTagsViewCurrenFull:r}=M(A),e=Y({homeOne:[{num1:"125,12",num2:"-12.32",num3:"订单统计信息",num4:"fa fa-meetup",color1:"#FF6462",color2:"--next-color-primary-lighter",color3:"--el-color-primary"},{num1:"653,33",num2:"+42.32",num3:"月度计划信息",num4:"iconfont icon-ditu",color1:"#6690F9",color2:"--next-color-success-lighter",color3:"--el-color-success"},{num1:"125,65",num2:"+17.32",num3:"年度计划信息",num4:"iconfont icon-zaosheng",color1:"#6690F9",color2:"--next-color-warning-lighter",color3:"--el-color-warning"},{num1:"520,43",num2:"-10.01",num3:"访问统计信息",num4:"fa fa-github-alt",color1:"#FF6462",color2:"--next-color-danger-lighter",color3:"--el-color-danger"}],homeThree:[{icon:"iconfont icon-yangan",label:"浅粉红",value:"2.1%OBS/M",iconColor:"#F72B3F"},{icon:"iconfont icon-wendu",label:"深红(猩红)",value:"30℃",iconColor:"#91BFF8"},{icon:"iconfont icon-shidu",label:"淡紫红",value:"57%RH",iconColor:"#88D565"},{icon:"iconfont icon-shidu",label:"弱紫罗兰红",value:"107w",iconColor:"#88D565"},{icon:"iconfont icon-zaosheng",label:"中紫罗兰红",value:"57DB",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"紫罗兰",value:"57PV",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"暗紫罗兰",value:"517Cpd",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"幽灵白",value:"12kg",iconColor:"#FBD4A0"},{icon:"iconfont icon-zaosheng",label:"海军蓝",value:"64fm",iconColor:"#FBD4A0"}],myCharts:[],charts:{theme:"",bgColor:"",color:"#303133"}}),s=()=>{t.dispose.some(h=>h===t.homeChartOne)||t.homeChartOne.dispose(),t.homeChartOne=x(c.value,e.charts.theme);const a={backgroundColor:e.charts.bgColor,title:{text:"政策补贴额度",x:"left",textStyle:{fontSize:"15",color:e.charts.color}},grid:{top:70,right:20,bottom:30,left:30},tooltip:{trigger:"axis"},legend:{data:["预购队列","最新成交价"],right:0},xAxis:{data:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]},yAxis:[{type:"value",name:"价格",splitLine:{show:!0,lineStyle:{type:"dashed",color:"#f5f5f5"}}}],series:[{name:"预购队列",type:"line",symbolSize:6,symbol:"circle",smooth:!0,data:[0,41.1,30.4,65.1,53.3,53.3,53.3,41.1,30.4,65.1,53.3,10],lineStyle:{color:"#fe9a8b"},itemStyle:{color:"#fe9a8b",borderColor:"#fe9a8b"},areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"#fe9a8bb3"},{offset:1,color:"#fe9a8b03"}])}},{name:"最新成交价",type:"line",symbolSize:6,symbol:"circle",smooth:!0,data:[0,24.1,7.2,15.5,42.4,42.4,42.4,24.1,7.2,15.5,42.4,0],lineStyle:{color:"#9E87FF"},itemStyle:{color:"#9E87FF",borderColor:"#9E87FF"},areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"#9E87FFb3"},{offset:1,color:"#9E87FF03"}])},emphasis:{itemStyle:{color:{type:"radial",x:.5,y:.5,r:.5,colorStops:[{offset:0,color:"#9E87FF"},{offset:.4,color:"#9E87FF"},{offset:.5,color:"#fff"},{offset:.7,color:"#fff"},{offset:.8,color:"#fff"},{offset:1,color:"#fff"}]},borderColor:"#9E87FF",borderWidth:2}}}]};t.homeChartOne.setOption(a),e.myCharts.push(t.homeChartOne)},l=()=>{t.dispose.some(F=>F===t.homeChartTwo)||t.homeChartTwo.dispose(),t.homeChartTwo=x(m.value,e.charts.theme);for(var a=["房屋及结构物","专用设备","通用设备","文物和陈列品","图书、档案"],h=[34.2,38.87,17.88,9.05,2.05],E=[],v=0;v {c}%"},graphic:{elements:[{type:"image",z:-1,style:{image:w.value.isIsDark?"":"data:image/png;base64,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",width:230,height:230},left:"16.5%",top:"center"}]},legend:{type:"scroll",orient:"vertical",right:"0%",left:"65%",top:"center",itemWidth:14,itemHeight:14,data:a,textStyle:{rich:{name:{fontSize:14,fontWeight:400,width:200,height:35,padding:[0,0,0,60],color:e.charts.color},rate:{fontSize:15,fontWeight:500,height:35,width:40,padding:[0,0,0,30],color:e.charts.color}}}},series:[{type:"pie",radius:["82",w.value.isIsDark?"50":"102"],center:["32%","50%"],itemStyle:{color:function(F){return L[F.dataIndex]}},label:{show:!1},labelLine:{show:!1},data:E}]};t.homeChartTwo.setOption(O),e.myCharts.push(t.homeChartTwo)},B=()=>{t.dispose.some(h=>h===t.homeCharThree)||t.homeCharThree.dispose(),t.homeCharThree=x(b.value,e.charts.theme);const a={backgroundColor:e.charts.bgColor,title:{text:"地热开发利用",x:"left",textStyle:{fontSize:"15",color:e.charts.color}},tooltip:{trigger:"axis"},legend:{data:["供温","回温","压力值(Mpa)"],right:0},grid:{top:70,right:80,bottom:30,left:80},xAxis:[{type:"category",data:["1km","2km","3km","4km","5km","6km"],boundaryGap:!0,axisTick:{show:!1}}],yAxis:[{name:"供回温度(℃)",nameLocation:"middle",nameTextStyle:{padding:[3,4,50,6]},splitLine:{show:!0,lineStyle:{type:"dashed",color:"#f5f5f5"}},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:e.charts.color,formatter:"{value} "}},{name:"压力值(Mpa)",nameLocation:"middle",nameTextStyle:{padding:[50,4,5,6]},splitLine:{show:!1},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:e.charts.color,formatter:"{value} "}}],series:[{name:"供温",type:"line",smooth:!0,showSymbol:!0,symbol:"path://M150 0 L80 175 L250 75 L50 75 L220 175 Z",symbolSize:12,yAxisIndex:0,areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(250,180,101,0.3)"},{offset:1,color:"rgba(250,180,101,0)"}]),shadowColor:"rgba(250,180,101,0.2)",shadowBlur:20},itemStyle:{color:"#FF8000"},data:[{value:1,stationName:"s1"},{value:3,stationName:"s2"},{value:4,stationName:"s3"},{value:9,stationName:"s4"},{value:3,stationName:"s5"},{value:2,stationName:"s6"}]},{name:"回温",type:"line",smooth:!0,showSymbol:!0,symbol:"emptyCircle",symbolSize:12,yAxisIndex:0,areaStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(199, 237, 250,0.5)"},{offset:1,color:"rgba(199, 237, 250,0.2)"}],!1)},itemStyle:{color:"#3bbc86"},data:[{value:31,stationName:"s1"},{value:36,stationName:"s2"},{value:54,stationName:"s3"},{value:24,stationName:"s4"},{value:73,stationName:"s5"},{value:22,stationName:"s6"}]},{name:"压力值(Mpa)",type:"bar",barWidth:30,yAxisIndex:1,itemStyle:{color:new u(0,0,0,1,[{offset:0,color:"rgba(108,80,243,0.3)"},{offset:1,color:"rgba(108,80,243,0)"}]),borderRadius:[30,30,0,0]},data:[{value:11,stationName:"s1"},{value:34,stationName:"s2"},{value:54,stationName:"s3"},{value:39,stationName:"s4"},{value:63,stationName:"s5"},{value:24,stationName:"s6"}]}]};t.homeCharThree.setOption(a),e.myCharts.push(t.homeCharThree)},C=()=>{S(()=>{for(let a=0;a{e.myCharts[a].resize()},a*1e3)})},R=()=>{window.addEventListener("resize",C)};return K(()=>{R()}),G(()=>{C()}),W(()=>r.value,()=>{C()}),W(()=>w.value.isIsDark,a=>{S(()=>{e.charts.theme=a?"dark":"",e.charts.bgColor=a?"transparent":"",e.charts.color=a?"#dadada":"#303133",setTimeout(()=>{s()},500),setTimeout(()=>{l()},700),setTimeout(()=>{B()},1e3)})},{deep:!0,immediate:!0}),{homeLineRef:c,homePieRef:m,homeBarRef:b,...V(e)}}}),k={class:"home-container"},q={class:"home-card-item flex"},j={class:"flex-auto"},U={class:"font30"},_={class:"mt10"},$={class:"home-card-item"},ee={style:{height:"100%"},ref:"homeLineRef"},oe={class:"home-card-item"},te={style:{height:"100%"},ref:"homePieRef"},ae={class:"home-card-item"},se={class:"home-monitor"},le={class:"flex-warp"},ie={class:"flex-margin"},re={class:"pl5"},ne={class:"mt10"},ce={class:"home-card-item"},me={style:{height:"100%"},ref:"homeBarRef"};function he(c,m,b,A,T,w){const r=D("el-col"),e=D("el-row");return d(),g("div",k,[n(e,{gutter:15,class:"home-card-one mb15"},{default:i(()=>[(d(!0),g(N,null,P(c.homeOne,(s,l)=>(d(),I(r,{xs:24,sm:12,md:12,lg:6,xl:6,key:l,class:f({"home-media home-media-lg":l>1,"home-media-sm":l===1})},{default:i(()=>[o("div",q,[o("div",{class:f(["flex-margin flex w100",` home-one-animation${l}`])},[o("div",j,[o("span",U,p(s.num1),1),o("span",{class:"ml5 font16",style:y({color:s.color1})},p(s.num2)+"%",5),o("div",_,p(s.num3),1)]),o("div",{class:"home-card-item-icon flex",style:y({background:`var(${s.color2})`})},[o("i",{class:f(["flex-margin font32",s.num4]),style:y({color:`var(${s.color3})`})},null,6)],4)],2)])]),_:2},1032,["class"]))),128))]),_:1}),n(e,{gutter:15,class:"home-card-two mb15"},{default:i(()=>[n(r,{xs:24,sm:14,md:14,lg:16,xl:16},{default:i(()=>[o("div",$,[o("div",ee,null,512)])]),_:1}),n(r,{xs:24,sm:10,md:10,lg:8,xl:8,class:"home-media"},{default:i(()=>[o("div",oe,[o("div",te,null,512)])]),_:1})]),_:1}),n(e,{gutter:15,class:"home-card-three"},{default:i(()=>[n(r,{xs:24,sm:10,md:10,lg:8,xl:8},{default:i(()=>[o("div",ae,[m[0]||(m[0]=o("div",{class:"home-card-item-title"},"快捷导航工具",-1)),o("div",se,[o("div",le,[(d(!0),g(N,null,P(c.homeThree,(s,l)=>(d(),g("div",{class:"flex-warp-item",key:l},[o("div",{class:f(["flex-warp-item-box",`home-animation${l}`])},[o("div",ie,[o("i",{class:f(s.icon),style:y({color:s.iconColor})},null,6),o("span",re,p(s.label),1),o("div",ne,p(s.value),1)])],2)]))),128))])])])]),_:1}),n(r,{xs:24,sm:14,md:14,lg:16,xl:16,class:"home-media"},{default:i(()=>[o("div",ce,[o("div",me,null,512)])]),_:1})]),_:1})])}const we=Q(J,[["render",he],["__scopeId","data-v-36645091"]]);export{we as default}; diff --git a/web/dist/assets/breadcrumb.CtadGDYd.js b/web/dist/assets/breadcrumb.CtadGDYd.js new file mode 100644 index 0000000000..a611c45078 --- /dev/null +++ b/web/dist/assets/breadcrumb.CtadGDYd.js @@ -0,0 +1 @@ +import{d as L,T as k,s as F,v as R,z as $,c as E,x as M,$ as z,h as m,a as i,J as d,o as r,k as b,u as p,w as h,U as G,G as U,H as D,b as f,K as _,Y as H,m as J}from"./vue.DmuWcDrn.js";import{M as K,u as Q,Q as Y,L as y}from"./index.XK2ik2qb.js";import{_ as j}from"./_plugin-vue_export-helper.DlAUqK2U.js";const q={key:0,class:"layout-navbars-breadcrumb"},A={key:0,class:"layout-navbars-breadcrumb-span"},O={key:1},P={key:2},W=["onClick"],X=L({name:"layoutBreadcrumb"}),Z=L({...X,setup(ee){const B=K(),w=Q(),{themeConfig:o}=k(w),{routesList:g}=k(B),c=F(),v=R(),e=$({breadcrumbList:[],routeSplit:[],routeSplitFirst:"",routeSplitIndex:1}),I=E(()=>{u(c.path);const{layout:t,isBreadcrumb:a}=o.value;return t==="classic"||t==="transverse"?!1:!!a}),x=t=>{const{redirect:a,path:n}=t;a?v.push(a):v.push(n)},N=()=>{o.value.isCollapse=!o.value.isCollapse,T()},T=()=>{y.remove("themeConfig"),y.set("themeConfig",o.value)},C=t=>{t.forEach(a=>{e.routeSplit.forEach((n,S,l)=>{e.routeSplitFirst===a.path&&(e.routeSplitFirst+=`/${l[e.routeSplitIndex]}`,e.breadcrumbList.push(a),e.routeSplitIndex++,a.children&&C(a.children))})})},u=t=>{if(!o.value.isBreadcrumb)return!1;e.breadcrumbList=[g.value[0]],e.routeSplit=t.split("/"),e.routeSplit.shift(),e.routeSplitFirst=`/${e.routeSplit[0]}`,e.routeSplitIndex=1,C(g.value),(c.name==="home"||c.name==="notFound"&&e.breadcrumbList.length>1)&&e.breadcrumbList.shift(),e.breadcrumbList.length>0&&(e.breadcrumbList[e.breadcrumbList.length-1].meta.tagsViewName=Y.setTagsViewNameI18n(c))};return M(()=>{u(c.path)}),z(t=>{u(t.path)}),(t,a)=>{const n=m("SvgIcon"),S=m("el-breadcrumb-item"),l=m("el-breadcrumb");return I.value?(r(),i("div",q,[b(n,{class:"layout-navbars-breadcrumb-icon",name:p(o).isCollapse?"ele-Expand":"ele-Fold",size:16,onClick:N},null,8,["name"]),b(l,{class:"layout-navbars-breadcrumb-hide"},{default:h(()=>[b(G,{name:"breadcrumb"},{default:h(()=>[(r(!0),i(U,null,D(e.breadcrumbList,(s,V)=>(r(),f(S,{key:s.meta.tagsViewName?s.meta.tagsViewName:s.meta.title},{default:h(()=>[V===e.breadcrumbList.length-1?(r(),i("span",A,[p(o).isBreadcrumbIcon?(r(),f(n,{key:0,name:s.meta.icon,class:"layout-navbars-breadcrumb-iconfont"},null,8,["name"])):d("",!0),s.meta.tagsViewName?(r(),i("div",P,_(s.meta.tagsViewName),1)):(r(),i("div",O,_(t.$t(s.meta.title)),1))])):(r(),i("a",{key:1,onClick:H(te=>x(s),["prevent"])},[p(o).isBreadcrumbIcon?(r(),f(n,{key:0,name:s.meta.icon,class:"layout-navbars-breadcrumb-iconfont"},null,8,["name"])):d("",!0),J(_(t.$t(s.meta.title)),1)],8,W))]),_:2},1024))),128))]),_:1})]),_:1})])):d("",!0)}}}),oe=j(Z,[["__scopeId","data-v-6ee1e737"]]);export{oe as default}; diff --git a/web/dist/assets/breadcrumb.wqwFczeO.js b/web/dist/assets/breadcrumb.wqwFczeO.js deleted file mode 100644 index ac65a913f0..0000000000 --- a/web/dist/assets/breadcrumb.wqwFczeO.js +++ /dev/null @@ -1 +0,0 @@ -import{w as k,aR as S,aQ as T,aU as R,af as $,F as E,O as G,aW as M,aA as m,x as i,a2 as d,y as r,a7 as b,G as p,a0 as f,aF as U,a6 as q,aq as z,$ as h,a5 as _,ad as A,a4 as D}from"./vue.Cw4Y52yh.js";import{ae as O,u as Q,o as W,L}from"./index.CkCcWuPb.js";import{_ as j}from"./_plugin-vue_export-helper.DlAUqK2U.js";const H={key:0,class:"layout-navbars-breadcrumb"},J={key:0,class:"layout-navbars-breadcrumb-span"},K={key:1},P={key:2},X=["onClick"],Y=k({name:"layoutBreadcrumb"}),Z=k({...Y,setup(ee){const B=O(),w=Q(),{themeConfig:o}=S(w),{routesList:g}=S(B),c=T(),C=R(),e=$({breadcrumbList:[],routeSplit:[],routeSplitFirst:"",routeSplitIndex:1}),I=E(()=>{u(c.path);const{layout:t,isBreadcrumb:a}=o.value;return t==="classic"||t==="transverse"?!1:!!a}),x=t=>{const{redirect:a,path:n}=t;a?C.push(a):C.push(n)},F=()=>{o.value.isCollapse=!o.value.isCollapse,N()},N=()=>{L.remove("themeConfig"),L.set("themeConfig",o.value)},v=t=>{t.forEach(a=>{e.routeSplit.forEach((n,y,l)=>{e.routeSplitFirst===a.path&&(e.routeSplitFirst+=`/${l[e.routeSplitIndex]}`,e.breadcrumbList.push(a),e.routeSplitIndex++,a.children&&v(a.children))})})},u=t=>{if(!o.value.isBreadcrumb)return!1;e.breadcrumbList=[g.value[0]],e.routeSplit=t.split("/"),e.routeSplit.shift(),e.routeSplitFirst=`/${e.routeSplit[0]}`,e.routeSplitIndex=1,v(g.value),(c.name==="home"||c.name==="notFound"&&e.breadcrumbList.length>1)&&e.breadcrumbList.shift(),e.breadcrumbList.length>0&&(e.breadcrumbList[e.breadcrumbList.length-1].meta.tagsViewName=W.setTagsViewNameI18n(c))};return G(()=>{u(c.path)}),M(t=>{u(t.path)}),(t,a)=>{const n=m("SvgIcon"),y=m("el-breadcrumb-item"),l=m("el-breadcrumb");return I.value?(r(),i("div",H,[b(n,{class:"layout-navbars-breadcrumb-icon",name:p(o).isCollapse?"ele-Expand":"ele-Fold",size:16,onClick:F},null,8,["name"]),b(l,{class:"layout-navbars-breadcrumb-hide"},{default:f(()=>[b(U,{name:"breadcrumb"},{default:f(()=>[(r(!0),i(q,null,z(e.breadcrumbList,(s,V)=>(r(),h(y,{key:s.meta.tagsViewName?s.meta.tagsViewName:s.meta.title},{default:f(()=>[V===e.breadcrumbList.length-1?(r(),i("span",J,[p(o).isBreadcrumbIcon?(r(),h(n,{key:0,name:s.meta.icon,class:"layout-navbars-breadcrumb-iconfont"},null,8,["name"])):d("",!0),s.meta.tagsViewName?(r(),i("div",P,_(s.meta.tagsViewName),1)):(r(),i("div",K,_(t.$t(s.meta.title)),1))])):(r(),i("a",{key:1,onClick:A(te=>x(s),["prevent"])},[p(o).isBreadcrumbIcon?(r(),h(n,{key:0,name:s.meta.icon,class:"layout-navbars-breadcrumb-iconfont"},null,8,["name"])):d("",!0),D(_(t.$t(s.meta.title)),1)],8,X))]),_:2},1024))),128))]),_:1})]),_:1})])):d("",!0)}}}),oe=j(Z,[["__scopeId","data-v-6ee1e737"]]);export{oe as default}; diff --git a/web/dist/assets/changePwd.37FoB_fi.js b/web/dist/assets/changePwd.37FoB_fi.js deleted file mode 100644 index 27c558bcdc..0000000000 --- a/web/dist/assets/changePwd.37FoB_fi.js +++ /dev/null @@ -1 +0,0 @@ -import{w as B,aR as S,aQ as b,aU as q,af as k,D as T,F as A,O as D,ax as N,aA as u,x as R,y as V,a7 as s,a2 as M,a0 as o,z as y,Y as $,a5 as z,ao as O,a6 as K}from"./vue.Cw4Y52yh.js";import{v as j,u as L,c as x,R as J,d as Q,f as Y,T as Z,U as G,A as E,F as H,E as W,N as X}from"./index.CkCcWuPb.js";import{a as ee}from"./formatTime.in1fXasu.js";import{a as se}from"./api.jJ3Ot51X.js";import{M as I}from"./md5.DLPczxzP.js";import{_ as oe}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ae=B({name:"changePwd",setup(){const{t:e}=j.useI18n(),a=L(),{themeConfig:F}=S(a),{userInfos:U}=S(x()),d=b(),h=q(),n=k({isShowPassword:!1,ruleForm:{username:"",password:"",password_regain:""},loading:{signIn:!1}}),p=k({username:[{required:!0,message:"请填写账号",trigger:"blur"}],password:[{required:!0,message:"请填写密码",trigger:"blur"},{validator:(m,r,t)=>{const w=new RegExp("(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}");r===""?t(new Error("请输入密码")):w.test(r)?(n.ruleForm.password!==""&&i.value.validateField("password"),t()):t(new Error("您的密码复杂度太低(密码中必须包含字母、数字)"))},trigger:"blur"}],password_regain:[{required:!0,message:"请填写密码",trigger:"blur"},{validator:(m,r,t)=>{r===""?t(new Error("请再次输入密码")):r!==n.ruleForm.password?t(new Error("两次输入密码不一致!")):t()},trigger:"blur"}]}),i=T(),f=A(()=>ee(new Date)),_=async()=>{window.open(Y("/api/system/apply_for_trial/"))},l=async()=>{i.value&&await i.value.validate(m=>{m?se({...n.ruleForm,password:I.hashStr(n.ruleForm.password),password_regain:I.hashStr(n.ruleForm.password_regain)}).then(r=>{r.code===2e3&&(F.value.isRequestRoutes?(G(),C()):(Z(),C()))}).catch(r=>{E("登录失败")}):E("请填写登录信息")})},C=()=>{var t,w,v,P;H().getSystemDictionarys();let m=f.value;(t=d.query)!=null&&t.redirect?h.push({path:(w=d.query)==null?void 0:w.redirect,query:Object.keys((v=d.query)==null?void 0:v.params).length>0?JSON.parse((P=d.query)==null?void 0:P.params):""}):h.push("/"),n.loading.signIn=!0;const r=e("message.signInText");W.success(`${m},${r}`),X.start()};return D(()=>{n.ruleForm.username=J.get("username"),Q().getSystemConfigs()}),{loginClick:l,loginSuccess:C,state:n,formRef:i,rules:p,applyBtnClick:_,showApply:()=>window.location.href.indexOf("public")!=-1,...N(n)}}}),ne={key:0,style:{"text-align":"center"}};function re(e,a,F,U,d,h){const n=u("ele-User"),c=u("el-icon"),g=u("el-input"),p=u("el-form-item"),i=u("ele-Unlock"),f=u("el-button"),_=u("el-form");return V(),R(K,null,[s(_,{ref:"formRef",size:"large",class:"login-content-form",model:e.state.ruleForm,rules:e.rules,onKeyup:O(e.loginClick,["enter"])},{default:o(()=>[s(p,{class:"login-animation1",prop:"username"},{default:o(()=>[s(g,{type:"text",placeholder:e.$t("message.account.accountPlaceholder1"),readonly:"",modelValue:e.ruleForm.username,"onUpdate:modelValue":a[0]||(a[0]=l=>e.ruleForm.username=l),clearable:"",autocomplete:"off"},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(n)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation2",prop:"password"},{default:o(()=>[s(g,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder4"),modelValue:e.ruleForm.password,"onUpdate:modelValue":a[2]||(a[2]=l=>e.ruleForm.password=l)},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(i)]),_:1})]),suffix:o(()=>[y("i",{class:$(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:a[1]||(a[1]=l=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation3",prop:"password_regain"},{default:o(()=>[s(g,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder5"),modelValue:e.ruleForm.password_regain,"onUpdate:modelValue":a[4]||(a[4]=l=>e.ruleForm.password_regain=l)},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(i)]),_:1})]),suffix:o(()=>[y("i",{class:$(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:a[3]||(a[3]=l=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation4"},{default:o(()=>[s(f,{type:"primary",class:"login-content-submit",round:"",onClick:e.loginClick,loading:e.loading.signIn},{default:o(()=>[y("span",null,z(e.$t("message.account.accountBtnText")),1)]),_:1},8,["onClick","loading"])]),_:1})]),_:1},8,["model","rules","onKeyup"]),e.showApply()?(V(),R("div",ne,[s(f,{class:"login-content-apply",link:"",type:"primary",plain:"",round:"",onClick:e.applyBtnClick},{default:o(()=>a[5]||(a[5]=[y("span",null,"申请试用",-1)])),_:1},8,["onClick"])])):M("",!0)],64)}const ce=oe(ae,[["render",re],["__scopeId","data-v-deeb965b"]]);export{ce as default}; diff --git a/web/dist/assets/changePwd.BniOkxQT.js b/web/dist/assets/changePwd.BniOkxQT.js new file mode 100644 index 0000000000..fd5162d710 --- /dev/null +++ b/web/dist/assets/changePwd.BniOkxQT.js @@ -0,0 +1 @@ +import{d as E,T as F,s as q,v as T,z as k,g as U,c as D,x as N,y as A,h as u,a as R,o as V,k as s,J as M,w as o,e as y,f as $,K as z,a0 as K,G as O}from"./vue.DmuWcDrn.js";import{a0 as j,u as G,a1 as J,a2 as L,H,g as Z,a3 as x,a4 as Q,G as I,D as W,b as X,N as Y}from"./index.XK2ik2qb.js";import{a as ee}from"./formatTime.in1fXasu.js";import{a as se}from"./api.DMCQHntY.js";import{M as b}from"./md5.DLPczxzP.js";import{_ as oe}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ae=E({name:"changePwd",setup(){const{t:e}=j.useI18n(),a=G(),{themeConfig:v}=F(a),{userInfos:B}=F(J()),d=q(),h=T(),n=k({isShowPassword:!1,ruleForm:{username:"",password:"",password_regain:""},loading:{signIn:!1}}),p=k({username:[{required:!0,message:"请填写账号",trigger:"blur"}],password:[{required:!0,message:"请填写密码",trigger:"blur"},{validator:(m,r,t)=>{const w=new RegExp("(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}");r===""?t(new Error("请输入密码")):w.test(r)?(n.ruleForm.password!==""&&i.value.validateField("password"),t()):t(new Error("您的密码复杂度太低(密码中必须包含字母、数字)"))},trigger:"blur"}],password_regain:[{required:!0,message:"请填写密码",trigger:"blur"},{validator:(m,r,t)=>{r===""?t(new Error("请再次输入密码")):r!==n.ruleForm.password?t(new Error("两次输入密码不一致!")):t()},trigger:"blur"}]}),i=U(),f=D(()=>ee(new Date)),_=async()=>{window.open(Z("/api/system/apply_for_trial/"))},l=async()=>{i.value&&await i.value.validate(m=>{m?se({...n.ruleForm,password:b.hashStr(n.ruleForm.password),password_regain:b.hashStr(n.ruleForm.password_regain)}).then(r=>{r.code===2e3&&(v.value.isRequestRoutes?(Q(),C()):(x(),C()))}).catch(r=>{I("登录失败")}):I("请填写登录信息")})},C=()=>{var t,w,P,S;W().getSystemDictionarys();let m=f.value;(t=d.query)!=null&&t.redirect?h.push({path:(w=d.query)==null?void 0:w.redirect,query:Object.keys((P=d.query)==null?void 0:P.params).length>0?JSON.parse((S=d.query)==null?void 0:S.params):""}):h.push("/"),n.loading.signIn=!0;const r=e("message.signInText");X.success(`${m},${r}`),Y.start()};return N(()=>{n.ruleForm.username=L.get("username"),H().getSystemConfigs()}),{loginClick:l,loginSuccess:C,state:n,formRef:i,rules:p,applyBtnClick:_,showApply:()=>window.location.href.indexOf("public")!=-1,...A(n)}}}),ne={key:0,style:{"text-align":"center"}};function re(e,a,v,B,d,h){const n=u("ele-User"),c=u("el-icon"),g=u("el-input"),p=u("el-form-item"),i=u("ele-Unlock"),f=u("el-button"),_=u("el-form");return V(),R(O,null,[s(_,{ref:"formRef",size:"large",class:"login-content-form",model:e.state.ruleForm,rules:e.rules,onKeyup:K(e.loginClick,["enter"])},{default:o(()=>[s(p,{class:"login-animation1",prop:"username"},{default:o(()=>[s(g,{type:"text",placeholder:e.$t("message.account.accountPlaceholder1"),readonly:"",modelValue:e.ruleForm.username,"onUpdate:modelValue":a[0]||(a[0]=l=>e.ruleForm.username=l),clearable:"",autocomplete:"off"},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(n)]),_:1})]),_:1},8,["placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation2",prop:"password"},{default:o(()=>[s(g,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder4"),modelValue:e.ruleForm.password,"onUpdate:modelValue":a[2]||(a[2]=l=>e.ruleForm.password=l)},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(i)]),_:1})]),suffix:o(()=>[y("i",{class:$(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:a[1]||(a[1]=l=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation3",prop:"password_regain"},{default:o(()=>[s(g,{type:e.isShowPassword?"text":"password",placeholder:e.$t("message.account.accountPlaceholder5"),modelValue:e.ruleForm.password_regain,"onUpdate:modelValue":a[4]||(a[4]=l=>e.ruleForm.password_regain=l)},{prefix:o(()=>[s(c,{class:"el-input__icon"},{default:o(()=>[s(i)]),_:1})]),suffix:o(()=>[y("i",{class:$(["iconfont el-input__icon login-content-password",e.isShowPassword?"icon-yincangmima":"icon-xianshimima"]),onClick:a[3]||(a[3]=l=>e.isShowPassword=!e.isShowPassword)},null,2)]),_:1},8,["type","placeholder","modelValue"])]),_:1}),s(p,{class:"login-animation4"},{default:o(()=>[s(f,{type:"primary",class:"login-content-submit",round:"",onClick:e.loginClick,loading:e.loading.signIn},{default:o(()=>[y("span",null,z(e.$t("message.account.accountBtnText")),1)]),_:1},8,["onClick","loading"])]),_:1})]),_:1},8,["model","rules","onKeyup"]),e.showApply()?(V(),R("div",ne,[s(f,{class:"login-content-apply",link:"",type:"primary",plain:"",round:"",onClick:e.applyBtnClick},{default:o(()=>a[5]||(a[5]=[y("span",null,"申请试用",-1)])),_:1},8,["onClick"])])):M("",!0)],64)}const ce=oe(ae,[["render",re],["__scopeId","data-v-deeb965b"]]);export{ce as default}; diff --git a/web/dist/assets/classic.CJq6kQh6.js b/web/dist/assets/classic.CJq6kQh6.js deleted file mode 100644 index 6423242b8a..0000000000 --- a/web/dist/assets/classic.CJq6kQh6.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.CcbNtRz7.js","assets/index.CkCcWuPb.js","assets/vue.Cw4Y52yh.js","assets/index.DvQZPXXd.css","assets/header.D3A4TWO0.js","assets/main.B3b7-7PA.js","assets/tagsView.DJSmzEFB.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/tagsView.B9nwrDkZ.css"])))=>i.map(i=>d[i]); -import{u as g,_ as e}from"./index.CkCcWuPb.js";import{w as p,D as E,aQ as L,aR as V,F as w,O as A,H as _,aA as P,$ as l,y as f,a0 as d,a7 as t,G as a,aP as o,z as k,a2 as x,P as M}from"./vue.Cw4Y52yh.js";const D={class:"flex-center layout-backtop"},O=p({name:"layoutClassic"}),H=p({...O,setup(b){const m=o(()=>e(()=>import("./aside.CcbNtRz7.js"),__vite__mapDeps([0,1,2,3]))),y=o(()=>e(()=>import("./header.D3A4TWO0.js"),__vite__mapDeps([4,1,2,3]))),v=o(()=>e(()=>import("./main.B3b7-7PA.js"),__vite__mapDeps([5,1,2,3]))),T=o(()=>e(()=>import("./tagsView.DJSmzEFB.js"),__vite__mapDeps([6,1,2,3,7,8]))),s=E(),R=L(),h=g(),{themeConfig:r}=V(h),C=w(()=>r.value.isTagsview),c=()=>{var n;(n=s.value)==null||n.layoutMainScrollbarRef.update()},i=()=>{M(()=>{setTimeout(()=>{c(),s.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return A(()=>{i()}),_(()=>R.path,()=>{i()}),_(r,()=>{c()},{deep:!0}),(n,B)=>{const u=P("el-container");return f(),l(u,{class:"layout-container flex-center"},{default:d(()=>[t(a(y)),t(u,{class:"layout-mian-height-50"},{default:d(()=>[t(a(m)),k("div",D,[C.value?(f(),l(a(T),{key:0})):x("",!0),t(a(v),{ref_key:"layoutMainRef",ref:s},null,512)])]),_:1})]),_:1})}}});export{H as default}; diff --git a/web/dist/assets/classic.DpyO9a-A.js b/web/dist/assets/classic.DpyO9a-A.js new file mode 100644 index 0000000000..c351a0e678 --- /dev/null +++ b/web/dist/assets/classic.DpyO9a-A.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.D4ng9uQr.js","assets/index.XK2ik2qb.js","assets/vue.DmuWcDrn.js","assets/index.JncG-tMh.css","assets/header.BQoAQuJ9.js","assets/main.BjGLKst8.js","assets/tagsView.C57Sgq_O.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/tagsView.B9nwrDkZ.css"])))=>i.map(i=>d[i]); +import{u as g,_ as e}from"./index.XK2ik2qb.js";import{d as p,g as E,s as L,T as V,c as k,x as w,C as _,h as x,b as l,o as d,w as f,k as t,u as o,q as a,e as A,J as M,D as b}from"./vue.DmuWcDrn.js";const D={class:"flex-center layout-backtop"},P=p({name:"layoutClassic"}),N=p({...P,setup(B){const m=a(()=>e(()=>import("./aside.D4ng9uQr.js"),__vite__mapDeps([0,1,2,3]))),y=a(()=>e(()=>import("./header.BQoAQuJ9.js"),__vite__mapDeps([4,1,2,3]))),T=a(()=>e(()=>import("./main.BjGLKst8.js"),__vite__mapDeps([5,1,2,3]))),v=a(()=>e(()=>import("./tagsView.C57Sgq_O.js"),__vite__mapDeps([6,1,2,3,7,8]))),s=E(),h=L(),R=g(),{themeConfig:r}=V(R),C=k(()=>r.value.isTagsview),c=()=>{var n;(n=s.value)==null||n.layoutMainScrollbarRef.update()},u=()=>{b(()=>{setTimeout(()=>{c(),s.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return w(()=>{u()}),_(()=>h.path,()=>{u()}),_(r,()=>{c()},{deep:!0}),(n,I)=>{const i=x("el-container");return d(),l(i,{class:"layout-container flex-center"},{default:f(()=>[t(o(y)),t(i,{class:"layout-mian-height-50"},{default:f(()=>[t(o(m)),A("div",D,[C.value?(d(),l(o(v),{key:0})):M("",!0),t(o(T),{ref_key:"layoutMainRef",ref:s},null,512)])]),_:1})]),_:1})}}});export{N as default}; diff --git a/web/dist/assets/closeFull.CzjSgIlY.js b/web/dist/assets/closeFull.CzjSgIlY.js deleted file mode 100644 index f8c81991f7..0000000000 --- a/web/dist/assets/closeFull.CzjSgIlY.js +++ /dev/null @@ -1 +0,0 @@ -import{w as s,aR as n,aA as c,x as r,a2 as u,G as _,y as i,z as m,a7 as f}from"./vue.Cw4Y52yh.js";import{b as p}from"./index.CkCcWuPb.js";import{_ as d}from"./_plugin-vue_export-helper.DlAUqK2U.js";const C={key:0,class:"layout-navbars-close-full"},v={class:"layout-navbars-close-full-icon"},g=s({name:"layoutCloseFull"}),F=s({...g,setup(V){const e=p(),{isTagsViewCurrenFull:o}=n(e),t=()=>{e.setCurrenFullscreen(!1)};return(a,b)=>{const l=c("SvgIcon");return _(o)?(i(),r("div",C,[m("div",v,[f(l,{name:"ele-Close",title:a.$t("message.tagsView.closeFullscreen"),onClick:t},null,8,["title"])])])):u("",!0)}}}),h=d(F,[["__scopeId","data-v-83ab04b1"]]);export{h as default}; diff --git a/web/dist/assets/closeFull.eiiTwLFe.js b/web/dist/assets/closeFull.eiiTwLFe.js new file mode 100644 index 0000000000..66737261b8 --- /dev/null +++ b/web/dist/assets/closeFull.eiiTwLFe.js @@ -0,0 +1 @@ +import{d as s,T as n,h as c,a as r,J as u,u as _,o as i,e as m,k as d}from"./vue.DmuWcDrn.js";import{O as f}from"./index.XK2ik2qb.js";import{_ as p}from"./_plugin-vue_export-helper.DlAUqK2U.js";const C={key:0,class:"layout-navbars-close-full"},v={class:"layout-navbars-close-full-icon"},g=s({name:"layoutCloseFull"}),F=s({...g,setup(V){const e=f(),{isTagsViewCurrenFull:o}=n(e),t=()=>{e.setCurrenFullscreen(!1)};return(a,k)=>{const l=c("SvgIcon");return _(o)?(i(),r("div",C,[m("div",v,[d(l,{name:"ele-Close",title:a.$t("message.tagsView.closeFullscreen"),onClick:t},null,8,["title"])])])):u("",!0)}}}),T=p(F,[["__scopeId","data-v-83ab04b1"]]);export{T as default}; diff --git a/web/dist/assets/columnPermission.C1SV5wrv.js b/web/dist/assets/columnPermission.Cm-b5eJD.js similarity index 85% rename from web/dist/assets/columnPermission.C1SV5wrv.js rename to web/dist/assets/columnPermission.Cm-b5eJD.js index e2752528ec..c25cf4dcaa 100644 --- a/web/dist/assets/columnPermission.C1SV5wrv.js +++ b/web/dist/assets/columnPermission.Cm-b5eJD.js @@ -1 +1 @@ -import{X as d}from"./index.CkCcWuPb.js";const r=async(n,e,s=[])=>{const t=await n();e.pagination==null&&(e.pagination={show:!0});const i=e.columns,c=["checked","_index","id","create_datetime","update_datetime"].concat(s);return d.eachTree(i,(o,a)=>{!c.includes(String(a))&&a in t.data&&(t.data[a].is_query||(o.column.show=!1,o.column.columnSetDisabled=!0),o.addForm={show:t.data[a].is_create},o.editForm={show:t.data[a].is_update})}),e};export{r as h}; +import{X as d}from"./index.XK2ik2qb.js";const r=async(n,e,s=[])=>{const t=await n();e.pagination==null&&(e.pagination={show:!0});const i=e.columns,c=["checked","_index","id","create_datetime","update_datetime"].concat(s);return d.eachTree(i,(o,a)=>{!c.includes(String(a))&&a in t.data&&(t.data[a].is_query||(o.column.show=!1,o.column.columnSetDisabled=!0),o.addForm={show:t.data[a].is_create},o.editForm={show:t.data[a].is_update})}),e};export{r as h}; diff --git a/web/dist/assets/columns.CmHaca52.js b/web/dist/assets/columns.CmHaca52.js deleted file mode 100644 index b4496d3fc5..0000000000 --- a/web/dist/assets/columns.CmHaca52.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.CcbNtRz7.js","assets/index.CkCcWuPb.js","assets/vue.Cw4Y52yh.js","assets/index.DvQZPXXd.css","assets/header.D3A4TWO0.js","assets/main.B3b7-7PA.js","assets/columnsAside.DcFcWAsf.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/columnsAside.TyXXNMHi.css"])))=>i.map(i=>d[i]); -import{u as b,_ as o}from"./index.CkCcWuPb.js";import{w as p,D as _,aQ as A,aR as E,O as w,H as i,aA as f,$ as L,y as P,a0 as r,a7 as e,G as a,aP as t,P as k}from"./vue.Cw4Y52yh.js";const M=p({name:"layoutColumns"}),x=p({...M,setup(S){const m=t(()=>o(()=>import("./aside.CcbNtRz7.js"),__vite__mapDeps([0,1,2,3]))),d=t(()=>o(()=>import("./header.D3A4TWO0.js"),__vite__mapDeps([4,1,2,3]))),y=t(()=>o(()=>import("./main.B3b7-7PA.js"),__vite__mapDeps([5,1,2,3]))),R=t(()=>o(()=>import("./columnsAside.DcFcWAsf.js"),__vite__mapDeps([6,2,1,3,7,8]))),s=_(""),n=_(),v=A(),T=b(),{themeConfig:h}=E(T),l=()=>{s.value.update(),n.value.layoutMainScrollbarRef.update()},c=()=>{k(()=>{setTimeout(()=>{l(),s.value.wrapRef.scrollTop=0,n.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return w(()=>{c()}),i(()=>v.path,()=>{c()}),i(h,()=>{l()},{deep:!0}),(D,O)=>{const C=f("el-scrollbar"),u=f("el-container");return P(),L(u,{class:"layout-container"},{default:r(()=>[e(a(R)),e(u,{class:"layout-columns-warp layout-container-view h100"},{default:r(()=>[e(a(m)),e(C,{ref_key:"layoutScrollbarRef",ref:s,class:"layout-backtop"},{default:r(()=>[e(a(d)),e(a(y),{ref_key:"layoutMainRef",ref:n},null,512)]),_:1},512)]),_:1})]),_:1})}}});export{x as default}; diff --git a/web/dist/assets/columns.CnTkmDw8.js b/web/dist/assets/columns.CnTkmDw8.js new file mode 100644 index 0000000000..497eb383c4 --- /dev/null +++ b/web/dist/assets/columns.CnTkmDw8.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.D4ng9uQr.js","assets/index.XK2ik2qb.js","assets/vue.DmuWcDrn.js","assets/index.JncG-tMh.css","assets/header.BQoAQuJ9.js","assets/main.BjGLKst8.js","assets/columnsAside.BZt6OJ0q.js","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/columnsAside.TyXXNMHi.css"])))=>i.map(i=>d[i]); +import{u as b,_ as o}from"./index.XK2ik2qb.js";import{d as p,g as _,s as E,T as k,x as w,C as i,h as f,b as A,o as L,w as r,k as e,u as t,q as a,D as M}from"./vue.DmuWcDrn.js";const S=p({name:"layoutColumns"}),I=p({...S,setup(g){const d=a(()=>o(()=>import("./aside.D4ng9uQr.js"),__vite__mapDeps([0,1,2,3]))),m=a(()=>o(()=>import("./header.BQoAQuJ9.js"),__vite__mapDeps([4,1,2,3]))),y=a(()=>o(()=>import("./main.BjGLKst8.js"),__vite__mapDeps([5,1,2,3]))),R=a(()=>o(()=>import("./columnsAside.BZt6OJ0q.js"),__vite__mapDeps([6,2,1,3,7,8]))),s=_(""),n=_(),T=E(),v=b(),{themeConfig:h}=k(v),l=()=>{s.value.update(),n.value.layoutMainScrollbarRef.update()},c=()=>{M(()=>{setTimeout(()=>{l(),s.value.wrapRef.scrollTop=0,n.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return w(()=>{c()}),i(()=>T.path,()=>{c()}),i(h,()=>{l()},{deep:!0}),(x,D)=>{const C=f("el-scrollbar"),u=f("el-container");return L(),A(u,{class:"layout-container"},{default:r(()=>[e(t(R)),e(u,{class:"layout-columns-warp layout-container-view h100"},{default:r(()=>[e(t(d)),e(C,{ref_key:"layoutScrollbarRef",ref:s,class:"layout-backtop"},{default:r(()=>[e(t(m)),e(t(y),{ref_key:"layoutMainRef",ref:n},null,512)]),_:1},512)]),_:1})]),_:1})}}});export{I as default}; diff --git a/web/dist/assets/columnsAside.BZt6OJ0q.js b/web/dist/assets/columnsAside.BZt6OJ0q.js new file mode 100644 index 0000000000..b5a5bcbf7c --- /dev/null +++ b/web/dist/assets/columnsAside.BZt6OJ0q.js @@ -0,0 +1 @@ +import{d as O,g as I,T as M,s as F,v as j,z,x as E,E as U,$ as V,C as G,h as $,a as c,o as d,k as v,w as K,e as m,G as q,H as J,f as C,u as f,K as k,D as Q}from"./vue.DmuWcDrn.js";import{M as W,u as X,p as i,P as Y}from"./index.XK2ik2qb.js";import{_ as Z}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ee={class:"layout-columns-aside"},te=["onClick","onMouseenter","title"],se={class:"columns-vertical-title font12"},ne=["href"],oe={class:"columns-vertical-title font12"},le=O({name:"layoutColumnsAside"}),ie=O({...le,setup(ae){const A=I([]),_=I(),h=W(),R=X(),{routesList:x,isColumnsMenuHover:T,isColumnsNavHover:D}=M(h),{themeConfig:a}=M(R),y=F(),g=j(),t=z({columnsAsideList:[],liIndex:0,liOldIndex:null,liHoverIndex:null,liOldPath:null,difference:0,routeSplit:[]}),L=e=>{t.liIndex=e,_.value.style.top=`${A.value[e].offsetTop+t.difference}px`},P=(e,s)=>{L(s);let{path:o,redirect:l}=e;l?g.push(l):g.push(o)},b=(e,s)=>{if(!a.value.isColumnsMenuHoverPreload)return!1;let{path:o}=e;t.liOldPath=o,t.liOldIndex=s,t.liHoverIndex=s,i.emit("setSendColumnsChildren",r(o)),h.setColumnsMenuHover(!1),h.setColumnsNavHover(!0)},N=async()=>{await h.setColumnsNavHover(!1),setTimeout(()=>{!T&&!D&&i.emit("restoreDefault")},100)},S=e=>{Q(()=>{L(e)})},w=()=>{var s;t.columnsAsideList=H(x.value);const e=r(y.path);if(Object.keys(e).length<=0)return!1;S((s=e.item)==null?void 0:s.k),i.emit("setSendColumnsChildren",e)},r=e=>{const s=e.split("/");let o={children:[]};return t.columnsAsideList.map((l,n)=>{l.path===`/${s[1]}`&&(l.k=n,o.item={...l},o.children=[{...l}],l.children&&(o.children=l.children))}),o},H=e=>e.filter(s=>{var o;return!((o=s.meta)!=null&&o.isHide)}).map(s=>(s=Object.assign({},s),s.children&&(s.children=H(s.children)),s)),B=e=>{t.routeSplit=e.split("/"),t.routeSplit.shift();const s=`/${t.routeSplit[0]}`,o=t.columnsAsideList.find(l=>l.path===s);if(!o)return!1;setTimeout(()=>{S(o.k)},0)};return E(()=>{w(),i.on("restoreDefault",()=>{t.liOldIndex=null,t.liOldPath=null})}),U(()=>{i.off("restoreDefault",()=>{})}),V(e=>{B(e.path),i.emit("setSendColumnsChildren",r(e.path))}),G(Y.state,e=>{if(e.themeConfig.themeConfig.columnsAsideStyle==="columnsRound"?t.difference=3:t.difference=0,!e.routesList.isColumnsMenuHover&&!e.routesList.isColumnsNavHover)t.liHoverIndex=null,i.emit("setSendColumnsChildren",r(y.path));else{if(t.liHoverIndex=t.liOldIndex,!t.liOldPath)return!1;i.emit("setSendColumnsChildren",r(t.liOldPath))}},{deep:!0}),(e,s)=>{const o=$("SvgIcon"),l=$("el-scrollbar");return d(),c("div",ee,[v(l,null,{default:K(()=>[m("ul",{onMouseleave:s[0]||(s[0]=n=>N())},[(d(!0),c(q,null,J(t.columnsAsideList,(n,u)=>(d(),c("li",{key:u,onClick:p=>P(n,u),onMouseenter:p=>b(n,u),ref_for:!0,ref:p=>{p&&(A.value[u]=p)},class:C({"layout-columns-active":t.liIndex===u,"layout-columns-hover":t.liHoverIndex===u}),title:e.$t(n.meta.title)},[!n.meta.isLink||n.meta.isLink&&n.meta.isIframe?(d(),c("div",{key:0,class:C(f(a).columnsAsideLayout)},[v(o,{name:n.meta.icon},null,8,["name"]),m("div",se,k(e.$t(n.meta.title)&&e.$t(n.meta.title).length>=4?e.$t(n.meta.title).substr(0,f(a).columnsAsideLayout==="columns-vertical"?4:3):e.$t(n.meta.title)),1)],2)):(d(),c("div",{key:1,class:C(f(a).columnsAsideLayout)},[m("a",{href:n.meta.isLink,target:"_blank"},[v(o,{name:n.meta.icon},null,8,["name"]),m("div",oe,k(e.$t(n.meta.title)&&e.$t(n.meta.title).length>=4?e.$t(n.meta.title).substr(0,f(a).columnsAsideLayout==="columns-vertical"?4:3):e.$t(n.meta.title)),1)],8,ne)],2))],42,te))),128)),m("div",{ref_key:"columnsAsideActiveRef",ref:_,class:C(f(a).columnsAsideStyle)},null,2)],32)]),_:1})])}}}),de=Z(ie,[["__scopeId","data-v-a5c512c6"]]);export{de as default}; diff --git a/web/dist/assets/columnsAside.DcFcWAsf.js b/web/dist/assets/columnsAside.DcFcWAsf.js deleted file mode 100644 index 33f0f756d4..0000000000 --- a/web/dist/assets/columnsAside.DcFcWAsf.js +++ /dev/null @@ -1 +0,0 @@ -import{w as R,D as I,aR as M,aQ as F,aU as U,af as j,O as z,ab as V,aW as q,H as E,aA as $,x as c,y as d,a7 as v,a0 as G,z as m,a6 as Q,aq as W,Y as C,G as f,a5 as O,P as Y}from"./vue.Cw4Y52yh.js";import{ae as J,u as K,e as i,af as X}from"./index.CkCcWuPb.js";import{_ as Z}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ee={class:"layout-columns-aside"},te=["onClick","onMouseenter","title"],se={class:"columns-vertical-title font12"},ne=["href"],oe={class:"columns-vertical-title font12"},le=R({name:"layoutColumnsAside"}),ie=R({...le,setup(ae){const A=I([]),_=I(),h=J(),k=K(),{routesList:x,isColumnsMenuHover:b,isColumnsNavHover:D}=M(h),{themeConfig:a}=M(k),y=F(),L=U(),t=j({columnsAsideList:[],liIndex:0,liOldIndex:null,liHoverIndex:null,liOldPath:null,difference:0,routeSplit:[]}),S=e=>{t.liIndex=e,_.value.style.top=`${A.value[e].offsetTop+t.difference}px`},P=(e,s)=>{S(s);let{path:o,redirect:l}=e;l?L.push(l):L.push(o)},T=(e,s)=>{if(!a.value.isColumnsMenuHoverPreload)return!1;let{path:o}=e;t.liOldPath=o,t.liOldIndex=s,t.liHoverIndex=s,i.emit("setSendColumnsChildren",r(o)),h.setColumnsMenuHover(!1),h.setColumnsNavHover(!0)},N=async()=>{await h.setColumnsNavHover(!1),setTimeout(()=>{!b&&!D&&i.emit("restoreDefault")},100)},g=e=>{Y(()=>{S(e)})},w=()=>{var s;t.columnsAsideList=H(x.value);const e=r(y.path);if(Object.keys(e).length<=0)return!1;g((s=e.item)==null?void 0:s.k),i.emit("setSendColumnsChildren",e)},r=e=>{const s=e.split("/");let o={children:[]};return t.columnsAsideList.map((l,n)=>{l.path===`/${s[1]}`&&(l.k=n,o.item={...l},o.children=[{...l}],l.children&&(o.children=l.children))}),o},H=e=>e.filter(s=>{var o;return!((o=s.meta)!=null&&o.isHide)}).map(s=>(s=Object.assign({},s),s.children&&(s.children=H(s.children)),s)),B=e=>{t.routeSplit=e.split("/"),t.routeSplit.shift();const s=`/${t.routeSplit[0]}`,o=t.columnsAsideList.find(l=>l.path===s);if(!o)return!1;setTimeout(()=>{g(o.k)},0)};return z(()=>{w(),i.on("restoreDefault",()=>{t.liOldIndex=null,t.liOldPath=null})}),V(()=>{i.off("restoreDefault",()=>{})}),q(e=>{B(e.path),i.emit("setSendColumnsChildren",r(e.path))}),E(X.state,e=>{if(e.themeConfig.themeConfig.columnsAsideStyle==="columnsRound"?t.difference=3:t.difference=0,!e.routesList.isColumnsMenuHover&&!e.routesList.isColumnsNavHover)t.liHoverIndex=null,i.emit("setSendColumnsChildren",r(y.path));else{if(t.liHoverIndex=t.liOldIndex,!t.liOldPath)return!1;i.emit("setSendColumnsChildren",r(t.liOldPath))}},{deep:!0}),(e,s)=>{const o=$("SvgIcon"),l=$("el-scrollbar");return d(),c("div",ee,[v(l,null,{default:G(()=>[m("ul",{onMouseleave:s[0]||(s[0]=n=>N())},[(d(!0),c(Q,null,W(t.columnsAsideList,(n,u)=>(d(),c("li",{key:u,onClick:p=>P(n,u),onMouseenter:p=>T(n,u),ref_for:!0,ref:p=>{p&&(A.value[u]=p)},class:C({"layout-columns-active":t.liIndex===u,"layout-columns-hover":t.liHoverIndex===u}),title:e.$t(n.meta.title)},[!n.meta.isLink||n.meta.isLink&&n.meta.isIframe?(d(),c("div",{key:0,class:C(f(a).columnsAsideLayout)},[v(o,{name:n.meta.icon},null,8,["name"]),m("div",se,O(e.$t(n.meta.title)&&e.$t(n.meta.title).length>=4?e.$t(n.meta.title).substr(0,f(a).columnsAsideLayout==="columns-vertical"?4:3):e.$t(n.meta.title)),1)],2)):(d(),c("div",{key:1,class:C(f(a).columnsAsideLayout)},[m("a",{href:n.meta.isLink,target:"_blank"},[v(o,{name:n.meta.icon},null,8,["name"]),m("div",oe,O(e.$t(n.meta.title)&&e.$t(n.meta.title).length>=4?e.$t(n.meta.title).substr(0,f(a).columnsAsideLayout==="columns-vertical"?4:3):e.$t(n.meta.title)),1)],8,ne)],2))],42,te))),128)),m("div",{ref_key:"columnsAsideActiveRef",ref:_,class:C(f(a).columnsAsideStyle)},null,2)],32)]),_:1})])}}}),de=Z(ie,[["__scopeId","data-v-a5c512c6"]]);export{de as default}; diff --git a/web/dist/assets/commonCrud.CCkJYHLJ.js b/web/dist/assets/commonCrud.CCkJYHLJ.js deleted file mode 100644 index cb0b87e93b..0000000000 --- a/web/dist/assets/commonCrud.CCkJYHLJ.js +++ /dev/null @@ -1 +0,0 @@ -import{G as l,m as c}from"./index.CkCcWuPb.js";import{w as d,D as p,H as h,x as f,y as w,a5 as u,I as _}from"./vue.Cw4Y52yh.js";const b=d({__name:"index",props:{modelValue:{type:Number||String}},setup(s){const e=s,t=p();return h(()=>e.modelValue,async o=>{const r=await l().getParentDeptById(o);if(r!=null&&r.nodes){let i="";console.log(r),r.nodes.forEach((n,m)=>{i+=m>0?`/${n.name}`:n.name}),t.value=i}},{immediate:!0}),(o,a)=>(w(),f("div",null,u(t.value),1))}}),g={create_datetime:{form:!1,table:!1,search:!1,width:160},update_datetime:{form:!1,table:!1,search:!1,width:160},creator_name:{form:!1,table:!1,search:!1,width:100},modifier_name:{form:!1,table:!1,search:!1,width:100},dept_belong_id:{form:!1,table:!1,search:!1,width:300},description:{form:!1,table:!1,search:!1,width:100}};function D(s,e={}){const t={...s};for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)){const a=t[o],r=e[o];a&&r&&(t[o]={...a,...r})}return t}const y=(s={})=>{const e=D(g,s);return{dept_belong_id:{title:"所属部门",type:"dict-tree",search:{show:e.dept_belong_id.search},dict:c({url:"/api/system/dept/all_dept/",isTree:!0,value:"id",label:"name",children:"children"}),column:{align:"center",width:e.dept_belong_id.width,show:e.dept_belong_id.table,component:{is:_(b),vModel:"modelValue"}},form:{show:e.dept_belong_id.form,component:{multiple:!1,clearable:!0,props:{checkStrictly:!0,props:{label:"name",value:"id"}}},helper:"默认不填则为当前创建用户的部门ID"}},description:{title:"备注",search:{show:e.description.search},type:"textarea",column:{width:e.description.width,show:e.description.table},form:{show:e.description.form,component:{placeholder:"请输入内容",showWordLimit:!0,maxlength:"200"}},viewForm:{show:!0}},modifier_name:{title:"修改人",search:{show:e.modifier_name.search},column:{width:e.modifier_name.width,show:e.modifier_name.table},form:{show:e.modifier_name.form},viewForm:{show:!0}},creator_name:{title:"创建人",search:{show:e.creator_name.search},column:{width:e.creator_name.width,show:e.creator_name.table},form:{show:e.creator_name.form},viewForm:{show:!0}},update_datetime:{title:"更新时间",type:"datetime",search:{show:e.update_datetime.search,col:{span:8},component:{type:"datetimerange",props:{"start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss","picker-options":{shortcuts:[{text:"最近一周",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*7),t.$emit("pick",[a,o])}},{text:"最近一个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*30),t.$emit("pick",[a,o])}},{text:"最近三个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*90),t.$emit("pick",[a,o])}}]}}},valueResolve(t){const{value:o}=t;o&&(t.form.update_datetime_after=o[0],t.form.update_datetime_before=o[1],delete t.form.update_datetime)}},column:{width:e.update_datetime.width,show:e.update_datetime.table},form:{show:e.update_datetime.form},viewForm:{show:!0}},create_datetime:{title:"创建时间",type:"datetime",search:{show:e.create_datetime.search,col:{span:8},component:{type:"datetimerange",props:{"start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss","picker-options":{shortcuts:[{text:"最近一周",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*7),t.$emit("pick",[a,o])}},{text:"最近一个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*30),t.$emit("pick",[a,o])}},{text:"最近三个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*90),t.$emit("pick",[a,o])}}]}}},valueResolve(t){const{value:o}=t;o&&(t.form.create_datetime_after=o[0],t.form.create_datetime_before=o[1],delete t.form.create_datetime)}},column:{width:e.create_datetime.width,show:e.create_datetime.table},form:{show:e.create_datetime.form},viewForm:{show:!0}}}};export{y as c}; diff --git a/web/dist/assets/commonCrud.Ca1t2kUN.js b/web/dist/assets/commonCrud.Ca1t2kUN.js new file mode 100644 index 0000000000..b497857dee --- /dev/null +++ b/web/dist/assets/commonCrud.Ca1t2kUN.js @@ -0,0 +1 @@ +import{v as l,c}from"./index.XK2ik2qb.js";import{d,g as p,C as h,a as f,o as w,K as u,Q as _}from"./vue.DmuWcDrn.js";const b=d({__name:"index",props:{modelValue:{type:Number||String}},setup(s){const e=s,t=p();return h(()=>e.modelValue,async o=>{const r=await l().getParentDeptById(o);if(r!=null&&r.nodes){let i="";console.log(r),r.nodes.forEach((n,m)=>{i+=m>0?`/${n.name}`:n.name}),t.value=i}},{immediate:!0}),(o,a)=>(w(),f("div",null,u(t.value),1))}}),g={create_datetime:{form:!1,table:!1,search:!1,width:160},update_datetime:{form:!1,table:!1,search:!1,width:160},creator_name:{form:!1,table:!1,search:!1,width:100},modifier_name:{form:!1,table:!1,search:!1,width:100},dept_belong_id:{form:!1,table:!1,search:!1,width:300},description:{form:!1,table:!1,search:!1,width:100}};function v(s,e={}){const t={...s};for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)){const a=t[o],r=e[o];a&&r&&(t[o]={...a,...r})}return t}const y=(s={})=>{const e=v(g,s);return{dept_belong_id:{title:"所属部门",type:"dict-tree",search:{show:e.dept_belong_id.search},dict:c({url:"/api/system/dept/all_dept/",isTree:!0,value:"id",label:"name",children:"children"}),column:{align:"center",width:e.dept_belong_id.width,show:e.dept_belong_id.table,component:{is:_(b),vModel:"modelValue"}},form:{show:e.dept_belong_id.form,component:{multiple:!1,clearable:!0,props:{checkStrictly:!0,props:{label:"name",value:"id"}}},helper:"默认不填则为当前创建用户的部门ID"}},description:{title:"备注",search:{show:e.description.search},type:"textarea",column:{width:e.description.width,show:e.description.table},form:{show:e.description.form,component:{placeholder:"请输入内容",showWordLimit:!0,maxlength:"200"}},viewForm:{show:!0}},modifier_name:{title:"修改人",search:{show:e.modifier_name.search},column:{width:e.modifier_name.width,show:e.modifier_name.table},form:{show:e.modifier_name.form},viewForm:{show:!0}},creator_name:{title:"创建人",search:{show:e.creator_name.search},column:{width:e.creator_name.width,show:e.creator_name.table},form:{show:e.creator_name.form},viewForm:{show:!0}},update_datetime:{title:"更新时间",type:"datetime",search:{show:e.update_datetime.search,col:{span:8},component:{type:"datetimerange",props:{"start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss","picker-options":{shortcuts:[{text:"最近一周",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*7),t.$emit("pick",[a,o])}},{text:"最近一个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*30),t.$emit("pick",[a,o])}},{text:"最近三个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*90),t.$emit("pick",[a,o])}}]}}},valueResolve(t){const{value:o}=t;o&&(t.form.update_datetime_after=o[0],t.form.update_datetime_before=o[1],delete t.form.update_datetime)}},column:{width:e.update_datetime.width,show:e.update_datetime.table},form:{show:e.update_datetime.form},viewForm:{show:!0}},create_datetime:{title:"创建时间",type:"datetime",search:{show:e.create_datetime.search,col:{span:8},component:{type:"datetimerange",props:{"start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss","picker-options":{shortcuts:[{text:"最近一周",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*7),t.$emit("pick",[a,o])}},{text:"最近一个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*30),t.$emit("pick",[a,o])}},{text:"最近三个月",onClick(t){const o=new Date,a=new Date;a.setTime(a.getTime()-3600*1e3*24*90),t.$emit("pick",[a,o])}}]}}},valueResolve(t){const{value:o}=t;o&&(t.form.create_datetime_after=o[0],t.form.create_datetime_before=o[1],delete t.form.create_datetime)}},column:{width:e.create_datetime.width,show:e.create_datetime.table},form:{show:e.create_datetime.form},viewForm:{show:!0}}}};export{y as c}; diff --git a/web/dist/assets/contextmenu.B7am1DsY.js b/web/dist/assets/contextmenu.B7am1DsY.js new file mode 100644 index 0000000000..70fa81b680 --- /dev/null +++ b/web/dist/assets/contextmenu.B7am1DsY.js @@ -0,0 +1 @@ +import{d as m,z as g,c as y,x as v,E as L,C as V,h as b,b as I,o,w as S,p as E,a,n as d,e as l,G as u,H as M,J as $,k as B,K as N,N as W,V as z}from"./vue.DmuWcDrn.js";import{_ as D}from"./_plugin-vue_export-helper.DlAUqK2U.js";const O={class:"el-dropdown-menu"},T=["onClick"],j=m({name:"layoutTagsViewContextmenu"}),A=m({...j,props:{dropdown:{type:Object,default:()=>({x:0,y:0})}},emits:["currentContextmenuClick"],setup(p,{expose:f,emit:x}){const n=p,w=x,e=g({isShow:!1,dropdownList:[{contextMenuClickId:0,txt:"message.tagsView.refresh",affix:!1,icon:"ele-RefreshRight"},{contextMenuClickId:1,txt:"message.tagsView.close",affix:!1,icon:"ele-Close"},{contextMenuClickId:2,txt:"message.tagsView.closeOther",affix:!1,icon:"ele-CircleClose"},{contextMenuClickId:3,txt:"message.tagsView.closeAll",affix:!1,icon:"ele-FolderDelete"},{contextMenuClickId:4,txt:"message.tagsView.fullscreen",affix:!1,icon:"iconfont icon-fullscreen"}],item:{},arrowLeft:10}),r=y(()=>n.dropdown.x+117>document.documentElement.clientWidth?{x:document.documentElement.clientWidth-117-5,y:n.dropdown.y}:n.dropdown),C=t=>{w("currentContextmenuClick",Object.assign({},{contextMenuClickId:t},e.item))},_=t=>{var i;e.item=t,(i=t.meta)!=null&&i.isAffix?e.dropdownList[1].affix=!0:e.dropdownList[1].affix=!1,c(),setTimeout(()=>{e.isShow=!0},10)},c=()=>{e.isShow=!1};return v(()=>{document.body.addEventListener("click",c)}),L(()=>{document.body.removeEventListener("click",c)}),V(()=>n.dropdown,({x:t})=>{t+117>document.documentElement.clientWidth?e.arrowLeft=117-(document.documentElement.clientWidth-t):e.arrowLeft=10},{deep:!0}),f({openContextmenu:_}),(t,i)=>{const h=b("SvgIcon");return o(),I(z,{name:"el-zoom-in-center"},{default:S(()=>[E((o(),a("div",{"aria-hidden":"true",class:"el-dropdown__popper el-popper is-light is-pure custom-contextmenu",role:"tooltip","data-popper-placement":"bottom",style:d(`top: ${r.value.y+5}px;left: ${r.value.x}px;`),key:Math.random()},[l("ul",O,[(o(!0),a(u,null,M(e.dropdownList,(s,k)=>(o(),a(u,null,[s.affix?$("",!0):(o(),a("li",{class:"el-dropdown-menu__item","aria-disabled":"false",tabindex:"-1",key:k,onClick:F=>C(s.contextMenuClickId)},[B(h,{name:s.icon},null,8,["name"]),l("span",null,N(t.$t(s.txt)),1)],8,T))],64))),256))]),l("div",{class:"el-popper__arrow",style:d({left:`${e.arrowLeft}px`})},null,4)],4)),[[W,e.isShow]])]),_:1})}}}),H=D(A,[["__scopeId","data-v-4b07d0ca"]]);export{H as default}; diff --git a/web/dist/assets/contextmenu.DhtroW7_.js b/web/dist/assets/contextmenu.DhtroW7_.js deleted file mode 100644 index 4a58b58cdf..0000000000 --- a/web/dist/assets/contextmenu.DhtroW7_.js +++ /dev/null @@ -1 +0,0 @@ -import{w as m,af as k,F as y,O as v,ab as L,H as b,aA as I,$ as S,y as o,a0 as V,a1 as M,x as a,X as d,z as l,a6 as u,aq as E,a2 as $,a7 as B,a5 as O,a8 as W,a9 as z}from"./vue.Cw4Y52yh.js";import{_ as A}from"./_plugin-vue_export-helper.DlAUqK2U.js";const D={class:"el-dropdown-menu"},F=["onClick"],N=m({name:"layoutTagsViewContextmenu"}),T=m({...N,props:{dropdown:{type:Object,default:()=>({x:0,y:0})}},emits:["currentContextmenuClick"],setup(p,{expose:f,emit:x}){const n=p,w=x,e=k({isShow:!1,dropdownList:[{contextMenuClickId:0,txt:"message.tagsView.refresh",affix:!1,icon:"ele-RefreshRight"},{contextMenuClickId:1,txt:"message.tagsView.close",affix:!1,icon:"ele-Close"},{contextMenuClickId:2,txt:"message.tagsView.closeOther",affix:!1,icon:"ele-CircleClose"},{contextMenuClickId:3,txt:"message.tagsView.closeAll",affix:!1,icon:"ele-FolderDelete"},{contextMenuClickId:4,txt:"message.tagsView.fullscreen",affix:!1,icon:"iconfont icon-fullscreen"}],item:{},arrowLeft:10}),r=y(()=>n.dropdown.x+117>document.documentElement.clientWidth?{x:document.documentElement.clientWidth-117-5,y:n.dropdown.y}:n.dropdown),C=t=>{w("currentContextmenuClick",Object.assign({},{contextMenuClickId:t},e.item))},_=t=>{var i;e.item=t,(i=t.meta)!=null&&i.isAffix?e.dropdownList[1].affix=!0:e.dropdownList[1].affix=!1,c(),setTimeout(()=>{e.isShow=!0},10)},c=()=>{e.isShow=!1};return v(()=>{document.body.addEventListener("click",c)}),L(()=>{document.body.removeEventListener("click",c)}),b(()=>n.dropdown,({x:t})=>{t+117>document.documentElement.clientWidth?e.arrowLeft=117-(document.documentElement.clientWidth-t):e.arrowLeft=10},{deep:!0}),f({openContextmenu:_}),(t,i)=>{const h=I("SvgIcon");return o(),S(z,{name:"el-zoom-in-center"},{default:V(()=>[M((o(),a("div",{"aria-hidden":"true",class:"el-dropdown__popper el-popper is-light is-pure custom-contextmenu",role:"tooltip","data-popper-placement":"bottom",style:d(`top: ${r.value.y+5}px;left: ${r.value.x}px;`),key:Math.random()},[l("ul",D,[(o(!0),a(u,null,E(e.dropdownList,(s,g)=>(o(),a(u,null,[s.affix?$("",!0):(o(),a("li",{class:"el-dropdown-menu__item","aria-disabled":"false",tabindex:"-1",key:g,onClick:j=>C(s.contextMenuClickId)},[B(h,{name:s.icon},null,8,["name"]),l("span",null,O(t.$t(s.txt)),1)],8,F))],64))),256))]),l("div",{class:"el-popper__arrow",style:d({left:`${e.arrowLeft}px`})},null,4)],4)),[[W,e.isShow]])]),_:1})}}}),H=A(T,[["__scopeId","data-v-4b07d0ca"]]);export{H as default}; diff --git a/web/dist/assets/crud.C3GYL5gO.js b/web/dist/assets/crud.B1xqCDQ3.js similarity index 93% rename from web/dist/assets/crud.C3GYL5gO.js rename to web/dist/assets/crud.B1xqCDQ3.js index 27993c5c2f..20a4454ca5 100644 --- a/web/dist/assets/crud.C3GYL5gO.js +++ b/web/dist/assets/crud.B1xqCDQ3.js @@ -1 +1 @@ -import{r as u,m as y,X as r}from"./index.CkCcWuPb.js";import{a as i}from"./authFunction.Br9oRcVU.js";import{D as v,P as x}from"./vue.Cw4Y52yh.js";const s="/api/system/column/";function D(t){return u({url:s,method:"get",params:t})}function q(t){return u({url:s,method:"post",data:t})}function R(t){return u({url:s+t.id+"/",method:"put",data:t})}function S(t){return u({url:s+t+"/",method:"delete",data:{id:t}})}function C(t){return u({url:s+"multiple_delete/",method:"delete",data:{keys:t}})}function M(){return u({url:"/api/system/column/get_models/",method:"get"})}const _=function({crudExpose:t,props:O,modelDialog:m,selectOptions:c,allModelData:k}){const p=async e=>{if(c.value.id)return await D({menu:c.value.id})},f=async({form:e,row:l})=>(e.id=l.id,await R(e)),h=async({row:e})=>await S(e.id),g=async({form:e})=>(e.menu=c.value.id,await q(e)),n=v([]),b=e=>{const o=t.getTableData().filter(a=>!e.includes(a));r.arrayEach(e,a=>{r.pluck(n.value,"id").includes(a.id)||(n.value=r.union(n.value,[a]))}),r.arrayEach(o,a=>{n.value=r.remove(n.value,d=>d.id!==a.id)})},w=()=>{const e=t.getBaseTableRef(),l=t.getTableData(),o=r.filter(l,a=>r.pluck(n.value,"id").includes(a.id));x(()=>{r.arrayEach(o,a=>{e.toggleRowSelection(a,!0)})})};return{selectedRows:n,crudOptions:{request:{pageRequest:p,addRequest:g,editRequest:f,delRequest:h},pagination:{show:!1},actionbar:{buttons:{add:{show:i("column:Create")},auto:{text:"自动匹配",type:"success",show:i("column:Match"),click:()=>m.value=!0}}},rowHandle:{fixed:"right",buttons:{view:{show:!1},edit:{show:i("column:Update")},remove:{show:i("column:Delete")}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},table:{rowKey:"id",onSelectionChange:b,onRefreshed:()=>w()},columns:{$checked:{title:"选择",form:{show:!1},column:{type:"selection",align:"center",width:"70px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let l=e.index??1,o=t.crudBinding.value.pagination;return((o.currentPage??1)-1)*o.pageSize+l+1}}},model:{title:"model",type:"dict-select",dict:y({url:"/api/system/column/get_models/",label:"title",value:"key"}),column:{sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{span:12,showSearch:!0,filterable:!0,filterOption(e,l){return l.label.indexOf(e)>=0||l.value.indexOf(e)>=0}}}},title:{title:"中文名",sortable:"custom",search:{show:!0},type:"text",form:{rules:[{required:!0,message:"必填项"}],component:{span:12,placeholder:"请输入中文名"}}},field_name:{title:"字段名",type:"text",search:{show:!0},column:{sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{span:12,placeholder:"请输入字段名"}}}}}}},P=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:_},Symbol.toStringTag,{value:"Module"}));export{C as B,P as a,_ as c,M as g}; +import{r as u,c as y,X as r}from"./index.XK2ik2qb.js";import{a as i}from"./authFunction.CZ5a1pu0.js";import{g as v,D as x}from"./vue.DmuWcDrn.js";const s="/api/system/column/";function D(t){return u({url:s,method:"get",params:t})}function q(t){return u({url:s,method:"post",data:t})}function R(t){return u({url:s+t.id+"/",method:"put",data:t})}function S(t){return u({url:s+t+"/",method:"delete",data:{id:t}})}function C(t){return u({url:s+"multiple_delete/",method:"delete",data:{keys:t}})}function M(){return u({url:"/api/system/column/get_models/",method:"get"})}const _=function({crudExpose:t,props:O,modelDialog:m,selectOptions:c,allModelData:k}){const p=async e=>{if(c.value.id)return await D({menu:c.value.id})},f=async({form:e,row:l})=>(e.id=l.id,await R(e)),h=async({row:e})=>await S(e.id),g=async({form:e})=>(e.menu=c.value.id,await q(e)),n=v([]),b=e=>{const o=t.getTableData().filter(a=>!e.includes(a));r.arrayEach(e,a=>{r.pluck(n.value,"id").includes(a.id)||(n.value=r.union(n.value,[a]))}),r.arrayEach(o,a=>{n.value=r.remove(n.value,d=>d.id!==a.id)})},w=()=>{const e=t.getBaseTableRef(),l=t.getTableData(),o=r.filter(l,a=>r.pluck(n.value,"id").includes(a.id));x(()=>{r.arrayEach(o,a=>{e.toggleRowSelection(a,!0)})})};return{selectedRows:n,crudOptions:{request:{pageRequest:p,addRequest:g,editRequest:f,delRequest:h},pagination:{show:!1},actionbar:{buttons:{add:{show:i("column:Create")},auto:{text:"自动匹配",type:"success",show:i("column:Match"),click:()=>m.value=!0}}},rowHandle:{fixed:"right",buttons:{view:{show:!1},edit:{show:i("column:Update")},remove:{show:i("column:Delete")}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},table:{rowKey:"id",onSelectionChange:b,onRefreshed:()=>w()},columns:{$checked:{title:"选择",form:{show:!1},column:{type:"selection",align:"center",width:"70px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let l=e.index??1,o=t.crudBinding.value.pagination;return((o.currentPage??1)-1)*o.pageSize+l+1}}},model:{title:"model",type:"dict-select",dict:y({url:"/api/system/column/get_models/",label:"title",value:"key"}),column:{sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{span:12,showSearch:!0,filterable:!0,filterOption(e,l){return l.label.indexOf(e)>=0||l.value.indexOf(e)>=0}}}},title:{title:"中文名",sortable:"custom",search:{show:!0},type:"text",form:{rules:[{required:!0,message:"必填项"}],component:{span:12,placeholder:"请输入中文名"}}},field_name:{title:"字段名",type:"text",search:{show:!0},column:{sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{span:12,placeholder:"请输入字段名"}}}}}}},P=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:_},Symbol.toStringTag,{value:"Module"}));export{C as B,P as a,_ as c,M as g}; diff --git a/web/dist/assets/crud.B74cb5FM.js b/web/dist/assets/crud.B74cb5FM.js new file mode 100644 index 0000000000..1233f783a5 --- /dev/null +++ b/web/dist/assets/crud.B74cb5FM.js @@ -0,0 +1 @@ +import{r as a,d as p,t as m,c,g as h}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as w}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const o="/api/ContractModelViewSet/";function f(e){return a({url:o,method:"get",params:e})}function y(e){return a({url:o,method:"post",data:e})}function g(e){return a({url:o+e.id+"/",method:"put",data:e})}function x(e){return a({url:o+e+"/",method:"delete",data:{id:e}})}function b(e){return p({url:o+"export_data/",params:e,method:"get"})}function V({crudExpose:e}){const s=async t=>await f(t),i=async({form:t,row:n})=>(n.id&&(t.id=n.id),await g(t)),d=async({row:t})=>await x(t.id),l=async({form:t})=>await y(t),u=async t=>await b(t);return{crudOptions:{request:{pageRequest:s,addRequest:l,editRequest:i,delRequest:d},actionbar:{buttons:{export:{show:r("ContractModelViewSet:Export"),text:"导出",title:"导出",click(){return u(e.getSearchFormData())}},add:{show:r("ContractModelViewSet:Create")}}},rowHandle:{fixed:"right",width:130,buttons:{view:{type:"text",order:1,show:r("ContractModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("ContractModelViewSet:Update")},copy:{type:"text",order:3,show:r("ContractModelViewSet:Copy")},remove:{type:"text",order:4,show:r("ContractModelViewSet:Delete")}}},columns:{contract_ids:{title:"合同编号",type:"text",search:{show:!0},column:{sortable:"custom"},form:{show:!0,component:{placeholder:"合同编号自动生成,无需输入."}},addForm:{component:{disabled:!0}},editForm:{component:{disabled:!0}}},contract_type:{title:"合同类型",search:{show:!0},type:"dict-select",dict:c({data:w("contract_type")}),form:{rules:[{required:!0,message:"合同类型必选",trigger:"change"}],component:{filterable:!0,placeholder:"请输入合同类型"}},component:{props:{color:"auto"}}},contract_remark:{title:"合同备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{component:{placeholder:"请输入合同备注"}}},contract_user:{title:"合同客户",search:{show:!0},type:"dict-select",dict:c({url:"/api/CrudPatronModelViewSet/",label:"username",value:"id"}),form:{component:{filterable:!0,placeholder:"请选择合同客户"}},component:{props:{color:"auto"}}},contract_file:{title:"上传合同",type:"file-uploader",form:{component:{limit:1,uploader:{type:"form"},accept:".pdf,.zip,.7z,.rar"},rules:m([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最大可上传1个文件(建议使用密码加密后上传)"},column:{show:!1,component:{async buildUrl(t){return h(t)}}}}}}}}export{V as default}; diff --git a/web/dist/assets/crud.BJWb00pr.js b/web/dist/assets/crud.BJWb00pr.js new file mode 100644 index 0000000000..c9134d25fb --- /dev/null +++ b/web/dist/assets/crud.BJWb00pr.js @@ -0,0 +1 @@ +import{DelObj as n,UpdateObj as l,AddObj as r,GetList as o}from"./api.DWbfkKZe.js";import{c as d}from"./index.XK2ik2qb.js";import{c}from"./commonCrud.Ca1t2kUN.js";import"./vue.DmuWcDrn.js";const b=function({crudExpose:a}){return{crudOptions:{request:{pageRequest:async e=>await o(e),addRequest:async({form:e})=>await r(e),editRequest:async({form:e,row:t})=>(e.id=t.id,await l(e)),delRequest:async({row:e})=>await n(e.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:80,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:!1},remove:{iconRight:"Delete",type:"text",show:!1}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let t=e.index??1,i=a.crudBinding.value.pagination;return((i.currentPage??1)-1)*i.pageSize+t+1}}},no:{title:"流水号",search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入"}},column:{width:"160px",align:"center"}},name:{title:"名称",column:{width:"250px",align:"center"}},models_name:{title:"库表",column:{width:"140px",align:"center"}},start_user_name:{title:"发起人",column:{width:"120px",align:"center"}},"current_node.name":{title:"当前节点",column:{width:"160px",align:"center"}},pre_user:{title:"预处理人",column:{width:"160px",align:"center"}},pre_role:{title:"预处理角色",column:{width:"160px",align:"center"}},pre_dept:{title:"预处理部门",column:{width:"160px",align:"center"}},status:{title:"状态",type:"dict-select",column:{fixed:"right",width:"100px",align:"center"},dict:d({data:[{value:0,label:"进行中"},{value:1,label:"审核通过"},{value:2,label:"审核驳回"},{value:3,label:"审核撤销"}]})},completed_time:{title:"完成时间",column:{width:"160px",align:"center"}},...c({create_datetime:{search:!1,table:!0},update_datetime:{table:!0},dept_belong_id:{table:!1}})}}}};export{b as createCrudOptions}; diff --git a/web/dist/assets/crud.BNBeHM1q.js b/web/dist/assets/crud.BNBeHM1q.js deleted file mode 100644 index 18e5d46aa7..0000000000 --- a/web/dist/assets/crud.BNBeHM1q.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,d as y,m as s,n as b,q as x,s as c}from"./index.CkCcWuPb.js";import{d as i}from"./dictionary.CH8ZDdyo.js";import{a}from"./authFunction.Br9oRcVU.js";import{aR as v,F as d}from"./vue.Cw4Y52yh.js";import{M as _}from"./md5.DLPczxzP.js";import{c as q}from"./commonCrud.CCkJYHLJ.js";const n="/api/system/user/";function B(t){return o({url:"/api/system/dept/all_dept/",method:"get",params:t})}function R(t){return o({url:n,method:"get",params:t})}function T(t){return o({url:n,method:"post",data:t})}function m(t){return o({url:n+t.id+"/",method:"put",data:t})}function C(t){return o({url:n+t+"/",method:"delete",data:{id:t}})}function S(t){return o({url:n+t+"/reset_to_default_password/",method:"put"})}const D=function({crudExpose:t}){const p=async e=>await R(e),h=async({form:e,row:r})=>(e.id=r.id,await m(e)),f=async({row:e})=>await C(e.id),w=async({form:e})=>await T(e),l=async e=>{await S(e.id),c("重置密码成功")},g=y(),{systemConfig:u}=v(g);return d(()=>u.value),{crudOptions:{table:{remove:{confirmMessage:"是否删除该用户?"}},request:{pageRequest:p,addRequest:w,editRequest:h,delRequest:f},form:{initialForm:{password:d(()=>u.value["base.default_password"])}},actionbar:{buttons:{add:{show:a("user:Create")},export:{text:"导出",title:"导出",show:a("user:Export"),click:e=>x.confirm("确定重设密码吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>l(e.row))}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:a("user:Update")},remove:{iconRight:"Delete",type:"text",show:a("user:Delete")},custom:{text:"重设密码",type:"text",show:a("user:ResetPassword"),tooltip:{placement:"top",content:"重设密码"},click:e=>{const{row:r}=e;l(r)}}}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},username:{title:"账号",search:{show:!0},type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"账号必填项"}],component:{placeholder:"请输入账号"}}},password:{title:"密码",type:"password",column:{show:!1},editForm:{show:!1},form:{rules:[{required:!0,message:"密码必填项"}],component:{span:12,showPassword:!0,placeholder:"请输入密码"}},valueResolve({form:e}){e.password&&(e.password=_.hashStr(e.password))}},name:{title:"姓名",search:{show:!0},type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"姓名必填项"}],component:{span:12,placeholder:"请输入姓名"}}},dept:{title:"部门",search:{disabled:!0},type:"dict-tree",dict:s({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"}),column:{minWidth:200,formatter({value:e,row:r,index:O}){return r.dept_name_all}},form:{rules:[{required:!0,message:"必填项"}],component:{filterable:!0,placeholder:"请选择",props:{checkStrictly:!0,props:{value:"id",label:"name"}}}}},role:{title:"角色",search:{disabled:!0},type:"dict-select",dict:s({url:"/api/system/role/",value:"id",label:"name"}),column:{minWidth:200},form:{rules:[{required:!0,message:"必填项"}],component:{multiple:!0,filterable:!0,placeholder:"请选择角色"}}},mobile:{title:"手机号码",search:{show:!0},type:"input",column:{minWidth:120},form:{rules:[{max:20,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}],component:{placeholder:"请输入手机号码"}}},email:{title:"邮箱",column:{width:260},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},gender:{title:"性别",type:"dict-select",dict:s({data:i("gender")}),form:{value:1,component:{span:12}},component:{props:{color:"auto"}}},user_type:{title:"用户类型",search:{show:!0},type:"dict-select",dict:s({data:i("user_type")}),column:{minWidth:100},form:{show:!1,value:0,component:{span:12}}},is_active:{title:"状态",search:{show:!0},type:"dict-radio",column:{component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:b(e=>()=>{m(e.row).then(r=>{c(r.msg)})})}},dict:s({data:i("button_status_bool")})},avatar:{title:"头像",type:"avatar-uploader",align:"center",form:{show:!1},column:{minWidth:100}},...q({dept_belong_id:{form:!0,table:!0}})}}}},F=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:D},Symbol.toStringTag,{value:"Module"}));export{B as G,F as a,D as c}; diff --git a/web/dist/assets/crud.BZns8qMI.js b/web/dist/assets/crud.BZns8qMI.js deleted file mode 100644 index 515a608083..0000000000 --- a/web/dist/assets/crud.BZns8qMI.js +++ /dev/null @@ -1 +0,0 @@ -import{r as a,m as c,n as l,s as d}from"./index.CkCcWuPb.js";import{d as p}from"./dictionary.CH8ZDdyo.js";import{a as i}from"./authFunction.Br9oRcVU.js";import{a7 as m,aA as h,P as f}from"./vue.Cw4Y52yh.js";const o="/api/system/dictionary/";function w(t){return a({url:o,method:"get",params:t})}function y(t){return a({url:o,method:"post",data:t})}function u(t){return a({url:o+t.id+"/",method:"put",data:t})}function g(t){return a({url:o+t+"/",method:"delete",data:{id:t}})}const C=function({crudExpose:t,context:n}){return{crudOptions:{request:{pageRequest:async e=>await w(e),addRequest:async({form:e})=>await y(e),editRequest:async({form:e,row:r})=>(e.id=r.id,await u(e)),delRequest:async({row:e})=>await g(e.id)},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:i("dictionary:Update")},remove:{iconRight:"Delete",type:"text",show:i("dictionary:Delete")},custom:{text:"字典配置",type:"text",show:i("dictionary:Update"),tooltip:{placement:"top",content:"字典配置"},click:e=>{const{row:r}=e;n.subDictRef.value.drawer=!0,f(()=>{n.subDictRef.value.setSearchFormData({form:{parent:r.id}}),n.subDictRef.value.doRefresh()})}}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let r=e.index??1,s=t.crudBinding.value.pagination;return((s.currentPage??1)-1)*s.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},label:{title:"字典名称",search:{show:!0,component:{props:{clearable:!0}}},type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"字典名称必填项"}],component:{props:{clearable:!0},placeholder:"请输入字典名称"}}},value:{title:"字典编号",search:{disabled:!0,component:{props:{clearable:!0}}},type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"字典编号必填项"}],component:{props:{clearable:!0},placeholder:"请输入字典编号"},helper:{render(e){return m(h("el-alert"),{title:"使用方法:dictionary('字典编号')",type:"warning"},null)}}}},status:{title:"状态",search:{show:!0},type:"dict-radio",column:{minWidth:90,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(e=>()=>{u(e.row).then(r=>{d(r.msg)})})}},dict:c({data:p("button_status_bool")})},sort:{title:"排序",type:"number",column:{minWidth:80},form:{value:1}}}}}};export{C as createCrudOptions}; diff --git a/web/dist/assets/crud.FaW-C1Tj.js b/web/dist/assets/crud.BcxQZW6U.js similarity index 92% rename from web/dist/assets/crud.FaW-C1Tj.js rename to web/dist/assets/crud.BcxQZW6U.js index 9749480f61..e5b50b5d73 100644 --- a/web/dist/assets/crud.FaW-C1Tj.js +++ b/web/dist/assets/crud.BcxQZW6U.js @@ -1 +1 @@ -import{r as d,m as b,X as a}from"./index.CkCcWuPb.js";import{a as u}from"./authFunction.Br9oRcVU.js";import{D as v,P as c}from"./vue.Cw4Y52yh.js";function R(t){return t.authorized=1,d({url:"/api/system/role/get_role_users/",method:"get",params:t})}function y(t,n){return d({url:`/api/system/role/${t}/remove_role_user/`,method:"delete",data:{user_id:n}})}const _=function({crudExpose:t,context:n}){const f=async e=>await R(e),m=async({form:e,row:l})=>{},h=async({row:e})=>await y(t.crudRef.value.getSearchFormData().role_id,[e.id]),p=async({form:e})=>{},o=v([]),g=e=>{const s=t.getTableData().filter(r=>!e.includes(r));a.arrayEach(e,r=>{a.pluck(o.value,"id").includes(r.id)||(o.value=a.union(o.value,[r]))}),a.arrayEach(s,r=>{o.value=a.remove(o.value,i=>i.id!==r.id)})},w=()=>{const e=t.getBaseTableRef(),l=t.getTableData(),s=a.filter(l,r=>a.pluck(o.value,"id").includes(r.id));c(()=>{a.arrayEach(s,r=>{e.toggleRowSelection(r,!0)})})};return{selectedRows:o,crudOptions:{request:{pageRequest:f,addRequest:p,editRequest:m,delRequest:h},actionbar:{buttons:{add:{show:u("role:AuthorizedAdd"),click:e=>{n.subUserRef.value.dialog=!0,c(()=>{n.subUserRef.value.setSearchFormData({form:{role_id:t.crudRef.value.getSearchFormData().role_id}}),n.subUserRef.value.doRefresh()})}}}},rowHandle:{fixed:"left",width:120,show:u("role:AuthorizedDel"),buttons:{view:{show:!1},edit:{show:!1},remove:{iconRight:"Delete",show:!0}}},table:{rowKey:"id",onSelectionChange:g,onRefreshed:()=>w()},columns:{$checked:{title:"选择",form:{show:!1},column:{show:u("role:AuthorizedDel"),type:"selection",align:"center",width:"55px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let l=e.index??1,s=t.crudBinding.value.pagination;return((s.currentPage??1)-1)*s.pageSize+l+1}}},name:{title:"用户名",search:{show:!0,component:{props:{clearable:!0}}},type:"text",form:{show:!1}},dept:{title:"部门",show:!0,type:"dict-tree",column:{name:"text",formatter({value:e,row:l,index:s}){return l.dept__name}},search:{show:!0,disabled:!0,col:{span:6},component:{multiple:!1,props:{checkStrictly:!0,clearable:!0,filterable:!0}}},form:{show:!1},dict:b({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"})}}}}},k=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:_},Symbol.toStringTag,{value:"Module"}));export{k as a,_ as c,y as r}; +import{r as d,c as b,X as a}from"./index.XK2ik2qb.js";import{a as u}from"./authFunction.CZ5a1pu0.js";import{g as v,D as c}from"./vue.DmuWcDrn.js";function R(t){return t.authorized=1,d({url:"/api/system/role/get_role_users/",method:"get",params:t})}function y(t,n){return d({url:`/api/system/role/${t}/remove_role_user/`,method:"delete",data:{user_id:n}})}const _=function({crudExpose:t,context:n}){const f=async e=>await R(e),m=async({form:e,row:l})=>{},h=async({row:e})=>await y(t.crudRef.value.getSearchFormData().role_id,[e.id]),p=async({form:e})=>{},o=v([]),g=e=>{const s=t.getTableData().filter(r=>!e.includes(r));a.arrayEach(e,r=>{a.pluck(o.value,"id").includes(r.id)||(o.value=a.union(o.value,[r]))}),a.arrayEach(s,r=>{o.value=a.remove(o.value,i=>i.id!==r.id)})},w=()=>{const e=t.getBaseTableRef(),l=t.getTableData(),s=a.filter(l,r=>a.pluck(o.value,"id").includes(r.id));c(()=>{a.arrayEach(s,r=>{e.toggleRowSelection(r,!0)})})};return{selectedRows:o,crudOptions:{request:{pageRequest:f,addRequest:p,editRequest:m,delRequest:h},actionbar:{buttons:{add:{show:u("role:AuthorizedAdd"),click:e=>{n.subUserRef.value.dialog=!0,c(()=>{n.subUserRef.value.setSearchFormData({form:{role_id:t.crudRef.value.getSearchFormData().role_id}}),n.subUserRef.value.doRefresh()})}}}},rowHandle:{fixed:"left",width:120,show:u("role:AuthorizedDel"),buttons:{view:{show:!1},edit:{show:!1},remove:{iconRight:"Delete",show:!0}}},table:{rowKey:"id",onSelectionChange:g,onRefreshed:()=>w()},columns:{$checked:{title:"选择",form:{show:!1},column:{show:u("role:AuthorizedDel"),type:"selection",align:"center",width:"55px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let l=e.index??1,s=t.crudBinding.value.pagination;return((s.currentPage??1)-1)*s.pageSize+l+1}}},name:{title:"用户名",search:{show:!0,component:{props:{clearable:!0}}},type:"text",form:{show:!1}},dept:{title:"部门",show:!0,type:"dict-tree",column:{name:"text",formatter({value:e,row:l,index:s}){return l.dept__name}},search:{show:!0,disabled:!0,col:{span:6},component:{multiple:!1,props:{checkStrictly:!0,clearable:!0,filterable:!0}}},form:{show:!1},dict:b({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"})}}}}},k=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:_},Symbol.toStringTag,{value:"Module"}));export{k as a,_ as c,y as r}; diff --git a/web/dist/assets/crud.BkSVuOF_.js b/web/dist/assets/crud.BkSVuOF_.js new file mode 100644 index 0000000000..9c78321d3e --- /dev/null +++ b/web/dist/assets/crud.BkSVuOF_.js @@ -0,0 +1 @@ +import{r as a,d as h,t as f,c as l,g as u}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as w}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const s="/api/ProductAssemblyModelViewSet/";function y(t){return a({url:s,method:"get",params:t})}function b(t){return a({url:s,method:"post",data:t})}function g(t){return a({url:s+t.id+"/",method:"put",data:t})}function x(t){return a({url:s+t+"/",method:"delete",data:{id:t}})}function q(t){return h({url:s+"export_data/",params:t,method:"get"})}function A({crudExpose:t}){const n=async e=>await y(e),c=async({form:e,row:o})=>(o.id&&(e.id=o.id),await g(e)),d=async({row:e})=>await x(e.id),i=async({form:e})=>await b(e),m=async e=>await q(e);return{crudOptions:{request:{pageRequest:n,addRequest:i,editRequest:c,delRequest:d},actionbar:{buttons:{export:{show:r("ProductAssemblyModelViewSet:Export"),text:"导出",title:"导出",click(){return m(t.getSearchFormData())}},add:{show:r("ProductAssemblyModelViewSet:Create")}}},rowHandle:{fixed:"right",width:130,buttons:{view:{type:"text",order:1,show:r("ProductAssemblyModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("ProductAssemblyModelViewSet:Update")},copy:{type:"text",order:3,show:r("ProductAssemblyModelViewSet:Copy")},remove:{type:"text",order:4,show:r("ProductAssemblyModelViewSet:Delete")}}},columns:{code:{title:"编号",type:"text",search:{show:!0},column:{sortable:"custom"},form:{show:!0,component:{placeholder:"编号自动生成,无需输入."}},addForm:{component:{disabled:!0}},editForm:{component:{disabled:!0}}},specification:{title:"规格",type:"text",search:{show:!0,component:{placeholder:"请输入规格"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入规格"}}},name:{title:"名称",type:"text",search:{show:!0,component:{placeholder:"请输入名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入名称"}}},number:{title:"数量",type:"number",search:{show:!1,component:{placeholder:"请输入数量"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"数量必填"}],component:{min:0,placeholder:"请输入数量"}}},transfer_unit:{title:"单位",type:"dict-radio",search:{show:!0,component:{placeholder:"请输入单位"}},dict:l({data:w("weight_unit")}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"单位必选"}],component:{placeholder:"请输入单位"}}},price:{title:"单价",type:"",search:{show:!1,component:{placeholder:"请输入单价"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"单价必填"}],component:{min:0,max:10,step:.1,placeholder:"请输入单价"}}},stash:{title:"所属仓位",type:"dict-select",search:{show:!0,component:{placeholder:"请输入所属仓位"}},dict:l({url:"/api/StashManageModelViewSet/",label:"stash_position",value:"id"}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"所属仓位必选"}],component:{placeholder:"请输入所属仓位"}}},note:{title:"备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入订单备注"}}},images:{title:"照片墙",type:"image-uploader",form:{col:{span:24},component:{limit:10,uploader:{type:"form"}},valueBuilder(e){e.mode!=="add"&&e.form.images!==null&&e.form.images.forEach((o,p)=>{e.form.images[p]=u(o)})},rules:f([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最多可上传10个图片"},column:{component:{async buildUrl(e){return u(e)},async buildPreviewUrl({url:e,index:o}){return e+"?preview=600x600"}}}}}}}}export{A as default}; diff --git a/web/dist/assets/crud.BolfnWXH.js b/web/dist/assets/crud.BolfnWXH.js new file mode 100644 index 0000000000..24ea8069dc --- /dev/null +++ b/web/dist/assets/crud.BolfnWXH.js @@ -0,0 +1 @@ +import{r as a,c,w as l,s as d}from"./index.XK2ik2qb.js";import{d as p}from"./dictionary.DnyXy1XL.js";import{a as i}from"./authFunction.CZ5a1pu0.js";import{k as m,h,D as f}from"./vue.DmuWcDrn.js";const o="/api/system/dictionary/";function w(t){return a({url:o,method:"get",params:t})}function y(t){return a({url:o,method:"post",data:t})}function u(t){return a({url:o+t.id+"/",method:"put",data:t})}function g(t){return a({url:o+t+"/",method:"delete",data:{id:t}})}const C=function({crudExpose:t,context:n}){return{crudOptions:{request:{pageRequest:async e=>await w(e),addRequest:async({form:e})=>await y(e),editRequest:async({form:e,row:r})=>(e.id=r.id,await u(e)),delRequest:async({row:e})=>await g(e.id)},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:i("dictionary:Update")},remove:{iconRight:"Delete",type:"text",show:i("dictionary:Delete")},custom:{text:"字典配置",type:"text",show:i("dictionary:Update"),tooltip:{placement:"top",content:"字典配置"},click:e=>{const{row:r}=e;n.subDictRef.value.drawer=!0,f(()=>{n.subDictRef.value.setSearchFormData({form:{parent:r.id}}),n.subDictRef.value.doRefresh()})}}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let r=e.index??1,s=t.crudBinding.value.pagination;return((s.currentPage??1)-1)*s.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},label:{title:"字典名称",search:{show:!0,component:{props:{clearable:!0}}},type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"字典名称必填项"}],component:{props:{clearable:!0},placeholder:"请输入字典名称"}}},value:{title:"字典编号",search:{disabled:!0,component:{props:{clearable:!0}}},type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"字典编号必填项"}],component:{props:{clearable:!0},placeholder:"请输入字典编号"},helper:{render(e){return m(h("el-alert"),{title:"使用方法:dictionary('字典编号')",type:"warning"},null)}}}},status:{title:"状态",search:{show:!0},type:"dict-radio",column:{minWidth:90,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(e=>()=>{u(e.row).then(r=>{d(r.msg)})})}},dict:c({data:p("button_status_bool")})},sort:{title:"排序",type:"number",column:{minWidth:80},form:{value:1}}}}}};export{C as createCrudOptions}; diff --git a/web/dist/assets/crud.hXHWdc3w.js b/web/dist/assets/crud.Bq9pdT9R.js similarity index 73% rename from web/dist/assets/crud.hXHWdc3w.js rename to web/dist/assets/crud.Bq9pdT9R.js index 66137965e4..f1489f93d7 100644 --- a/web/dist/assets/crud.hXHWdc3w.js +++ b/web/dist/assets/crud.Bq9pdT9R.js @@ -1 +1 @@ -import{r as o,k as p}from"./index.CkCcWuPb.js";import{a as r}from"./authFunction.Br9oRcVU.js";import"./vue.Cw4Y52yh.js";const a="/api/VIEWSETNAME/";function E(t){return o({url:a,method:"get",params:t})}function l(t){return o({url:a,method:"post",data:t})}function h(t){return o({url:a+t.id+"/",method:"put",data:t})}function w(t){return o({url:a+t+"/",method:"delete",data:{id:t}})}function m(t){return p({url:a+"export_data/",params:t,method:"get"})}function A({crudExpose:t}){const u=async e=>await E(e),d=async({form:e,row:n})=>(n.id&&(e.id=n.id),await h(e)),i=async({row:e})=>await w(e.id),s=async({form:e})=>await l(e),c=async e=>await m(e);return{crudOptions:{request:{pageRequest:u,addRequest:s,editRequest:d,delRequest:i},actionbar:{buttons:{export:{show:r("VIEWSETNAME:Export"),text:"导出",title:"导出",click(){return c(t.getSearchFormData())}},add:{show:r("VIEWSETNAME:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:r("VIEWSETNAME:Retrieve")},edit:{type:"text",order:2,show:r("VIEWSETNAME:Update")},copy:{type:"text",order:3,show:r("VIEWSETNAME:Copy")},remove:{type:"text",order:4,show:r("VIEWSETNAME:Delete")}}},columns:{}}}}export{A as default}; +import{r as o,d as p}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import"./vue.DmuWcDrn.js";const a="/api/VIEWSETNAME/";function E(t){return o({url:a,method:"get",params:t})}function l(t){return o({url:a,method:"post",data:t})}function h(t){return o({url:a+t.id+"/",method:"put",data:t})}function w(t){return o({url:a+t+"/",method:"delete",data:{id:t}})}function m(t){return p({url:a+"export_data/",params:t,method:"get"})}function A({crudExpose:t}){const d=async e=>await E(e),u=async({form:e,row:n})=>(n.id&&(e.id=n.id),await h(e)),i=async({row:e})=>await w(e.id),s=async({form:e})=>await l(e),c=async e=>await m(e);return{crudOptions:{request:{pageRequest:d,addRequest:s,editRequest:u,delRequest:i},actionbar:{buttons:{export:{show:r("VIEWSETNAME:Export"),text:"导出",title:"导出",click(){return c(t.getSearchFormData())}},add:{show:r("VIEWSETNAME:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:r("VIEWSETNAME:Retrieve")},edit:{type:"text",order:2,show:r("VIEWSETNAME:Update")},copy:{type:"text",order:3,show:r("VIEWSETNAME:Copy")},remove:{type:"text",order:4,show:r("VIEWSETNAME:Delete")}}},columns:{}}}}export{A as default}; diff --git a/web/dist/assets/crud.BtIrK1bf.js b/web/dist/assets/crud.BtIrK1bf.js new file mode 100644 index 0000000000..af94932ce8 --- /dev/null +++ b/web/dist/assets/crud.BtIrK1bf.js @@ -0,0 +1 @@ +import{DelObj as n,UpdateObj as r,AddObj as d,GetList as o}from"./api.CQml_ETa.js";import{c as l}from"./index.XK2ik2qb.js";import{c}from"./commonCrud.Ca1t2kUN.js";import"./vue.DmuWcDrn.js";const f=function({crudExpose:i}){return{crudOptions:{request:{pageRequest:async e=>await o(e),addRequest:async({form:e})=>await d(e),editRequest:async({form:e,row:t})=>(e.id=t.id,await r(e)),delRequest:async({row:e})=>await n(e.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",align:"center",width:180,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:!1},remove:{iconRight:"Delete",type:"text"}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let t=e.index??1,a=i.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+t+1}}},name:{title:"流程名称",search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入"}},column:{width:"200px",align:"center"}},icon:{title:"流程图标",column:{width:"100px",align:"center"}},model_name:{title:"库表模型",column:{minWidth:"120px",align:"center"}},operation:{title:"库表操作",type:"dict-select",align:"center",dict:l({label:"label",value:"value",data:[{value:"create",label:"新增"},{value:"update",label:"编辑"},{value:"delete",label:"删除"}]})},status:{title:"状态",type:"dict-select",dict:l({data:[{label:"待发布",value:0},{label:"启用",value:1},{label:"停用",value:2}]})},...c({create_datetime:{search:!1,table:!0},update_datetime:{table:!0},dept_belong_id:{table:!1}})}}}};export{f as createCrudOptions}; diff --git a/web/dist/assets/crud.Dl7qlUZf.js b/web/dist/assets/crud.BvRPdH2Q.js similarity index 90% rename from web/dist/assets/crud.Dl7qlUZf.js rename to web/dist/assets/crud.BvRPdH2Q.js index b55cb1bb2e..a0b868365e 100644 --- a/web/dist/assets/crud.Dl7qlUZf.js +++ b/web/dist/assets/crud.BvRPdH2Q.js @@ -1 +1 @@ -import{r as a,m as n,f as s}from"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";const l="/api/system/file/";function u(t){return a({url:l,method:"get",params:t})}function d(t){return a({url:l,method:"post",data:t})}function c(t){return a({url:l+t.id+"/",method:"put",data:t})}function m(t){return a({url:l+t+"/",method:"delete",data:{id:t}})}const g=function({crudExpose:t,context:r}){return{crudOptions:{actionbar:{buttons:{add:{show:!0,click:()=>{var e;return(e=r.openAddHandle)==null?void 0:e.call(r)}}}},request:{pageRequest:async e=>await u(e),addRequest:async({form:e})=>await d(e),editRequest:async({form:e,row:i})=>(e.id=i.id,await c(e)),delRequest:async({row:e})=>await m(e.id)},tabs:{show:!0,name:"file_type",type:"",options:[{value:0,label:"图片"},{value:1,label:"视频"},{value:2,label:"音频"},{value:3,label:"其他"}]},rowHandle:{fixed:"right",width:200,show:!1,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text"},remove:{iconRight:"Delete",type:"text"}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let i=e.index??1,o=t.crudBinding.value.pagination;return((o.currentPage??1)-1)*o.pageSize+i+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},name:{title:"文件名称",search:{show:!0},type:"input",column:{minWidth:200},form:{component:{placeholder:"请输入文件名称",clearable:!0}}},preview:{title:"预览",column:{minWidth:120,align:"center"},form:{show:!1}},url:{title:"文件地址",type:"file-uploader",search:{disabled:!0},column:{minWidth:360,component:{async buildUrl(e){return s(e)}}}},md5sum:{title:"文件MD5",search:{disabled:!0},column:{minWidth:300},form:{disabled:!1}},mime_type:{title:"文件类型",type:"input",form:{show:!1},column:{minWidth:160}},file_type:{title:"文件类型",type:"dict-select",dict:n({data:[{label:"图片",value:0,color:"success"},{label:"视频",value:1,color:"warning"},{label:"音频",value:2,color:"danger"},{label:"其他",value:3,color:"primary"}]}),column:{show:!1},search:{show:!0},form:{show:!1,component:{placeholder:"请选择文件类型"}}},size:{title:"文件大小",column:{minWidth:120},form:{show:!1}},upload_method:{title:"上传方式",type:"dict-select",dict:n({data:[{label:"默认上传",value:0,color:"primary"},{label:"文件选择器上传",value:1,color:"warning"}]}),column:{minWidth:140},search:{show:!0}},create_datetime:{title:"创建时间",column:{minWidth:160},form:{show:!1}}}}}};export{g as createCrudOptions}; +import{r as a,c as n,g as s}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const l="/api/system/file/";function u(t){return a({url:l,method:"get",params:t})}function d(t){return a({url:l,method:"post",data:t})}function c(t){return a({url:l+t.id+"/",method:"put",data:t})}function m(t){return a({url:l+t+"/",method:"delete",data:{id:t}})}const y=function({crudExpose:t,context:r}){return{crudOptions:{actionbar:{buttons:{add:{show:!0,click:()=>{var e;return(e=r.openAddHandle)==null?void 0:e.call(r)}}}},request:{pageRequest:async e=>await u(e),addRequest:async({form:e})=>await d(e),editRequest:async({form:e,row:i})=>(e.id=i.id,await c(e)),delRequest:async({row:e})=>await m(e.id)},tabs:{show:!0,name:"file_type",type:"",options:[{value:0,label:"图片"},{value:1,label:"视频"},{value:2,label:"音频"},{value:3,label:"其他"}]},rowHandle:{fixed:"right",width:200,show:!1,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text"},remove:{iconRight:"Delete",type:"text"}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let i=e.index??1,o=t.crudBinding.value.pagination;return((o.currentPage??1)-1)*o.pageSize+i+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},name:{title:"文件名称",search:{show:!0},type:"input",column:{minWidth:200},form:{component:{placeholder:"请输入文件名称",clearable:!0}}},preview:{title:"预览",column:{minWidth:120,align:"center"},form:{show:!1}},url:{title:"文件地址",type:"file-uploader",search:{disabled:!0},column:{minWidth:360,component:{async buildUrl(e){return s(e)}}}},md5sum:{title:"文件MD5",search:{disabled:!0},column:{minWidth:300},form:{disabled:!1}},mime_type:{title:"文件类型",type:"input",form:{show:!1},column:{minWidth:160}},file_type:{title:"文件类型",type:"dict-select",dict:n({data:[{label:"图片",value:0,color:"success"},{label:"视频",value:1,color:"warning"},{label:"音频",value:2,color:"danger"},{label:"其他",value:3,color:"primary"}]}),column:{show:!1},search:{show:!0},form:{show:!1,component:{placeholder:"请选择文件类型"}}},size:{title:"文件大小",column:{minWidth:120},form:{show:!1}},upload_method:{title:"上传方式",type:"dict-select",dict:n({data:[{label:"默认上传",value:0,color:"primary"},{label:"文件选择器上传",value:1,color:"warning"}]}),column:{minWidth:140},search:{show:!0}},create_datetime:{title:"创建时间",column:{minWidth:160},form:{show:!1}}}}}};export{y as createCrudOptions}; diff --git a/web/dist/assets/crud.C2AJNsTW.js b/web/dist/assets/crud.C2AJNsTW.js new file mode 100644 index 0000000000..06273f0c57 --- /dev/null +++ b/web/dist/assets/crud.C2AJNsTW.js @@ -0,0 +1 @@ +import{r as a,d as m}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import"./vue.DmuWcDrn.js";const o="/api/SampleCostModelViewSet/";function i(e){return a({url:o,method:"get",params:e})}function d(e){return a({url:o,method:"post",data:e})}function h(e){return a({url:o+e.id+"/",method:"put",data:e})}function w(e){return a({url:o+e+"/",method:"delete",data:{id:e}})}function f(e){return m({url:o+"export_data/",params:e,method:"get"})}function x({crudExpose:e}){const l=async t=>await i(t),n=async({form:t,row:s})=>(s.id&&(t.id=s.id),await h(t)),u=async({row:t})=>await w(t.id),p=async({form:t})=>await d(t),c=async t=>await f(t);return{crudOptions:{request:{pageRequest:l,addRequest:p,editRequest:n,delRequest:u},actionbar:{buttons:{export:{show:r("SampleCostModelViewSet:Export"),text:"导出",title:"导出",click(){return c(e.getSearchFormData())}},add:{show:r("SampleCostModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:r("SampleCostModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("SampleCostModelViewSet:Update")},copy:{type:"text",order:3,show:r("SampleCostModelViewSet:Copy")},remove:{type:"text",order:4,show:r("SampleCostModelViewSet:Delete")}}},columns:{sample_name:{title:"名称",type:"text",search:{show:!0,component:{placeholder:"请输入名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"名称必填",trigger:"blur"}],component:{placeholder:"请输入名称"}}},sample_specification:{title:"规格",type:"text",search:{show:!0,component:{placeholder:"请输入规格"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填",trigger:"blur"}],component:{placeholder:"请输入规格"}}},sample_number:{title:"数量",type:"number",search:{show:!1,component:{placeholder:"请输入数量"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"数量必填",trigger:"blur"}],component:{placeholder:"请输入数量"}}},sample_price:{title:"单价",type:"number",search:{show:!1,component:{placeholder:"请输入单价"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"单价必填",trigger:"blur"}],component:{min:0,step:.01,placeholder:"请输入单价"}}},sample_total_price:{title:"总价",type:"number",search:{show:!1,component:{placeholder:"请输入总价"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{min:0,step:.01,placeholder:"请输入总价"}}},sample_note:{title:"备注",type:"textarea",search:{show:!1,component:{placeholder:"请输入备注"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入备注"}}}}}}}export{x as default}; diff --git a/web/dist/assets/crud.7rE-T_E9.js b/web/dist/assets/crud.C4dquu5X.js similarity index 95% rename from web/dist/assets/crud.7rE-T_E9.js rename to web/dist/assets/crud.C4dquu5X.js index 2e98c78319..c6a0a63e6f 100644 --- a/web/dist/assets/crud.7rE-T_E9.js +++ b/web/dist/assets/crud.C4dquu5X.js @@ -1 +1 @@ -import{r as l,m as u}from"./index.CkCcWuPb.js";import{d as n}from"./dictionary.CH8ZDdyo.js";import"./vue.Cw4Y52yh.js";const o="/api/system/dictionary/";function i(e){return l({url:o,method:"get",params:e})}function s(e){return l({url:o,method:"post",data:e})}function c(e){return l({url:o+e.id+"/",method:"put",data:e})}function d(e){return l({url:o+e+"/",method:"delete",data:{}})}const y=function({crudExpose:e,context:p}){return{crudOptions:{request:{pageRequest:async t=>await i(t),addRequest:async({form:t})=>{const a=e.getSearchFormData().parent;if(t.parent=a,a)return await s(t)},editRequest:async({form:t,row:r})=>(t.id=r.id,await c(t)),delRequest:async({row:t})=>await d(t.id)},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text"},remove:{iconRight:"Delete",type:"text"}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,a=e.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+r+1}}},label:{title:"名称",search:{show:!0,component:{props:{clearable:!0}}},type:"input",form:{rules:[{required:!0,message:"名称必填项"}],component:{props:{clearable:!0},placeholder:"请输入名称"}}},type:{title:"数据值类型",type:"dict-select",search:{disabled:!0,component:{props:{clearable:!0}}},show:!1,dict:u({data:[{label:"text",value:0},{label:"number",value:1},{label:"date",value:2},{label:"datetime",value:3},{label:"time",value:4},{label:"file",value:5},{label:"boolean",value:6},{label:"images",value:7}]}),form:{rules:[{required:!0,message:"数据值类型必填项"}],value:0,component:{props:{clearable:!0},placeholder:"请选择数据值类型"}}},value:{title:"数据值",search:{show:!0,component:{props:{clearable:!0}}},view:{component:{props:{height:100,width:100}}},type:"input",form:{rules:[{required:!0,message:"数据值必填项"}],component:{props:{clearable:!0},placeholder:"请输入数据值"}}},status:{title:"状态",width:80,search:{show:!0},type:"dict-radio",dict:u({data:n("button_status_bool")}),form:{value:!0,rules:[{required:!0,message:"状态必填项"}]}},sort:{title:"排序",width:70,type:"number",form:{value:1,component:{},rules:[{required:!0,message:"排序必填项"}]}},color:{title:"标签颜色",width:90,search:{disabled:!0},type:"dict-select",dict:u({data:[{label:"success",value:"success",color:"success"},{label:"primary",value:"primary",color:"primary"},{label:"info",value:"info",color:"info"},{label:"danger",value:"danger",color:"danger"},{label:"warning",value:"warning",color:"warning"}]}),form:{component:{props:{clearable:!0}}}},is_value:{title:"是否值",column:{show:!1},form:{show:!1,value:!0}}}}}};export{y as createCrudOptions}; +import{r as l,c as u}from"./index.XK2ik2qb.js";import{d as n}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const o="/api/system/dictionary/";function i(e){return l({url:o,method:"get",params:e})}function s(e){return l({url:o,method:"post",data:e})}function c(e){return l({url:o+e.id+"/",method:"put",data:e})}function d(e){return l({url:o+e+"/",method:"delete",data:{}})}const y=function({crudExpose:e,context:p}){return{crudOptions:{request:{pageRequest:async t=>await i(t),addRequest:async({form:t})=>{const a=e.getSearchFormData().parent;if(t.parent=a,a)return await s(t)},editRequest:async({form:t,row:r})=>(t.id=r.id,await c(t)),delRequest:async({row:t})=>await d(t.id)},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text"},remove:{iconRight:"Delete",type:"text"}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,a=e.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+r+1}}},label:{title:"名称",search:{show:!0,component:{props:{clearable:!0}}},type:"input",form:{rules:[{required:!0,message:"名称必填项"}],component:{props:{clearable:!0},placeholder:"请输入名称"}}},type:{title:"数据值类型",type:"dict-select",search:{disabled:!0,component:{props:{clearable:!0}}},show:!1,dict:u({data:[{label:"text",value:0},{label:"number",value:1},{label:"date",value:2},{label:"datetime",value:3},{label:"time",value:4},{label:"file",value:5},{label:"boolean",value:6},{label:"images",value:7}]}),form:{rules:[{required:!0,message:"数据值类型必填项"}],value:0,component:{props:{clearable:!0},placeholder:"请选择数据值类型"}}},value:{title:"数据值",search:{show:!0,component:{props:{clearable:!0}}},view:{component:{props:{height:100,width:100}}},type:"input",form:{rules:[{required:!0,message:"数据值必填项"}],component:{props:{clearable:!0},placeholder:"请输入数据值"}}},status:{title:"状态",width:80,search:{show:!0},type:"dict-radio",dict:u({data:n("button_status_bool")}),form:{value:!0,rules:[{required:!0,message:"状态必填项"}]}},sort:{title:"排序",width:70,type:"number",form:{value:1,component:{},rules:[{required:!0,message:"排序必填项"}]}},color:{title:"标签颜色",width:90,search:{disabled:!0},type:"dict-select",dict:u({data:[{label:"success",value:"success",color:"success"},{label:"primary",value:"primary",color:"primary"},{label:"info",value:"info",color:"info"},{label:"danger",value:"danger",color:"danger"},{label:"warning",value:"warning",color:"warning"}]}),form:{component:{props:{clearable:!0}}}},is_value:{title:"是否值",column:{show:!1},form:{show:!1,value:!0}}}}}};export{y as createCrudOptions}; diff --git a/web/dist/assets/crud.CDRJ7Jbg.js b/web/dist/assets/crud.CDRJ7Jbg.js new file mode 100644 index 0000000000..0e133f3568 --- /dev/null +++ b/web/dist/assets/crud.CDRJ7Jbg.js @@ -0,0 +1 @@ +import{i as s}from"./vue.DmuWcDrn.js";function d({crudExpose:t}){const{crudBinding:r}=t,o=s("get:scope",()=>({index:null,row:null,form:null,mode:"edit"})),{index:i,row:a,form:l,mode:e}=o();return{crudOptions:{actionbar:{buttons:{add:{show:!1},addRow:{show:e!="view"}}},search:{show:!1},toolbar:{show:!1,buttons:{refresh:{show:!1},search:{show:!1}}},table:{editable:{enabled:!1,mode:"free",showAction:!1,activeDefault:!0}},pagination:{show:!1,pageSize:9999999},columns:{sample_name:{title:"名称",type:"text",column:{minWidth:50},form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{required:!0,message:"名称必填项"}]}},sample_specification:{title:"规格",type:"text",form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{required:!0,message:"规格必填项"}]}},sample_number:{title:"数量",type:"number",column:{minWidth:70},form:{component:{disabled:e=="view"},rules:[{required:!0,message:"数量必填项"}]}},sample_price:{title:"单价",type:"number",form:{component:{min:0,step:.1,disabled:e=="view"},rules:[{required:!0,message:"单价必填项"}]}},note:{title:"备注",type:"textarea",form:{component:{placeholder:"请输入",disabled:e=="view"}}}},rowHandle:{fixed:"right",width:90,show:e!="view"}}}}export{d as default}; diff --git a/web/dist/assets/crud.CL85Bv5S.js b/web/dist/assets/crud.CL85Bv5S.js new file mode 100644 index 0000000000..aa68da57ea --- /dev/null +++ b/web/dist/assets/crud.CL85Bv5S.js @@ -0,0 +1 @@ +import{r as i,d as w,t as u,c as a,g as s}from"./index.XK2ik2qb.js";import y from"./index.S9xXVY3S.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as n}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";import"./crud.jJOAkYw9.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const l="/api/CrudPatronModelViewSet/";function g(t){return i({url:l,method:"get",params:t})}function b(t){return i({url:l,method:"post",data:t})}function x(t){return i({url:l+t.id+"/",method:"put",data:t})}function v(t){return i({url:l+t+"/",method:"delete",data:{id:t}})}function q(t){return w({url:l+"export_data/",params:t,method:"get"})}function O({crudExpose:t}){const d=async e=>await g(e),p=async({form:e,row:o})=>(o.id&&(e.id=o.id),await x(e)),m=async({row:e})=>await v(e.id),f=async({form:e})=>await b(e),h=async e=>await q(e);return console.log("这个位置是全局数据:",t),{crudOptions:{request:{pageRequest:d,addRequest:f,editRequest:p,delRequest:m},actionbar:{buttons:{export:{show:r("CrudPatronModelViewSet:Export"),text:"导出",title:"导出",click(){return h(t.getSearchFormData())}},add:{show:r("CrudPatronModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,align:"center",buttons:{view:{type:"text",order:1,show:r("CrudPatronModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("CrudPatronModelViewSet:Update")},copy:{type:"text",order:3,show:r("CrudPatronModelViewSet:Copy")},remove:{type:"text",order:4,show:r("CrudPatronModelViewSet:Delete")}}},columns:{username:{title:"客户名称",type:"text",search:{show:!0,component:{placeholder:"请输入客户名称"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入客户名称"}}},code:{title:"客户代号",type:"text",search:{show:!0,component:{placeholder:"客户代号"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"客户代号"}}},open_order_name:{title:"开单名称",type:"text",search:{show:!0,component:{placeholder:"请输入开单名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"开单名称必填"}],component:{placeholder:"请输入开单名称"}}},phone:{title:"联系电话",type:"text",search:{show:!0,component:{placeholder:"请输入联系电话"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入联系电话"}}},email:{title:"邮箱",type:"text",search:{show:!0,component:{placeholder:"请输入邮箱地址"}},column:{sortable:"custom"},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},age:{title:"年龄",type:"number",column:{sortable:"custom"},form:{value:0,component:{min:0,placeholder:"请输入客户年龄"}}},sex:{title:"性别",type:"dict-radio",search:{show:!0,component:{placeholder:"请选择性别"}},column:{sortable:"custom"},dict:a({data:n("gender")}),form:{value:1,component:{optionName:"el-radio"}},component:{props:{color:"auto"}}},my_remark:{title:"我方备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入我方备注"}}},tags:{title:"客户标签",search:{show:!1,component:{props:{name:"fs-dict-select",clearable:!0}}},type:"dict-select",dict:a({value:"id",label:"label",data:n("patron_tag")}),form:{rules:[{required:!1}],component:{multiple:!0,filterable:!0,placeholder:"请选择标签"}},component:{props:{color:"auto"}}},express:{title:"默认物流",search:{show:!0},type:"dict-select",dict:a({data:n("express")}),form:{component:{filterable:!0,placeholder:"请输入默认物流"}},component:{props:{color:"auto"}}},salesman:{title:"业务员",search:{show:!1},type:"dict-select",dict:a({url:"/api/system/user/",value:"id",label:"name"}),form:{component:{multiple:!0,filterable:!0,placeholder:"请选择业务员"}},component:{props:{color:"auto"}}},hierarchy:{title:"客户等级",search:{show:!0,component:{placeholder:"请选择客户等级"}},type:["dict-radio","colspan"],dict:a({data:n("patron")}),form:{value:0,component:{optionName:"el-radio-button"}},component:{props:{color:"auto"}}},images:{title:"照片墙",type:"image-uploader",form:{component:{limit:10,uploader:{type:"form"}},valueBuilder(e){e.mode!=="add"&&e.form.images!==null&&e.form.images.forEach((o,c)=>{e.form.images[c]=s(o)})},rules:u([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最多可上传10个图片"},column:{component:{async buildUrl(e){return s(e)},async buildPreviewUrl({url:e,index:o}){return e+"?preview=600x600"}}}},files:{title:"上传附件",type:"file-uploader",form:{component:{limit:5,uploader:{type:"form"},accept:".pdf,.csv,.doc,.docx,.xls,.xlsx,.mp4,.zip,.7z,.rar"},valueBuilder(e){e.mode!=="add"&&e.form.files!==null&&e.form.files.forEach((o,c)=>{e.form.files[c]=s(o)})},rules:u([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最大可上传5个文件"},column:{show:!1,component:{async buildUrl(e){return s(e)}}}},addressee:{title:"收件人信息",type:"text",form:{component:{name:y,vModel:"modelValue",readonly:!0},col:{span:24}},column:{show:!1,formatter:({row:e})=>{var o;return((o=e.addressee)==null?void 0:o.length)+"条数据"}}}},form:{display:"flex",wrapper:{width:"80%"},async beforeSubmit(){var o;if(await((o=t.getFormComponentRef("addressee"))==null?void 0:o.validate())!==!0)return!1}},toolbar:{buttons:{export:{show:!0}}}}}}export{O as default}; diff --git a/web/dist/assets/crud.CNUBLSuF.js b/web/dist/assets/crud.CNUBLSuF.js new file mode 100644 index 0000000000..78761bbb3c --- /dev/null +++ b/web/dist/assets/crud.CNUBLSuF.js @@ -0,0 +1 @@ +import{r as a,d as m,c as n}from"./index.XK2ik2qb.js";import{a as o}from"./authFunction.CZ5a1pu0.js";import{d as u}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const r="/api/InAndOutRecordModelViewSet/";function h(e){return a({url:r,method:"get",params:e})}function _(e){return a({url:r,method:"post",data:e})}function w(e){return a({url:r+e.id+"/",method:"put",data:e})}function f(e){return a({url:r+e+"/",method:"delete",data:{id:e}})}function y(e){return m({url:r+"export_data/",params:e,method:"get"})}function R({crudExpose:e}){const l=async t=>await h(t),s=async({form:t,row:c})=>(c.id&&(t.id=c.id),await w(t)),d=async({row:t})=>await f(t.id),i=async({form:t})=>await _(t),p=async t=>await y(t);return{crudOptions:{request:{pageRequest:l,addRequest:i,editRequest:s,delRequest:d},actionbar:{buttons:{export:{show:o("InAndOutRecordModelViewSet:Export"),text:"导出",title:"导出",click(){return p(e.getSearchFormData())}},add:{show:o("InAndOutRecordModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:o("InAndOutRecordModelViewSet:Retrieve")},edit:{type:"text",order:2,show:o("InAndOutRecordModelViewSet:Update")},copy:{type:"text",order:3,show:o("InAndOutRecordModelViewSet:Copy")},remove:{type:"text",order:4,show:o("InAndOutRecordModelViewSet:Delete")}}},columns:{in_or_out:{title:"出入库类型",type:"dict-radio",search:{show:!0,component:{placeholder:"请选择出入库类型"}},dict:n({data:u("in_or_out_type")}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"出入库类型必选"}],component:{placeholder:"请选择出入库类型"}}},in_or_out_aim:{title:"进出来源与目的",type:"text",search:{show:!0,component:{placeholder:"请输入进出来源与目的"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"进出来源与目的必填"}],component:{placeholder:"请输入进出来源与目的"}}},in_or_out_code:{title:"商品编号",type:"text",search:{show:!0,component:{placeholder:"请输入商品编号"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"商品编号必填"}],component:{placeholder:"请输入商品编号"}}},in_or_out_name:{title:"商品名称",type:"text",search:{show:!0,component:{placeholder:"请输入商品名称"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入商品名称"}}},in_or_out_type:{title:"商品类型",type:"dict-select",search:{show:!0,component:{placeholder:"请输入商品类型"}},dict:n({data:u("product_type")}),column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入商品类型"}}},in_or_out_number:{title:"出入库数量",type:"number",search:{show:!1,component:{placeholder:"请输入出入库数量"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"出入库数量必填"}],component:{min:0,placeholder:"请输入出入库数量"}}},in_or_out_unit:{title:"单位",type:"dict-radio",search:{show:!0,component:{placeholder:"请输入单位"}},dict:n({data:u("weight_unit")}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"单位必选"}],component:{placeholder:"请输入单位"}}},in_or_out_stash:{title:"仓位",type:"dict-select",search:{show:!0,component:{placeholder:"请输入仓位"}},dict:n({url:"/api/StashManageModelViewSet/",label:"stash_position",value:"id"}),column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入仓位"}}},in_or_out_note:{title:"备注",type:"textarea",search:{show:!1,component:{placeholder:"请输入备注"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入备注"}}}}}}}export{R as default}; diff --git a/web/dist/assets/crud.aEhwQ47D.js b/web/dist/assets/crud.CNtgxGiQ.js similarity index 88% rename from web/dist/assets/crud.aEhwQ47D.js rename to web/dist/assets/crud.CNtgxGiQ.js index 8c935813e1..f7ec1fed69 100644 --- a/web/dist/assets/crud.aEhwQ47D.js +++ b/web/dist/assets/crud.CNtgxGiQ.js @@ -1 +1 @@ -import{r as a,m as i,n as l,f as o}from"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";const s="/api/system/download_center/";function r(e){return a({url:s,method:"get",params:e})}function u(e){return a({url:s,method:"post",data:e})}function d(e){return a({url:s+e.id+"/",method:"put",data:e})}function c(e){return a({url:s+e+"/",method:"delete",data:{id:e}})}const x=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await r(t),addRequest:async({form:t})=>await u(t),editRequest:async({form:t,row:n})=>(t.id=n.id,await d(t)),delRequest:async({row:t})=>await c(t.id)},pagination:{show:!0},actionbar:{buttons:{add:{show:!1}}},toolbar:{buttons:{export:{show:!1}}},rowHandle:{fixed:"right",width:120,buttons:{view:{show:!1},edit:{show:!1},remove:{show:!1},download:{show:l(t=>t.row.task_status===2),text:"下载文件",type:"warning",click:t=>window.open(o(t.row.url),"_blank")}}},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},task_name:{title:"任务名",type:"text",column:{minWidth:160,align:"left"},search:{show:!0}},file_name:{title:"文件名",type:"text",column:{minWidth:160,align:"left"},search:{show:!0}},size:{title:"文件大小(b)",type:"number",column:{width:100}},task_status:{title:"任务状态",type:"dict-select",dict:i({data:[{label:"任务已创建",value:0},{label:"任务进行中",value:1},{label:"任务完成",value:2},{label:"任务失败",value:3}]}),column:{width:120},search:{show:!0}},create_datetime:{title:"创建时间",column:{width:160}},update_datetime:{title:"创建时间",column:{width:160}}}}}};export{x as createCrudOptions}; +import{r as a,c as i,w as l,g as o}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const s="/api/system/download_center/";function r(e){return a({url:s,method:"get",params:e})}function u(e){return a({url:s,method:"post",data:e})}function d(e){return a({url:s+e.id+"/",method:"put",data:e})}function c(e){return a({url:s+e+"/",method:"delete",data:{id:e}})}const x=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await r(t),addRequest:async({form:t})=>await u(t),editRequest:async({form:t,row:n})=>(t.id=n.id,await d(t)),delRequest:async({row:t})=>await c(t.id)},pagination:{show:!0},actionbar:{buttons:{add:{show:!1}}},toolbar:{buttons:{export:{show:!1}}},rowHandle:{fixed:"right",width:120,buttons:{view:{show:!1},edit:{show:!1},remove:{show:!1},download:{show:l(t=>t.row.task_status===2),text:"下载文件",type:"warning",click:t=>window.open(o(t.row.url),"_blank")}}},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},task_name:{title:"任务名",type:"text",column:{minWidth:160,align:"left"},search:{show:!0}},file_name:{title:"文件名",type:"text",column:{minWidth:160,align:"left"},search:{show:!0}},size:{title:"文件大小(b)",type:"number",column:{width:100}},task_status:{title:"任务状态",type:"dict-select",dict:i({data:[{label:"任务已创建",value:0},{label:"任务进行中",value:1},{label:"任务完成",value:2},{label:"任务失败",value:3}]}),column:{width:120},search:{show:!0}},create_datetime:{title:"创建时间",column:{width:160}},update_datetime:{title:"更新时间",column:{width:160}}}}}};export{x as createCrudOptions}; diff --git a/web/dist/assets/crud.X4Uyb4ud.js b/web/dist/assets/crud.CPULa58X.js similarity index 82% rename from web/dist/assets/crud.X4Uyb4ud.js rename to web/dist/assets/crud.CPULa58X.js index fa0055f735..6a1a1a8b11 100644 --- a/web/dist/assets/crud.X4Uyb4ud.js +++ b/web/dist/assets/crud.CPULa58X.js @@ -1 +1 @@ -import{r as a,m as u,n as d,s as c}from"./index.CkCcWuPb.js";import{d as m}from"./dictionary.CH8ZDdyo.js";import{a as o}from"./authFunction.Br9oRcVU.js";import{F as h,P as p}from"./vue.Cw4Y52yh.js";const i="/api/system/role/";function w(t){return a({url:i,method:"get",params:t})}function f(t){return a({url:i,method:"post",data:t})}function l(t){return a({url:i+t.id+"/",method:"put",data:t})}function y(t){return a({url:i+t+"/",method:"delete",data:{id:t}})}const O=function({crudExpose:t,context:s}){return{crudOptions:{request:{pageRequest:async e=>await w(e),addRequest:async({form:e})=>await f(e),editRequest:async({form:e,row:r})=>(e.id=r.id,await l(e)),delRequest:async({row:e})=>await y(e.id)},pagination:{show:!0},actionbar:{buttons:{add:{show:o("role:Create")}}},rowHandle:{fixed:"right",width:h(()=>o("role:AuthorizedAdd")||o("role:AuthorizedSearch")?420:320),buttons:{view:{show:!0},edit:{show:o("role:Update")},remove:{show:o("role:Delete")},assignment:{type:"primary",text:"授权用户",show:o("role:AuthorizedAdd")||o("role:AuthorizedSearch"),click:e=>{const{row:r}=e;s.RoleUserDrawer.handleDrawerOpen(r),p(()=>{s.RoleUserRef.value.setSearchFormData({form:{role_id:r.id}}),s.RoleUserRef.value.doRefresh()})}},permission:{type:"primary",text:"权限配置",show:o("role:Permission"),click:e=>{const{row:r}=e;s.RoleDrawer.handleDrawerOpen(r),s.RoleMenuBtn.setState([]),s.RoleMenuField.setState([])}}}},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},id:{title:"ID",column:{show:!1},search:{show:!1},form:{show:!1}},name:{title:"角色名称",search:{show:!0},column:{minWidth:120,sortable:"custom"},form:{rules:[{required:!0,message:"角色名称必填"}],component:{placeholder:"请输入角色名称"}}},key:{title:"权限标识",search:{show:!1},column:{minWidth:120,sortable:"custom",columnSetDisabled:!0},form:{rules:[{required:!0,message:"权限标识必填"}],component:{placeholder:"输入权限标识"}},valueBuilder(e){const{row:r,key:n}=e;return r[n]}},sort:{title:"排序",search:{show:!1},type:"number",column:{minWidth:90,sortable:"custom"},form:{rules:[{required:!0,message:"排序必填"}],value:1}},status:{title:"状态",search:{show:!0},type:"dict-radio",column:{width:100,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:d(e=>()=>{l(e.row).then(r=>{c(r.msg)})})}},dict:u({value:m("button_status_bool")})}}}}};export{O as createCrudOptions}; +import{r as a,c as n,w as d,s as c}from"./index.XK2ik2qb.js";import{d as m}from"./dictionary.DnyXy1XL.js";import{a as o}from"./authFunction.CZ5a1pu0.js";import{c as h,D as p}from"./vue.DmuWcDrn.js";const i="/api/system/role/";function w(t){return a({url:i,method:"get",params:t})}function f(t){return a({url:i,method:"post",data:t})}function l(t){return a({url:i+t.id+"/",method:"put",data:t})}function y(t){return a({url:i+t+"/",method:"delete",data:{id:t}})}const O=function({crudExpose:t,context:s}){return{crudOptions:{request:{pageRequest:async e=>await w(e),addRequest:async({form:e})=>await f(e),editRequest:async({form:e,row:r})=>(e.id=r.id,await l(e)),delRequest:async({row:e})=>await y(e.id)},pagination:{show:!0},actionbar:{buttons:{add:{show:o("role:Create")}}},rowHandle:{fixed:"right",width:h(()=>o("role:AuthorizedAdd")||o("role:AuthorizedSearch")?420:320),buttons:{view:{show:!0},edit:{show:o("role:Update")},remove:{show:o("role:Delete")},assignment:{type:"primary",text:"授权用户",show:o("role:AuthorizedAdd")||o("role:AuthorizedSearch"),click:e=>{const{row:r}=e;s.RoleUserDrawer.handleDrawerOpen(r),p(()=>{s.RoleUserRef.value.setSearchFormData({form:{role_id:r.id}}),s.RoleUserRef.value.doRefresh()})}},permission:{type:"primary",text:"权限配置",show:o("role:Permission"),click:e=>{const{row:r}=e;s.RoleDrawer.handleDrawerOpen(r),s.RoleMenuBtn.setState([]),s.RoleMenuField.setState([])}}}},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},id:{title:"ID",column:{show:!1},search:{show:!1},form:{show:!1}},name:{title:"角色名称",search:{show:!0},column:{minWidth:120,sortable:"custom"},form:{rules:[{required:!0,message:"角色名称必填"}],component:{placeholder:"请输入角色名称"}}},key:{title:"权限标识",search:{show:!1},column:{minWidth:120,sortable:"custom",columnSetDisabled:!0},form:{rules:[{required:!0,message:"权限标识必填"}],component:{placeholder:"输入权限标识"}},valueBuilder(e){const{row:r,key:u}=e;return r[u]}},sort:{title:"排序",search:{show:!1},type:"number",column:{minWidth:90,sortable:"custom"},form:{rules:[{required:!0,message:"排序必填"}],value:1}},status:{title:"状态",search:{show:!0},type:"dict-radio",column:{width:100,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:d(e=>()=>{l(e.row).then(r=>{c(r.msg)})})}},dict:n({value:m("button_status_bool")})}}}}};export{O as createCrudOptions}; diff --git a/web/dist/assets/crud.CRnHRW7e.js b/web/dist/assets/crud.CRnHRW7e.js new file mode 100644 index 0000000000..ded16cbb90 --- /dev/null +++ b/web/dist/assets/crud.CRnHRW7e.js @@ -0,0 +1 @@ +import{DelObj as n,UpdateObj as l,AddObj as r,GetList as o}from"./api.Rm0uCpyl.js";import{c as d}from"./index.XK2ik2qb.js";import{c}from"./commonCrud.Ca1t2kUN.js";import"./vue.DmuWcDrn.js";const b=function({crudExpose:a}){return{crudOptions:{request:{pageRequest:async e=>await o(e),addRequest:async({form:e})=>await r(e),editRequest:async({form:e,row:t})=>(e.id=t.id,await l(e)),delRequest:async({row:e})=>await n(e.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:80,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:!1},remove:{iconRight:"Delete",type:"text",show:!1}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let t=e.index??1,i=a.crudBinding.value.pagination;return((i.currentPage??1)-1)*i.pageSize+t+1}}},no:{title:"流水号",search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入"}},column:{width:"160px",align:"center"}},name:{title:"名称",column:{width:"250px",align:"center"}},models_name:{title:"库表",column:{width:"140px",align:"center"}},start_user_name:{title:"发起人",column:{width:"120px",align:"center"}},"current_node.name":{title:"当前节点",column:{width:"160px",align:"center"}},pre_user:{title:"预处理人",column:{width:"160px",align:"center"}},pre_role:{title:"预处理角色",column:{width:"160px",align:"center"}},pre_dept:{title:"预处理部门",column:{width:"160px",align:"center"}},status:{title:"状态",type:"dict-select",column:{fixed:"right",width:"100px",align:"center"},dict:d({data:[{value:0,label:"进行中"},{value:1,label:"审核通过"},{value:2,label:"审核驳回"},{value:3,label:"审核撤销"}]})},completed_time:{title:"完成时间",column:{width:"160px",align:"center"}},...c({create_datetime:{search:!1,table:!0},update_datetime:{table:!0},dept_belong_id:{table:!1}})}}}};export{b as createCrudOptions}; diff --git a/web/dist/assets/crud.CXN7XRtA.js b/web/dist/assets/crud.CXN7XRtA.js deleted file mode 100644 index 937e6cf5d7..0000000000 --- a/web/dist/assets/crud.CXN7XRtA.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,B as b,m as y}from"./index.CkCcWuPb.js";import{c as g}from"./commonCrud.CCkJYHLJ.js";import{w,D as s,H as _,aA as W,$ as x,y as q,I as C,F as R}from"./vue.Cw4Y52yh.js";import{_ as V}from"./_plugin-vue_export-helper.DlAUqK2U.js";const h="/api/system/login_log/";function B(e){return l({url:h,method:"get",params:e})}function O(e){return l({url:h,method:"post",data:e})}function k(e){return l({url:h+e.id+"/",method:"put",data:e})}function D(e){return l({url:h+e+"/",method:"delete",data:{id:e}})}const I=w({__name:"index",props:{dict:{type:Array,required:!0},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:u}){const o=e,f=u;s([]);const a=s(),p=s([]),c=s({label:"label",value:"value"});_(()=>o.modelValue,n=>{l({url:o.dict.url,params:{id:o.modelValue}}).then(m=>{const i=m.data;console.log(i),i&&i.length===1?a.value=i[0][c.value.label]:a.value=null})},{immediate:!0});const{ui:t}=b(),r=t.formItem.injectFormItemContext();function d(n){f("update:modelValue",n),a.value=n,r.onChange(),r.onBlur()}return o.dict.url instanceof Function?l(o.dict.url).then(n=>{p.value=n.data}):(c.value.label=o.dict.label,c.value.value=o.dict.value,l({url:o.dict.url}).then(n=>{p.value=n.data})),(n,m)=>{const i=W("el-select-v2");return q(),x(i,{modelValue:a.value,"onUpdate:modelValue":m[0]||(m[0]=v=>a.value=v),options:p.value,style:{width:"100%"},clearable:!0,props:c.value,onChange:d},null,8,["modelValue","options","props"])}}}),j=V(I,[["__scopeId","data-v-d3d07a23"]]),H=function({crudExpose:e,isEcharts:u,initChart:o}){return{crudOptions:{request:{pageRequest:async t=>await B(t),addRequest:async({form:t})=>await O(t),editRequest:async({form:t,row:r})=>(t.id=r.id,await k(t)),delRequest:async({row:t})=>await D(t.id)},actionbar:{buttons:{add:{show:!0},showEcharts:{type:"warning",text:R(()=>u.value?"隐藏图表":"显示图表"),click:()=>{u.value=!u.value}}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,d=e.crudBinding.value.pagination;return((d.currentPage??1)-1)*d.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"测试自定义组件",dict:y({url({form:t}){return"/api/system/role/"},label:"name",value:"id"}),form:{component:{name:C(j)}}},ip:{title:"登录ip",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录ip"}}},isp:{title:"运营商",search:{disabled:!0},disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入运营商"}}},continent:{title:"大州",type:"input",column:{minWidth:90},form:{disabled:!0,component:{placeholder:"请输入大州"}},component:{props:{color:"auto"}}},country:{title:"国家",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入国家"}},component:{props:{color:"auto"}}},province:{title:"省份",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入省份"}},component:{props:{color:"auto"}}},city:{title:"城市",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入城市"}},component:{props:{color:"auto"}}},district:{title:"县区",key:"",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入县区"}},component:{props:{color:"auto"}}},area_code:{title:"区域代码",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入区域代码"}},component:{props:{color:"auto"}}},country_english:{title:"英文全称",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入英文全称"}},component:{props:{color:"auto"}}},country_code:{title:"简称",type:"input",column:{minWidth:100},form:{component:{placeholder:"请输入简称"}},component:{props:{color:"auto"}}},longitude:{title:"经度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入经度"}},component:{props:{color:"auto"}}},latitude:{title:"纬度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入纬度"}},component:{props:{color:"auto"}}},login_type:{title:"登录类型",type:"dict-select",search:{disabled:!1},dict:y({data:[{label:"普通登录",value:1},{label:"微信扫码登录",value:2}]}),column:{minWidth:120},form:{component:{placeholder:"请选择登录类型"}}},os:{title:"操作系统",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入操作系统"}}},browser:{title:"浏览器名",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入浏览器名"}}},agent:{title:"agent信息",disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入agent信息"}}},...g({create_datetime:{search:!0}})}}}};export{H as createCrudOptions}; diff --git a/web/dist/assets/crud.CYFE-0Hu.js b/web/dist/assets/crud.CYFE-0Hu.js new file mode 100644 index 0000000000..7d2028945d --- /dev/null +++ b/web/dist/assets/crud.CYFE-0Hu.js @@ -0,0 +1 @@ +import{r as s,d as m,c as a}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as l}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const o="/api/TransferRecordModelViewSet/";function h(e){return s({url:o,method:"get",params:e})}function f(e){return s({url:o,method:"post",data:e})}function w(e){return s({url:o+e.id+"/",method:"put",data:e})}function y(e){return s({url:o+e+"/",method:"delete",data:{id:e}})}function b(e){return m({url:o+"export_data/",params:e,method:"get"})}function R({crudExpose:e}){const c=async t=>await h(t),d=async({form:t,row:n})=>(n.id&&(t.id=n.id),await w(t)),u=async({row:t})=>await y(t.id),i=async({form:t})=>await f(t),p=async t=>await b(t);return{crudOptions:{request:{pageRequest:c,addRequest:i,editRequest:d,delRequest:u},actionbar:{buttons:{export:{show:r("TransferRecordModelViewSet:Export"),text:"导出",title:"导出",click(){return p(e.getSearchFormData())}},add:{show:r("TransferRecordModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:r("TransferRecordModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("TransferRecordModelViewSet:Update")},copy:{type:"text",order:3,show:r("TransferRecordModelViewSet:Copy")},remove:{type:"text",order:4,show:r("TransferRecordModelViewSet:Delete")}}},columns:{transfer_aim:{title:"调拨来源与目的",type:"text",search:{show:!1,component:{placeholder:"请输入调拨来源与目的"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"调拨来源与目的必填"}],component:{placeholder:"请输入调拨来源与目的"}}},transfer_out_stash:{title:"调出仓名称",type:"dict-select",search:{show:!0,component:{placeholder:"请输入调出仓名称"}},dict:a({url:"/api/StashManageModelViewSet/",label:"stash_position",value:"id"}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"调出仓名称必选"}],component:{placeholder:"请输入调出仓名称"}}},transfer_code:{title:"商品编号",type:"text",search:{show:!0,component:{placeholder:"请输入商品编号"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"商品编号必填"}],component:{placeholder:"请输入商品编号"}}},transfer_name:{title:"商品名称",type:"text",search:{show:!0,component:{placeholder:"请输入商品名称"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入商品名称"}}},transfer_product_type:{title:"商品类型",type:"dict-select",search:{show:!0,component:{placeholder:"请输入商品类型"}},dict:a({data:l("product_type")}),column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入商品类型"}}},transfer_number:{title:"调拨数量",type:"number",search:{show:!1,component:{placeholder:"请输入调拨数量"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"调拨数量必填"}],component:{min:0,placeholder:"请输入调拨数量"}}},transfer_unit:{title:"单位",type:"dict-radio",search:{show:!0,component:{placeholder:"请输入单位"}},dict:a({data:l("weight_unit")}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"单位必选"}],component:{placeholder:"请输入单位"}}},transfer_in_stash:{title:"调进仓名称",type:"dict-select",search:{show:!0,component:{placeholder:"请输入调进仓名称"}},dict:a({url:"/api/StashManageModelViewSet/",label:"stash_position",value:"id"}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"调进仓名称必选"}],component:{placeholder:"请输入调进仓名称"}}},transfer_note:{title:"备注",type:"textarea",search:{show:!1,component:{placeholder:"请输入备注"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入备注"}}}}}}}export{R as default}; diff --git a/web/dist/assets/crud.DqhsfUWs.js b/web/dist/assets/crud.CZBUs_6D.js similarity index 82% rename from web/dist/assets/crud.DqhsfUWs.js rename to web/dist/assets/crud.CZBUs_6D.js index 10708898d6..7b0e4121af 100644 --- a/web/dist/assets/crud.DqhsfUWs.js +++ b/web/dist/assets/crud.CZBUs_6D.js @@ -1 +1 @@ -import{r,m as f,n as l,s as w}from"./index.CkCcWuPb.js";import{d as y}from"./dictionary.CH8ZDdyo.js";import{a as n}from"./authFunction.Br9oRcVU.js";import{t as b}from"./index.CvWHgkGx.js";import{I as g}from"./vue.Cw4Y52yh.js";const o="/api/system/area/";function x(t){return r({url:o,method:"get",params:t})}function C(t){return r({url:o,method:"post",data:t})}function d(t){return r({url:o+t.id+"/",method:"put",data:t})}function _(t){return r({url:o+t+"/",method:"delete",data:{id:t}})}function j(){return r({url:o+"field_permission/",method:"get"})}const q=function({crudExpose:t}){const i=async e=>await x(e),u=async({form:e,row:a})=>(e.id=a.id,await d(e)),c=async({row:e})=>await _(e.id),h=async({form:e})=>await C(e),s=(e,a,m)=>{i({pcode:e.code}).then(p=>{m(p.data)})};return{crudOptions:{request:{pageRequest:i,addRequest:h,editRequest:u,delRequest:c},actionbar:{buttons:{add:{show:n("area:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:n("area:Update")},remove:{iconRight:"Delete",type:"text",show:n("area:Delete")}}},pagination:{show:!1},table:{rowKey:"id",lazy:!0,load:s,treeProps:{children:"children",hasChildren:"hasChild"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},name:{title:"名称",search:{show:!0},treeNode:!0,type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"名称必填项"}],component:{placeholder:"请输入名称"}}},pcode:{title:"父级地区",search:{disabled:!0},width:130,type:"table-selector",form:{component:{name:g(b),vModel:"modelValue",displayLabel:l(({row:e})=>e?e.pcode_info:null),tableConfig:{url:"/api/system/area/",label:"name",value:"id",isTree:!0,isMultiple:!1,lazy:!0,load:s,treeProps:{children:"children",hasChildren:"hasChild"},columns:[{prop:"name",label:"地区",width:150},{prop:"code",label:"地区编码"}]}}},column:{show:!1}},code:{title:"地区编码",search:{show:!0},type:"input",column:{minWidth:90},form:{rules:[{required:!0,message:"地区编码必填项"}],component:{placeholder:"请输入地区编码"}}},enable:{title:"是否启用",search:{show:!0},type:"dict-radio",column:{minWidth:90,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(e=>()=>{d(e.row).then(a=>{w(a.msg)})})}},dict:f({data:y("button_status_bool")})}}}}},D=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:q},Symbol.toStringTag,{value:"Module"}));export{j as G,D as a,q as c}; +import{r,c as f,w as l,s as w}from"./index.XK2ik2qb.js";import{d as y}from"./dictionary.DnyXy1XL.js";import{a as n}from"./authFunction.CZ5a1pu0.js";import{t as b}from"./index.BEdABa7j.js";import{Q as g}from"./vue.DmuWcDrn.js";const o="/api/system/area/";function x(t){return r({url:o,method:"get",params:t})}function C(t){return r({url:o,method:"post",data:t})}function d(t){return r({url:o+t.id+"/",method:"put",data:t})}function _(t){return r({url:o+t+"/",method:"delete",data:{id:t}})}function j(){return r({url:o+"field_permission/",method:"get"})}const q=function({crudExpose:t}){const i=async e=>await x(e),c=async({form:e,row:a})=>(e.id=a.id,await d(e)),u=async({row:e})=>await _(e.id),h=async({form:e})=>await C(e),s=(e,a,m)=>{i({pcode:e.code}).then(p=>{m(p.data)})};return{crudOptions:{request:{pageRequest:i,addRequest:h,editRequest:c,delRequest:u},actionbar:{buttons:{add:{show:n("area:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:n("area:Update")},remove:{iconRight:"Delete",type:"text",show:n("area:Delete")}}},pagination:{show:!1},table:{rowKey:"id",lazy:!0,load:s,treeProps:{children:"children",hasChildren:"hasChild"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},name:{title:"名称",search:{show:!0},treeNode:!0,type:"input",column:{minWidth:120},form:{rules:[{required:!0,message:"名称必填项"}],component:{placeholder:"请输入名称"}}},pcode:{title:"父级地区",search:{disabled:!0},width:130,type:"table-selector",form:{component:{name:g(b),vModel:"modelValue",displayLabel:l(({row:e})=>e?e.pcode_info:null),tableConfig:{url:"/api/system/area/",label:"name",value:"id",isTree:!0,isMultiple:!1,lazy:!0,load:s,treeProps:{children:"children",hasChildren:"hasChild"},columns:[{prop:"name",label:"地区",width:150},{prop:"code",label:"地区编码"}]}}},column:{show:!1}},code:{title:"地区编码",search:{show:!0},type:"input",column:{minWidth:90},form:{rules:[{required:!0,message:"地区编码必填项"}],component:{placeholder:"请输入地区编码"}}},enable:{title:"是否启用",search:{show:!0},type:"dict-radio",column:{minWidth:90,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(e=>()=>{d(e.row).then(a=>{w(a.msg)})})}},dict:f({data:y("button_status_bool")})}}}}},D=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:q},Symbol.toStringTag,{value:"Module"}));export{j as G,D as a,q as c}; diff --git a/web/dist/assets/crud.Cd22w0qR.js b/web/dist/assets/crud.Cd22w0qR.js new file mode 100644 index 0000000000..6e32f72ff4 --- /dev/null +++ b/web/dist/assets/crud.Cd22w0qR.js @@ -0,0 +1 @@ +import{r as o,H as y,c as s,w as b,E as x,s as c}from"./index.XK2ik2qb.js";import{d as i}from"./dictionary.DnyXy1XL.js";import{a}from"./authFunction.CZ5a1pu0.js";import{T as v,c as d}from"./vue.DmuWcDrn.js";import{M as _}from"./md5.DLPczxzP.js";import{c as q}from"./commonCrud.Ca1t2kUN.js";const n="/api/system/user/";function B(t){return o({url:"/api/system/dept/all_dept/",method:"get",params:t})}function R(t){return o({url:n,method:"get",params:t})}function T(t){return o({url:n,method:"post",data:t})}function m(t){return o({url:n+t.id+"/",method:"put",data:t})}function C(t){return o({url:n+t+"/",method:"delete",data:{id:t}})}function S(t){return o({url:n+t+"/reset_to_default_password/",method:"put"})}const D=function({crudExpose:t}){const p=async e=>await R(e),h=async({form:e,row:r})=>(e.id=r.id,await m(e)),f=async({row:e})=>await C(e.id),w=async({form:e})=>await T(e),l=async e=>{await S(e.id),c("重置密码成功")},g=y(),{systemConfig:u}=v(g);return d(()=>u.value),{crudOptions:{table:{remove:{confirmMessage:"是否删除该用户?"}},request:{pageRequest:p,addRequest:w,editRequest:h,delRequest:f},form:{initialForm:{password:d(()=>u.value["base.default_password"])}},actionbar:{buttons:{add:{show:a("user:Create")},export:{text:"导出",title:"导出",show:a("user:Export"),click:e=>x.confirm("确定重设密码吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>l(e.row))}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:a("user:Update")},remove:{iconRight:"Delete",type:"text",show:a("user:Delete")},custom:{text:"重设密码",type:"text",show:a("user:ResetPassword"),tooltip:{placement:"top",content:"重设密码"},click:e=>{const{row:r}=e;l(r)}}}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},username:{title:"账号",search:{show:!0},type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"账号必填项"}],component:{placeholder:"请输入账号"}}},password:{title:"密码",type:"password",column:{show:!1},editForm:{show:!1},form:{rules:[{required:!0,message:"密码必填项"}],component:{span:12,showPassword:!0,placeholder:"请输入密码"}},valueResolve({form:e}){e.password&&(e.password=_.hashStr(e.password))}},name:{title:"姓名",search:{show:!0},type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"姓名必填项"}],component:{span:12,placeholder:"请输入姓名"}}},dept:{title:"部门",search:{disabled:!0},type:"dict-tree",dict:s({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"}),column:{minWidth:200,formatter({value:e,row:r,index:O}){return r.dept_name_all}},form:{rules:[{required:!0,message:"必填项"}],component:{filterable:!0,placeholder:"请选择",props:{checkStrictly:!0,props:{value:"id",label:"name"}}}}},role:{title:"角色",search:{disabled:!0},type:"dict-select",dict:s({url:"/api/system/role/",value:"id",label:"name"}),column:{minWidth:200},form:{rules:[{required:!0,message:"必填项"}],component:{multiple:!0,filterable:!0,placeholder:"请选择角色"}}},mobile:{title:"手机号码",search:{show:!0},type:"input",column:{minWidth:120},form:{rules:[{max:20,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}],component:{placeholder:"请输入手机号码"}}},email:{title:"邮箱",column:{width:260},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},gender:{title:"性别",type:"dict-select",dict:s({data:i("gender")}),form:{value:1,component:{span:12}},component:{props:{color:"auto"}}},user_type:{title:"用户类型",search:{show:!0},type:"dict-select",dict:s({data:i("user_type")}),column:{minWidth:100},form:{show:!1,value:0,component:{span:12}}},is_active:{title:"状态",search:{show:!0},type:"dict-radio",column:{component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:b(e=>()=>{m(e.row).then(r=>{c(r.msg)})})}},dict:s({data:i("button_status_bool")})},avatar:{title:"头像",type:"avatar-uploader",align:"center",form:{show:!1},column:{minWidth:100}},...q({dept_belong_id:{form:!0,table:!0}})}}}},G=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:D},Symbol.toStringTag,{value:"Module"}));export{B as G,G as a,D as c}; diff --git a/web/dist/assets/crud.Ce1dW_hh.js b/web/dist/assets/crud.Ce1dW_hh.js new file mode 100644 index 0000000000..9c6c655f2a --- /dev/null +++ b/web/dist/assets/crud.Ce1dW_hh.js @@ -0,0 +1 @@ +import{r as a,d as i}from"./index.XK2ik2qb.js";import{a as o}from"./authFunction.CZ5a1pu0.js";import"./vue.DmuWcDrn.js";const r="/api/StashManageModelViewSet/";function p(e){return a({url:r,method:"get",params:e})}function h(e){return a({url:r,method:"post",data:e})}function m(e){return a({url:r+e.id+"/",method:"put",data:e})}function w(e){return a({url:r+e+"/",method:"delete",data:{id:e}})}function f(e){return i({url:r+"export_data/",params:e,method:"get"})}function M({crudExpose:e}){const n=async t=>await p(t),d=async({form:t,row:s})=>(s.id&&(t.id=s.id),await m(t)),l=async({row:t})=>await w(t.id),u=async({form:t})=>await h(t),c=async t=>await f(t);return{crudOptions:{request:{pageRequest:n,addRequest:u,editRequest:d,delRequest:l},actionbar:{buttons:{export:{show:o("StashManageModelViewSet:Export"),text:"导出",title:"导出",click(){return c(e.getSearchFormData())}},add:{show:o("StashManageModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:o("StashManageModelViewSet:Retrieve")},edit:{type:"text",order:2,show:o("StashManageModelViewSet:Update")},copy:{type:"text",order:3,show:o("StashManageModelViewSet:Copy")},remove:{type:"text",order:4,show:o("StashManageModelViewSet:Delete")}}},columns:{stash_name:{title:"仓库名称",type:"text",search:{show:!0,component:{placeholder:"请输入仓库名称"}},column:{sortable:"custom"},form:{rules:[{required:!0}],component:{placeholder:"请输入仓库名称"}}},stash_address:{title:"仓库地址",type:"text",search:{show:!0,component:{placeholder:"请输入仓库地址"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入仓库地址"}}},stash_position:{title:"仓位",type:"text",search:{show:!0,component:{placeholder:"请输入仓位"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入仓位"}}},stash_note:{title:"备注",type:"textarea",search:{show:!1,component:{placeholder:"请输入备注"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入备注"}}}}}}}export{M as default}; diff --git a/web/dist/assets/crud.ChSkQb0R.js b/web/dist/assets/crud.ChSkQb0R.js deleted file mode 100644 index aa6377b601..0000000000 --- a/web/dist/assets/crud.ChSkQb0R.js +++ /dev/null @@ -1 +0,0 @@ -import{r as c,k as w,p as u,m as a,f as s}from"./index.CkCcWuPb.js";import y from"./index.B4YvKwUk.js";import{a as o}from"./authFunction.Br9oRcVU.js";import{d as n}from"./dictionary.CH8ZDdyo.js";import"./vue.Cw4Y52yh.js";import"./crud.C_P-uSI6.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const l="/api/CrudPatronModelViewSet/";function g(t){return c({url:l,method:"get",params:t})}function b(t){return c({url:l,method:"post",data:t})}function x(t){return c({url:l+t.id+"/",method:"put",data:t})}function q(t){return c({url:l+t+"/",method:"delete",data:{id:t}})}function v(t){return w({url:l+"export_data/",params:t,method:"get"})}function O({crudExpose:t}){const p=async e=>await g(e),d=async({form:e,row:r})=>(r.id&&(e.id=r.id),await x(e)),m=async({row:e})=>await q(e.id),h=async({form:e})=>await b(e),f=async e=>await v(e);return console.log(123123,t),{crudOptions:{request:{pageRequest:p,addRequest:h,editRequest:d,delRequest:m},actionbar:{buttons:{export:{show:o("CrudPatronModelViewSet:Export"),text:"导出",title:"导出",click(){return f(t.getSearchFormData())}},add:{show:o("CrudPatronModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,align:"center",buttons:{view:{type:"text",order:1,show:o("CrudPatronModelViewSet:Retrieve")},edit:{type:"text",order:2,show:o("CrudPatronModelViewSet:Update")},copy:{type:"text",order:3,show:o("CrudPatronModelViewSet:Copy")},remove:{type:"text",order:4,show:o("CrudPatronModelViewSet:Delete")}}},columns:{username:{title:"客户名称",type:"text",search:{show:!0,component:{placeholder:"请输入客户名称"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入客户名称"}}},open_order_name:{title:"开单名称",type:"text",search:{show:!0,component:{placeholder:"请输入开单名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"开单名称必填"}],component:{placeholder:"请输入开单名称"}}},phone:{title:"联系电话",type:"text",search:{show:!0,component:{placeholder:"请输入联系电话"}},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入联系电话"}}},email:{title:"邮箱",type:"text",search:{show:!0,component:{placeholder:"请输入邮箱地址"}},column:{sortable:"custom"},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},age:{title:"年龄",type:"number",column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入客户年龄"}}},sex:{title:"性别",type:"dict-radio",search:{show:!0,component:{placeholder:"请选择性别"}},column:{sortable:"custom"},dict:a({data:n("gender")}),form:{value:1,component:{optionName:"el-radio"}},component:{props:{color:"auto"}}},my_remark:{title:"我方备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入我方备注"}}},tags:{title:"客户标签",search:{show:!1,component:{props:{name:"fs-dict-select",clearable:!0}}},type:"dict-select",dict:a({value:"id",label:"label",data:n("patron_tag")}),form:{rules:[{required:!1}],component:{multiple:!0,filterable:!0,placeholder:"请选择标签"}},component:{props:{color:"auto"}}},express:{title:"默认物流",search:{show:!0},type:"dict-select",dict:a({data:n("express")}),form:{rules:[{required:!1}],component:{placeholder:"请输入默认物流"}},component:{props:{color:"auto"}}},salesman:{title:"业务员",search:{show:!1},type:"dict-select",dict:a({url:"/api/system/user/",value:"id",label:"name"}),form:{component:{multiple:!0,filterable:!0,placeholder:"请选择业务员"}},component:{props:{color:"auto"}}},hierarchy:{title:"客户等级",search:{show:!0,component:{placeholder:"请选择客户等级"}},type:["dict-radio","colspan"],dict:a({data:n("patron")}),form:{value:0,component:{optionName:"el-radio-button"}},component:{props:{color:"auto"}}},images:{title:"照片墙",type:"image-uploader",form:{component:{limit:10,uploader:{type:"form"}},valueBuilder(e){e.form.images.forEach((r,i)=>{e.form.images[i]=s(r)})},rules:u([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最多可上传10个图片"},column:{component:{async buildUrl(e){return s(e)},async buildPreviewUrl({url:e,index:r}){return e+"?preview=600x600"}}}},files:{title:"上传附件",type:"file-uploader",form:{component:{limit:5,uploader:{type:"form"},accept:".pdf,.csv,.doc,.docx,.xls,.xlsx,.mp4,.zip,.7z,.rar"},valueBuilder(e){e.form.files.forEach((r,i)=>{e.form.files[i]=s(r)})},rules:u([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最大可上传5个文件"},column:{show:!1,component:{async buildUrl(e){return s(e)}}}},addressee:{title:"收件人信息",type:"text",form:{component:{name:y,vModel:"modelValue",readonly:!0},col:{span:24}},column:{show:!1,formatter:({row:e})=>{var r;return((r=e.addressee)==null?void 0:r.length)+"条数据"}}}},form:{display:"flex",wrapper:{width:"80%"},async beforeSubmit(){var r;if(await((r=t.getFormComponentRef("addressee"))==null?void 0:r.validate())!==!0)return!1}},toolbar:{buttons:{export:{show:!0}}}}}}export{O as default}; diff --git a/web/dist/assets/crud.CXcyYhx9.js b/web/dist/assets/crud.ChsU5dzN.js similarity index 97% rename from web/dist/assets/crud.CXcyYhx9.js rename to web/dist/assets/crud.ChsU5dzN.js index 0965d39397..6bc6ea7cab 100644 --- a/web/dist/assets/crud.CXcyYhx9.js +++ b/web/dist/assets/crud.ChsU5dzN.js @@ -1 +1 @@ -import{r as o}from"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";const r="/api/system/operation_log/";function i(e){return o({url:r,method:"get",params:e})}function s(e){return o({url:r,method:"post",data:e})}function d(e){return o({url:r+e.id+"/",method:"put",data:e})}function l(e){return o({url:r+e+"/",method:"delete",data:{id:e}})}const b=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await i(t),addRequest:async({form:t})=>await s(t),editRequest:async({form:t,row:n})=>(t.id=n.id,await d(t)),delRequest:async({row:t})=>await l(t.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let n=t.index??1,a=e.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+n+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},request_modular:{title:"请求模块",search:{disabled:!1},type:"input",column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入请求模块"}}},request_path:{title:"请求地址",search:{disabled:!1},type:"input",column:{minWidth:200},form:{disabled:!0,component:{placeholder:"请输入请求地址"}}},request_body:{column:{showOverflowTooltip:!0,width:200,minWidth:100},title:"请求参数",search:{disabled:!0},disabled:!0,type:"textarea",form:{component:{props:{type:"textarea"},autosize:{minRows:2,maxRows:8},placeholder:"请输入关键词"}}},request_method:{title:"请求方法",type:"input",search:{disabled:!1},column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入请求方法"}},component:{props:{color:"auto"}}},request_msg:{title:"操作说明",disabled:!0,form:{component:{span:12}}},request_ip:{title:"IP地址",search:{disabled:!1},type:"input",column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入IP地址"}},component:{props:{color:"auto"}}},request_browser:{title:"请求浏览器",type:"input",column:{minWidth:120},form:{disabled:!0},component:{props:{color:"auto"}}},response_code:{title:"响应码",search:{disabled:!0},type:"input",column:{minWidth:100},form:{disabled:!0},component:{props:{color:"auto"}}},request_os:{title:"操作系统",disabled:!0,search:{disabled:!0},type:"input",column:{minWidth:120},form:{disabled:!0},component:{props:{color:"auto"}}},json_result:{title:"返回信息",search:{disabled:!0},type:"input",column:{minWidth:150},form:{disabled:!0},component:{props:{color:"auto"}}},creator_name:{title:"操作人",column:{minWidth:100},form:{disabled:!0}}}}}};export{b as createCrudOptions}; +import{r as o}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const r="/api/system/operation_log/";function i(e){return o({url:r,method:"get",params:e})}function s(e){return o({url:r,method:"post",data:e})}function d(e){return o({url:r+e.id+"/",method:"put",data:e})}function l(e){return o({url:r+e+"/",method:"delete",data:{id:e}})}const b=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await i(t),addRequest:async({form:t})=>await s(t),editRequest:async({form:t,row:n})=>(t.id=n.id,await d(t)),delRequest:async({row:t})=>await l(t.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let n=t.index??1,a=e.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+n+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},request_modular:{title:"请求模块",search:{disabled:!1},type:"input",column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入请求模块"}}},request_path:{title:"请求地址",search:{disabled:!1},type:"input",column:{minWidth:200},form:{disabled:!0,component:{placeholder:"请输入请求地址"}}},request_body:{column:{showOverflowTooltip:!0,width:200,minWidth:100},title:"请求参数",search:{disabled:!0},disabled:!0,type:"textarea",form:{component:{props:{type:"textarea"},autosize:{minRows:2,maxRows:8},placeholder:"请输入关键词"}}},request_method:{title:"请求方法",type:"input",search:{disabled:!1},column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入请求方法"}},component:{props:{color:"auto"}}},request_msg:{title:"操作说明",disabled:!0,form:{component:{span:12}}},request_ip:{title:"IP地址",search:{disabled:!1},type:"input",column:{minWidth:100},form:{disabled:!0,component:{placeholder:"请输入IP地址"}},component:{props:{color:"auto"}}},request_browser:{title:"请求浏览器",type:"input",column:{minWidth:120},form:{disabled:!0},component:{props:{color:"auto"}}},response_code:{title:"响应码",search:{disabled:!0},type:"input",column:{minWidth:100},form:{disabled:!0},component:{props:{color:"auto"}}},request_os:{title:"操作系统",disabled:!0,search:{disabled:!0},type:"input",column:{minWidth:120},form:{disabled:!0},component:{props:{color:"auto"}}},json_result:{title:"返回信息",search:{disabled:!0},type:"input",column:{minWidth:150},form:{disabled:!0},component:{props:{color:"auto"}}},creator_name:{title:"操作人",column:{minWidth:100},form:{disabled:!0}}}}}};export{b as createCrudOptions}; diff --git a/web/dist/assets/crud.CjtLR7MS.js b/web/dist/assets/crud.CjtLR7MS.js new file mode 100644 index 0000000000..ce9385c78b --- /dev/null +++ b/web/dist/assets/crud.CjtLR7MS.js @@ -0,0 +1 @@ +import{r as l,l as b,c as y}from"./index.XK2ik2qb.js";import{c as g}from"./commonCrud.Ca1t2kUN.js";import{d as w,g as s,C as _,h as W,b as x,o as q,Q as C,c as R}from"./vue.DmuWcDrn.js";import{_ as V}from"./_plugin-vue_export-helper.DlAUqK2U.js";const h="/api/system/login_log/";function B(e){return l({url:h,method:"get",params:e})}function O(e){return l({url:h,method:"post",data:e})}function k(e){return l({url:h+e.id+"/",method:"put",data:e})}function j(e){return l({url:h+e+"/",method:"delete",data:{id:e}})}const D=w({__name:"index",props:{dict:{type:Array,required:!0},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:c}){const o=e,f=c;s([]);const a=s(),p=s([]),u=s({label:"label",value:"value"});_(()=>o.modelValue,n=>{l({url:o.dict.url,params:{id:o.modelValue}}).then(m=>{const i=m.data;console.log(i),i&&i.length===1?a.value=i[0][u.value.label]:a.value=null})},{immediate:!0});const{ui:t}=b(),r=t.formItem.injectFormItemContext();function d(n){f("update:modelValue",n),a.value=n,r.onChange(),r.onBlur()}return o.dict.url instanceof Function?l(o.dict.url).then(n=>{p.value=n.data}):(u.value.label=o.dict.label,u.value.value=o.dict.value,l({url:o.dict.url}).then(n=>{p.value=n.data})),(n,m)=>{const i=W("el-select-v2");return q(),x(i,{modelValue:a.value,"onUpdate:modelValue":m[0]||(m[0]=v=>a.value=v),options:p.value,style:{width:"100%"},clearable:!0,props:u.value,onChange:d},null,8,["modelValue","options","props"])}}}),I=V(D,[["__scopeId","data-v-d3d07a23"]]),L=function({crudExpose:e,isEcharts:c,initChart:o}){return{crudOptions:{request:{pageRequest:async t=>await B(t),addRequest:async({form:t})=>await O(t),editRequest:async({form:t,row:r})=>(t.id=r.id,await k(t)),delRequest:async({row:t})=>await j(t.id)},actionbar:{buttons:{add:{show:!0},showEcharts:{type:"warning",text:R(()=>c.value?"隐藏图表":"显示图表"),click:()=>{c.value=!c.value}}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,d=e.crudBinding.value.pagination;return((d.currentPage??1)-1)*d.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"测试自定义组件",dict:y({url({form:t}){return"/api/system/role/"},label:"name",value:"id"}),form:{component:{name:C(I)}}},ip:{title:"登录ip",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录ip"}}},isp:{title:"运营商",search:{disabled:!0},disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入运营商"}}},continent:{title:"大州",type:"input",column:{minWidth:90},form:{disabled:!0,component:{placeholder:"请输入大州"}},component:{props:{color:"auto"}}},country:{title:"国家",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入国家"}},component:{props:{color:"auto"}}},province:{title:"省份",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入省份"}},component:{props:{color:"auto"}}},city:{title:"城市",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入城市"}},component:{props:{color:"auto"}}},district:{title:"县区",key:"",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入县区"}},component:{props:{color:"auto"}}},area_code:{title:"区域代码",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入区域代码"}},component:{props:{color:"auto"}}},country_english:{title:"英文全称",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入英文全称"}},component:{props:{color:"auto"}}},country_code:{title:"简称",type:"input",column:{minWidth:100},form:{component:{placeholder:"请输入简称"}},component:{props:{color:"auto"}}},longitude:{title:"经度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入经度"}},component:{props:{color:"auto"}}},latitude:{title:"纬度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入纬度"}},component:{props:{color:"auto"}}},login_type:{title:"登录类型",type:"dict-select",search:{disabled:!1},dict:y({data:[{label:"普通登录",value:1},{label:"微信扫码登录",value:2}]}),column:{minWidth:120},form:{component:{placeholder:"请选择登录类型"}}},os:{title:"操作系统",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入操作系统"}}},browser:{title:"浏览器名",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入浏览器名"}}},agent:{title:"agent信息",disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入agent信息"}}},...g({create_datetime:{search:!0}})}}}};export{L as createCrudOptions}; diff --git a/web/dist/assets/crud.CklDNTA7.js b/web/dist/assets/crud.CklDNTA7.js new file mode 100644 index 0000000000..8d63a3c225 --- /dev/null +++ b/web/dist/assets/crud.CklDNTA7.js @@ -0,0 +1 @@ +import{r as s,d as h,t as f,c as i,g as l}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as w}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const a="/api/FinishedProductModelViewSet/";function g(t){return s({url:a,method:"get",params:t})}function y(t){return s({url:a,method:"post",data:t})}function b(t){return s({url:a+t.id+"/",method:"put",data:t})}function x(t){return s({url:a+t+"/",method:"delete",data:{id:t}})}function q(t){return h({url:a+"export_data/",params:t,method:"get"})}function P({crudExpose:t}){const n=async e=>await g(e),u=async({form:e,row:o})=>(o.id&&(e.id=o.id),await b(e)),d=async({row:e})=>await x(e.id),c=async({form:e})=>await y(e),m=async e=>await q(e);return{crudOptions:{request:{pageRequest:n,addRequest:c,editRequest:u,delRequest:d},actionbar:{buttons:{export:{show:r("FinishedProductModelViewSet:Export"),text:"导出",title:"导出",click(){return m(t.getSearchFormData())}},add:{show:r("FinishedProductModelViewSet:Create")}}},rowHandle:{fixed:"right",width:130,buttons:{view:{type:"text",order:1,show:r("FinishedProductModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("FinishedProductModelViewSet:Update")},copy:{type:"text",order:3,show:r("FinishedProductModelViewSet:Copy")},remove:{type:"text",order:4,show:r("FinishedProductModelViewSet:Delete")}}},columns:{code:{title:"编号",type:"text",search:{show:!0},column:{sortable:"custom"},form:{show:!0,component:{placeholder:"编号自动生成,无需输入."}},addForm:{component:{disabled:!0}},editForm:{component:{disabled:!0}}},specification:{title:"规格",type:"text",search:{show:!0,component:{placeholder:"请输入规格"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入规格"}}},name:{title:"名称",type:"text",search:{show:!0,component:{placeholder:"请输入名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入名称"}}},number:{title:"数量",type:"number",search:{show:!1,component:{placeholder:"请输入数量"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"数量必填"}],component:{min:0,placeholder:"请输入数量"}}},transfer_unit:{title:"单位",type:"dict-radio",search:{show:!0,component:{placeholder:"请输入单位"}},dict:i({data:w("weight_unit")}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"单位必选"}],component:{placeholder:"请输入单位"}}},price:{title:"单价",type:"",search:{show:!1,component:{placeholder:"请输入单价"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"单价必填"}],component:{min:0,max:10,step:.1,placeholder:"请输入单价"}}},stash:{title:"所属仓位",type:"dict-select",search:{show:!0,component:{placeholder:"请输入所属仓位"}},dict:i({url:"/api/StashManageModelViewSet/",label:"stash_position",value:"id"}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"所属仓位必选"}],component:{placeholder:"请输入所属仓位"}}},note:{title:"备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入订单备注"}}},images:{title:"照片墙",type:"image-uploader",form:{col:{span:24},component:{limit:10,uploader:{type:"form"}},valueBuilder(e){e.mode!=="add"&&e.form.images!==null&&e.form.images.forEach((o,p)=>{e.form.images[p]=l(o)})},rules:f([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最多可上传10个图片"},column:{component:{async buildUrl(e){return l(e)},async buildPreviewUrl({url:e,index:o}){return e+"?preview=600x600"}}}}}}}}export{P as default}; diff --git a/web/dist/assets/crud.CpmEdOyV.js b/web/dist/assets/crud.CpmEdOyV.js new file mode 100644 index 0000000000..4f778aa38f --- /dev/null +++ b/web/dist/assets/crud.CpmEdOyV.js @@ -0,0 +1 @@ +import{r as s,c as m,b as E,F as D,X as u}from"./index.XK2ik2qb.js";import{a as d}from"./authFunction.CZ5a1pu0.js";import{g as F,k as p,h,D as A}from"./vue.DmuWcDrn.js";const i="/api/system/menu_button/";function B(e){return s({url:i,method:"get",params:e})}function O(e){return s({url:i,method:"post",data:e})}function R(e){return s({url:i+e.id+"/",method:"put",data:e})}function q(e){return s({url:i+e+"/",method:"delete",data:{id:e}})}function x(e){return s({url:i+"batch_create/",method:"post",data:e})}function j(e){return s({url:i+"multiple_delete/",method:"delete",data:{keys:e}})}const C=function({crudExpose:e,context:c}){const f=async()=>{if(c.selectOptions.value.id)return await B({menu:c.selectOptions.value.id})},w=async({form:t,row:n})=>await R({...t,menu:n.menu}),b=async({row:t})=>await q(t.id),g=async({form:t})=>await O({...t,menu:c.selectOptions.value.id}),r=F([]),y=t=>{const o=e.getTableData().filter(a=>!t.includes(a));u.arrayEach(t,a=>{u.pluck(r.value,"id").includes(a.id)||(r.value=u.union(r.value,[a]))}),u.arrayEach(o,a=>{r.value=u.remove(r.value,l=>l.id!==a.id)})},v=()=>{const t=e.getBaseTableRef(),n=e.getTableData(),o=u.filter(n,a=>u.pluck(r.value,"id").includes(a.id));A(()=>{u.arrayEach(o,a=>{t.toggleRowSelection(a,!0)})})};return{selectedRows:r,crudOptions:{pagination:{show:!1},search:{container:{action:{col:{span:8}}}},actionbar:{buttons:{add:{show:d("btn:Create")},batchAdd:{show:!0,type:"primary",text:"批量生成",click:async()=>{if(c.selectOptions.value.id==null){E.error("请选择菜单");return}const t=await x({menu:c.selectOptions.value.id});t.code==2e3&&(D(t.msg),e.doRefresh())}}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{icon:"",type:"primary",show:d("btn:Update")},remove:{show:d("btn:Delete")}}},request:{pageRequest:f,addRequest:g,editRequest:w,delRequest:b},table:{rowKey:"id",onSelectionChange:y,onRefreshed:()=>v()},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{$checked:{title:"选择",form:{show:!1},column:{type:"selection",align:"center",width:"70px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},search:{title:"关键词",column:{show:!1},type:"text",search:{show:!0},form:{show:!1,component:{placeholder:"输入关键词搜索"}}},id:{title:"ID",type:"text",column:{show:!1},search:{show:!1},form:{show:!1}},name:{title:"权限名称",type:"text",search:{show:!0},column:{minWidth:120,sortable:!0},form:{rules:[{required:!0,message:"权限名称必填"}],component:{placeholder:"输入权限名称",props:{clearable:!0,allowCreate:!0,filterable:!0}},helper:{render(){return p(h("el-alert"),{title:"手动输入",type:"warning",description:"页面中按钮的名称或者自定义一个名称"},null)}}}},value:{title:"权限值",type:"text",search:{show:!1},column:{width:200,sortable:!0},form:{rules:[{required:!0,message:"权限标识必填"}],placeholder:"输入权限标识",helper:{render(){return p(h("el-alert"),{title:"唯一值",type:"warning",description:"用于判断前端按钮权限或接口权限"},null)}}}},method:{title:"请求方式",search:{show:!1},type:"dict-select",column:{width:120,sortable:!0},dict:m({data:[{label:"GET",value:0},{label:"POST",value:1,color:"success"},{label:"PUT",value:2,color:"warning"},{label:"DELETE",value:3,color:"danger"}]}),form:{rules:[{required:!0,message:"必填项"}]}},api:{title:"接口地址",search:{show:!1},type:"dict-select",dict:m({getData(){return s({url:"/swagger.json"}).then(t=>{const n=Object.keys(t.paths),o=[];for(const a of n){const l={};l.label=a,l.value=a,o.push(l)}return o})}}),column:{minWidth:250,sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{props:{allowCreate:!0,filterable:!0,clearable:!0}},helper:{render(){return p(h("el-alert"),{title:"请正确填写,以免请求时被拦截。匹配单例使用正则,例如:/api/xx/.*?/",type:"warning"},null)}}}}}}}},k=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:C},Symbol.toStringTag,{value:"Module"}));export{j as B,k as a,C as c}; diff --git a/web/dist/assets/crud.CwrFd0-n.js b/web/dist/assets/crud.CwrFd0-n.js new file mode 100644 index 0000000000..91d7409178 --- /dev/null +++ b/web/dist/assets/crud.CwrFd0-n.js @@ -0,0 +1 @@ +import{r as s,d as h,t as w,c as l,g as i}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as f}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const a="/api/RawMaterialModelViewSet/";function g(t){return s({url:a,method:"get",params:t})}function y(t){return s({url:a,method:"post",data:t})}function b(t){return s({url:a+t.id+"/",method:"put",data:t})}function x(t){return s({url:a+t+"/",method:"delete",data:{id:t}})}function M(t){return h({url:a+"export_data/",params:t,method:"get"})}function V({crudExpose:t}){const n=async e=>await g(e),u=async({form:e,row:o})=>(o.id&&(e.id=o.id),await b(e)),c=async({row:e})=>await x(e.id),d=async({form:e})=>await y(e),m=async e=>await M(e);return{crudOptions:{request:{pageRequest:n,addRequest:d,editRequest:u,delRequest:c},actionbar:{buttons:{export:{show:r("RawMaterialModelViewSet:Export"),text:"导出",title:"导出",click(){return m(t.getSearchFormData())}},add:{show:r("RawMaterialModelViewSet:Create")}}},rowHandle:{fixed:"right",width:130,buttons:{view:{type:"text",order:1,show:r("RawMaterialModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("RawMaterialModelViewSet:Update")},copy:{type:"text",order:3,show:r("RawMaterialModelViewSet:Copy")},remove:{type:"text",order:4,show:r("RawMaterialModelViewSet:Delete")}}},columns:{code:{title:"编号",type:"text",search:{show:!0},column:{sortable:"custom"},form:{show:!0,component:{placeholder:"编号自动生成,无需输入."}},addForm:{component:{disabled:!0}},editForm:{component:{disabled:!0}}},specification:{title:"规格",type:"text",search:{show:!0,component:{placeholder:"请输入规格"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入规格"}}},name:{title:"名称",type:"text",search:{show:!0,component:{placeholder:"请输入名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入名称"}}},number:{title:"数量",type:"number",search:{show:!1,component:{placeholder:"请输入数量"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"数量必填"}],component:{min:0,placeholder:"请输入数量"}}},transfer_unit:{title:"单位",type:"dict-radio",search:{show:!0,component:{placeholder:"请输入单位"}},dict:l({data:f("weight_unit")}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"单位必选"}],component:{placeholder:"请输入单位"}}},price:{title:"单价",type:"",search:{show:!1,component:{placeholder:"请输入单价"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"单价必填"}],component:{min:0,max:10,step:.1,placeholder:"请输入单价"}}},stash:{title:"所属仓位",type:"dict-select",search:{show:!0,component:{placeholder:"请输入所属仓位"}},dict:l({url:"/api/StashManageModelViewSet/",label:"stash_position",value:"id"}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"所属仓位必选"}],component:{placeholder:"请输入所属仓位"}}},note:{title:"备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入订单备注"}}},images:{title:"照片墙",type:"image-uploader",form:{col:{span:24},component:{limit:10,uploader:{type:"form"}},valueBuilder(e){e.mode!=="add"&&e.form.images!==null&&e.form.images.forEach((o,p)=>{e.form.images[p]=i(o)})},rules:w([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最多可上传10个图片"},column:{component:{async buildUrl(e){return i(e)},async buildPreviewUrl({url:e,index:o}){return e+"?preview=600x600"}}}}}}}}export{V as default}; diff --git a/web/dist/assets/crud.D1mGj6d7.js b/web/dist/assets/crud.D1mGj6d7.js new file mode 100644 index 0000000000..e40a9b12dd --- /dev/null +++ b/web/dist/assets/crud.D1mGj6d7.js @@ -0,0 +1 @@ +import{r as u,c as w,X as r}from"./index.XK2ik2qb.js";import{g,D as b}from"./vue.DmuWcDrn.js";function y(a){return a.authorized=0,u({url:"/api/system/role/get_role_users/",method:"get",params:a})}function x(a,i){return u({url:`/api/system/role/${a}/add_role_users/`,method:"post",data:{users_id:i}})}const v=function({crudExpose:a,context:i}){const c=async e=>await y(e),d=async({form:e,row:o})=>{},f=async({row:e})=>{},m=async({form:e})=>{},s=g([]),p=e=>{const n=a.getTableData().filter(t=>!e.includes(t));r.arrayEach(e,t=>{r.pluck(s.value,"id").includes(t.id)||(s.value=r.union(s.value,[t]))}),r.arrayEach(n,t=>{s.value=r.remove(s.value,l=>l.id!==t.id)})},h=()=>{const e=a.getBaseTableRef(),o=a.getTableData(),n=r.filter(o,t=>r.pluck(s.value,"id").includes(t.id));b(()=>{r.arrayEach(n,t=>{e.toggleRowSelection(t,!0)})})};return{selectedRows:s,crudOptions:{request:{pageRequest:c,addRequest:m,editRequest:d,delRequest:f},actionbar:{show:!1,buttons:{add:{show:!1}}},rowHandle:{show:!1,fixed:"left",width:150,buttons:{view:{show:!1},edit:{show:!1},remove:{show:!1}}},table:{rowKey:"id",onSelectionChange:p,onRefreshed:()=>h()},columns:{$checked:{title:"选择",form:{show:!1},column:{show:!0,type:"selection",align:"center",width:"55px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let o=e.index??1,n=a.crudBinding.value.pagination;return((n.currentPage??1)-1)*n.pageSize+o+1}}},name:{title:"用户名",search:{show:!0,component:{props:{clearable:!0}}},type:"text",form:{show:!1}},dept:{title:"部门",show:!0,type:"dict-tree",column:{name:"text",formatter({value:e,row:o,index:n}){return o.dept__name}},search:{show:!0,disabled:!0,col:{span:6},component:{multiple:!1,props:{checkStrictly:!0,clearable:!0,filterable:!0}}},form:{show:!1},dict:w({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"})}}}}},S=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:v},Symbol.toStringTag,{value:"Module"}));export{x as a,S as b,v as c}; diff --git a/web/dist/assets/crud.BqLXCUBJ.js b/web/dist/assets/crud.DDy-ivzy.js similarity index 88% rename from web/dist/assets/crud.BqLXCUBJ.js rename to web/dist/assets/crud.DDy-ivzy.js index 49f19b0af9..ea7d3dcd62 100644 --- a/web/dist/assets/crud.BqLXCUBJ.js +++ b/web/dist/assets/crud.DDy-ivzy.js @@ -1 +1 @@ -import{r as a,k as c}from"./index.CkCcWuPb.js";import{a as r}from"./authFunction.Br9oRcVU.js";import"./vue.Cw4Y52yh.js";const o="/api/CrudPatronAddressModelViewSet/";function p(e){return a({url:o,method:"get",params:e})}function m(e){return a({url:o,method:"post",data:e})}function h(e){return a({url:o+e.id+"/",method:"put",data:e})}function w(e){return a({url:o+e+"/",method:"delete",data:{id:e}})}function f(e){return c({url:o+"export_data/",params:e,method:"get"})}function q({crudExpose:e}){const d=async t=>await p(t),n=async({form:t,row:s})=>(s.id&&(t.id=s.id),await h(t)),u=async({row:t})=>await w(t.id),i=async({form:t})=>await m(t),l=async t=>await f(t);return{crudOptions:{request:{pageRequest:d,addRequest:i,editRequest:n,delRequest:u},actionbar:{buttons:{export:{show:r("CrudPatronAddressModelViewSet:Export"),text:"导出",title:"导出",click(){return l(e.getSearchFormData())}},add:{show:r("CrudPatronAddressModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:r("CrudPatronAddressModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("CrudPatronAddressModelViewSet:Update")},copy:{type:"text",order:3,show:r("CrudPatronAddressModelViewSet:Copy")},remove:{type:"text",order:4,show:r("CrudPatronAddressModelViewSet:Delete")}}},columns:{name:{title:"收件人名称",type:"input",search:{show:!0},column:{minWidth:60,sortable:"custom"},form:{rules:[{required:!0,message:"收件人名称必填"}],component:{placeholder:"请输入收件人名称"}}},mobile:{title:"手机号码",type:"input",search:{show:!0},column:{minWidth:50},form:{component:{placeholder:"请输入"},rules:[{required:!0,message:"手机号码必填"},{max:11,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}]}},address:{title:"收件地址",type:"textarea",search:{show:!0},column:{show:!1,minWidth:120,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入收件地址"}}},note:{title:"备注",type:"textarea",search:{show:!0},column:{show:!1,minWidth:120,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入备注"}}}}}}}export{q as default}; +import{r as a,d as c}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import"./vue.DmuWcDrn.js";const o="/api/CrudPatronAddressModelViewSet/";function p(e){return a({url:o,method:"get",params:e})}function m(e){return a({url:o,method:"post",data:e})}function h(e){return a({url:o+e.id+"/",method:"put",data:e})}function w(e){return a({url:o+e+"/",method:"delete",data:{id:e}})}function f(e){return c({url:o+"export_data/",params:e,method:"get"})}function q({crudExpose:e}){const d=async t=>await p(t),n=async({form:t,row:s})=>(s.id&&(t.id=s.id),await h(t)),u=async({row:t})=>await w(t.id),i=async({form:t})=>await m(t),l=async t=>await f(t);return{crudOptions:{request:{pageRequest:d,addRequest:i,editRequest:n,delRequest:u},actionbar:{buttons:{export:{show:r("CrudPatronAddressModelViewSet:Export"),text:"导出",title:"导出",click(){return l(e.getSearchFormData())}},add:{show:r("CrudPatronAddressModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,buttons:{view:{type:"text",order:1,show:r("CrudPatronAddressModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("CrudPatronAddressModelViewSet:Update")},copy:{type:"text",order:3,show:r("CrudPatronAddressModelViewSet:Copy")},remove:{type:"text",order:4,show:r("CrudPatronAddressModelViewSet:Delete")}}},columns:{name:{title:"收件人名称",type:"input",search:{show:!0},column:{minWidth:60,sortable:"custom"},form:{rules:[{required:!0,message:"收件人名称必填"}],component:{placeholder:"请输入收件人名称"}}},mobile:{title:"手机号码",type:"input",search:{show:!0},column:{minWidth:50},form:{component:{placeholder:"请输入"},rules:[{required:!0,message:"手机号码必填"},{max:11,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}]}},address:{title:"详细地址",type:"textarea",search:{show:!0},column:{show:!1,minWidth:120,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入详细地址"}}},note:{title:"备注",type:"textarea",search:{show:!0},column:{show:!1,minWidth:120,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入备注"}}}}}}}export{q as default}; diff --git a/web/dist/assets/crud.DBHnuhcJ.js b/web/dist/assets/crud.DIBSrtw9.js similarity index 95% rename from web/dist/assets/crud.DBHnuhcJ.js rename to web/dist/assets/crud.DIBSrtw9.js index b9c1d01075..16ebe7ca99 100644 --- a/web/dist/assets/crud.DBHnuhcJ.js +++ b/web/dist/assets/crud.DIBSrtw9.js @@ -1 +1 @@ -import{r as a,m as o,n as p,s as m}from"./index.CkCcWuPb.js";import{d as i}from"./dictionary.CH8ZDdyo.js";import{a as u}from"./authFunction.Br9oRcVU.js";const l="/api/system/user/";function c(t){return a({url:l,method:"get",params:t})}function h(t){return a({url:l,method:"post",data:t})}function n(t){return a({url:l+t.id+"/",method:"put",data:t})}function f(t){return a({url:l+t+"/",method:"delete",data:{id:t}})}function O(t,e){return a({url:`/api/system/dept/dept_info/?dept_id=${t}&show_all=${e}`,method:"get"})}function D(t,e){return a({url:`/api/system/user/${t}/reset_password/`,method:"put",data:e})}const w=function({crudExpose:t,context:e}){return{crudOptions:{table:{remove:{confirmMessage:"是否删除该用户?"}},request:{pageRequest:async r=>{const s=e!=null&&e.isShowChildFlag.value?"1":"0";return await c({...r,show_all:s})},addRequest:async({form:r})=>{const s=await h(r);return e==null||e.getDeptInfo(),s},editRequest:async({form:r,row:s})=>(r.id=s.id,await n(r)),delRequest:async({row:r})=>{const s=await f(r.id);return e==null||e.getDeptInfo(),s}},search:{container:{layout:"multi-line",action:{col:{span:10}}}},rowHandle:{fixed:"right",width:250,buttons:{view:{show:!1},edit:{show:u("user:Update")},remove:{show:u("user:Delete")},custom:{text:"重设密码",type:"primary",show:u("user:ResetPassword"),tooltip:{placement:"top",content:"重设密码"},click:r=>e==null?void 0:e.handleResetPwdOpen(r.row)}}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"账号",type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"账号必填项"}],component:{placeholder:"请输入账号"}}},password:{title:"密码",type:"input",column:{show:!1},editForm:{show:!1},form:{rules:[{required:!0,message:"密码必填项"}],component:{span:12,showPassword:!0,placeholder:"请输入密码"}}},name:{title:"姓名",type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"姓名必填项"}],component:{span:12,placeholder:"请输入姓名"}}},dept:{title:"部门",type:"dict-tree",dict:o({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"}),column:{minWidth:200,formatter({value:r,row:s,index:d}){return s.dept_name_all}},form:{rules:[{required:!0,message:"必填项"}],component:{filterable:!0,placeholder:"请选择",props:{props:{value:"id",label:"name"}}}}},role:{title:"角色",type:"dict-select",search:{show:!0},form:{rules:[{required:!0,message:"必填项"}],component:{multiple:!0,filterable:!0,placeholder:"请选择角色"}},dict:o({url:"/api/system/role/",value:"id",label:"name"}),column:{minWidth:200}},mobile:{title:"手机号码",type:"input",column:{minWidth:120},form:{rules:[{max:20,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}],component:{placeholder:"请输入手机号码"}}},email:{title:"邮箱",column:{width:260},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},gender:{title:"性别",type:"dict-select",dict:o({data:i("gender")}),form:{value:1,component:{span:12}},component:{props:{color:"auto"}}},user_type:{title:"用户类型",search:{show:!0},type:"dict-select",dict:o({data:i("user_type")}),column:{minWidth:100},form:{show:!1,value:0,component:{span:12}}},is_active:{title:"锁定",search:{show:!0},type:"dict-radio",column:{component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:p(r=>()=>{n(r.row).then(s=>{m(s.msg)})})}},dict:o({data:i("button_status_bool")})},avatar:{title:"头像",type:"avatar-uploader",form:{show:!1},column:{width:100,showOverflowTooltip:!0}}}}}},P=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:w},Symbol.toStringTag,{value:"Module"}));export{P as a,w as c,O as g,D as r}; +import{r as a,c as o,w as p,s as m}from"./index.XK2ik2qb.js";import{d as i}from"./dictionary.DnyXy1XL.js";import{a as u}from"./authFunction.CZ5a1pu0.js";const l="/api/system/user/";function c(t){return a({url:l,method:"get",params:t})}function h(t){return a({url:l,method:"post",data:t})}function n(t){return a({url:l+t.id+"/",method:"put",data:t})}function f(t){return a({url:l+t+"/",method:"delete",data:{id:t}})}function O(t,e){return a({url:`/api/system/dept/dept_info/?dept_id=${t}&show_all=${e}`,method:"get"})}function D(t,e){return a({url:`/api/system/user/${t}/reset_password/`,method:"put",data:e})}const w=function({crudExpose:t,context:e}){return{crudOptions:{table:{remove:{confirmMessage:"是否删除该用户?"}},request:{pageRequest:async r=>{const s=e!=null&&e.isShowChildFlag.value?"1":"0";return await c({...r,show_all:s})},addRequest:async({form:r})=>{const s=await h(r);return e==null||e.getDeptInfo(),s},editRequest:async({form:r,row:s})=>(r.id=s.id,await n(r)),delRequest:async({row:r})=>{const s=await f(r.id);return e==null||e.getDeptInfo(),s}},search:{container:{layout:"multi-line",action:{col:{span:10}}}},rowHandle:{fixed:"right",width:250,buttons:{view:{show:!1},edit:{show:u("user:Update")},remove:{show:u("user:Delete")},custom:{text:"重设密码",type:"primary",show:u("user:ResetPassword"),tooltip:{placement:"top",content:"重设密码"},click:r=>e==null?void 0:e.handleResetPwdOpen(r.row)}}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"账号",type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"账号必填项"}],component:{placeholder:"请输入账号"}}},password:{title:"密码",type:"input",column:{show:!1},editForm:{show:!1},form:{rules:[{required:!0,message:"密码必填项"}],component:{span:12,showPassword:!0,placeholder:"请输入密码"}}},name:{title:"姓名",type:"input",column:{minWidth:100},form:{rules:[{required:!0,message:"姓名必填项"}],component:{span:12,placeholder:"请输入姓名"}}},dept:{title:"部门",type:"dict-tree",dict:o({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"}),column:{minWidth:200,formatter({value:r,row:s,index:d}){return s.dept_name_all}},form:{rules:[{required:!0,message:"必填项"}],component:{filterable:!0,placeholder:"请选择",props:{props:{value:"id",label:"name"}}}}},role:{title:"角色",type:"dict-select",search:{show:!0},form:{rules:[{required:!0,message:"必填项"}],component:{multiple:!0,filterable:!0,placeholder:"请选择角色"}},dict:o({url:"/api/system/role/",value:"id",label:"name"}),column:{minWidth:200}},mobile:{title:"手机号码",type:"input",column:{minWidth:120},form:{rules:[{max:20,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}],component:{placeholder:"请输入手机号码"}}},email:{title:"邮箱",column:{width:260},form:{rules:[{type:"email",message:"请输入正确的邮箱地址",trigger:["blur","change"]}],component:{placeholder:"请输入邮箱"}}},gender:{title:"性别",type:"dict-select",dict:o({data:i("gender")}),form:{value:1,component:{span:12}},component:{props:{color:"auto"}}},user_type:{title:"用户类型",search:{show:!0},type:"dict-select",dict:o({data:i("user_type")}),column:{minWidth:100},form:{show:!1,value:0,component:{span:12}}},is_active:{title:"锁定",search:{show:!0},type:"dict-radio",column:{component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:p(r=>()=>{n(r.row).then(s=>{m(s.msg)})})}},dict:o({data:i("button_status_bool")})},avatar:{title:"头像",type:"avatar-uploader",form:{show:!1},column:{width:100,showOverflowTooltip:!0}}}}}},P=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:w},Symbol.toStringTag,{value:"Module"}));export{P as a,w as c,O as g,D as r}; diff --git a/web/dist/assets/crud.DJ-x8cxk.js b/web/dist/assets/crud.DJ-x8cxk.js new file mode 100644 index 0000000000..ee990af507 --- /dev/null +++ b/web/dist/assets/crud.DJ-x8cxk.js @@ -0,0 +1 @@ +import{r as s,d as h,t as f,c as l,g as i}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as w}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const a="/api/MaterielModelViewSet/";function g(t){return s({url:a,method:"get",params:t})}function y(t){return s({url:a,method:"post",data:t})}function b(t){return s({url:a+t.id+"/",method:"put",data:t})}function x(t){return s({url:a+t+"/",method:"delete",data:{id:t}})}function M(t){return h({url:a+"export_data/",params:t,method:"get"})}function R({crudExpose:t}){const n=async e=>await g(e),u=async({form:e,row:o})=>(o.id&&(e.id=o.id),await b(e)),c=async({row:e})=>await x(e.id),d=async({form:e})=>await y(e),m=async e=>await M(e);return{crudOptions:{request:{pageRequest:n,addRequest:d,editRequest:u,delRequest:c},actionbar:{buttons:{export:{show:r("MaterielModelViewSet:Export"),text:"导出",title:"导出",click(){return m(t.getSearchFormData())}},add:{show:r("MaterielModelViewSet:Create")}}},rowHandle:{fixed:"right",width:130,buttons:{view:{type:"text",order:1,show:r("MaterielModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("MaterielModelViewSet:Update")},copy:{type:"text",order:3,show:r("MaterielModelViewSet:Copy")},remove:{type:"text",order:4,show:r("MaterielModelViewSet:Delete")}}},columns:{code:{title:"编号",type:"text",search:{show:!0},column:{sortable:"custom"},form:{show:!0,component:{placeholder:"编号自动生成,无需输入."}},addForm:{component:{disabled:!0}},editForm:{component:{disabled:!0}}},specification:{title:"规格",type:"text",search:{show:!0,component:{placeholder:"请输入规格"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入规格"}}},name:{title:"名称",type:"text",search:{show:!0,component:{placeholder:"请输入名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入名称"}}},number:{title:"数量",type:"number",search:{show:!1,component:{placeholder:"请输入数量"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"数量必填"}],component:{min:0,placeholder:"请输入数量"}}},transfer_unit:{title:"单位",type:"dict-radio",search:{show:!0,component:{placeholder:"请输入单位"}},dict:l({data:w("weight_unit")}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"单位必选"}],component:{placeholder:"请输入单位"}}},price:{title:"单价",type:"",search:{show:!1,component:{placeholder:"请输入单价"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"单价必填"}],component:{min:0,max:10,step:.1,placeholder:"请输入单价"}}},stash:{title:"所属仓位",type:"dict-select",search:{show:!0,component:{placeholder:"请输入所属仓位"}},dict:l({url:"/api/StashManageModelViewSet/",label:"stash_position",value:"id"}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"所属仓位必选"}],component:{placeholder:"请输入所属仓位"}}},note:{title:"备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入订单备注"}}},images:{title:"照片墙",type:"image-uploader",form:{col:{span:24},component:{limit:10,uploader:{type:"form"}},valueBuilder(e){e.mode!=="add"&&e.form.images!==null&&e.form.images.forEach((o,p)=>{e.form.images[p]=i(o)})},rules:f([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最多可上传10个图片"},column:{component:{async buildUrl(e){return i(e)},async buildPreviewUrl({url:e,index:o}){return e+"?preview=600x600"}}}}}}}}export{R as default}; diff --git a/web/dist/assets/crud.DQC96ooy.js b/web/dist/assets/crud.DQC96ooy.js new file mode 100644 index 0000000000..e0420ebfb3 --- /dev/null +++ b/web/dist/assets/crud.DQC96ooy.js @@ -0,0 +1 @@ +import{r as o,ai as V,c as w}from"./index.XK2ik2qb.js";import{t as b}from"./index.BEdABa7j.js";import{d as C,g as q,C as M,h as x,a as _,o as h,G as R,H as L,b as O,w as k,m as S,K as T,c as v,Q as n}from"./vue.DmuWcDrn.js";import{_ as j}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{a as g}from"./authFunction.CZ5a1pu0.js";const s="/api/system/message_center/";function A(t){return o({url:s,method:"get",params:t})}function D(t){return o({url:s+t+"/",method:"get"})}function G(t){return o({url:s+"get_self_receive/",method:"get",params:t})}function B(t){return o({url:s,method:"post",data:t})}function F(t){return o({url:s+t.id+"/",method:"put",data:t})}function H(t){return o({url:s+t+"/",method:"delete",data:{id:t}})}const I=C({__name:"index",props:{modelValue:Array,bindValue:Array,displayLabel:{type:String,default:""}},setup(t){const c=t,r=q();M(()=>c.bindValue,u=>{const{displayLabel:p}=c,i=u?u.map(d=>d[p]):null;r.value=i},{immediate:!0});const m=["success","info","warning","danger"],f=()=>m[Math.floor(Math.random()*m.length)];return(u,p)=>{const i=x("el-tag");return h(),_("div",null,[(h(!0),_(R,null,L(r.value,(d,e)=>(h(),O(i,{class:"many-to-many-tag",type:f,key:e},{default:k(()=>[S(T(d),1)]),_:2},1024))),128))])}}}),y=j(I,[["__scopeId","data-v-0838bf04"]]),{compute:a}=V();function Q({crudExpose:t,context:c}){const{tabActivted:r}=c,m=async e=>r.value==="receive"?await G(e):await A(e),f=async({form:e,row:l})=>(e.id=l.id,await F(e)),u=async({row:e})=>await H(e.id),p=async({form:e})=>await B(e),i=async({row:e})=>await D(e.id),d=v(()=>r.value==="receive");return{crudOptions:{request:{pageRequest:m,addRequest:p,editRequest:f,delRequest:u},actionbar:{buttons:{add:{show:v(()=>r.value!=="receive"&&g("messageCenter:Create"))}}},rowHandle:{fixed:"right",width:150,buttons:{edit:{show:!1},view:{text:"查看",type:"text",iconRight:"View",show:g("messageCenter:Search"),click({index:e,row:l}){t.openView({index:e,row:l}),r.value==="receive"&&(i({row:l}),t.doRefresh())}},remove:{iconRight:"Delete",type:"text",show:g("messageCenter:Delete")}}},columns:{id:{title:"id",form:{show:!1}},title:{title:"标题",search:{show:!0},type:["text","colspan"],column:{minWidth:120},form:{rules:[{required:!0,message:"必填项"}],component:{span:24,placeholder:"请输入标题"}}},is_read:{title:"是否已读",type:"dict-select",column:{show:d.value},dict:w({data:[{label:"已读",value:!0,color:"success"},{label:"未读",value:!1,color:"danger"}]}),form:{show:!1}},target_type:{title:"目标类型",type:["dict-radio","colspan"],column:{minWidth:120},dict:w({data:[{value:0,label:"按用户"},{value:1,label:"按角色"},{value:2,label:"按部门"},{value:3,label:"通知公告"}]}),form:{component:{optionName:"el-radio-button"},rules:[{required:!0,message:"必选项",trigger:["blur","change"]}]}},target_user:{title:"目标用户",search:{disabled:!0},form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({row:e})=>e?e.user_info:null),tableConfig:{url:"/api/system/user/",label:"name",value:"id",isMultiple:!0,columns:[{prop:"name",label:"用户名称",width:120},{prop:"phone",label:"用户电话",width:120}]}},show:a(({form:e})=>e.target_type===0),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.user_info),displayLabel:"name"}}},target_role:{title:"目标角色",search:{disabled:!0},width:130,form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({row:e})=>e?e.role_info:null),tableConfig:{url:"/api/system/role/",label:"name",value:"id",isMultiple:!0,columns:[{prop:"name",label:"角色名称"},{prop:"key",label:"权限标识"}]}},show:a(({form:e})=>e.target_type===1),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.role_info),displayLabel:"name"}}},target_dept:{title:"目标部门",search:{disabled:!0},width:130,type:"table-selector",form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({form:e})=>e.dept_info),tableConfig:{url:"/api/system/dept/all_dept/",label:"name",value:"id",isTree:!0,isMultiple:!0,columns:[{prop:"name",label:"部门名称",width:150},{prop:"status_label",label:"状态"},{prop:"parent_name",label:"父级部门"}]}},show:a(({form:e})=>e.target_type===2),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.dept_info),displayLabel:"name"}}},content:{title:"内容",column:{width:300,show:!1},type:["editor-wang5","colspan"],form:{rules:[{required:!0,message:"必填项"}],component:{disabled:!1,id:"1",editorConfig:{readOnly:a(e=>{const{mode:l}=e;return l!=="add"})},uploader:{type:"form",buildUrl(e){return e.url}}}}}}}}}export{Q as default}; diff --git a/web/dist/assets/crud.CFv1w-We.js b/web/dist/assets/crud.DZgBVAiY.js similarity index 96% rename from web/dist/assets/crud.CFv1w-We.js rename to web/dist/assets/crud.DZgBVAiY.js index a9d8d50b26..9667fcf900 100644 --- a/web/dist/assets/crud.CFv1w-We.js +++ b/web/dist/assets/crud.DZgBVAiY.js @@ -1 +1 @@ -import{r as o,m as l}from"./index.CkCcWuPb.js";import{c as p}from"./commonCrud.CCkJYHLJ.js";const n="/api/system/login_log/";function c(e){return o({url:n,method:"get",params:e})}function a(e){return o({url:n,method:"post",data:e})}function u(e){return o({url:n+e.id+"/",method:"put",data:e})}function d(e){return o({url:n+e+"/",method:"delete",data:{id:e}})}function W(){return o({url:n+"field_permission/",method:"get"})}const m=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await c(t),addRequest:async({form:t})=>await a(t),editRequest:async({form:t,row:r})=>(t.id=r.id,await u(t)),delRequest:async({row:t})=>await d(t.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,i=e.crudBinding.value.pagination;return((i.currentPage??1)-1)*i.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"登录用户名",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录用户名"}}},ip:{title:"登录ip",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录ip"}}},isp:{title:"运营商",search:{disabled:!0},disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入运营商"}}},continent:{title:"大州",type:"input",column:{minWidth:90},form:{disabled:!0,component:{placeholder:"请输入大州"}},component:{props:{color:"auto"}}},country:{title:"国家",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入国家"}},component:{props:{color:"auto"}}},province:{title:"省份",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入省份"}},component:{props:{color:"auto"}}},city:{title:"城市",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入城市"}},component:{props:{color:"auto"}}},district:{title:"县区",key:"",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入县区"}},component:{props:{color:"auto"}}},area_code:{title:"区域代码",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入区域代码"}},component:{props:{color:"auto"}}},country_english:{title:"英文全称",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入英文全称"}},component:{props:{color:"auto"}}},country_code:{title:"简称",type:"input",column:{minWidth:100},form:{component:{placeholder:"请输入简称"}},component:{props:{color:"auto"}}},longitude:{title:"经度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入经度"}},component:{props:{color:"auto"}}},latitude:{title:"纬度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入纬度"}},component:{props:{color:"auto"}}},login_type:{title:"登录类型",type:"dict-select",search:{disabled:!1},dict:l({data:[{label:"普通登录",value:1},{label:"微信扫码登录",value:2}]}),column:{minWidth:120},form:{component:{placeholder:"请选择登录类型"}}},os:{title:"操作系统",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入操作系统"}}},browser:{title:"浏览器名",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入浏览器名"}}},agent:{title:"agent信息",disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入agent信息"}}},...p({create_datetime:{search:!0}})}}}},w=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:m},Symbol.toStringTag,{value:"Module"}));export{W as G,w as a,m as c}; +import{r as o,c as l}from"./index.XK2ik2qb.js";import{c as p}from"./commonCrud.Ca1t2kUN.js";const n="/api/system/login_log/";function c(e){return o({url:n,method:"get",params:e})}function a(e){return o({url:n,method:"post",data:e})}function u(e){return o({url:n+e.id+"/",method:"put",data:e})}function d(e){return o({url:n+e+"/",method:"delete",data:{id:e}})}function W(){return o({url:n+"field_permission/",method:"get"})}const m=function({crudExpose:e}){return{crudOptions:{request:{pageRequest:async t=>await c(t),addRequest:async({form:t})=>await a(t),editRequest:async({form:t,row:r})=>(t.id=r.id,await u(t)),delRequest:async({row:t})=>await d(t.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:100,buttons:{view:{type:"text"},edit:{show:!1},remove:{show:!1}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:t=>{let r=t.index??1,i=e.crudBinding.value.pagination;return((i.currentPage??1)-1)*i.pageSize+r+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},username:{title:"登录用户名",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录用户名"}}},ip:{title:"登录ip",search:{disabled:!1},type:"input",column:{minWidth:120},form:{disabled:!0,component:{placeholder:"请输入登录ip"}}},isp:{title:"运营商",search:{disabled:!0},disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入运营商"}}},continent:{title:"大州",type:"input",column:{minWidth:90},form:{disabled:!0,component:{placeholder:"请输入大州"}},component:{props:{color:"auto"}}},country:{title:"国家",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入国家"}},component:{props:{color:"auto"}}},province:{title:"省份",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入省份"}},component:{props:{color:"auto"}}},city:{title:"城市",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入城市"}},component:{props:{color:"auto"}}},district:{title:"县区",key:"",type:"input",column:{minWidth:80},form:{component:{placeholder:"请输入县区"}},component:{props:{color:"auto"}}},area_code:{title:"区域代码",type:"input",column:{minWidth:90},form:{component:{placeholder:"请输入区域代码"}},component:{props:{color:"auto"}}},country_english:{title:"英文全称",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入英文全称"}},component:{props:{color:"auto"}}},country_code:{title:"简称",type:"input",column:{minWidth:100},form:{component:{placeholder:"请输入简称"}},component:{props:{color:"auto"}}},longitude:{title:"经度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入经度"}},component:{props:{color:"auto"}}},latitude:{title:"纬度",type:"input",disabled:!0,column:{minWidth:100},form:{component:{placeholder:"请输入纬度"}},component:{props:{color:"auto"}}},login_type:{title:"登录类型",type:"dict-select",search:{disabled:!1},dict:l({data:[{label:"普通登录",value:1},{label:"微信扫码登录",value:2}]}),column:{minWidth:120},form:{component:{placeholder:"请选择登录类型"}}},os:{title:"操作系统",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入操作系统"}}},browser:{title:"浏览器名",type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入浏览器名"}}},agent:{title:"agent信息",disabled:!0,type:"input",column:{minWidth:120},form:{component:{placeholder:"请输入agent信息"}}},...p({create_datetime:{search:!0}})}}}},w=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:m},Symbol.toStringTag,{value:"Module"}));export{W as G,w as a,m as c}; diff --git a/web/dist/assets/crud.Dd1clT1a.js b/web/dist/assets/crud.Dd1clT1a.js new file mode 100644 index 0000000000..b0127d4b03 --- /dev/null +++ b/web/dist/assets/crud.Dd1clT1a.js @@ -0,0 +1 @@ +import{DelObj as n,UpdateObj as l,AddObj as r,GetList as o}from"./api.Duj3eJXG.js";import{c as d}from"./index.XK2ik2qb.js";import{c}from"./commonCrud.Ca1t2kUN.js";import"./vue.DmuWcDrn.js";const b=function({crudExpose:a}){return{crudOptions:{request:{pageRequest:async e=>await o(e),addRequest:async({form:e})=>await r(e),editRequest:async({form:e,row:t})=>(e.id=t.id,await l(e)),delRequest:async({row:e})=>await n(e.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:80,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:!1},remove:{iconRight:"Delete",type:"text",show:!1}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let t=e.index??1,i=a.crudBinding.value.pagination;return((i.currentPage??1)-1)*i.pageSize+t+1}}},no:{title:"流水号",search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入"}},column:{width:"160px",align:"center"}},name:{title:"名称",column:{width:"250px",align:"center"}},models_name:{title:"库表",column:{width:"140px",align:"center"}},start_user_name:{title:"发起人",column:{width:"120px",align:"center"}},"current_node.name":{title:"当前节点",column:{width:"160px",align:"center"}},pre_user:{title:"预处理人",column:{width:"160px",align:"center"}},pre_role:{title:"预处理角色",column:{width:"160px",align:"center"}},pre_dept:{title:"预处理部门",column:{width:"160px",align:"center"}},status:{title:"状态",type:"dict-select",column:{fixed:"right",width:"100px",align:"center"},dict:d({data:[{value:0,label:"进行中"},{value:1,label:"审核通过"},{value:2,label:"审核驳回"},{value:3,label:"审核撤销"}]})},completed_time:{title:"完成时间",column:{width:"160px",align:"center"}},...c({create_datetime:{search:!1,table:!0},update_datetime:{table:!0},dept_belong_id:{table:!1}})}}}};export{b as createCrudOptions}; diff --git a/web/dist/assets/crud.DdutpvhZ.js b/web/dist/assets/crud.DdutpvhZ.js deleted file mode 100644 index 817ea45b75..0000000000 --- a/web/dist/assets/crud.DdutpvhZ.js +++ /dev/null @@ -1 +0,0 @@ -import{r as s,m,E as v,t as D,X as u}from"./index.CkCcWuPb.js";import{a as d}from"./authFunction.Br9oRcVU.js";import{D as A,a7 as p,aA as h,P as B}from"./vue.Cw4Y52yh.js";const i="/api/system/menu_button/";function F(e){return s({url:i,method:"get",params:e})}function O(e){return s({url:i,method:"post",data:e})}function R(e){return s({url:i+e.id+"/",method:"put",data:e})}function q(e){return s({url:i+e+"/",method:"delete",data:{id:e}})}function x(e){return s({url:i+"batch_create/",method:"post",data:e})}function j(e){return s({url:i+"multiple_delete/",method:"delete",data:{keys:e}})}const C=function({crudExpose:e,context:c}){const f=async()=>{if(c.selectOptions.value.id)return await F({menu:c.selectOptions.value.id})},w=async({form:t,row:n})=>await R({...t,menu:n.menu}),b=async({row:t})=>await q(t.id),g=async({form:t})=>await O({...t,menu:c.selectOptions.value.id}),r=A([]),y=t=>{const o=e.getTableData().filter(a=>!t.includes(a));u.arrayEach(t,a=>{u.pluck(r.value,"id").includes(a.id)||(r.value=u.union(r.value,[a]))}),u.arrayEach(o,a=>{r.value=u.remove(r.value,l=>l.id!==a.id)})},E=()=>{const t=e.getBaseTableRef(),n=e.getTableData(),o=u.filter(n,a=>u.pluck(r.value,"id").includes(a.id));B(()=>{u.arrayEach(o,a=>{t.toggleRowSelection(a,!0)})})};return{selectedRows:r,crudOptions:{pagination:{show:!1},search:{container:{action:{col:{span:8}}}},actionbar:{buttons:{add:{show:d("btn:Create")},batchAdd:{show:!0,type:"primary",text:"批量生成",click:async()=>{if(c.selectOptions.value.id==null){v.error("请选择菜单");return}const t=await x({menu:c.selectOptions.value.id});t.code==2e3&&(D(t.msg),e.doRefresh())}}}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{icon:"",type:"primary",show:d("btn:Update")},remove:{show:d("btn:Delete")}}},request:{pageRequest:f,addRequest:g,editRequest:w,delRequest:b},table:{rowKey:"id",onSelectionChange:y,onRefreshed:()=>E()},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"600px"}},columns:{$checked:{title:"选择",form:{show:!1},column:{type:"selection",align:"center",width:"70px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},search:{title:"关键词",column:{show:!1},type:"text",search:{show:!0},form:{show:!1,component:{placeholder:"输入关键词搜索"}}},id:{title:"ID",type:"text",column:{show:!1},search:{show:!1},form:{show:!1}},name:{title:"权限名称",type:"text",search:{show:!0},column:{minWidth:120,sortable:!0},form:{rules:[{required:!0,message:"权限名称必填"}],component:{placeholder:"输入权限名称",props:{clearable:!0,allowCreate:!0,filterable:!0}},helper:{render(){return p(h("el-alert"),{title:"手动输入",type:"warning",description:"页面中按钮的名称或者自定义一个名称"},null)}}}},value:{title:"权限值",type:"text",search:{show:!1},column:{width:200,sortable:!0},form:{rules:[{required:!0,message:"权限标识必填"}],placeholder:"输入权限标识",helper:{render(){return p(h("el-alert"),{title:"唯一值",type:"warning",description:"用于判断前端按钮权限或接口权限"},null)}}}},method:{title:"请求方式",search:{show:!1},type:"dict-select",column:{width:120,sortable:!0},dict:m({data:[{label:"GET",value:0},{label:"POST",value:1,color:"success"},{label:"PUT",value:2,color:"warning"},{label:"DELETE",value:3,color:"danger"}]}),form:{rules:[{required:!0,message:"必填项"}]}},api:{title:"接口地址",search:{show:!1},type:"dict-select",dict:m({getData(){return s({url:"/swagger.json"}).then(t=>{const n=Object.keys(t.paths),o=[];for(const a of n){const l={};l.label=a,l.value=a,o.push(l)}return o})}}),column:{minWidth:250,sortable:!0},form:{rules:[{required:!0,message:"必填项"}],component:{props:{allowCreate:!0,filterable:!0,clearable:!0}},helper:{render(){return p(h("el-alert"),{title:"请正确填写,以免请求时被拦截。匹配单例使用正则,例如:/api/xx/.*?/",type:"warning"},null)}}}}}}}},k=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:C},Symbol.toStringTag,{value:"Module"}));export{j as B,k as a,C as c}; diff --git a/web/dist/assets/crud.DheGQF1_.js b/web/dist/assets/crud.DheGQF1_.js new file mode 100644 index 0000000000..5fd2c329be --- /dev/null +++ b/web/dist/assets/crud.DheGQF1_.js @@ -0,0 +1 @@ +import{c as s}from"./index.XK2ik2qb.js";import{DelObj as o,UpdateObj as l,AddObj as u,GetList as i}from"./api.DG102jwl.js";import{a as t}from"./authFunction.CZ5a1pu0.js";import{c as d}from"./vue.DmuWcDrn.js";const y=function({crudExpose:c,context:n}){return{crudOptions:{request:{pageRequest:async e=>await i(e),addRequest:async({form:e})=>await u(e),editRequest:async({form:e,row:r})=>(e.id=r.id,await l(e)),delRequest:async({row:e})=>await o(e.id)},pagination:{show:!0},table:{show:!1},toolbar:{compact:!1},actionbar:{buttons:{add:{show:t("role:Create")}}},rowHandle:{align:"center",fixed:"right",width:d(()=>t("role:AuthorizedAdd")||t("role:AuthorizedSearch")?420:320),buttons:{view:{show:!0},edit:{show:t("role:Update")},remove:{show:t("role:Delete")}}},form:{col:{span:24},labelWidth:"100px",wrapper:{is:"el-dialog",width:"900px"}},columns:{_index:{title:"序号",form:{show:!1},column:{type:"index",align:"center",width:"70px",columnSetDisabled:!0}},id:{title:"ID",column:{show:!1},search:{show:!1},form:{show:!1}},name:{title:"任务名称",search:{show:!0},column:{minWidth:120,sortable:"custom"},form:{rules:[{required:!0,message:"任务名称必填"}],component:{placeholder:"请输入任务名称"}}},task:{title:"执行任务",type:"dict-select",dict:s({url:"/api/dvadmin_celery/task/job_list/?limit=999",value:"label",label:"label"}),search:{show:!0},column:{minWidth:120,sortable:"custom",columnSetDisabled:!0},form:{rules:[{required:!0,message:"执行任务必填"}],component:{placeholder:"输入执行任务"}},valueBuilder(e){const{row:r,key:a}=e;return r[a]}},last_run_at:{title:"最后运行时间",search:{show:!1},type:" datetime",form:{show:!1,rules:[{required:!0,message:"最后运行时间必填"}]}},description:{title:"备注",search:{show:!1},type:" datetime",form:{show:!1,rules:[{required:!0,message:"备注必填"}]}},cron:{title:"表达式",search:{show:!1},type:"number",column:{minWidth:90,sortable:"custom"},form:{rules:[{required:!0,message:"表达式必填"}],value:"1-15 1 * * *"}},kwargs:{title:"请求参数",search:{show:!1},type:"text",column:{minWidth:90,sortable:"custom"}},enabled:{title:"状态",search:{show:!0},type:"dict-radio",form:{rules:[{required:!0,message:"排序必填"}],value:!0},dict:s({data:[{label:"启用",value:!0,color:"success",effect:"dark"},{label:"禁用",value:!1,effect:"dark"}]})}}}}};export{y as createCrudOptions}; diff --git a/web/dist/assets/crud.DxrtcMz2.js b/web/dist/assets/crud.DxrtcMz2.js new file mode 100644 index 0000000000..7736908e22 --- /dev/null +++ b/web/dist/assets/crud.DxrtcMz2.js @@ -0,0 +1 @@ +import{r as s,d as h,t as f,c as i,g as l}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as w}from"./dictionary.DnyXy1XL.js";import"./vue.DmuWcDrn.js";const a="/api/SemiFinishedProductModelViewSet/";function g(t){return s({url:a,method:"get",params:t})}function y(t){return s({url:a,method:"post",data:t})}function b(t){return s({url:a+t.id+"/",method:"put",data:t})}function x(t){return s({url:a+t+"/",method:"delete",data:{id:t}})}function S(t){return h({url:a+"export_data/",params:t,method:"get"})}function P({crudExpose:t}){const n=async e=>await g(e),u=async({form:e,row:o})=>(o.id&&(e.id=o.id),await b(e)),d=async({row:e})=>await x(e.id),c=async({form:e})=>await y(e),m=async e=>await S(e);return{crudOptions:{request:{pageRequest:n,addRequest:c,editRequest:u,delRequest:d},actionbar:{buttons:{export:{show:r("SemiFinishedProductModelViewSet:Export"),text:"导出",title:"导出",click(){return m(t.getSearchFormData())}},add:{show:r("SemiFinishedProductModelViewSet:Create")}}},rowHandle:{fixed:"right",width:130,buttons:{view:{type:"text",order:1,show:r("SemiFinishedProductModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("SemiFinishedProductModelViewSet:Update")},copy:{type:"text",order:3,show:r("SemiFinishedProductModelViewSet:Copy")},remove:{type:"text",order:4,show:r("SemiFinishedProductModelViewSet:Delete")}}},columns:{code:{title:"编号",type:"text",search:{show:!0},column:{sortable:"custom"},form:{show:!0,component:{placeholder:"编号自动生成,无需输入."}},addForm:{component:{disabled:!0}},editForm:{component:{disabled:!0}}},specification:{title:"规格",type:"text",search:{show:!0,component:{placeholder:"请输入规格"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入规格"}}},name:{title:"名称",type:"text",search:{show:!0,component:{placeholder:"请输入名称"}},column:{sortable:"custom"},form:{rules:[{required:!0,message:"规格必填"}],component:{placeholder:"请输入名称"}}},number:{title:"数量",type:"number",search:{show:!1,component:{placeholder:"请输入数量"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"数量必填"}],component:{min:0,placeholder:"请输入数量"}}},transfer_unit:{title:"单位",type:"dict-radio",search:{show:!0,component:{placeholder:"请输入单位"}},dict:i({data:w("weight_unit")}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"单位必选"}],component:{placeholder:"请输入单位"}}},price:{title:"单价",type:"",search:{show:!1,component:{placeholder:"请输入单价"}},column:{sortable:"custom"},form:{value:1,rules:[{required:!0,message:"单价必填"}],component:{min:0,max:10,step:.1,placeholder:"请输入单价"}}},stash:{title:"所属仓位",type:"dict-select",search:{show:!0,component:{placeholder:"请输入所属仓位"}},dict:i({url:"/api/StashManageModelViewSet/",label:"stash_position",value:"id"}),column:{sortable:"custom"},form:{rules:[{required:!0,message:"所属仓位必选"}],component:{placeholder:"请输入所属仓位"}}},note:{title:"备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入订单备注"}}},images:{title:"照片墙",type:"image-uploader",form:{col:{span:24},component:{limit:10,uploader:{type:"form"}},valueBuilder(e){e.mode!=="add"&&e.form.images!==null&&e.form.images.forEach((o,p)=>{e.form.images[p]=l(o)})},rules:f([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最多可上传10个图片"},column:{component:{async buildUrl(e){return l(e)},async buildPreviewUrl({url:e,index:o}){return e+"?preview=600x600"}}}}}}}}export{P as default}; diff --git a/web/dist/assets/crud.LFoUayEs.js b/web/dist/assets/crud.LFoUayEs.js new file mode 100644 index 0000000000..6470422b24 --- /dev/null +++ b/web/dist/assets/crud.LFoUayEs.js @@ -0,0 +1 @@ +import{r as l,d as w,t as y,c as s,g as d}from"./index.XK2ik2qb.js";import _ from"./index.C9xcTXIE.js";import{a as o}from"./authFunction.CZ5a1pu0.js";import{d as n}from"./dictionary.DnyXy1XL.js";import{k as u,m as g,h as b}from"./vue.DmuWcDrn.js";import"./crud.CDRJ7Jbg.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";const a="/api/SampleOrderModelViewSet/";function x(r){return l({url:a,method:"get",params:r})}function S(r){return l({url:a,method:"post",data:r})}function q(r){return l({url:a+r.id+"/",method:"put",data:r})}function v(r){return l({url:a+r+"/",method:"delete",data:{id:r}})}function O(r){return w({url:a+"export_data/",params:r,method:"get"})}function U({crudExpose:r}){const i=async e=>await x(e),c=async({form:e,row:t})=>(t.id&&(e.id=t.id),await q(e)),p=async({row:e})=>await v(e.id),m=async({form:e})=>await S(e),f=async e=>await O(e);return console.log("这个位置是全局数据:",r),{crudOptions:{request:{pageRequest:i,addRequest:m,editRequest:c,delRequest:p},actionbar:{buttons:{export:{show:o("SampleOrderModelViewSet:Export"),text:"导出",title:"导出",click(){return f(r.getSearchFormData())}},add:{show:o("SampleOrderModelViewSet:Create")}}},rowHandle:{fixed:"right",width:200,align:"center",buttons:{view:{type:"text",order:1,show:o("SampleOrderModelViewSet:Retrieve")},edit:{type:"text",order:2,show:o("SampleOrderModelViewSet:Update")},copy:{type:"text",order:3,show:o("SampleOrderModelViewSet:Copy")},remove:{type:"text",order:4,show:o("SampleOrderModelViewSet:Delete")}}},columns:{order_ids:{title:"样品单号",type:"text",search:{show:!0},column:{sortable:"custom"},form:{show:!0,component:{placeholder:"样品单号自动生成,无需输入."}},addForm:{component:{disabled:!0}},editForm:{component:{disabled:!0}}},order_type:{title:"类型",search:{show:!0},type:"dict-select",dict:s({data:n("order_type")}),form:{rules:[{required:!0,message:"类型必选",trigger:"change"}],component:{filterable:!0,placeholder:"请输入类型"}},component:{props:{color:"auto"}}},order_status:{title:"状态",search:{show:!0},type:"dict-select",dict:s({data:n("order_status")}),form:{component:{filterable:!0,placeholder:"请输入状态"}},component:{props:{color:"auto"}}},order_user:{title:"客户代号",search:{show:!0},type:"dict-select",dict:s({url:"/api/CrudPatronModelViewSet/",label:"code",value:"id"}),form:{component:{filterable:!0,placeholder:"请选择订单客户"},helper:{text:"未找到客户时,需先在销售管理->客户管理中添加客户"}},component:{props:{color:"auto"}}},order_payment_method:{title:"付款方式",type:"text",search:{show:!1},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入付款方式"}}},order_payment_remark:{title:"付款备注",type:"text",search:{show:!1},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入付款备注"}}},order_transport:{title:"运输方式",type:"text",search:{show:!1},column:{sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入运输方式"}}},order_file:{title:"上传附件",type:"file-uploader",form:{component:{limit:5,uploader:{type:"form"},accept:".pdf,.csv,.doc,.docx,.xls,.xlsx,.mp4,.zip,.7z,.rar"},valueBuilder(e){e.mode!=="add"&&e.form.order_file!==null&&e.form.order_file.forEach((t,h)=>{e.form.order_file[h]=d(t)})},rules:y([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最大可上传5个文件"},column:{show:!1,component:{async buildUrl({value:e}){return d(e)}}}},order_product:{title:"样品信息",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!0,message:"样品信息必填",trigger:"blur"}],component:{placeholder:"请输入样品信息"}}},order_remark:{title:"备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"备注"}}},order_sample:{title:"样品成本",type:"text",form:{component:{name:_,vModel:"modelValue",readonly:!0},col:{span:24}},column:{show:!1,formatter:({row:e})=>{var t;return((t=e.order_sample)==null?void 0:t.length)+"条数据"}}}},form:{display:"flex",wrapper:{width:"80%"},async beforeSubmit(){var t;if(await((t=r.getFormComponentRef("order_sample"))==null?void 0:t.validate())!==!0)return!1},row:{gutter:20},group:{groupType:"tabs",accordion:!1,groups:{base:{slots:{label:e=>u("span",{style:{color:e.hasError?"red":"green"}},[u(b("fs-icon"),{icon:"ion:checkmark-circle"},null),g("样品单信息基础")])},icon:"el-icon-goods",columns:["order_ids","order_type","order_status","order_transport","order_payment_method","order_payment_remark","order_product","order_remark","order_user","order_file"]},delivery:{label:"样品成本",icon:"el-icon-price-tag",columns:["order_sample"]}}}},toolbar:{buttons:{export:{show:!0}}}}}}export{U as default}; diff --git a/web/dist/assets/crud.Np48kvO6.js b/web/dist/assets/crud.Np48kvO6.js new file mode 100644 index 0000000000..cbcdadabb2 --- /dev/null +++ b/web/dist/assets/crud.Np48kvO6.js @@ -0,0 +1 @@ +import{r as d,d as _,t as w,c as o,g as n}from"./index.XK2ik2qb.js";import{a as r}from"./authFunction.CZ5a1pu0.js";import{d as c}from"./dictionary.DnyXy1XL.js";import{k as s,m as y,h as b}from"./vue.DmuWcDrn.js";const l="/api/SellOrderModelViewSet/";function g(t){return d({url:l,method:"get",params:t})}function x(t){return d({url:l,method:"post",data:t})}function S(t){return d({url:l+t.id+"/",method:"put",data:t})}function O(t){return d({url:l+t+"/",method:"delete",data:{id:t}})}function v(t){return _({url:l+"export_data/",params:t,method:"get"})}function F({crudExpose:t}){const i=async e=>await g(e),u=async({form:e,row:a})=>(a.id&&(e.id=a.id),await S(e)),p=async({row:e})=>await O(e.id),m=async({form:e})=>await x(e),h=async e=>await v(e);return{crudOptions:{request:{pageRequest:i,addRequest:m,editRequest:u,delRequest:p},actionbar:{buttons:{export:{show:r("SellOrderModelViewSet:Export"),text:"导出",title:"导出",click(){return h(t.getSearchFormData())}},add:{show:r("SellOrderModelViewSet:Create")}}},rowHandle:{fixed:"right",width:130,buttons:{view:{type:"text",order:1,show:r("SellOrderModelViewSet:Retrieve")},edit:{type:"text",order:2,show:r("SellOrderModelViewSet:Update")},copy:{type:"text",order:3,show:r("SellOrderModelViewSet:Copy")},remove:{type:"text",order:4,show:r("SellOrderModelViewSet:Delete")}}},columns:{order_ids:{title:"订单编号",type:"text",search:{show:!0},column:{sortable:"custom"},form:{show:!0,component:{placeholder:"订单编号自动生成,无需输入."}},addForm:{component:{disabled:!0}},editForm:{component:{disabled:!0}}},order_type:{title:"订单类型",search:{show:!0},type:"dict-select",dict:o({data:c("order_type")}),form:{rules:[{required:!0,message:"订单类型必选",trigger:"change"}],component:{filterable:!0,placeholder:"请输入订单类型"}},component:{props:{color:"auto"}}},order_contract:{title:"关联合同",search:{show:!0},type:"dict-select",dict:o({url:"/api/ContractModelViewSet/",label:"contract_ids",value:"id"}),form:{component:{filterable:!0,placeholder:"请选择合同"}},component:{props:{color:"auto"}}},order_status:{title:"订单状态",search:{show:!0},type:"dict-select",dict:o({data:c("order_status")}),form:{component:{filterable:!0,placeholder:"请输入订单状态"}},addForm:{show:!1,component:{disabled:!0}},editForm:{component:{disabled:!0}},component:{props:{color:"auto"}}},order_user:{title:"订单客户",search:{show:!0},type:"dict-select",dict:o({url:"/api/CrudPatronModelViewSet/",label:"code",value:"id"}),form:{component:{filterable:!0,placeholder:"请选择订单客户"},helper:{text:"未找到客户时,需先在销售管理->客户管理中添加客户"}},component:{props:{color:"auto"}}},order_payment_method:{title:"付款方式",type:"text",search:{show:!0,component:{placeholder:"请输入付款方式"}},column:{sortable:"custom"},form:{component:{placeholder:"请输入付款方式"}}},order_payment_remark:{title:"付款备注",type:"text",search:{show:!0,component:{placeholder:"请输入付款备注"}},column:{sortable:"custom"},form:{component:{placeholder:"请输入付款备注"}}},order_transport:{title:"运输方式",type:"dict-select",search:{show:!0,component:{filterable:!0,placeholder:"请选择运输方式"}},column:{sortable:"custom"},dict:o({data:c("transport")}),form:{component:{placeholder:"请选择运输方式"}}},order_discount:{title:"折扣",type:"number",column:{sortable:"custom"},form:{value:0,component:{min:0,max:10,step:.1}}},order_delivery_date:{title:"交货日期",type:"date",form:{component:{valueFormat:"YYYY-MM-DD HH:mm:ss",on:{change(e){console.log("选择的交货日期: ",e)}}}}},order_discount_reason:{title:"折扣理由",type:"text",search:{show:!0,component:{placeholder:"请输入折扣理由"}},column:{sortable:"custom"},form:{component:{placeholder:"请输入折扣理由"}}},order_remark:{title:"订单备注",type:"textarea",search:{show:!1},column:{show:!1,sortable:"custom"},form:{rules:[{required:!1}],component:{placeholder:"请输入订单备注"}}},order_file:{title:"上传附件",type:"file-uploader",form:{component:{limit:1,uploader:{type:"form"},accept:".pdf,.zip,.7z,.rar"},valueBuilder(e){e.mode!=="add"&&e.form.order_file.forEach((a,f)=>{e.form.order_file[f]=n(a)})},rules:w([{required:!1,message:"此项必传",trigger:"change"}]),helper:"最大可上传1个文件"},column:{show:!1,component:{async buildUrl(e){return n(e)}}}}},form:{row:{gutter:20},group:{groupType:"tabs",accordion:!1,groups:{base:{slots:{label:e=>s("span",{style:{color:e.hasError?"red":"green"}},[s(b("fs-icon"),{icon:"ion:checkmark-circle"},null),y("订单基础")])},icon:"el-icon-goods",columns:["order_ids","order_type","order_status","order_remark","order_user"]},delivery:{label:"交付条款",icon:"el-icon-price-tag",columns:["order_payment_method","order_payment_remark","order_transport","order_discount","order_discount_reason","order_delivery_date","order_contract"]},contract:{label:"附件",collapsed:!0,icon:"el-icon-warning-outline",columns:["order_file"]},bom:{label:"BOM",collapsed:!0,icon:"el-icon-warning-outline",columns:["order_product"]}}}}}}}export{F as default}; diff --git a/web/dist/assets/crud.PSC-ddJH.js b/web/dist/assets/crud.PSC-ddJH.js new file mode 100644 index 0000000000..4935ff443f --- /dev/null +++ b/web/dist/assets/crud.PSC-ddJH.js @@ -0,0 +1 @@ +import{DelObj as r,UpdateObj as i,AddObj as o,GetList as d}from"./api.CgqMcKh6.js";import{c}from"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";const k=function({crudExpose:l,context:s}){return{crudOptions:{actionbar:{show:!1},toolbar:{show:!1},request:{pageRequest:async e=>{var a;const t=(a=s==null?void 0:s.taskItem)==null?void 0:a.name;return t&&(e.periodic_task_name=t),await d({...e})},addRequest:async({form:e})=>await o(e),editRequest:async({form:e,row:t})=>(e.id=t.id,await i(e)),delRequest:async({row:e})=>await r(e.id)},rowHandle:{show:!1},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"60px",columnSetDisabled:!0,formatter:e=>{let t=e.index??1,a=l.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+t+1}}},task_id:{title:"任务ID",search:{show:!0},column:{width:200},type:"text"},task_name:{title:"任务名称",search:{show:!0},column:{minWidth:200},type:"text"},periodic_task_name:{title:"周期任务名称",search:{show:!1},column:{width:200},type:"text"},task_kwargs:{title:"请求参数",search:{show:!1},column:{width:120},type:"text"},status:{title:"执行状态",search:{show:!0},type:"dict-select",column:{width:100},dict:c({data:[{label:"执行成功",value:"SUCCESS",color:"success",effect:"dark"},{label:"已开始",value:"STARTED",effect:"dark"},{label:"已取消",value:"REVOKED",effect:"dark"},{label:"重试中",value:"RETRY",effect:"dark"},{label:"已收到",value:"RECEIVED",effect:"dark"},{label:"待定中",value:"PENDING",effect:"dark"},{label:"执行失败",value:"FAILURE",effect:"dark",color:"error"}]})},result:{title:"执行结果",search:{show:!1},column:{width:120},type:"text"},date_done:{title:"执行完成时间",type:"datetime",search:{show:!1,col:{span:8}},column:{width:160},form:{show:!1},viewForm:{show:!0}},date_created:{title:"创建时间",type:"datetime",search:{show:!1,col:{span:8}},column:{width:160},form:{show:!1},viewForm:{show:!0}}}}}};export{k as createCrudOptions}; diff --git a/web/dist/assets/crud.QVkmZ2MD.js b/web/dist/assets/crud.QVkmZ2MD.js deleted file mode 100644 index 48311e7e65..0000000000 --- a/web/dist/assets/crud.QVkmZ2MD.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,Y as V,m as w}from"./index.CkCcWuPb.js";import{t as b}from"./index.CvWHgkGx.js";import{w as q,D as x,H as C,aA as M,x as _,y as h,a6 as R,aq as L,$ as O,a0 as k,a4 as A,a5 as D,F as v,I as n}from"./vue.Cw4Y52yh.js";import{_ as S}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{a as g}from"./authFunction.Br9oRcVU.js";const s="/api/system/message_center/";function T(t){return o({url:s,method:"get",params:t})}function j(t){return o({url:s+t+"/",method:"get"})}function B(t){return o({url:s+"get_self_receive/",method:"get",params:t})}function F(t){return o({url:s,method:"post",data:t})}function G(t){return o({url:s+t.id+"/",method:"put",data:t})}function I(t){return o({url:s+t+"/",method:"delete",data:{id:t}})}const H=q({__name:"index",props:{modelValue:Array,bindValue:Array,displayLabel:{type:String,default:""}},setup(t){const c=t,r=x();C(()=>c.bindValue,u=>{const{displayLabel:p}=c,i=u?u.map(d=>d[p]):null;r.value=i},{immediate:!0});const m=["success","info","warning","danger"],f=()=>m[Math.floor(Math.random()*m.length)];return(u,p)=>{const i=M("el-tag");return h(),_("div",null,[(h(!0),_(R,null,L(r.value,(d,e)=>(h(),O(i,{class:"many-to-many-tag",type:f,key:e},{default:k(()=>[A(D(d),1)]),_:2},1024))),128))])}}}),y=S(H,[["__scopeId","data-v-0838bf04"]]),{compute:a}=V();function $({crudExpose:t,context:c}){const{tabActivted:r}=c,m=async e=>r.value==="receive"?await B(e):await T(e),f=async({form:e,row:l})=>(e.id=l.id,await G(e)),u=async({row:e})=>await I(e.id),p=async({form:e})=>await F(e),i=async({row:e})=>await j(e.id),d=v(()=>r.value==="receive");return{crudOptions:{request:{pageRequest:m,addRequest:p,editRequest:f,delRequest:u},actionbar:{buttons:{add:{show:v(()=>r.value!=="receive"&&g("messageCenter:Create"))}}},rowHandle:{fixed:"right",width:150,buttons:{edit:{show:!1},view:{text:"查看",type:"text",iconRight:"View",show:g("messageCenter:Search"),click({index:e,row:l}){t.openView({index:e,row:l}),r.value==="receive"&&(i({row:l}),t.doRefresh())}},remove:{iconRight:"Delete",type:"text",show:g("messageCenter:Delete")}}},columns:{id:{title:"id",form:{show:!1}},title:{title:"标题",search:{show:!0},type:["text","colspan"],column:{minWidth:120},form:{rules:[{required:!0,message:"必填项"}],component:{span:24,placeholder:"请输入标题"}}},is_read:{title:"是否已读",type:"dict-select",column:{show:d.value},dict:w({data:[{label:"已读",value:!0,color:"success"},{label:"未读",value:!1,color:"danger"}]}),form:{show:!1}},target_type:{title:"目标类型",type:["dict-radio","colspan"],column:{minWidth:120},dict:w({data:[{value:0,label:"按用户"},{value:1,label:"按角色"},{value:2,label:"按部门"},{value:3,label:"通知公告"}]}),form:{component:{optionName:"el-radio-button"},rules:[{required:!0,message:"必选项",trigger:["blur","change"]}]}},target_user:{title:"目标用户",search:{disabled:!0},form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({row:e})=>e?e.user_info:null),tableConfig:{url:"/api/system/user/",label:"name",value:"id",isMultiple:!0,columns:[{prop:"name",label:"用户名称",width:120},{prop:"phone",label:"用户电话",width:120}]}},show:a(({form:e})=>e.target_type===0),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.user_info),displayLabel:"name"}}},target_role:{title:"目标角色",search:{disabled:!0},width:130,form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({row:e})=>e?e.role_info:null),tableConfig:{url:"/api/system/role/",label:"name",value:"id",isMultiple:!0,columns:[{prop:"name",label:"角色名称"},{prop:"key",label:"权限标识"}]}},show:a(({form:e})=>e.target_type===1),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.role_info),displayLabel:"name"}}},target_dept:{title:"目标部门",search:{disabled:!0},width:130,type:"table-selector",form:{component:{name:n(b),vModel:"modelValue",displayLabel:a(({form:e})=>e.dept_info),tableConfig:{url:"/api/system/dept/all_dept/",label:"name",value:"id",isTree:!0,isMultiple:!0,columns:[{prop:"name",label:"部门名称",width:150},{prop:"status_label",label:"状态"},{prop:"parent_name",label:"父级部门"}]}},show:a(({form:e})=>e.target_type===2),rules:[{required:!0,message:"必填项"}]},column:{show:!1,component:{name:n(y),vModel:"modelValue",bindValue:a(({row:e})=>e.dept_info),displayLabel:"name"}}},content:{title:"内容",column:{width:300,show:!1},type:["editor-wang5","colspan"],form:{rules:[{required:!0,message:"必填项"}],component:{disabled:!1,id:"1",editorConfig:{readOnly:a(e=>{const{mode:l}=e;return l!=="add"})},uploader:{type:"form",buildUrl(e){return e.url}}}}}}}}}export{$ as default}; diff --git a/web/dist/assets/crud.RRoXXYSH.js b/web/dist/assets/crud.RRoXXYSH.js new file mode 100644 index 0000000000..5a59913927 --- /dev/null +++ b/web/dist/assets/crud.RRoXXYSH.js @@ -0,0 +1 @@ +import{DelObj as n,UpdateObj as l,AddObj as r,GetList as o}from"./api.Cpc88qFC.js";import{c as d}from"./index.XK2ik2qb.js";import{c}from"./commonCrud.Ca1t2kUN.js";import"./vue.DmuWcDrn.js";const b=function({crudExpose:i}){return{crudOptions:{request:{pageRequest:async e=>await o(e),addRequest:async({form:e})=>await r(e),editRequest:async({form:e,row:t})=>(e.id=t.id,await l(e)),delRequest:async({row:e})=>await n(e.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:80,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:!1},remove:{iconRight:"Delete",type:"text",show:!1}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let t=e.index??1,a=i.crudBinding.value.pagination;return((a.currentPage??1)-1)*a.pageSize+t+1}}},no:{title:"流水号",search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入"}},column:{width:"160px",align:"center"}},name:{title:"名称",column:{width:"250px",align:"center"}},models_name:{title:"库表",column:{width:"140px",align:"center"}},start_user_name:{title:"发起人",column:{width:"120px",align:"center"}},"current_node.name":{title:"当前节点",column:{width:"160px",align:"center"}},pre_user:{title:"预处理人",column:{width:"160px",align:"center"}},pre_role:{title:"预处理角色",column:{width:"160px",align:"center"}},pre_dept:{title:"预处理部门",column:{width:"160px",align:"center"}},status:{title:"状态",type:"dict-select",column:{fixed:"right",width:"100px",align:"center"},dict:d({data:[{value:0,label:"进行中"},{value:1,label:"审核通过"},{value:2,label:"审核驳回"},{value:3,label:"审核撤销"}]})},...c({create_datetime:{search:!1,table:!0},update_datetime:{table:!0},dept_belong_id:{table:!1}})}}}};export{b as createCrudOptions}; diff --git a/web/dist/assets/crud.Bj8U6YGH.js b/web/dist/assets/crud.SOaVqUCc.js similarity index 83% rename from web/dist/assets/crud.Bj8U6YGH.js rename to web/dist/assets/crud.SOaVqUCc.js index 2c5f55098b..3f65597b37 100644 --- a/web/dist/assets/crud.Bj8U6YGH.js +++ b/web/dist/assets/crud.SOaVqUCc.js @@ -1 +1 @@ -import{r as s,m as l,n as p,s as m}from"./index.CkCcWuPb.js";import{d as h}from"./dictionary.CH8ZDdyo.js";import{a as n}from"./authFunction.Br9oRcVU.js";import"./vue.Cw4Y52yh.js";const o="/api/system/api_white_list/";function b(t){return s({url:o,method:"get",params:t})}function f(t){return s({url:o,method:"post",data:t})}function d(t){return s({url:o+t.id+"/",method:"put",data:t})}function w(t){return s({url:o+t+"/",method:"delete",data:{id:t}})}const P=function({crudExpose:t}){return{crudOptions:{request:{pageRequest:async e=>await b(e),addRequest:async({form:e})=>await f(e),editRequest:async({form:e,row:a})=>(e.id=a.id,await d(e)),delRequest:async({row:e})=>await w(e.id)},actionbar:{buttons:{add:{show:n("api_white_list:Create")}}},rowHandle:{fixed:"right",width:150,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:n("api_white_list:Update")},remove:{iconRight:"Delete",type:"text",show:n("api_white_list:Delete")}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let a=e.index??1,r=t.crudBinding.value.pagination;return((r.currentPage??1)-1)*r.pageSize+a+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},method:{title:"请求方式",sortable:"custom",search:{disabled:!1},type:"dict-select",dict:l({data:[{label:"GET",value:0},{label:"POST",value:1},{label:"PUT",value:2},{label:"DELETE",value:3},{label:"PATCH",value:4}]}),column:{minWidth:120},form:{rules:[{required:!0,message:"必填项"}],component:{span:12},itemProps:{class:{yxtInput:!0}}}},url:{title:"接口地址",sortable:"custom",search:{disabled:!0},type:"dict-select",dict:l({async getData(e){return s("/swagger.json").then(a=>{const r=Object.keys(a.paths),u=[];for(const c of r){const i={label:"",value:""};i.label=c,i.value=c,u.push(i)}return u})}}),column:{minWidth:200},form:{rules:[{required:!0,message:"必填项"}],component:{span:24,props:{allowCreate:!0,filterable:!0,clearable:!0}},itemProps:{class:{yxtInput:!0}},helper:{position:"label",tooltip:{placement:"top-start"},text:"请正确填写,以免请求时被拦截。匹配单例使用正则,例如:/api/xx/.*?/"}}},enable_datasource:{title:"数据权限认证",search:{disabled:!1},type:"dict-radio",column:{minWidth:120,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:p(e=>()=>{d(e.row).then(a=>{m(a.msg)})})}},dict:l({data:h("button_status_bool")})}}}}};export{P as createCrudOptions}; +import{r as s,c as l,w as p,s as m}from"./index.XK2ik2qb.js";import{d as h}from"./dictionary.DnyXy1XL.js";import{a as n}from"./authFunction.CZ5a1pu0.js";import"./vue.DmuWcDrn.js";const o="/api/system/api_white_list/";function b(t){return s({url:o,method:"get",params:t})}function w(t){return s({url:o,method:"post",data:t})}function d(t){return s({url:o+t.id+"/",method:"put",data:t})}function f(t){return s({url:o+t+"/",method:"delete",data:{id:t}})}const P=function({crudExpose:t}){return{crudOptions:{request:{pageRequest:async e=>await b(e),addRequest:async({form:e})=>await w(e),editRequest:async({form:e,row:a})=>(e.id=a.id,await d(e)),delRequest:async({row:e})=>await f(e.id)},actionbar:{buttons:{add:{show:n("api_white_list:Create")}}},rowHandle:{fixed:"right",width:150,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:n("api_white_list:Update")},remove:{iconRight:"Delete",type:"text",show:n("api_white_list:Delete")}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let a=e.index??1,r=t.crudBinding.value.pagination;return((r.currentPage??1)-1)*r.pageSize+a+1}}},search:{title:"关键词",column:{show:!1},search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入关键词"}},form:{show:!1,component:{props:{clearable:!0}}}},method:{title:"请求方式",sortable:"custom",search:{disabled:!1},type:"dict-select",dict:l({data:[{label:"GET",value:0},{label:"POST",value:1},{label:"PUT",value:2},{label:"DELETE",value:3},{label:"PATCH",value:4}]}),column:{minWidth:120},form:{rules:[{required:!0,message:"必填项"}],component:{span:12},itemProps:{class:{yxtInput:!0}}}},url:{title:"接口地址",sortable:"custom",search:{disabled:!0},type:"dict-select",dict:l({async getData(e){return s("/swagger.json").then(a=>{const r=Object.keys(a.paths),u=[];for(const c of r){const i={label:"",value:""};i.label=c,i.value=c,u.push(i)}return u})}}),column:{minWidth:200},form:{rules:[{required:!0,message:"必填项"}],component:{span:24,props:{allowCreate:!0,filterable:!0,clearable:!0}},itemProps:{class:{yxtInput:!0}},helper:{position:"label",tooltip:{placement:"top-start"},text:"请正确填写,以免请求时被拦截。匹配单例使用正则,例如:/api/xx/.*?/"}}},enable_datasource:{title:"数据权限认证",search:{disabled:!1},type:"dict-radio",column:{minWidth:120,component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:p(e=>()=>{d(e.row).then(a=>{m(a.msg)})})}},dict:l({data:h("button_status_bool")})}}}}};export{P as createCrudOptions}; diff --git a/web/dist/assets/crud.aIckV8z3.js b/web/dist/assets/crud.aIckV8z3.js new file mode 100644 index 0000000000..94b621d157 --- /dev/null +++ b/web/dist/assets/crud.aIckV8z3.js @@ -0,0 +1 @@ +import{DelObj as a,UpdateObj as l,AddObj as r,GetList as o}from"./api.CXQZ_GZz.js";import{c as d}from"./index.XK2ik2qb.js";import{c}from"./commonCrud.Ca1t2kUN.js";import"./vue.DmuWcDrn.js";const b=function({crudExpose:n}){return{crudOptions:{request:{pageRequest:async e=>await o(e),addRequest:async({form:e})=>await r(e),editRequest:async({form:e,row:t})=>(e.id=t.id,await l(e)),delRequest:async({row:e})=>await a(e.id)},actionbar:{buttons:{add:{show:!1}}},rowHandle:{fixed:"right",width:80,buttons:{view:{show:!1},edit:{iconRight:"Edit",type:"text",show:!1},remove:{iconRight:"Delete",type:"text",show:!1}}},form:{col:{span:24},labelWidth:"110px",wrapper:{is:"el-dialog",width:"600px"}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let t=e.index??1,i=n.crudBinding.value.pagination;return((i.currentPage??1)-1)*i.pageSize+t+1}}},no:{title:"流水号",search:{show:!0,component:{props:{clearable:!0},placeholder:"请输入"}},column:{width:"160px",align:"center"}},name:{title:"名称",column:{width:"250px",align:"center"}},models_name:{title:"库表",column:{width:"140px",align:"center"}},start_user_name:{title:"发起人",column:{width:"120px",align:"center"}},"current_node.name":{title:"当前节点",column:{width:"160px",align:"center"}},pre_user:{title:"预处理人",column:{width:"160px",align:"center"}},pre_role:{title:"预处理角色",column:{width:"160px",align:"center"}},pre_dept:{title:"预处理部门",column:{width:"160px",align:"center"}},status:{title:"状态",type:"dict-select",column:{fixed:"right",width:"100px",align:"center"},dict:d({data:[{value:0,label:"进行中"},{value:1,label:"审核通过"},{value:2,label:"审核驳回"},{value:3,label:"审核撤销"}]})},run_time:{title:"任务时间",column:{width:"160px",align:"center"}},...c({create_datetime:{search:!1,table:!0},update_datetime:{table:!0},dept_belong_id:{table:!1}})}}}};export{b as createCrudOptions}; diff --git a/web/dist/assets/crud.aa8KfaOa.js b/web/dist/assets/crud.aa8KfaOa.js deleted file mode 100644 index d03ffe5f38..0000000000 --- a/web/dist/assets/crud.aa8KfaOa.js +++ /dev/null @@ -1 +0,0 @@ -import{r as u,m as w,X as r}from"./index.CkCcWuPb.js";import{D as b,P as g}from"./vue.Cw4Y52yh.js";function y(a){return a.authorized=0,u({url:"/api/system/role/get_role_users/",method:"get",params:a})}function x(a,i){return u({url:`/api/system/role/${a}/add_role_users/`,method:"post",data:{users_id:i}})}const v=function({crudExpose:a,context:i}){const c=async e=>await y(e),d=async({form:e,row:o})=>{},f=async({row:e})=>{},m=async({form:e})=>{},s=b([]),p=e=>{const n=a.getTableData().filter(t=>!e.includes(t));r.arrayEach(e,t=>{r.pluck(s.value,"id").includes(t.id)||(s.value=r.union(s.value,[t]))}),r.arrayEach(n,t=>{s.value=r.remove(s.value,l=>l.id!==t.id)})},h=()=>{const e=a.getBaseTableRef(),o=a.getTableData(),n=r.filter(o,t=>r.pluck(s.value,"id").includes(t.id));g(()=>{r.arrayEach(n,t=>{e.toggleRowSelection(t,!0)})})};return{selectedRows:s,crudOptions:{request:{pageRequest:c,addRequest:m,editRequest:d,delRequest:f},actionbar:{show:!1,buttons:{add:{show:!1}}},rowHandle:{show:!1,fixed:"left",width:150,buttons:{view:{show:!1},edit:{show:!1},remove:{show:!1}}},table:{rowKey:"id",onSelectionChange:p,onRefreshed:()=>h()},columns:{$checked:{title:"选择",form:{show:!1},column:{show:!0,type:"selection",align:"center",width:"55px",columnSetDisabled:!0}},_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let o=e.index??1,n=a.crudBinding.value.pagination;return((n.currentPage??1)-1)*n.pageSize+o+1}}},name:{title:"用户名",search:{show:!0,component:{props:{clearable:!0}}},type:"text",form:{show:!1}},dept:{title:"部门",show:!0,type:"dict-tree",column:{name:"text",formatter({value:e,row:o,index:n}){return o.dept__name}},search:{show:!0,disabled:!0,col:{span:6},component:{multiple:!1,props:{checkStrictly:!0,clearable:!0,filterable:!0}}},form:{show:!1},dict:w({isTree:!0,url:"/api/system/dept/all_dept/",value:"id",label:"name"})}}}}},S=Object.freeze(Object.defineProperty({__proto__:null,createCrudOptions:v},Symbol.toStringTag,{value:"Module"}));export{x as a,S as b,v as c}; diff --git a/web/dist/assets/crud.C_P-uSI6.js b/web/dist/assets/crud.jJOAkYw9.js similarity index 84% rename from web/dist/assets/crud.C_P-uSI6.js rename to web/dist/assets/crud.jJOAkYw9.js index 51de7bcd92..6f47e5f549 100644 --- a/web/dist/assets/crud.C_P-uSI6.js +++ b/web/dist/assets/crud.jJOAkYw9.js @@ -1 +1 @@ -import{C as o}from"./vue.Cw4Y52yh.js";function n({crudExpose:t}){const{crudBinding:s}=t,a=o("get:scope"),{index:r,row:l,form:i,mode:e}=a();return{crudOptions:{actionbar:{buttons:{add:{show:!1},addRow:{show:e!="view"}}},search:{show:!1},toolbar:{show:!1,buttons:{refresh:{show:!1},search:{show:!1}}},table:{editable:{enabled:!1,mode:"free",showAction:!1,activeDefault:!0}},pagination:{show:!1,pageSize:9999999},columns:{name:{title:"收件人名称",type:"text",column:{minWidth:50},form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{required:!0,message:"收件人名称必填项"}]}},mobile:{title:"手机号码",type:"text",column:{minWidth:50},form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{max:11,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}]}},address:{title:"收件地址",type:"textarea",form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{required:!0,message:"收件地址必填项"}]}},note:{title:"备注",type:"textarea",form:{component:{placeholder:"请输入",disabled:e=="view"}}}},rowHandle:{fixed:"right",width:90,show:e!="view"}}}}export{n as default}; +import{i as o}from"./vue.DmuWcDrn.js";function n({crudExpose:t}){const{crudBinding:s}=t,a=o("get:scope"),{index:r,row:l,form:i,mode:e}=a();return{crudOptions:{actionbar:{buttons:{add:{show:!1},addRow:{show:e!="view"}}},search:{show:!1},toolbar:{show:!1,buttons:{refresh:{show:!1},search:{show:!1}}},table:{editable:{enabled:!1,mode:"free",showAction:!1,activeDefault:!0}},pagination:{show:!1,pageSize:9999999},columns:{name:{title:"收件人名称",type:"text",column:{minWidth:50},form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{required:!0,message:"收件人名称必填项"}]}},mobile:{title:"手机号码",type:"text",column:{minWidth:50},form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{max:11,message:"请输入正确的手机号码",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号码"}]}},address:{title:"详细地址",type:"textarea",form:{component:{placeholder:"请输入",disabled:e=="view"},rules:[{required:!0,message:"详细地址必填项"}]}},note:{title:"备注",type:"textarea",form:{component:{placeholder:"请输入",disabled:e=="view"}}}},rowHandle:{fixed:"right",width:90,show:e!="view"}}}}export{n as default}; diff --git a/web/dist/assets/crudTable.DrJHJ0aT.js b/web/dist/assets/crudTable.BiDuz-Ax.js similarity index 41% rename from web/dist/assets/crudTable.DrJHJ0aT.js rename to web/dist/assets/crudTable.BiDuz-Ax.js index 4fdb3bd28e..a9da5bbe89 100644 --- a/web/dist/assets/crudTable.DrJHJ0aT.js +++ b/web/dist/assets/crudTable.BiDuz-Ax.js @@ -1 +1 @@ -import{_ as o}from"./crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js";import"./index.CkCcWuPb.js";import"./vue.Cw4Y52yh.js";export{o as default}; +import{_ as o}from"./crudTable.vue_vue_type_script_setup_true_lang.CYM7VyF5.js";import"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";export{o as default}; diff --git a/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.CYM7VyF5.js b/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.CYM7VyF5.js new file mode 100644 index 0000000000..bd675d6262 --- /dev/null +++ b/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.CYM7VyF5.js @@ -0,0 +1 @@ +import{e as c}from"./index.XK2ik2qb.js";import{d as m,C as p,h as i,a as f,o as h,k as _,L as w,u as b}from"./vue.DmuWcDrn.js";const k=m({__name:"crudTable",props:{modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(o,{emit:a}){const s=function({crudExpose:r,context:l}){return{crudOptions:{mode:{name:"local",isMergeWhenUpdate:!0,isAppendWhenAdd:!0},actionbar:{buttons:{add:{show:!0},addRow:{show:!1}}},editable:{enabled:!0,mode:"row",activeDefault:!0},form:{wrapper:{width:"500px"},col:{span:24},afterSubmit({mode:t}){n("update:modelValue",e.value.data)}},toolbar:{show:!1},search:{disabled:!0,show:!1},pagination:{show:!1},columns:{title:{title:"标题",form:{component:{placeholder:"请输入标题"},rules:[{required:!0,message:"必须填写"}]}},key:{title:"键名",form:{component:{placeholder:"请输入键名"},rules:[{required:!0,message:"必须填写"}]}},value:{title:"键值",form:{component:{placeholder:"请输入键值"},rules:[{required:!0,message:"必须填写"}]}}}}}},{crudBinding:e,crudRef:u,crudExpose:g}=c({createCrudOptions:s}),d=o,n=a;return p(()=>d.modelValue,(r=[])=>{e.value.data=r},{immediate:!0}),(r,l)=>{const t=i("fs-crud");return h(),f("div",null,[_(t,w({ref_key:"crudRef",ref:u},b(e)),null,16)])}}});export{k as _}; diff --git a/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js b/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js deleted file mode 100644 index e0045463f9..0000000000 --- a/web/dist/assets/crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js +++ /dev/null @@ -1 +0,0 @@ -import{h as c}from"./index.CkCcWuPb.js";import{w as m,H as p,aA as i,x as f,y as h,a7 as w,Z as _,G as b}from"./vue.Cw4Y52yh.js";const y=m({__name:"crudTable",props:{modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(o,{emit:a}){const s=function({crudExpose:r,context:l}){return{crudOptions:{mode:{name:"local",isMergeWhenUpdate:!0,isAppendWhenAdd:!0},actionbar:{buttons:{add:{show:!0},addRow:{show:!1}}},editable:{enabled:!0,mode:"row",activeDefault:!0},form:{wrapper:{width:"500px"},col:{span:24},afterSubmit({mode:t}){d("update:modelValue",e.value.data)}},toolbar:{show:!1},search:{disabled:!0,show:!1},pagination:{show:!1},columns:{title:{title:"标题",form:{component:{placeholder:"请输入标题"},rules:[{required:!0,message:"必须填写"}]}},key:{title:"键名",form:{component:{placeholder:"请输入键名"},rules:[{required:!0,message:"必须填写"}]}},value:{title:"键值",form:{component:{placeholder:"请输入键值"},rules:[{required:!0,message:"必须填写"}]}}}}}},{crudBinding:e,crudRef:u,crudExpose:x}=c({createCrudOptions:s}),n=o,d=a;return p(()=>n.modelValue,(r=[])=>{e.value.data=r},{immediate:!0}),(r,l)=>{const t=i("fs-crud");return h(),f("div",null,[w(t,_({ref_key:"crudRef",ref:u},b(e)),null,16)])}}});export{y as _}; diff --git a/web/dist/assets/day.DqBTVh5Q.js b/web/dist/assets/day.DqBTVh5Q.js new file mode 100644 index 0000000000..0afd2481c9 --- /dev/null +++ b/web/dist/assets/day.DqBTVh5Q.js @@ -0,0 +1 @@ +import{_ as m}from"./day.vue_vue_type_script_setup_true_lang.YLpwf3vE.js";import"./vue.DmuWcDrn.js";export{m as default}; diff --git a/web/dist/assets/day.vue_vue_type_script_setup_true_lang.YLpwf3vE.js b/web/dist/assets/day.vue_vue_type_script_setup_true_lang.YLpwf3vE.js new file mode 100644 index 0000000000..55f85e61dd --- /dev/null +++ b/web/dist/assets/day.vue_vue_type_script_setup_true_lang.YLpwf3vE.js @@ -0,0 +1 @@ +import{d as A,g as i,c as w,C as f,h as y,b as I,o as B,w as t,k as o,m as n,a as J,G as M,H as P,K as Q}from"./vue.DmuWcDrn.js";const X=A({__name:"day",props:{cron:{},check:{type:Function}},emits:["update"],setup(N,{expose:T,emit:D}){const d=D,O=N,a=i(1),k=i(1),m=i(1),p=i(2),s=i(0),V=i(1),x=i([]),b=O.check;T({cycle01:m,cycle02:p,average01:s,average02:V,checkboxList:x});const U=w(()=>(m.value=b(m.value,0,30),p.value=b(p.value,m.value?m.value+1:2,31,31),m.value+"-"+p.value)),C=w(()=>(s.value=b(s.value,0,30),V.value=b(V.value,1,31-s.value||0),s.value+"/"+V.value)),W=w(()=>(b(k.value,1,31),k)),L=w(()=>{let u=x.value.join();return u==""?"*":u});f(a,(u,e)=>{S()}),f(U,(u,e)=>{j()}),f(C,(u,e)=>{z()}),f(L,(u,e)=>{G()}),f(W,(u,e)=>{E()}),f(O,(u,e)=>{F(u.cron.day)});function F(u){u&&(u=="*"?a.value=1:u==="?"?a.value=2:typeof u=="string"&&u.indexOf("-")>-1?a.value=3:typeof u=="string"&&u.indexOf("/")>-1?a.value=4:typeof u=="string"&&u.indexOf("W")>-1?a.value=5:typeof u=="string"&&u.indexOf("L")>-1?a.value=6:a.value=7)}function S(){"day rachange";switch(a.value){case 1:d("update","day","*");break;case 2:d("update","day","?");break;case 3:d("update","day",U.value);break;case 4:d("update","day",C.value);break;case 5:d("update","day",k.value+"W");break;case 6:d("update","day","L");break;case 7:d("update","day",L.value);break}}function j(){a.value==3&&d("update","day",U.value)}function z(){a.value==4&&d("update","day",C.value)}function E(){a.value==5&&d("update","day",W.value+"W")}function G(){a.value==7&&d("update","day",L.value)}return(u,e)=>{const r=y("el-radio"),v=y("el-form-item"),g=y("el-input-number"),H=y("el-option"),K=y("el-select"),q=y("el-form");return B(),I(q,{size:"small"},{default:t(()=>[o(v,null,{default:t(()=>[o(r,{modelValue:a.value,"onUpdate:modelValue":e[0]||(e[0]=l=>a.value=l),label:1},{default:t(()=>e[13]||(e[13]=[n(" 日,允许的通配符[, - * ? / L W] ")])),_:1},8,["modelValue"])]),_:1}),o(v,null,{default:t(()=>[o(r,{modelValue:a.value,"onUpdate:modelValue":e[1]||(e[1]=l=>a.value=l),label:2},{default:t(()=>e[14]||(e[14]=[n("不指定")])),_:1},8,["modelValue"])]),_:1}),o(v,null,{default:t(()=>[o(r,{modelValue:a.value,"onUpdate:modelValue":e[4]||(e[4]=l=>a.value=l),label:3},{default:t(()=>[e[15]||(e[15]=n(" 周期从 ")),o(g,{modelValue:m.value,"onUpdate:modelValue":e[2]||(e[2]=l=>m.value=l),min:1,max:30},null,8,["modelValue"]),e[16]||(e[16]=n(" - ")),o(g,{modelValue:p.value,"onUpdate:modelValue":e[3]||(e[3]=l=>p.value=l),min:m.value?m.value+1:2,max:31},null,8,["modelValue","min"]),e[17]||(e[17]=n(" 日 "))]),_:1},8,["modelValue"])]),_:1}),o(v,null,{default:t(()=>[o(r,{modelValue:a.value,"onUpdate:modelValue":e[7]||(e[7]=l=>a.value=l),label:4},{default:t(()=>[e[18]||(e[18]=n(" 从 ")),o(g,{modelValue:s.value,"onUpdate:modelValue":e[5]||(e[5]=l=>s.value=l),min:1,max:30},null,8,["modelValue"]),e[19]||(e[19]=n(" 号开始,每 ")),o(g,{modelValue:V.value,"onUpdate:modelValue":e[6]||(e[6]=l=>V.value=l),min:1,max:31-s.value||1},null,8,["modelValue","max"]),e[20]||(e[20]=n(" 日执行一次 "))]),_:1},8,["modelValue"])]),_:1}),o(v,null,{default:t(()=>[o(r,{modelValue:a.value,"onUpdate:modelValue":e[9]||(e[9]=l=>a.value=l),label:5},{default:t(()=>[e[21]||(e[21]=n(" 每月 ")),o(g,{modelValue:k.value,"onUpdate:modelValue":e[8]||(e[8]=l=>k.value=l),min:1,max:31},null,8,["modelValue"]),e[22]||(e[22]=n(" 号最近的那个工作日 "))]),_:1},8,["modelValue"])]),_:1}),o(v,null,{default:t(()=>[o(r,{modelValue:a.value,"onUpdate:modelValue":e[10]||(e[10]=l=>a.value=l),label:6},{default:t(()=>e[23]||(e[23]=[n("本月最后一天")])),_:1},8,["modelValue"])]),_:1}),o(v,null,{default:t(()=>[o(r,{modelValue:a.value,"onUpdate:modelValue":e[12]||(e[12]=l=>a.value=l),label:7},{default:t(()=>[e[24]||(e[24]=n(" 指定 ")),o(K,{clearable:"",modelValue:x.value,"onUpdate:modelValue":e[11]||(e[11]=l=>x.value=l),placeholder:"可多选",multiple:"",style:{width:"100%"}},{default:t(()=>[(B(),J(M,null,P(31,l=>o(H,{key:l,value:l},{default:t(()=>[n(Q(l),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1})]),_:1})}}});export{X as _}; diff --git a/web/dist/assets/defaults.Bat_bZMk.js b/web/dist/assets/defaults.Bat_bZMk.js deleted file mode 100644 index ca93442702..0000000000 --- a/web/dist/assets/defaults.Bat_bZMk.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.CcbNtRz7.js","assets/index.CkCcWuPb.js","assets/vue.Cw4Y52yh.js","assets/index.DvQZPXXd.css","assets/header.D3A4TWO0.js","assets/main.B3b7-7PA.js"])))=>i.map(i=>d[i]); -import{u as b,N as C,_ as t}from"./index.CkCcWuPb.js";import{w as p,D as _,aQ as L,aR as k,O as w,H as i,aA as f,$ as A,y as E,a0 as n,a7 as e,G as s,aP as r,P as M}from"./vue.Cw4Y52yh.js";const P=p({name:"layoutDefaults"}),V=p({...P,setup(S){const d=r(()=>t(()=>import("./aside.CcbNtRz7.js"),__vite__mapDeps([0,1,2,3]))),m=r(()=>t(()=>import("./header.D3A4TWO0.js"),__vite__mapDeps([4,1,2,3]))),y=r(()=>t(()=>import("./main.B3b7-7PA.js"),__vite__mapDeps([5,1,2,3]))),o=_(""),a=_(),R=L(),v=b(),{themeConfig:T}=k(v),l=()=>{o.value.update(),a.value.layoutMainScrollbarRef.update()},c=()=>{M(()=>{setTimeout(()=>{l(),o.value.wrapRef.scrollTop=0,a.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return w(()=>{c(),C.done(600)}),i(()=>R.path,()=>{c()}),i(T,()=>{l()},{deep:!0}),(g,x)=>{const h=f("el-scrollbar"),u=f("el-container");return E(),A(u,{class:"layout-container"},{default:n(()=>[e(s(d)),e(u,{class:"layout-container-view h100"},{default:n(()=>[e(h,{ref_key:"layoutScrollbarRef",ref:o,class:"layout-backtop"},{default:n(()=>[e(s(m)),e(s(y),{ref_key:"layoutMainRef",ref:a},null,512)]),_:1},512)]),_:1})]),_:1})}}});export{V as default}; diff --git a/web/dist/assets/defaults.DZTid3wm.js b/web/dist/assets/defaults.DZTid3wm.js new file mode 100644 index 0000000000..0c3cc9e361 --- /dev/null +++ b/web/dist/assets/defaults.DZTid3wm.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/aside.D4ng9uQr.js","assets/index.XK2ik2qb.js","assets/vue.DmuWcDrn.js","assets/index.JncG-tMh.css","assets/header.BQoAQuJ9.js","assets/main.BjGLKst8.js"])))=>i.map(i=>d[i]); +import{u as b,N as C,_ as a}from"./index.XK2ik2qb.js";import{d as p,g as _,s as k,T as L,x as g,C as i,h as f,b as w,o as x,w as s,k as e,u as n,q as r,D as E}from"./vue.DmuWcDrn.js";const M=p({name:"layoutDefaults"}),B=p({...M,setup(S){const d=r(()=>a(()=>import("./aside.D4ng9uQr.js"),__vite__mapDeps([0,1,2,3]))),m=r(()=>a(()=>import("./header.BQoAQuJ9.js"),__vite__mapDeps([4,1,2,3]))),y=r(()=>a(()=>import("./main.BjGLKst8.js"),__vite__mapDeps([5,1,2,3]))),o=_(""),t=_(),R=k(),T=b(),{themeConfig:h}=L(T),l=()=>{o.value.update(),t.value.layoutMainScrollbarRef.update()},c=()=>{E(()=>{setTimeout(()=>{l(),o.value.wrapRef.scrollTop=0,t.value.layoutMainScrollbarRef.wrapRef.scrollTop=0},500)})};return g(()=>{c(),C.done(600)}),i(()=>R.path,()=>{c()}),i(h,()=>{l()},{deep:!0}),(A,D)=>{const v=f("el-scrollbar"),u=f("el-container");return x(),w(u,{class:"layout-container"},{default:s(()=>[e(n(d)),e(u,{class:"layout-container-view h100"},{default:s(()=>[e(v,{ref_key:"layoutScrollbarRef",ref:o,class:"layout-backtop"},{default:s(()=>[e(n(m)),e(n(y),{ref_key:"layoutMainRef",ref:t},null,512)]),_:1},512)]),_:1})]),_:1})}}});export{B as default}; diff --git a/web/dist/assets/dictionary.CH8ZDdyo.js b/web/dist/assets/dictionary.CH8ZDdyo.js deleted file mode 100644 index fcf2a7d952..0000000000 --- a/web/dist/assets/dictionary.CH8ZDdyo.js +++ /dev/null @@ -1 +0,0 @@ -import{F as c}from"./index.CkCcWuPb.js";import{av as s}from"./vue.Cw4Y52yh.js";const f=(o,t)=>{const a=c(),r=s(a.data);if(t!=null){const i=r[o].find(n=>n.value===t);return i?i.label:""}else return r[o]};export{f as d}; diff --git a/web/dist/assets/dictionary.DnyXy1XL.js b/web/dist/assets/dictionary.DnyXy1XL.js new file mode 100644 index 0000000000..bd7e094d63 --- /dev/null +++ b/web/dist/assets/dictionary.DnyXy1XL.js @@ -0,0 +1 @@ +import{D as c}from"./index.XK2ik2qb.js";import{t as s}from"./vue.DmuWcDrn.js";const f=(t,o)=>{const a=c(),r=s(a.data);if(o!=null){const i=r[t].find(n=>n.value===o);return i?i.label:""}else return r[t]};export{f as d}; diff --git a/web/dist/assets/flowDesigner.BRKt3T2b.js b/web/dist/assets/flowDesigner.BRKt3T2b.js new file mode 100644 index 0000000000..f38efab6f8 --- /dev/null +++ b/web/dist/assets/flowDesigner.BRKt3T2b.js @@ -0,0 +1 @@ +import{_ as o}from"./flowDesigner.vue_vue_type_script_setup_true_lang.CanmxzQe.js";import"./FormProcessDesigner.NtQV6jPD.js";import"./vue.DmuWcDrn.js";import"./FormDesigner.C_g4ii55.js";import"./vue-draggable-plus.DFq4KU1k.js";import"./FormComponents.BoFxZNqy.js";import"./index.XK2ik2qb.js";import"./FormComponentMixin.C3yPnfoW.js";import"./FormRender.BwAVd06k.js";import"./WDialog.D9OIgJAb.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";import"./FormComponent.BFjxV9c8.js";import"./GlobalFunc.9BrjVkDm.js";import"./ProcessUtil.B7gNiVp1.js";import"./FormInterface.vRCiFeo3.js";import"./ProcessDesigner.y0zNgYS2.js";import"./ProcessRender.C3vTPZCi.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./BaseSetting.AfBX5QdH.js";import"./request.FMdsBF9A.js";import"./PlusSetting.d22L-CQ-.js";export{o as default}; diff --git a/web/dist/assets/flowDesigner.vue_vue_type_script_setup_true_lang.CanmxzQe.js b/web/dist/assets/flowDesigner.vue_vue_type_script_setup_true_lang.CanmxzQe.js new file mode 100644 index 0000000000..87ce4139ef --- /dev/null +++ b/web/dist/assets/flowDesigner.vue_vue_type_script_setup_true_lang.CanmxzQe.js @@ -0,0 +1 @@ +import p from"./FormProcessDesigner.NtQV6jPD.js";import{d as f,s as V,v,g,c as _,x as w,h as C,a as k,o as D,k as d,w as x}from"./vue.DmuWcDrn.js";import{s as B}from"./request.FMdsBF9A.js";const I=f({__name:"flowDesigner",props:{modelValue:Boolean,mainId:Number},emits:["update:modelValue","onClose","close"],setup(r,{emit:m}){V(),v();const s=g(),a=r,t=m,n=_({get(){return a.modelValue},set(o){t("update:modelValue",o)}}),u=()=>{B({url:`/api/dvadmin3_flow/flow_info/${a.mainId}/`,method:"get"}).then(o=>{const{data:e}=o;s.value=e})},i=()=>{t("close")};return w(()=>{u()}),(o,e)=>{const c=C("el-drawer");return D(),k("div",null,[d(c,{modelValue:n.value,"onUpdate:modelValue":e[1]||(e[1]=l=>n.value=l),size:"80%",title:"流程配置","append-to-body":"","close-on-click-modal":!1,"close-on-press-escape":!1,onClose:i},{default:x(()=>[d(p,{modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=l=>s.value=l),"destroy-on-close":""},null,8,["modelValue"])]),_:1},8,["modelValue"])])}}});export{I as _}; diff --git a/web/dist/assets/flowProcess.Cf0JoXnz.js b/web/dist/assets/flowProcess.Cf0JoXnz.js new file mode 100644 index 0000000000..edd4f2a599 --- /dev/null +++ b/web/dist/assets/flowProcess.Cf0JoXnz.js @@ -0,0 +1 @@ +import{_ as o}from"./flowProcess.vue_vue_type_script_setup_true_lang.BnIifrfm.js";import"./ProcessRender.C3vTPZCi.js";import"./ProcessNodes.r7PbQ_Ri.js";import"./index.XK2ik2qb.js";import"./vue.DmuWcDrn.js";import"./ProcessUtil.B7gNiVp1.js";import"./_plugin-vue_export-helper.DlAUqK2U.js";import"./request.FMdsBF9A.js";export{o as default}; diff --git a/web/dist/assets/flowProcess.vue_vue_type_script_setup_true_lang.BnIifrfm.js b/web/dist/assets/flowProcess.vue_vue_type_script_setup_true_lang.BnIifrfm.js new file mode 100644 index 0000000000..acf22ea5d1 --- /dev/null +++ b/web/dist/assets/flowProcess.vue_vue_type_script_setup_true_lang.BnIifrfm.js @@ -0,0 +1 @@ +import i from"./ProcessRender.C3vTPZCi.js";import{s as f}from"./request.FMdsBF9A.js";import{d as V,c as _,g as n,x as v,h as w,b as g,o as x,w as y,k as h,n as k}from"./vue.DmuWcDrn.js";const b=V({__name:"flowProcess",props:{modelValue:Boolean,mainId:Object},emits:["update:modelValue"],setup(r,{emit:d}){const a=r,m=d,s=_({get(){return a.modelValue},set(o){m("update:modelValue",o)}}),u=n(100),t=n(),p=()=>f({url:`/api/dvadmin3_flow/flow_info/${a.mainId}/get_flow_process/`,method:"get"}).then(o=>{const{data:e}=o;t.value=e});return v(()=>{p()}),(o,e)=>{const c=w("el-dialog");return x(),g(c,{modelValue:s.value,"onUpdate:modelValue":e[1]||(e[1]=l=>s.value=l),width:"80%",title:"流程图"},{default:y(()=>[h(i,{ref:"processRender",style:k(`transform: scale(${u.value/100})`),modelValue:t.value,"onUpdate:modelValue":e[0]||(e[0]=l=>t.value=l),readonly:!0},null,8,["style","modelValue"])]),_:1},8,["modelValue"])}}});export{b as _}; diff --git a/web/dist/assets/flowRecord.DLRyFvfC.css b/web/dist/assets/flowRecord.DLRyFvfC.css new file mode 100644 index 0000000000..6dcdb7ecc1 --- /dev/null +++ b/web/dist/assets/flowRecord.DLRyFvfC.css @@ -0,0 +1 @@ +.header-title[data-v-61df516c]{font-size:1.2em;color:#686868} diff --git a/web/dist/assets/flowRecord.oyBwBcUm.js b/web/dist/assets/flowRecord.oyBwBcUm.js new file mode 100644 index 0000000000..f849080bcc --- /dev/null +++ b/web/dist/assets/flowRecord.oyBwBcUm.js @@ -0,0 +1 @@ +import{d as V,c as j,h as c,a as s,o as t,k as p,w as a,b as v,J as d,G as i,H as _,e as n,K as o,m as g}from"./vue.DmuWcDrn.js";import{_ as U}from"./_plugin-vue_export-helper.DlAUqK2U.js";const b={style:{"padding-left":"10px"}},B={class:"header-title"},I={key:0,style:{"margin-top":"5px"}},S={key:0},T={key:1},z={class:"flex justify-start gap-3"},M={class:"flex justify-start gap-3 mt-2.5"},R={key:2},A={class:"flex justify-start gap-3 mt-2.5"},O=V({__name:"flowRecord",props:{status:Number,modelValue:Object},setup(k){const m=k,h=j(()=>m.modelValue),D=r=>({OR:"或签"})[r],x=r=>r==1?"Check":"More",w=r=>r==1?"success":"warning";return(r,l)=>{const y=c("el-tag"),C=c("el-card"),f=c("el-timeline-item"),N=c("el-timeline");return t(),s("div",b,[p(N,null,{default:a(()=>[(t(!0),s(i,null,_(h.value,e=>(t(),v(f,{timestamp:e.create_datetime,placement:"top",size:"large",icon:x(e.nodeStatus),type:w(e.nodeStatus)},{default:a(()=>[p(C,null,{header:a(()=>[n("div",B,[n("span",null,o(e.nodeData.name),1)]),e.nodeData.node_type=="Approval"?(t(),s("div",I,[l[0]||(l[0]=n("span",null,"审批模式",-1)),p(y,null,{default:a(()=>[g(o(D(e.nodeData.props.taskMode.type)),1)]),_:2},1024)])):d("",!0)]),default:a(()=>[e.nodeData.node_type=="Start"?(t(),s("div",S,o(e.startUserName)+"(发起流程) ",1)):d("",!0),e.nodeData.node_type=="Approval"?(t(),s("div",T,[n("div",z,[n("div",null,"审核人员("+o(e.preInfo.pre_user.length)+"人):",1),(t(!0),s(i,null,_(e.preInfo.pre_user,u=>(t(),s("div",null,[n("span",null,o(u.name),1)]))),256))]),n("div",M,[n("div",null,"审核完成("+o(e.auditUsers.length)+"人):",1),(t(!0),s(i,null,_(e.auditUsers,u=>(t(),s("div",null,[p(y,{type:"success"},{default:a(()=>[g(o(u.name),1)]),_:2},1024)]))),256))])])):d("",!0),e.nodeData.node_type=="Cc"?(t(),s("div",R,[n("div",A,[n("div",null,"抄送("+o(e.nodeData.props.assignUser.length)+"人):",1),(t(!0),s(i,null,_(e.nodeData.props.assignUser,u=>(t(),s("div",null,[p(y,{type:"success"},{default:a(()=>[g(o(u.name),1)]),_:2},1024)]))),256))])])):d("",!0)]),_:2},1024)]),_:2},1032,["timestamp","icon","type"]))),256)),m.status==0?(t(),v(f,{key:0,timestamp:"",placement:"top",size:"large",icon:"loading",type:"warning"},{default:a(()=>l[1]||(l[1]=[n("div",null," 进行中 ",-1)])),_:1})):d("",!0),m.status==1?(t(),v(f,{key:1,timestamp:"",placement:"top",size:"large",icon:"check",type:"success"},{default:a(()=>l[2]||(l[2]=[n("div",null," 审批通过 ",-1)])),_:1})):d("",!0)]),_:1})])}}}),G=U(O,[["__scopeId","data-v-61df516c"]]);export{G as default}; diff --git a/web/dist/assets/formContent.BGb37XcT.js b/web/dist/assets/formContent.BGb37XcT.js deleted file mode 100644 index 5cfee80097..0000000000 --- a/web/dist/assets/formContent.BGb37XcT.js +++ /dev/null @@ -1 +0,0 @@ -import{G as ue,s as pe,D as ie,U as ce}from"./api.Dw2kt7dJ.js";import{d as $}from"./dictionary.CH8ZDdyo.js";import{f as Y,S as _e,A as x,s as fe,C as me,z as ye,D as ke}from"./index.CkCcWuPb.js";import{_ as ve}from"./crudTable.vue_vue_type_script_setup_true_lang.Ch6lbP_F.js";import{w as be,D as v,C as ge,H as Ve,aA as c,x as m,y as r,a7 as d,a0 as s,a4 as y,a6 as S,aq as j,G as a,$ as _,a5 as U,z as b,a2 as he}from"./vue.Cw4Y52yh.js";import{_ as Ue}from"./_plugin-vue_export-helper.DlAUqK2U.js";const we={key:1},xe={slot:"prepend"},Ce={style:{padding:"0px 5px"}},Oe={key:1},Ie=["src"],Se=["src"],je=be({__name:"formContent",props:["options","editableTabsItem"],setup(D){const B=D;let n=v({}),k=v([]);const E=v();let R=v(Y()+"api/system/file/"),T=v({Authorization:"JWT "+_e.get("token")}),L=v(""),z=v(!1);v(null);const Z=()=>{ue({parent:B.options.id,limit:999}).then(t=>{let o=t.data;k.value=o;const u={};for(const p of o){const i=p.key;p.value?u[i]=p.value:[5,12,11,14].indexOf(p.form_item_type)!==-1?u[i]=p.value||[]:u[i]=p.value}n.value=Object.assign({},u)})},K=t=>{const o=Object.keys(n.value),u=Object.values(n.value);for(const p in k.value){const i=k.value[p];o.forEach((g,w)=>{if(g===i.key&&(i.value=u[w],["img","imgs"].indexOf(i.form_item_type_label)>-1)){for(const h of i.rule)if(h.required&&i.value===null){x(i.title+"不能为空");return}}})}t&&t.validate(p=>{if(p)pe(k.value).then(i=>{fe("保存成功"),C&&C()});else return console.log("error submit!!"),!1})},J=t=>{L=t.url,z.value=!0},ee=t=>{if(typeof t!="string")return;const o=t.toLowerCase();return o.endsWith(".png")||o.endsWith(".jpeg")||o.endsWith(".jpg")||o.endsWith(".png")||o.endsWith(".bmp")},A=(t,o,u,p)=>{const{code:i,msg:g}=t;if(i===2e3){const{url:w}=t.data,{name:h}=o;if(!ee(h))x("只允许上传图片");else{const O=n[p];(!O||O==="")&&(n[p]=[]);const N={name:h,url:Y()+w};n[p].push(N)}}else x("上传失败,"+JSON.stringify(g))},G=()=>{x("上传失败")},q=()=>{x("超过文件上传数量")},F=(t,o,u)=>{var p=0;n[u].map((i,g)=>{i.uid===t.uid&&(p=g)}),n[u].splice(p,1)},le=t=>{ie(t.id).then(o=>{})},oe=t=>{k.value[t].edit=!0,k.value[t].new_key=k.value[t].key},C=ge("refreshView"),ae=t=>{t.key=JSON.parse(JSON.stringify(t.new_key)),ce(t).then(o=>{C&&C()})};return Ve(B.options,t=>{t&&t.id&&Z()},{immediate:!0}),(t,o)=>{const u=c("el-col"),p=c("el-row"),i=c("el-input"),g=c("el-input-number"),w=c("el-date-picker"),h=c("el-option"),H=c("el-select"),O=c("el-checkbox"),N=c("el-checkbox-group"),te=c("el-radio"),ne=c("el-radio-group"),M=c("el-switch"),P=c("el-upload"),Q=c("el-dialog"),se=c("table-selector"),I=c("el-button"),re=c("el-popconfirm"),X=c("el-form-item"),de=c("el-form");return r(),m("div",null,[d(p,{gutter:20},{default:s(()=>[d(u,{span:4},{default:s(()=>o[1]||(o[1]=[y("变量标题")])),_:1}),d(u,{span:4},{default:s(()=>o[2]||(o[2]=[y("变量名")])),_:1}),d(u,{span:10},{default:s(()=>o[3]||(o[3]=[y("变量值")])),_:1}),d(u,{span:2,offset:1},{default:s(()=>o[4]||(o[4]=[y("是否前端配置")])),_:1}),d(u,{span:3},{default:s(()=>o[5]||(o[5]=[y("操作")])),_:1})]),_:1}),d(de,{ref_key:"formRef",ref:E,model:a(n),"label-width":"0px","label-position":"left",style:{"margin-top":"20px"}},{default:s(()=>[(r(!0),m(S,null,j(a(k),(e,f)=>(r(),_(X,{prop:["array"].indexOf(e.form_item_type_label)>-1?"":e.key,key:f,rules:e.rule||[]},{default:s(()=>[d(u,{span:4},{default:s(()=>[e.edit?(r(),_(i,{key:0,modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,style:{display:"inline-block",width:"200px"},placeholder:"请输入标题"},null,8,["modelValue","onUpdate:modelValue"])):(r(),m("span",we,U(e.title),1))]),_:2},1024),d(u,{span:4},{default:s(()=>[e.edit?(r(),_(i,{key:0,modelValue:e.new_key,"onUpdate:modelValue":l=>e.new_key=l,style:{width:"200px"},placeholder:"请输入变量key"},{default:s(()=>[b("template",xe,[b("span",Ce,U(D.editableTabsItem.key),1)])]),_:2},1032,["modelValue","onUpdate:modelValue"])):(r(),m("span",Oe,U(D.editableTabsItem.key)+"."+U(e.key),1))]),_:2},1024),d(u,{span:10},{default:s(()=>[["text","textarea"].indexOf(e.form_item_type_label)>-1?(r(),_(i,{key:f,type:e.form_item_type_label,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},null,8,["type","modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="number"?(r(),_(g,{key:f+1,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,min:0},null,8,["modelValue","onUpdate:modelValue"])):["datetime","date","time"].indexOf(e.form_item_type_label)>-1?(r(),_(w,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,key:f+2,type:e.form_item_type_label,placeholder:e.placeholder},null,8,["modelValue","onUpdate:modelValue","type","placeholder"])):e.form_item_type_label==="select"?(r(),_(H,{key:f+3,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},{default:s(()=>[(r(!0),m(S,null,j(a($)(e.setting)||[],l=>(r(),_(h,{key:l.value,label:l.label,value:l.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="checkbox"?(r(),_(N,{key:f+4,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder},{default:s(()=>[(r(!0),m(S,null,j(a($)(e.setting)||[],l=>(r(),_(O,{key:l.value,label:l.value,value:l.value},{default:s(()=>[y(U(l.label),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="radio"?(r(),_(ne,{key:f+5,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},{default:s(()=>[(r(!0),m(S,null,j(a($)(e.setting)||[],l=>(r(),_(te,{key:l.value,label:l.value,value:l.value},{default:s(()=>[y(U(l.label),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="switch"?(r(),_(M,{key:f+6,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,"inactive-value":!1,"active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue","onUpdate:modelValue"])):["img","imgs"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+7},[d(P,{action:a(R),headers:a(T),name:"file",accept:"image/*","on-preview":J,"on-success":(l,V,W)=>{A(l,V,W,e.key)},"on-error":G,"on-exceed":q,"before-remove":(l,V)=>{F(l,V,e.key)},multiple:e.form_item_type_label!=="img",limit:e.form_item_type_label==="img"?1:5,ref_for:!0,ref:"imgUpload_"+e.key,"data-keyname":e.key,"file-list":e.value?e.value:[],"list-type":"picture-card"},{default:s(()=>o[6]||(o[6]=[b("i",{class:"el-icon-plus"},null,-1),b("div",{slot:"tip",class:"el-upload__tip"},"请选取图片,并且只能上传jpg/png文件",-1)])),_:2},1032,["action","headers","on-success","before-remove","multiple","limit","data-keyname","file-list"]),d(Q,{visible:a(z)},{default:s(()=>[b("img",{width:"100%",src:a(L),alt:""},null,8,Ie)]),_:1},8,["visible"])])):["file"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+8},[d(P,{action:a(R),headers:a(T),name:"file","on-preview":J,"on-success":(l,V,W)=>{A(l,V,W,e.key)},"on-error":G,"on-exceed":q,"before-remove":(l,V)=>{F(l,V,e.key)},limit:5,ref_for:!0,ref:"fileUpload_"+e.key,"data-keyname":e.key,"file-list":e.value,"list-type":"picture-card"},{default:s(()=>o[7]||(o[7]=[b("i",{class:"el-icon-plus"},null,-1),b("div",{slot:"tip",class:"el-upload__tip"},"请选取图片,并且只能上传jpg/png文件",-1)])),_:2},1032,["action","headers","on-success","before-remove","data-keyname","file-list"]),d(Q,{visible:a(z)},{default:s(()=>[b("img",{width:"100%",src:a(L),alt:""},null,8,Se)]),_:1},8,["visible"])])):["foreignkey","manytomany"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+9},[d(se,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,"el-props":{pagination:!0,columns:e.setting.searchField},dict:{url:"/api/system/system_config/get_table_data/"+e.id+"/",value:e.setting.primarykey,label:e.setting.field},pagination:!0,multiple:e.form_item_type_label==="manytomany"},null,8,["modelValue","onUpdate:modelValue","el-props","dict","multiple"])])):e.form_item_type_label==="array"?(r(),m("div",{key:f+10},[d(ve,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l},null,8,["modelValue","onUpdate:modelValue"])])):he("",!0)]),_:2},1024),d(u,{span:2,offset:1},{default:s(()=>[d(M,{modelValue:e.status,"onUpdate:modelValue":l=>e.status=l,"active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),d(u,{span:3},{default:s(()=>[e.edit?(r(),_(I,{key:0,size:"mini",type:"primary",icon:a(me),onClick:l=>ae(e)},{default:s(()=>o[8]||(o[8]=[y("保存")])),_:2},1032,["icon","onClick"])):(r(),_(I,{key:1,size:"mini",type:"primary",icon:a(ye),onClick:l=>oe(f)},null,8,["icon","onClick"])),d(re,{title:"确定删除该条数据吗?",onConfirm:l=>le(e)},{reference:s(()=>[d(I,{size:"mini",type:"danger",icon:a(ke)},null,8,["icon"])]),_:2},1032,["onConfirm"])]),_:2},1024)]),_:2},1032,["prop","rules"]))),128)),d(X,null,{default:s(()=>[d(I,{type:"primary",onClick:o[0]||(o[0]=e=>K(E.value))},{default:s(()=>o[9]||(o[9]=[y("确定")])),_:1})]),_:1})]),_:1},8,["model"])])}}}),Be=Ue(je,[["__scopeId","data-v-3e69e1a0"]]);export{Be as default}; diff --git a/web/dist/assets/formContent.U3zr-VRA.js b/web/dist/assets/formContent.U3zr-VRA.js new file mode 100644 index 0000000000..fac7a8f9ec --- /dev/null +++ b/web/dist/assets/formContent.U3zr-VRA.js @@ -0,0 +1 @@ +import{G as ue,s as pe,D as ie,U as ce}from"./api.BZTxDs4c.js";import{d as E}from"./dictionary.DnyXy1XL.js";import{g as X,S as _e,G as x,s as fe,V as me,W as ye,h as ke}from"./index.XK2ik2qb.js";import{_ as ve}from"./crudTable.vue_vue_type_script_setup_true_lang.CYM7VyF5.js";import{d as be,g as v,i as ge,C as Ve,h as c,a as m,o as r,k as d,w as s,m as y,G as S,H as j,u as a,b as _,K as U,e as b,J as he}from"./vue.DmuWcDrn.js";import{_ as Ue}from"./_plugin-vue_export-helper.DlAUqK2U.js";const we={key:1},xe={slot:"prepend"},Ce={style:{padding:"0px 5px"}},Oe={key:1},Ie=["src"],Se=["src"],je=be({__name:"formContent",props:["options","editableTabsItem"],setup(L){const J=L;let n=v({}),k=v([]);const R=v();let T=v(X()+"api/system/file/"),$=v({Authorization:"JWT "+_e.get("token")}),W=v(""),D=v(!1);v(null);const Y=()=>{ue({parent:J.options.id,limit:999}).then(t=>{let o=t.data;k.value=o;const u={};for(const p of o){const i=p.key;p.value?u[i]=p.value:[5,12,11,14].indexOf(p.form_item_type)!==-1?u[i]=p.value||[]:u[i]=p.value}n.value=Object.assign({},u)})},Z=t=>{const o=Object.keys(n.value),u=Object.values(n.value);for(const p in k.value){const i=k.value[p];o.forEach((g,w)=>{if(g===i.key&&(i.value=u[w],["img","imgs"].indexOf(i.form_item_type_label)>-1)){for(const h of i.rule)if(h.required&&i.value===null){x(i.title+"不能为空");return}}})}t&&t.validate(p=>{if(p)pe(k.value).then(i=>{fe("保存成功"),C&&C()});else return console.log("error submit!!"),!1})},z=t=>{W=t.url,D.value=!0},ee=t=>{if(typeof t!="string")return;const o=t.toLowerCase();return o.endsWith(".png")||o.endsWith(".jpeg")||o.endsWith(".jpg")||o.endsWith(".png")||o.endsWith(".bmp")},G=(t,o,u,p)=>{const{code:i,msg:g}=t;if(i===2e3){const{url:w}=t.data,{name:h}=o;if(!ee(h))x("只允许上传图片");else{const O=n[p];(!O||O==="")&&(n[p]=[]);const N={name:h,url:X()+w};n[p].push(N)}}else x("上传失败,"+JSON.stringify(g))},F=()=>{x("上传失败")},H=()=>{x("超过文件上传数量")},M=(t,o,u)=>{var p=0;n[u].map((i,g)=>{i.uid===t.uid&&(p=g)}),n[u].splice(p,1)},le=t=>{ie(t.id).then(o=>{})},oe=t=>{k.value[t].edit=!0,k.value[t].new_key=k.value[t].key},C=ge("refreshView"),ae=t=>{t.key=JSON.parse(JSON.stringify(t.new_key)),ce(t).then(o=>{C&&C()})};return Ve(J.options,t=>{t&&t.id&&Y()},{immediate:!0}),(t,o)=>{const u=c("el-col"),p=c("el-row"),i=c("el-input"),g=c("el-input-number"),w=c("el-date-picker"),h=c("el-option"),P=c("el-select"),O=c("el-checkbox"),N=c("el-checkbox-group"),te=c("el-radio"),ne=c("el-radio-group"),q=c("el-switch"),A=c("el-upload"),K=c("el-dialog"),se=c("table-selector"),I=c("el-button"),re=c("el-popconfirm"),Q=c("el-form-item"),de=c("el-form");return r(),m("div",null,[d(p,{gutter:20},{default:s(()=>[d(u,{span:4},{default:s(()=>o[1]||(o[1]=[y("变量标题")])),_:1}),d(u,{span:4},{default:s(()=>o[2]||(o[2]=[y("变量名")])),_:1}),d(u,{span:10},{default:s(()=>o[3]||(o[3]=[y("变量值")])),_:1}),d(u,{span:2,offset:1},{default:s(()=>o[4]||(o[4]=[y("是否前端配置")])),_:1}),d(u,{span:3},{default:s(()=>o[5]||(o[5]=[y("操作")])),_:1})]),_:1}),d(de,{ref_key:"formRef",ref:R,model:a(n),"label-width":"0px","label-position":"left",style:{"margin-top":"20px"}},{default:s(()=>[(r(!0),m(S,null,j(a(k),(e,f)=>(r(),_(Q,{prop:["array"].indexOf(e.form_item_type_label)>-1?"":e.key,key:f,rules:e.rule||[]},{default:s(()=>[d(u,{span:4},{default:s(()=>[e.edit?(r(),_(i,{key:0,modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,style:{display:"inline-block",width:"200px"},placeholder:"请输入标题"},null,8,["modelValue","onUpdate:modelValue"])):(r(),m("span",we,U(e.title),1))]),_:2},1024),d(u,{span:4},{default:s(()=>[e.edit?(r(),_(i,{key:0,modelValue:e.new_key,"onUpdate:modelValue":l=>e.new_key=l,style:{width:"200px"},placeholder:"请输入变量key"},{default:s(()=>[b("template",xe,[b("span",Ce,U(L.editableTabsItem.key),1)])]),_:2},1032,["modelValue","onUpdate:modelValue"])):(r(),m("span",Oe,U(L.editableTabsItem.key)+"."+U(e.key),1))]),_:2},1024),d(u,{span:10},{default:s(()=>[["text","textarea"].indexOf(e.form_item_type_label)>-1?(r(),_(i,{key:f,type:e.form_item_type_label,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},null,8,["type","modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="number"?(r(),_(g,{key:f+1,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,min:0},null,8,["modelValue","onUpdate:modelValue"])):["datetime","date","time"].indexOf(e.form_item_type_label)>-1?(r(),_(w,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,key:f+2,type:e.form_item_type_label,placeholder:e.placeholder},null,8,["modelValue","onUpdate:modelValue","type","placeholder"])):e.form_item_type_label==="select"?(r(),_(P,{key:f+3,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},{default:s(()=>[(r(!0),m(S,null,j(a(E)(e.setting)||[],l=>(r(),_(h,{key:l.value,label:l.label,value:l.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="checkbox"?(r(),_(N,{key:f+4,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder},{default:s(()=>[(r(!0),m(S,null,j(a(E)(e.setting)||[],l=>(r(),_(O,{key:l.value,label:l.value,value:l.value},{default:s(()=>[y(U(l.label),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="radio"?(r(),_(ne,{key:f+5,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,placeholder:e.placeholder,clearable:""},{default:s(()=>[(r(!0),m(S,null,j(a(E)(e.setting)||[],l=>(r(),_(te,{key:l.value,label:l.value,value:l.value},{default:s(()=>[y(U(l.label),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):e.form_item_type_label==="switch"?(r(),_(q,{key:f+6,modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,"inactive-value":!1,"active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue","onUpdate:modelValue"])):["img","imgs"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+7},[d(A,{action:a(T),headers:a($),name:"file",accept:"image/*","on-preview":z,"on-success":(l,V,B)=>{G(l,V,B,e.key)},"on-error":F,"on-exceed":H,"before-remove":(l,V)=>{M(l,V,e.key)},multiple:e.form_item_type_label!=="img",limit:e.form_item_type_label==="img"?1:5,ref_for:!0,ref:"imgUpload_"+e.key,"data-keyname":e.key,"file-list":e.value?e.value:[],"list-type":"picture-card"},{default:s(()=>o[6]||(o[6]=[b("i",{class:"el-icon-plus"},null,-1),b("div",{slot:"tip",class:"el-upload__tip"},"请选取图片,并且只能上传jpg/png文件",-1)])),_:2},1032,["action","headers","on-success","before-remove","multiple","limit","data-keyname","file-list"]),d(K,{visible:a(D)},{default:s(()=>[b("img",{width:"100%",src:a(W),alt:""},null,8,Ie)]),_:1},8,["visible"])])):["file"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+8},[d(A,{action:a(T),headers:a($),name:"file","on-preview":z,"on-success":(l,V,B)=>{G(l,V,B,e.key)},"on-error":F,"on-exceed":H,"before-remove":(l,V)=>{M(l,V,e.key)},limit:5,ref_for:!0,ref:"fileUpload_"+e.key,"data-keyname":e.key,"file-list":e.value,"list-type":"picture-card"},{default:s(()=>o[7]||(o[7]=[b("i",{class:"el-icon-plus"},null,-1),b("div",{slot:"tip",class:"el-upload__tip"},"请选取图片,并且只能上传jpg/png文件",-1)])),_:2},1032,["action","headers","on-success","before-remove","data-keyname","file-list"]),d(K,{visible:a(D)},{default:s(()=>[b("img",{width:"100%",src:a(W),alt:""},null,8,Se)]),_:1},8,["visible"])])):["foreignkey","manytomany"].indexOf(e.form_item_type_label)>-1?(r(),m("div",{key:f+9},[d(se,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l,"el-props":{pagination:!0,columns:e.setting.searchField},dict:{url:"/api/system/system_config/get_table_data/"+e.id+"/",value:e.setting.primarykey,label:e.setting.field},pagination:!0,multiple:e.form_item_type_label==="manytomany"},null,8,["modelValue","onUpdate:modelValue","el-props","dict","multiple"])])):e.form_item_type_label==="array"?(r(),m("div",{key:f+10},[d(ve,{modelValue:a(n)[e.key],"onUpdate:modelValue":l=>a(n)[e.key]=l},null,8,["modelValue","onUpdate:modelValue"])])):he("",!0)]),_:2},1024),d(u,{span:2,offset:1},{default:s(()=>[d(q,{modelValue:e.status,"onUpdate:modelValue":l=>e.status=l,"active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),d(u,{span:3},{default:s(()=>[e.edit?(r(),_(I,{key:0,size:"mini",type:"primary",icon:a(me),onClick:l=>ae(e)},{default:s(()=>o[8]||(o[8]=[y("保存")])),_:2},1032,["icon","onClick"])):(r(),_(I,{key:1,size:"mini",type:"primary",icon:a(ye),onClick:l=>oe(f)},null,8,["icon","onClick"])),d(re,{title:"确定删除该条数据吗?",onConfirm:l=>le(e)},{reference:s(()=>[d(I,{size:"mini",type:"danger",icon:a(ke)},null,8,["icon"])]),_:2},1032,["onConfirm"])]),_:2},1024)]),_:2},1032,["prop","rules"]))),128)),d(Q,null,{default:s(()=>[d(I,{type:"primary",onClick:o[0]||(o[0]=e=>Z(R.value))},{default:s(()=>o[9]||(o[9]=[y("确定")])),_:1})]),_:1})]),_:1},8,["model"])])}}}),Je=Ue(je,[["__scopeId","data-v-3e69e1a0"]]);export{Je as default}; diff --git a/web/dist/assets/fs-cropper-8eb4add2.Dy2wapzG.js b/web/dist/assets/fs-cropper-8eb4add2.BZucq3nl.js similarity index 90% rename from web/dist/assets/fs-cropper-8eb4add2.Dy2wapzG.js rename to web/dist/assets/fs-cropper-8eb4add2.BZucq3nl.js index 37c5e079cf..451643fce2 100644 --- a/web/dist/assets/fs-cropper-8eb4add2.Dy2wapzG.js +++ b/web/dist/assets/fs-cropper-8eb4add2.BZucq3nl.js @@ -1,4 +1,4 @@ -import{w as Ie,aA as Gt,$ as St,y as Ct,a0 as Wt,z as X,a1 as Et,a8 as Rt,a7 as Dt,a5 as te,Z as Ht,a3 as ee,x as Pe,a6 as Ue,aq as _e,Y as $e,D as F,F as Mt,az as ie}from"./vue.Cw4Y52yh.js";import{a7 as qe,B as Fe,a8 as Qe}from"./index.CkCcWuPb.js";/*! +import{d as Ie,h as Gt,b as St,o as Ct,w as Wt,e as X,p as Et,N as Rt,k as Dt,K as te,L as Ht,r as ee,a as Pe,G as Ue,H as _e,f as $e,g as F,c as Mt,A as ie}from"./vue.DmuWcDrn.js";import{k as qe,l as Fe,n as Qe}from"./index.XK2ik2qb.js";/*! * Cropper.js v1.6.2 * https://fengyuanchen.github.io/cropperjs * @@ -6,6 +6,6 @@ import{w as Ie,aA as Gt,$ as St,y as Ct,a0 as Wt,z as X,a1 as Et,a8 as Rt,a7 as * Released under the MIT license * * Date: 2024-04-21T07:43:05.335Z -*/function ae(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),i.push.apply(i,a)}return i}function be(t){for(var e=1;et.length)&&(e=t.length);for(var i=0,a=new Array(e);i

',ui=Number.isNaN||_.isNaN;function f(t){return typeof t=="number"&&!ui(t)}var ge=function(t){return t>0&&t<1/0};function Lt(t){return typeof t>"u"}function G(t){return Xt(t)==="object"&&t!==null}var di=Object.prototype.hasOwnProperty;function rt(t){if(!G(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&di.call(i,"isPrototypeOf")}catch{return!1}}function S(t){return typeof t=="function"}var mi=Array.prototype.slice;function Te(t){return Array.from?Array.from(t):mi.call(t)}function O(t,e){return t&&S(e)&&(Array.isArray(t)||f(t.length)?Te(t).forEach(function(i,a){e.call(t,i,a,t)}):G(t)&&Object.keys(t).forEach(function(i){e.call(t,t[i],i,t)})),t}var C=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),a=1;a0&&i.forEach(function(r){G(r)&&Object.keys(r).forEach(function(n){t[n]=r[n]})}),t},fi=/\.\d*(?:0|9){12}\d*$/;function ot(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return fi.test(t)?Math.round(t*e)/e:t}var gi=/^width|height|left|top|marginLeft|marginTop$/;function Z(t,e){var i=t.style;O(e,function(a,r){gi.test(r)&&f(a)&&(a="".concat(a,"px")),i[r]=a})}function vi(t,e){return t.classList?t.classList.contains(e):t.className.indexOf(e)>-1}function T(t,e){if(e){if(f(t.length)){O(t,function(a){T(a,e)});return}if(t.classList){t.classList.add(e);return}var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function U(t,e){if(e){if(f(t.length)){O(t,function(i){U(i,e)});return}if(t.classList){t.classList.remove(e);return}t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,""))}}function nt(t,e,i){if(e){if(f(t.length)){O(t,function(a){nt(a,e,i)});return}i?T(t,e):U(t,e)}}var wi=/([a-z\d])([A-Z])/g;function Jt(t){return t.replace(wi,"$1-$2").toLowerCase()}function Ft(t,e){return G(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(Jt(e)))}function wt(t,e,i){G(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(Jt(e)),i)}function bi(t,e){if(G(t[e]))try{delete t[e]}catch{t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch{t.dataset[e]=void 0}else t.removeAttribute("data-".concat(Jt(e)))}var Ne=/\s\s*/,Se=function(){var t=!1;if(zt){var e=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(r){e=r}});_.addEventListener("test",i,a),_.removeEventListener("test",i,a)}return t}();function I(t,e,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=i;e.trim().split(Ne).forEach(function(n){if(!Se){var o=t.listeners;o&&o[n]&&o[n][i]&&(r=o[n][i],delete o[n][i],Object.keys(o[n]).length===0&&delete o[n],Object.keys(o).length===0&&delete t.listeners)}t.removeEventListener(n,r,a)})}function A(t,e,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=i;e.trim().split(Ne).forEach(function(n){if(a.once&&!Se){var o=t.listeners,l=o===void 0?{}:o;r=function(){delete l[n][i],t.removeEventListener(n,r,a);for(var c=arguments.length,s=new Array(c),h=0;hMath.abs(i)&&(i=g)})}),i}function kt(t,e){var i=t.pageX,a=t.pageY,r={endX:i,endY:a};return e?r:be({startX:i,startY:a},r)}function Ci(t){var e=0,i=0,a=0;return O(t,function(r){var n=r.startX,o=r.startY;e+=n,i+=o,a+=1}),e/=a,i/=a,{pageX:e,pageY:i}}function V(t){var e=t.aspectRatio,i=t.height,a=t.width,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",n=ge(a),o=ge(i);if(n&&o){var l=i*e;r==="contain"&&l>a||r==="cover"&&l90?{width:c,height:l}:{width:l,height:c}}function Mi(t,e,i,a){var r=e.aspectRatio,n=e.naturalWidth,o=e.naturalHeight,l=e.rotate,c=l===void 0?0:l,s=e.scaleX,h=s===void 0?1:s,p=e.scaleY,g=p===void 0?1:p,m=i.aspectRatio,b=i.naturalWidth,w=i.naturalHeight,M=a.fillColor,k=M===void 0?"transparent":M,y=a.imageSmoothingEnabled,R=y===void 0?!0:y,N=a.imageSmoothingQuality,u=N===void 0?"low":N,v=a.maxWidth,B=v===void 0?1/0:v,E=a.maxHeight,H=E===void 0?1/0:E,P=a.minWidth,$=P===void 0?0:P,L=a.minHeight,Y=L===void 0?0:L,j=document.createElement("canvas"),z=j.getContext("2d"),tt=V({aspectRatio:m,width:B,height:H}),ht=V({aspectRatio:m,width:$,height:Y},"cover"),et=Math.min(tt.width,Math.max(ht.width,b)),lt=Math.min(tt.height,Math.max(ht.height,w)),bt=V({aspectRatio:r,width:B,height:H}),yt=V({aspectRatio:r,width:$,height:Y},"cover"),ct=Math.min(bt.width,Math.max(yt.width,n)),it=Math.min(bt.height,Math.max(yt.height,o)),Tt=[-ct/2,-it/2,ct,it];return j.width=ot(et),j.height=ot(lt),z.fillStyle=k,z.fillRect(0,0,et,lt),z.save(),z.translate(et/2,lt/2),z.rotate(c*Math.PI/180),z.scale(h,g),z.imageSmoothingEnabled=R,z.imageSmoothingQuality=u,z.drawImage.apply(z,[t].concat(xe(Tt.map(function(Nt){return Math.floor(ot(Nt))})))),z.restore(),j}var Ee=String.fromCharCode;function Bi(t,e,i){var a="";i+=e;for(var r=e;r0;)i.push(Ee.apply(null,Te(r.subarray(0,a)))),r=r.subarray(a);return"data:".concat(e,";base64,").concat(btoa(i.join("")))}function Ti(t){var e=new DataView(t),i;try{var a,r,n;if(e.getUint8(0)===255&&e.getUint8(1)===216)for(var o=e.byteLength,l=2;l+1=8&&(n=s+p)}}}if(n){var g=e.getUint16(n,a),m,b;for(b=0;b=0?r:Oe),height:Math.max(i.offsetHeight,n>=0?n:ze)};this.containerData=o,Z(a,{width:o.width,height:o.height}),T(t,W),U(a,W)},initCanvas:function(){var t=this.containerData,e=this.imageData,i=this.options.viewMode,a=Math.abs(e.rotate)%180===90,r=a?e.naturalHeight:e.naturalWidth,n=a?e.naturalWidth:e.naturalHeight,o=r/n,l=t.width,c=t.height;t.height*o>t.width?i===3?l=t.height*o:c=t.width/o:i===3?c=t.width/o:l=t.height*o;var s={aspectRatio:o,naturalWidth:r,naturalHeight:n,width:l,height:c};this.canvasData=s,this.limited=i===1||i===2,this.limitCanvas(!0,!0),s.width=Math.min(Math.max(s.width,s.minWidth),s.maxWidth),s.height=Math.min(Math.max(s.height,s.minHeight),s.maxHeight),s.left=(t.width-s.width)/2,s.top=(t.height-s.height)/2,s.oldLeft=s.left,s.oldTop=s.top,this.initialCanvasData=C({},s)},limitCanvas:function(t,e){var i=this.options,a=this.containerData,r=this.canvasData,n=this.cropBoxData,o=i.viewMode,l=r.aspectRatio,c=this.cropped&&n;if(t){var s=Number(i.minCanvasWidth)||0,h=Number(i.minCanvasHeight)||0;o>1?(s=Math.max(s,a.width),h=Math.max(h,a.height),o===3&&(h*l>s?s=h*l:h=s/l)):o>0&&(s?s=Math.max(s,c?n.width:0):h?h=Math.max(h,c?n.height:0):c&&(s=n.width,h=n.height,h*l>s?s=h*l:h=s/l));var p=V({aspectRatio:l,width:s,height:h});s=p.width,h=p.height,r.minWidth=s,r.minHeight=h,r.maxWidth=1/0,r.maxHeight=1/0}if(e)if(o>(c?0:1)){var g=a.width-r.width,m=a.height-r.height;r.minLeft=Math.min(0,g),r.minTop=Math.min(0,m),r.maxLeft=Math.max(0,g),r.maxTop=Math.max(0,m),c&&this.limited&&(r.minLeft=Math.min(n.left,n.left+(n.width-r.width)),r.minTop=Math.min(n.top,n.top+(n.height-r.height)),r.maxLeft=n.left,r.maxTop=n.top,o===2&&(r.width>=a.width&&(r.minLeft=Math.min(0,g),r.maxLeft=Math.max(0,g)),r.height>=a.height&&(r.minTop=Math.min(0,m),r.maxTop=Math.max(0,m))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=a.width,r.maxTop=a.height},renderCanvas:function(t,e){var i=this.canvasData,a=this.imageData;if(e){var r=Di({width:a.naturalWidth*Math.abs(a.scaleX||1),height:a.naturalHeight*Math.abs(a.scaleY||1),degree:a.rotate||0}),n=r.width,o=r.height,l=i.width*(n/i.naturalWidth),c=i.height*(o/i.naturalHeight);i.left-=(l-i.width)/2,i.top-=(c-i.height)/2,i.width=l,i.height=c,i.aspectRatio=n/o,i.naturalWidth=n,i.naturalHeight=o,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heighte.width?r.height=r.width/i:r.width=r.height*i),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*a),r.height=Math.max(r.minHeight,r.height*a),r.left=e.left+(e.width-r.width)/2,r.top=e.top+(e.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=C({},r)},limitCropBox:function(t,e){var i=this.options,a=this.containerData,r=this.canvasData,n=this.cropBoxData,o=this.limited,l=i.aspectRatio;if(t){var c=Number(i.minCropBoxWidth)||0,s=Number(i.minCropBoxHeight)||0,h=o?Math.min(a.width,r.width,r.width+r.left,a.width-r.left):a.width,p=o?Math.min(a.height,r.height,r.height+r.top,a.height-r.top):a.height;c=Math.min(c,a.width),s=Math.min(s,a.height),l&&(c&&s?s*l>c?s=c/l:c=s*l:c?s=c/l:s&&(c=s*l),p*l>h?p=h/l:h=p*l),n.minWidth=Math.min(c,h),n.minHeight=Math.min(s,p),n.maxWidth=h,n.maxHeight=p}e&&(o?(n.minLeft=Math.max(0,r.left),n.minTop=Math.max(0,r.top),n.maxLeft=Math.min(a.width,r.left+r.width)-n.width,n.maxTop=Math.min(a.height,r.top+r.height)-n.height):(n.minLeft=0,n.minTop=0,n.maxLeft=a.width-n.width,n.maxTop=a.height-n.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=e.width&&i.height>=e.height?De:Vt),Z(this.cropBox,C({width:i.width,height:i.height},gt({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),st(this.element,Pt,this.getData())}},Wi={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,a=e?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",n=document.createElement("img");if(e&&(n.crossOrigin=e),n.src=a,n.alt=r,this.viewBox.appendChild(n),this.viewBoxImage=n,!!i){var o=i;typeof i=="string"?o=t.ownerDocument.querySelectorAll(i):i.querySelector&&(o=[i]),this.previews=o,O(o,function(l){var c=document.createElement("img");wt(l,Bt,{width:l.offsetWidth,height:l.offsetHeight,html:l.innerHTML}),e&&(c.crossOrigin=e),c.src=a,c.alt=r,c.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',l.innerHTML="",l.appendChild(c)})}},resetPreview:function(){O(this.previews,function(t){var e=Ft(t,Bt);Z(t,{width:e.width,height:e.height}),t.innerHTML=e.html,bi(t,Bt)})},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,a=i.width,r=i.height,n=t.width,o=t.height,l=i.left-e.left-t.left,c=i.top-e.top-t.top;!this.cropped||this.disabled||(Z(this.viewBoxImage,C({width:n,height:o},gt(C({translateX:-l,translateY:-c},t)))),O(this.previews,function(s){var h=Ft(s,Bt),p=h.width,g=h.height,m=p,b=g,w=1;a&&(w=p/a,b=r*w),r&&b>g&&(w=g/r,m=a*w,b=g),Z(s,{width:m,height:b}),Z(s.getElementsByTagName("img")[0],C({width:n*w,height:o*w},gt(C({translateX:-l*w,translateY:-c*w},t))))}))}},Ei={bind:function(){var t=this.element,e=this.options,i=this.cropper;S(e.cropstart)&&A(t,$t,e.cropstart),S(e.cropmove)&&A(t,_t,e.cropmove),S(e.cropend)&&A(t,Ut,e.cropend),S(e.crop)&&A(t,Pt,e.crop),S(e.zoom)&&A(t,qt,e.zoom),A(i,he,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&A(i,de,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&A(i,se,this.onDblclick=this.dblclick.bind(this)),A(t.ownerDocument,le,this.onCropMove=this.cropMove.bind(this)),A(t.ownerDocument,ce,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&A(window,ue,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;S(e.cropstart)&&I(t,$t,e.cropstart),S(e.cropmove)&&I(t,_t,e.cropmove),S(e.cropend)&&I(t,Ut,e.cropend),S(e.crop)&&I(t,Pt,e.crop),S(e.zoom)&&I(t,qt,e.zoom),I(i,he,this.onCropStart),e.zoomable&&e.zoomOnWheel&&I(i,de,this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&I(i,se,this.onDblclick),I(t.ownerDocument,le,this.onCropMove),I(t.ownerDocument,ce,this.onCropEnd),e.responsive&&I(window,ue,this.onResize)}},Ri={resize:function(){if(!this.disabled){var t=this.options,e=this.container,i=this.containerData,a=e.offsetWidth/i.width,r=e.offsetHeight/i.height,n=Math.abs(a-1)>Math.abs(r-1)?a:r;if(n!==1){var o,l;t.restore&&(o=this.getCanvasData(),l=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(O(o,function(c,s){o[s]=c*n})),this.setCropBoxData(O(l,function(c,s){l[s]=c*n})))}}},dblclick:function(){this.disabled||this.options.dragMode===ke||this.setDragMode(vi(this.dragBox,jt)?Be:Kt)},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){e.wheeling=!1},50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||(t.type==="mousedown"||t.type==="pointerdown"&&t.pointerType==="mouse")&&(f(e)&&e!==1||f(i)&&i!==0||t.ctrlKey))){var a=this.options,r=this.pointers,n;t.changedTouches?O(t.changedTouches,function(o){r[o.identifier]=kt(o)}):r[t.pointerId||0]=kt(t),Object.keys(r).length>1&&a.zoomable&&a.zoomOnTouch?n=Me:n=Ft(t.target,vt),si.test(n)&&st(this.element,$t,{originalEvent:t,action:n})!==!1&&(t.preventDefault(),this.action=n,this.cropping=!1,n===Ce&&(this.cropping=!0,T(this.dragBox,Ot)))}},cropMove:function(t){var e=this.action;if(!(this.disabled||!e)){var i=this.pointers;t.preventDefault(),st(this.element,_t,{originalEvent:t,action:e})!==!1&&(t.changedTouches?O(t.changedTouches,function(a){C(i[a.identifier]||{},kt(a,!0))}):C(i[t.pointerId||0]||{},kt(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?O(t.changedTouches,function(a){delete i[a.identifier]}):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,nt(this.dragBox,Ot,this.cropped&&this.options.modal)),st(this.element,Ut,{originalEvent:t,action:e}))}}},Hi={change:function(t){var e=this.options,i=this.canvasData,a=this.containerData,r=this.cropBoxData,n=this.pointers,o=this.action,l=e.aspectRatio,c=r.left,s=r.top,h=r.width,p=r.height,g=c+h,m=s+p,b=0,w=0,M=a.width,k=a.height,y=!0,R;!l&&t.shiftKey&&(l=h&&p?h/p:1),this.limited&&(b=r.minLeft,w=r.minTop,M=b+Math.min(a.width,i.width,i.left+i.width),k=w+Math.min(a.height,i.height,i.top+i.height));var N=n[Object.keys(n)[0]],u={x:N.endX-N.startX,y:N.endY-N.startY},v=function(B){switch(B){case K:g+u.x>M&&(u.x=M-g);break;case J:c+u.xk&&(u.y=k-m);break}};switch(o){case Vt:c+=u.x,s+=u.y;break;case K:if(u.x>=0&&(g>=M||l&&(s<=w||m>=k))){y=!1;break}v(K),h+=u.x,h<0&&(o=J,h=-h,c-=h),l&&(p=h/l,s+=(r.height-p)/2);break;case Q:if(u.y<=0&&(s<=w||l&&(c<=b||g>=M))){y=!1;break}v(Q),p-=u.y,s+=u.y,p<0&&(o=at,p=-p,s-=p),l&&(h=p*l,c+=(r.width-h)/2);break;case J:if(u.x<=0&&(c<=b||l&&(s<=w||m>=k))){y=!1;break}v(J),h-=u.x,c+=u.x,h<0&&(o=K,h=-h,c-=h),l&&(p=h/l,s+=(r.height-p)/2);break;case at:if(u.y>=0&&(m>=k||l&&(c<=b||g>=M))){y=!1;break}v(at),p+=u.y,p<0&&(o=Q,p=-p,s-=p),l&&(h=p*l,c+=(r.width-h)/2);break;case ut:if(l){if(u.y<=0&&(s<=w||g>=M)){y=!1;break}v(Q),p-=u.y,s+=u.y,h=p*l}else v(Q),v(K),u.x>=0?gw&&(p-=u.y,s+=u.y):(p-=u.y,s+=u.y);h<0&&p<0?(o=ft,p=-p,h=-h,s-=p,c-=h):h<0?(o=dt,h=-h,c-=h):p<0&&(o=mt,p=-p,s-=p);break;case dt:if(l){if(u.y<=0&&(s<=w||c<=b)){y=!1;break}v(Q),p-=u.y,s+=u.y,h=p*l,c+=r.width-h}else v(Q),v(J),u.x<=0?c>b?(h-=u.x,c+=u.x):u.y<=0&&s<=w&&(y=!1):(h-=u.x,c+=u.x),u.y<=0?s>w&&(p-=u.y,s+=u.y):(p-=u.y,s+=u.y);h<0&&p<0?(o=mt,p=-p,h=-h,s-=p,c-=h):h<0?(o=ut,h=-h,c-=h):p<0&&(o=ft,p=-p,s-=p);break;case ft:if(l){if(u.x<=0&&(c<=b||m>=k)){y=!1;break}v(J),h-=u.x,c+=u.x,p=h/l}else v(at),v(J),u.x<=0?c>b?(h-=u.x,c+=u.x):u.y>=0&&m>=k&&(y=!1):(h-=u.x,c+=u.x),u.y>=0?m=0&&(g>=M||m>=k)){y=!1;break}v(K),h+=u.x,p=h/l}else v(at),v(K),u.x>=0?g=0&&m>=k&&(y=!1):h+=u.x,u.y>=0?m0?o=u.y>0?mt:ut:u.x<0&&(c-=h,o=u.y>0?ft:dt),u.y<0&&(s-=p),this.cropped||(U(this.cropBox,W),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}y&&(r.width=h,r.height=p,r.left=c,r.top=s,this.action=o,this.renderCropBox()),O(n,function(B){B.startX=B.endX,B.startY=B.endY})}},Li={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&T(this.dragBox,Ot),U(this.cropBox,W),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=C({},this.initialImageData),this.canvasData=C({},this.initialCanvasData),this.cropBoxData=C({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(C(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),U(this.dragBox,Ot),T(this.cropBox,W)),this},replace:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,O(this.previews,function(i){i.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,U(this.cropper,ne)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,T(this.cropper,ne)),this},destroy:function(){var t=this.element;return t[x]?(t[x]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.canvasData,a=i.left,r=i.top;return this.moveTo(Lt(t)?t:a+Number(t),Lt(e)?e:r+Number(e))},moveTo:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.canvasData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(f(t)&&(i.left=t,a=!0),f(e)&&(i.top=e,a=!0),a&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=Number(t),t<0?t=1/(1-t):t=1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var a=this.options,r=this.canvasData,n=r.width,o=r.height,l=r.naturalWidth,c=r.naturalHeight;if(t=Number(t),t>=0&&this.ready&&!this.disabled&&a.zoomable){var s=l*t,h=c*t;if(st(this.element,qt,{ratio:t,oldRatio:n/l,originalEvent:i})===!1)return this;if(i){var p=this.pointers,g=We(this.cropper),m=p&&Object.keys(p).length?Ci(p):{pageX:i.pageX,pageY:i.pageY};r.left-=(s-n)*((m.pageX-g.left-r.left)/n),r.top-=(h-o)*((m.pageY-g.top-r.top)/o)}else rt(e)&&f(e.x)&&f(e.y)?(r.left-=(s-n)*((e.x-r.left)/n),r.top-=(h-o)*((e.y-r.top)/o)):(r.left-=(s-n)/2,r.top-=(h-o)/2);r.width=s,r.height=h,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),f(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,f(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(f(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.imageData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(f(t)&&(i.scaleX=t,a=!0),f(e)&&(i.scaleY=e,a=!0),a&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.options,i=this.imageData,a=this.canvasData,r=this.cropBoxData,n;if(this.ready&&this.cropped){n={x:r.left-a.left,y:r.top-a.top,width:r.width,height:r.height};var o=i.width/i.naturalWidth;if(O(n,function(s,h){n[h]=s/o}),t){var l=Math.round(n.y+n.height),c=Math.round(n.x+n.width);n.x=Math.round(n.x),n.y=Math.round(n.y),n.width=c-n.x,n.height=l-n.y}}else n={x:0,y:0,width:0,height:0};return e.rotatable&&(n.rotate=i.rotate||0),e.scalable&&(n.scaleX=i.scaleX||1,n.scaleY=i.scaleY||1),n},setData:function(t){var e=this.options,i=this.imageData,a=this.canvasData,r={};if(this.ready&&!this.disabled&&rt(t)){var n=!1;e.rotatable&&f(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,n=!0),e.scalable&&(f(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,n=!0),f(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,n=!0)),n&&this.renderCanvas(!0,!0);var o=i.width/i.naturalWidth;f(t.x)&&(r.left=t.x*o+a.left),f(t.y)&&(r.top=t.y*o+a.top),f(t.width)&&(r.width=t.width*o),f(t.height)&&(r.height=t.height*o),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?C({},this.containerData):{}},getImageData:function(){return this.sized?C({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&O(["left","top","width","height","naturalWidth","naturalHeight"],function(i){e[i]=t[i]}),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&rt(t)&&(f(t.left)&&(e.left=t.left),f(t.top)&&(e.top=t.top),f(t.width)?(e.width=t.width,e.height=t.width/i):f(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,e;return this.ready&&this.cropped&&(e={left:t.left,top:t.top,width:t.width,height:t.height}),e||{}},setCropBoxData:function(t){var e=this.cropBoxData,i=this.options.aspectRatio,a,r;return this.ready&&this.cropped&&!this.disabled&&rt(t)&&(f(t.left)&&(e.left=t.left),f(t.top)&&(e.top=t.top),f(t.width)&&t.width!==e.width&&(a=!0,e.width=t.width),f(t.height)&&t.height!==e.height&&(r=!0,e.height=t.height),i&&(a?e.height=e.width/i:r&&(e.width=e.height*i)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=Mi(this.image,this.imageData,e,t);if(!this.cropped)return i;var a=this.getData(t.rounded),r=a.x,n=a.y,o=a.width,l=a.height,c=i.width/Math.floor(e.naturalWidth);c!==1&&(r*=c,n*=c,o*=c,l*=c);var s=o/l,h=V({aspectRatio:s,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),p=V({aspectRatio:s,width:t.minWidth||0,height:t.minHeight||0},"cover"),g=V({aspectRatio:s,width:t.width||(c!==1?i.width:o),height:t.height||(c!==1?i.height:l)}),m=g.width,b=g.height;m=Math.min(h.width,Math.max(p.width,m)),b=Math.min(h.height,Math.max(p.height,b));var w=document.createElement("canvas"),M=w.getContext("2d");w.width=ot(m),w.height=ot(b),M.fillStyle=t.fillColor||"transparent",M.fillRect(0,0,m,b);var k=t.imageSmoothingEnabled,y=k===void 0?!0:k,R=t.imageSmoothingQuality;M.imageSmoothingEnabled=y,R&&(M.imageSmoothingQuality=R);var N=i.width,u=i.height,v=r,B=n,E,H,P,$,L,Y;v<=-o||v>N?(v=0,E=0,P=0,L=0):v<=0?(P=-v,v=0,E=Math.min(N,o+v),L=E):v<=N&&(P=0,E=Math.min(o,N-v),L=E),E<=0||B<=-l||B>u?(B=0,H=0,$=0,Y=0):B<=0?($=-B,B=0,H=Math.min(u,l+B),Y=H):B<=u&&($=0,H=Math.min(l,u-B),Y=H);var j=[v,B,E,H];if(L>0&&Y>0){var z=m/o;j.push(P*z,$*z,L*z,Y*z)}return M.drawImage.apply(M,[i].concat(xe(j.map(function(tt){return Math.floor(ot(tt))})))),w},setAspectRatio:function(t){var e=this.options;return!this.disabled&&!Lt(t)&&(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,a=this.face;if(this.ready&&!this.disabled){var r=t===Kt,n=e.movable&&t===Be;t=r||n?t:ke,e.dragMode=t,wt(i,vt,t),nt(i,jt,r),nt(i,It,n),e.cropBoxMovable||(wt(a,vt,t),nt(a,jt,r),nt(a,It,n))}return this}},Yi=_.Cropper,Re=function(){function t(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(Ve(this,t),!e||!ci.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=C({},fe,rt(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return Ke(t,[{key:"init",value:function(){var e=this.element,i=e.tagName.toLowerCase(),a;if(!e[x]){if(e[x]=this,i==="img"){if(this.isImg=!0,a=e.getAttribute("src")||"",this.originalUrl=a,!a)return;a=e.src}else i==="canvas"&&window.HTMLCanvasElement&&(a=e.toDataURL());this.load(a)}}},{key:"load",value:function(e){var i=this;if(e){this.url=e,this.imageData={};var a=this.element,r=this.options;if(!r.rotatable&&!r.scalable&&(r.checkOrientation=!1),!r.checkOrientation||!window.ArrayBuffer){this.clone();return}if(hi.test(e)){li.test(e)?this.read(Oi(e)):this.clone();return}var n=new XMLHttpRequest,o=this.clone.bind(this);this.reloading=!0,this.xhr=n,n.onabort=o,n.onerror=o,n.ontimeout=o,n.onprogress=function(){n.getResponseHeader("content-type")!==me&&n.abort()},n.onload=function(){i.read(n.response)},n.onloadend=function(){i.reloading=!1,i.xhr=null},r.checkCrossOrigin&&ve(e)&&a.crossOrigin&&(e=we(e)),n.open("GET",e,!0),n.responseType="arraybuffer",n.withCredentials=a.crossOrigin==="use-credentials",n.send()}}},{key:"read",value:function(e){var i=this.options,a=this.imageData,r=Ti(e),n=0,o=1,l=1;if(r>1){this.url=zi(e,me);var c=Ni(r);n=c.rotate,o=c.scaleX,l=c.scaleY}i.rotatable&&(a.rotate=n),i.scalable&&(a.scaleX=o,a.scaleY=l),this.clone()}},{key:"clone",value:function(){var e=this.element,i=this.url,a=e.crossOrigin,r=i;this.options.checkCrossOrigin&&ve(i)&&(a||(a="anonymous"),r=we(i)),this.crossOrigin=a,this.crossOriginUrl=r;var n=document.createElement("img");a&&(n.crossOrigin=a),n.src=r||i,n.alt=e.alt||"The image to crop",this.image=n,n.onload=this.start.bind(this),n.onerror=this.stop.bind(this),T(n,oe),e.parentNode.insertBefore(n,e.nextSibling)}},{key:"start",value:function(){var e=this,i=this.image;i.onload=null,i.onerror=null,this.sizing=!0;var a=_.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(_.navigator.userAgent),r=function(l,c){C(e.imageData,{naturalWidth:l,naturalHeight:c,aspectRatio:l/c}),e.initialImageData=C({},e.imageData),e.sizing=!1,e.sized=!0,e.build()};if(i.naturalWidth&&!a){r(i.naturalWidth,i.naturalHeight);return}var n=document.createElement("img"),o=document.body||document.documentElement;this.sizingImage=n,n.onload=function(){r(n.width,n.height),a||o.removeChild(n)},n.src=i.src,a||(n.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",o.appendChild(n))}},{key:"stop",value:function(){var e=this.image;e.onload=null,e.onerror=null,e.parentNode.removeChild(e),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var e=this.element,i=this.options,a=this.image,r=e.parentNode,n=document.createElement("div");n.innerHTML=pi;var o=n.querySelector(".".concat(x,"-container")),l=o.querySelector(".".concat(x,"-canvas")),c=o.querySelector(".".concat(x,"-drag-box")),s=o.querySelector(".".concat(x,"-crop-box")),h=s.querySelector(".".concat(x,"-face"));this.container=r,this.cropper=o,this.canvas=l,this.dragBox=c,this.cropBox=s,this.viewBox=o.querySelector(".".concat(x,"-view-box")),this.face=h,l.appendChild(a),T(e,W),r.insertBefore(o,e.nextSibling),U(a,oe),this.initPreview(),this.bind(),i.initialAspectRatio=Math.max(0,i.initialAspectRatio)||NaN,i.aspectRatio=Math.max(0,i.aspectRatio)||NaN,i.viewMode=Math.max(0,Math.min(3,Math.round(i.viewMode)))||0,T(s,W),i.guides||T(s.getElementsByClassName("".concat(x,"-dashed")),W),i.center||T(s.getElementsByClassName("".concat(x,"-center")),W),i.background&&T(o,"".concat(x,"-bg")),i.highlight||T(h,ai),i.cropBoxMovable&&(T(h,It),wt(h,vt,Vt)),i.cropBoxResizable||(T(s.getElementsByClassName("".concat(x,"-line")),W),T(s.getElementsByClassName("".concat(x,"-point")),W)),this.render(),this.ready=!0,this.setDragMode(i.dragMode),i.autoCrop&&this.crop(),this.setData(i.data),S(i.ready)&&A(e,pe,i.ready,{once:!0}),st(e,pe)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var e=this.cropper.parentNode;e&&e.removeChild(this.cropper),U(this.element,W)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=Yi,t}},{key:"setDefaults",value:function(e){C(fe,rt(e)&&e)}}])}();C(Re.prototype,Si,Wi,Ei,Ri,Hi,Li);const Xi=typeof window>"u"?[String,Array]:[String,Array,Element,NodeList],Ai={render(){const t=this.crossorigin||void 0;return ie("div",{style:this.containerStyle},[ie("img",{ref:"img",src:this.src,alt:this.alt||"image",style:[{"max-width":"100%"},this.imgStyle],crossorigin:t})])},props:{containerStyle:Object,src:{type:String,default:""},alt:String,imgStyle:Object,viewMode:Number,dragMode:String,initialAspectRatio:Number,aspectRatio:Number,data:Object,preview:Xi,responsive:{type:Boolean,default:!0},restore:{type:Boolean,default:!0},checkCrossOrigin:{type:Boolean,default:!0},checkOrientation:{type:Boolean,default:!0},crossorigin:{type:String},modal:{type:Boolean,default:!0},guides:{type:Boolean,default:!0},center:{type:Boolean,default:!0},highlight:{type:Boolean,default:!0},background:{type:Boolean,default:!0},autoCrop:{type:Boolean,default:!0},autoCropArea:Number,movable:{type:Boolean,default:!0},rotatable:{type:Boolean,default:!0},scalable:{type:Boolean,default:!0},zoomable:{type:Boolean,default:!0},zoomOnTouch:{type:Boolean,default:!0},zoomOnWheel:{type:Boolean,default:!0},wheelZoomRatio:Number,cropBoxMovable:{type:Boolean,default:!0},cropBoxResizable:{type:Boolean,default:!0},toggleDragModeOnDblclick:{type:Boolean,default:!0},minCanvasWidth:Number,minCanvasHeight:Number,minCropBoxWidth:Number,minCropBoxHeight:Number,minContainerWidth:Number,minContainerHeight:Number,ready:Function,cropstart:Function,cropmove:Function,cropend:Function,crop:Function,zoom:Function},mounted(){const{containerStyle:t,src:e,alt:i,imgStyle:a,...r}=this.$options.props,n={};for(const o in r)this[o]!==void 0&&(n[o]=this[o]);this.cropper=new Re(this.$refs.img,n)},methods:{reset(){return this.cropper.reset()},clear(){return this.cropper.clear()},initCrop(){return this.cropper.crop()},replace(t,e=!1){return this.cropper.replace(t,e)},enable(){return this.cropper.enable()},disable(){return this.cropper.disable()},destroy(){return this.cropper.destroy()},move(t,e){return this.cropper.move(t,e)},moveTo(t,e=t){return this.cropper.moveTo(t,e)},relativeZoom(t,e){return this.cropper.zoom(t,e)},zoomTo(t,e){return this.cropper.zoomTo(t,e)},rotate(t){return this.cropper.rotate(t)},rotateTo(t){return this.cropper.rotateTo(t)},scaleX(t){return this.cropper.scaleX(t)},scaleY(t){return this.cropper.scaleY(t)},scale(t,e=t){return this.cropper.scale(t,e)},getData(t=!1){return this.cropper.getData(t)},setData(t){return this.cropper.setData(t)},getContainerData(){return this.cropper.getContainerData()},getImageData(){return this.cropper.getImageData()},getCanvasData(){return this.cropper.getCanvasData()},setCanvasData(t){return this.cropper.setCanvasData(t)},getCropBoxData(){return this.cropper.getCropBoxData()},setCropBoxData(t){return this.cropper.setCropBoxData(t)},getCroppedCanvas(t={}){return this.cropper.getCroppedCanvas(t)},setAspectRatio(t){return this.cropper.setAspectRatio(t)},setDragMode(t){return this.cropper.setDragMode(t)}}},ji=Ie({name:"FsCropper",components:{VueCropper:Ai},props:{title:{type:String},cropperHeight:{type:[String,Number]},dialogWidth:{type:[String,Number],default:"50%"},maxSize:{type:Number,default:5},uploadTip:{type:String},cropper:{type:Object},accept:{type:String,default:".jpg, .jpeg, .png, .gif, .webp"},output:{type:String,default:"blob"},compressQuality:{type:Number,default:.8}},emits:["cancel","done","ready"],setup(t,e){const{ui:i}=Fe(),{t:a}=Qe(),r=F(!1),n=F(),o=F(),l=F(!1),c=F(),s=F(),h=F(),p=F({x:1,y:1});function g(){r.value=!1}function m(){R(),e.emit("cancel")}const b=i.dialog.buildOnClosedBind(m),w=i.dialog.customClass,M=Mt(()=>({...b,[w]:"fs-cropper-dialog",...i.formWrapper.buildWidthBind(i.dialog.name,"960px"),...i.formWrapper.buildInitBind(i.dialog.name),title:t.title||a("fs.extends.cropper.title")}));function k(d){r.value=!0,d!=null&&d!==""&&(c.value=d)}function y(){r.value=!1}function R(){l.value=!1,o.value!=null&&(o.value.value=null,o.value=null),n.value!=null&&n.value.clear()}function N(){return n.value}const u={cropper:N(),zoom:xt,clear:R,close:y,open:k};function v(d){e.emit("ready",{event:d,...u})}function B(d){return d.preventDefault(),!1}function E(){o.value.click()}function H(d){return d.type.indexOf("image")===-1?(i.message.warn("请选择合适的文件类型"),!1):t.maxSize>0&&d.size/1024/1024>t.maxSize?(i.message.warn(`图片大小超出最大限制(${t.maxSize}MB),请重新选择.`),!1):!0}function P(d){const D=d.target.files[0];if(D.type.indexOf("image/")===-1){i.message.warn("Please select an image file");return}if(typeof FileReader=="function"){const q=new FileReader;q.onload=pt=>{c.value=pt.target.result,n.value.replace(pt.target.result)},q.readAsDataURL(D)}else i.message.error("Sorry, FileReader API not supported")}function $(d){d.preventDefault();const D=d.target.files||d.dataTransfer.files;if(D==null)return;l.value=!0;const q=D[0];H(q)&&(h.value=q,P(d))}function L(d,D){return D==null&&(D=t.compressQuality),n.value.getCroppedCanvas().toDataURL(d,D)}async function Y(d,D){return D==null&&(D=t.compressQuality),new Promise((q,pt)=>{function Ae(je){q(je)}n.value.getCroppedCanvas().toBlob(Ae,d,D)})}function j(d){e.emit("done",d)}async function z(d){const D={file:d};if(t.output==="all"){const q=await Y(d.type),pt=L(d.type);D.blob=q,D.dataUrl=pt,j(D);return}if(t.output==="blob"){D.blob=await Y(d.type),j(D);return}t.output==="dataUrl"&&(D.dataUrl=L(d.type),j(D))}async function tt(){if(!l.value){i.message.warn("请先选择图片");return}await z(h.value),r.value=!1}function ht(){n.value.scaleX(p.value.x*=-1)}function et(){n.value.scaleY(p.value.y*=-1)}function lt(){s.value=JSON.stringify(n.value.getCropBoxData(),null,4)}function bt(){s.value=JSON.stringify(n.value.getData(),null,4)}function yt(d,D){n.value.move(d,D)}function ct(){n.value.reset()}function it(d){n.value.rotate(d)}function Tt(){n.value.setCropBoxData(JSON.parse(s.value))}function Nt(){n.value.setData(JSON.parse(s.value))}function He(){o.value.click()}function xt(d){n.value.relativeZoom(d)}const Le=Mt(()=>{const d="small";return[{size:d,round:!0,icon:i.icons.edit,text:a("fs.extends.cropper.reChoose"),onClick(){E()}},{size:d,round:!0,text:a("fs.extends.cropper.flipX"),onClick(){ht()}},{size:d,round:!0,text:a("fs.extends.cropper.flipY"),onClick(){et()}},{size:d,round:!0,icon:i.icons.zoomIn,onClick(){xt(.1)}},{size:d,round:!0,icon:i.icons.zoomOut,onClick(){xt(-.1)}},{size:d,round:!0,icon:i.icons.refreshLeft,onClick(){it(90)}},{size:d,round:!0,icon:i.icons.refreshRight,onClick(){it(-90)}},{size:d,round:!0,icon:i.icons.refresh,text:a("fs.extends.cropper.reset"),onClick(){ct()}}]}),Ye=Mt(()=>({title:a("fs.extends.cropper.title"),preview:a("fs.extends.cropper.preview"),cancel:a("fs.extends.cropper.cancel"),confirm:a("fs.extends.cropper.confirm"),chooseImage:a("fs.extends.cropper.chooseImage")})),Xe=Mt(()=>t.uploadTip!=null&&t.uploadTip!==""?t.uploadTip:t.maxSize>0?`${a("fs.extends.cropper.onlySupport")} ${t.accept.replace(/,/g,"、")}, - ${a("fs.extends.cropper.sizeLimit")} ${t.maxSize}M`:`${a("fs.extends.cropper.onlySupport")}${t.accept},${a("fs.extends.cropper.sizeNoLimit")}`);return{ui:i,cropperRef:n,fileInputRef:o,dialogVisible:r,dialogBinding:M,isLoaded:l,imgSrc:c,data:s,file:h,scale:p,computedButtons:Le,handleClose:g,setData:Nt,handleClosed:m,close:y,showFileChooser:He,zoom:xt,setCropBoxData:Tt,rotate:it,reset:ct,move:yt,getData:bt,getCropBoxData:lt,flipY:et,flipX:ht,doCropper:tt,doOutput:z,getCropImageBlob:Y,getCropImageDataUrl:L,handleChange:$,setImage:P,checkFile:H,handleClick:E,preventDefault:B,open:k,clear:R,getCropperRef:N,ready:v,computedTexts:Ye,computedUploadTip:Xe}},data(){return{}},computed:{_cropper(){const t={aspectRatio:1,ready:this.ready};return this.cropper==null?t:Object.assign(t,this.cropper)},_cropperHeight(){let t=this.cropperHeight;return t==null&&(t=document.documentElement.clientHeight*.55,t<270&&(t=270)),typeof t=="number"?t+"px":t},_dialogWidth(){let t=this.dialogWidth;return t==null&&(t="50%"),typeof t=="number"?t+"px":t}}}),Ii={class:"fs-cropper-dialog-wrap"},Pi=["accept"],Ui={class:"fs-cropper-dialog__choose fs-cropper-dialog_left"},_i={class:"fs-cropper-dialog__edit fs-cropper-dialog_left"},$i={class:"fs-cropper-dialog__edit-area"},qi={class:"tool-bar"},Fi={class:"fs-cropper-dialog__preview"},Qi={class:"fs-cropper-dialog__preview-title"},Zi={class:"dialog-footer"};function Vi(t,e,i,a,r,n){const o=Gt("fs-button"),l=Gt("vue-cropper");return Ct(),St(ee(t.ui.dialog.name),Ht({ref:"cropperDialogRef",[t.ui.dialog.visible]:t.dialogVisible,["onUpdate:"+t.ui.dialog.visible]:e[2]||(e[2]=c=>t.dialogVisible=c),"append-to-body":"",width:"900px","close-on-click-modal":!0},t.dialogBinding,{"destroy-on-close":!1}),{footer:Wt(()=>[X("div",Zi,[Dt(o,{size:"small",text:t.computedTexts.cancel,onClick:t.handleClose},null,8,["text","onClick"]),Dt(o,{type:"primary",size:"small",text:t.computedTexts.confirm,onClick:e[1]||(e[1]=c=>t.doCropper())},null,8,["text"])])]),default:Wt(()=>[X("div",Ii,[Et(X("input",{ref:"fileInputRef",type:"file",accept:t.accept,onChange:e[0]||(e[0]=(...c)=>t.handleChange&&t.handleChange(...c))},null,40,Pi),[[Rt,!1]]),Et(X("div",Ui,[Dt(o,{round:"",text:t.computedTexts.chooseImage,onClick:t.showFileChooser},null,8,["text","onClick"]),X("p",null,te(t.computedUploadTip),1)],512),[[Rt,!t.isLoaded]]),Et(X("div",_i,[X("div",$i,[Dt(l,Ht({ref:"cropperRef",src:t.imgSrc,preview:".preview",style:{height:t._cropperHeight}},t._cropper),null,16,["src","style"])]),X("div",qi,[(Ct(),St(ee(t.ui.buttonGroup.name),null,{default:Wt(()=>[(Ct(!0),Pe(Ue,null,_e(t.computedButtons,(c,s)=>(Ct(),St(o,Ht({key:s,ref_for:!0},c),null,16))),128))]),_:1}))])],512),[[Rt,t.isLoaded]]),X("div",Fi,[X("span",Qi,te(t.computedTexts.preview),1),e[3]||(e[3]=X("div",{class:"fs-cropper-dialog__preview-120 preview"},null,-1)),X("div",{class:$e(["fs-cropper-dialog__preview-65 preview",{round:t._cropper.aspectRatio===1}])},null,2)])])]),_:1},16)}const Gi=qe(ji,[["render",Vi]]);export{Gi as default}; +*/function ae(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),i.push.apply(i,a)}return i}function be(t){for(var e=1;et.length)&&(e=t.length);for(var i=0,a=new Array(e);i
',ui=Number.isNaN||_.isNaN;function f(t){return typeof t=="number"&&!ui(t)}var ge=function(t){return t>0&&t<1/0};function Lt(t){return typeof t>"u"}function G(t){return Xt(t)==="object"&&t!==null}var di=Object.prototype.hasOwnProperty;function rt(t){if(!G(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&di.call(i,"isPrototypeOf")}catch{return!1}}function S(t){return typeof t=="function"}var mi=Array.prototype.slice;function ze(t){return Array.from?Array.from(t):mi.call(t)}function O(t,e){return t&&S(e)&&(Array.isArray(t)||f(t.length)?ze(t).forEach(function(i,a){e.call(t,i,a,t)}):G(t)&&Object.keys(t).forEach(function(i){e.call(t,t[i],i,t)})),t}var C=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),a=1;a0&&i.forEach(function(r){G(r)&&Object.keys(r).forEach(function(n){t[n]=r[n]})}),t},fi=/\.\d*(?:0|9){12}\d*$/;function ot(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return fi.test(t)?Math.round(t*e)/e:t}var gi=/^width|height|left|top|marginLeft|marginTop$/;function V(t,e){var i=t.style;O(e,function(a,r){gi.test(r)&&f(a)&&(a="".concat(a,"px")),i[r]=a})}function vi(t,e){return t.classList?t.classList.contains(e):t.className.indexOf(e)>-1}function z(t,e){if(e){if(f(t.length)){O(t,function(a){z(a,e)});return}if(t.classList){t.classList.add(e);return}var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function U(t,e){if(e){if(f(t.length)){O(t,function(i){U(i,e)});return}if(t.classList){t.classList.remove(e);return}t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,""))}}function nt(t,e,i){if(e){if(f(t.length)){O(t,function(a){nt(a,e,i)});return}i?z(t,e):U(t,e)}}var wi=/([a-z\d])([A-Z])/g;function Jt(t){return t.replace(wi,"$1-$2").toLowerCase()}function Ft(t,e){return G(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(Jt(e)))}function wt(t,e,i){G(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(Jt(e)),i)}function bi(t,e){if(G(t[e]))try{delete t[e]}catch{t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch{t.dataset[e]=void 0}else t.removeAttribute("data-".concat(Jt(e)))}var Ne=/\s\s*/,Se=function(){var t=!1;if(Tt){var e=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(r){e=r}});_.addEventListener("test",i,a),_.removeEventListener("test",i,a)}return t}();function I(t,e,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=i;e.trim().split(Ne).forEach(function(n){if(!Se){var o=t.listeners;o&&o[n]&&o[n][i]&&(r=o[n][i],delete o[n][i],Object.keys(o[n]).length===0&&delete o[n],Object.keys(o).length===0&&delete t.listeners)}t.removeEventListener(n,r,a)})}function A(t,e,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=i;e.trim().split(Ne).forEach(function(n){if(a.once&&!Se){var o=t.listeners,l=o===void 0?{}:o;r=function(){delete l[n][i],t.removeEventListener(n,r,a);for(var c=arguments.length,s=new Array(c),h=0;hMath.abs(i)&&(i=g)})}),i}function kt(t,e){var i=t.pageX,a=t.pageY,r={endX:i,endY:a};return e?r:be({startX:i,startY:a},r)}function Ci(t){var e=0,i=0,a=0;return O(t,function(r){var n=r.startX,o=r.startY;e+=n,i+=o,a+=1}),e/=a,i/=a,{pageX:e,pageY:i}}function Z(t){var e=t.aspectRatio,i=t.height,a=t.width,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",n=ge(a),o=ge(i);if(n&&o){var l=i*e;r==="contain"&&l>a||r==="cover"&&l90?{width:c,height:l}:{width:l,height:c}}function Mi(t,e,i,a){var r=e.aspectRatio,n=e.naturalWidth,o=e.naturalHeight,l=e.rotate,c=l===void 0?0:l,s=e.scaleX,h=s===void 0?1:s,p=e.scaleY,g=p===void 0?1:p,m=i.aspectRatio,b=i.naturalWidth,w=i.naturalHeight,M=a.fillColor,k=M===void 0?"transparent":M,y=a.imageSmoothingEnabled,R=y===void 0?!0:y,N=a.imageSmoothingQuality,u=N===void 0?"low":N,v=a.maxWidth,B=v===void 0?1/0:v,E=a.maxHeight,H=E===void 0?1/0:E,P=a.minWidth,$=P===void 0?0:P,L=a.minHeight,Y=L===void 0?0:L,j=document.createElement("canvas"),T=j.getContext("2d"),tt=Z({aspectRatio:m,width:B,height:H}),ht=Z({aspectRatio:m,width:$,height:Y},"cover"),et=Math.min(tt.width,Math.max(ht.width,b)),lt=Math.min(tt.height,Math.max(ht.height,w)),bt=Z({aspectRatio:r,width:B,height:H}),yt=Z({aspectRatio:r,width:$,height:Y},"cover"),ct=Math.min(bt.width,Math.max(yt.width,n)),it=Math.min(bt.height,Math.max(yt.height,o)),zt=[-ct/2,-it/2,ct,it];return j.width=ot(et),j.height=ot(lt),T.fillStyle=k,T.fillRect(0,0,et,lt),T.save(),T.translate(et/2,lt/2),T.rotate(c*Math.PI/180),T.scale(h,g),T.imageSmoothingEnabled=R,T.imageSmoothingQuality=u,T.drawImage.apply(T,[t].concat(xe(zt.map(function(Nt){return Math.floor(ot(Nt))})))),T.restore(),j}var Ee=String.fromCharCode;function Bi(t,e,i){var a="";i+=e;for(var r=e;r0;)i.push(Ee.apply(null,ze(r.subarray(0,a)))),r=r.subarray(a);return"data:".concat(e,";base64,").concat(btoa(i.join("")))}function zi(t){var e=new DataView(t),i;try{var a,r,n;if(e.getUint8(0)===255&&e.getUint8(1)===216)for(var o=e.byteLength,l=2;l+1=8&&(n=s+p)}}}if(n){var g=e.getUint16(n,a),m,b;for(b=0;b=0?r:Oe),height:Math.max(i.offsetHeight,n>=0?n:Te)};this.containerData=o,V(a,{width:o.width,height:o.height}),z(t,W),U(a,W)},initCanvas:function(){var t=this.containerData,e=this.imageData,i=this.options.viewMode,a=Math.abs(e.rotate)%180===90,r=a?e.naturalHeight:e.naturalWidth,n=a?e.naturalWidth:e.naturalHeight,o=r/n,l=t.width,c=t.height;t.height*o>t.width?i===3?l=t.height*o:c=t.width/o:i===3?c=t.width/o:l=t.height*o;var s={aspectRatio:o,naturalWidth:r,naturalHeight:n,width:l,height:c};this.canvasData=s,this.limited=i===1||i===2,this.limitCanvas(!0,!0),s.width=Math.min(Math.max(s.width,s.minWidth),s.maxWidth),s.height=Math.min(Math.max(s.height,s.minHeight),s.maxHeight),s.left=(t.width-s.width)/2,s.top=(t.height-s.height)/2,s.oldLeft=s.left,s.oldTop=s.top,this.initialCanvasData=C({},s)},limitCanvas:function(t,e){var i=this.options,a=this.containerData,r=this.canvasData,n=this.cropBoxData,o=i.viewMode,l=r.aspectRatio,c=this.cropped&&n;if(t){var s=Number(i.minCanvasWidth)||0,h=Number(i.minCanvasHeight)||0;o>1?(s=Math.max(s,a.width),h=Math.max(h,a.height),o===3&&(h*l>s?s=h*l:h=s/l)):o>0&&(s?s=Math.max(s,c?n.width:0):h?h=Math.max(h,c?n.height:0):c&&(s=n.width,h=n.height,h*l>s?s=h*l:h=s/l));var p=Z({aspectRatio:l,width:s,height:h});s=p.width,h=p.height,r.minWidth=s,r.minHeight=h,r.maxWidth=1/0,r.maxHeight=1/0}if(e)if(o>(c?0:1)){var g=a.width-r.width,m=a.height-r.height;r.minLeft=Math.min(0,g),r.minTop=Math.min(0,m),r.maxLeft=Math.max(0,g),r.maxTop=Math.max(0,m),c&&this.limited&&(r.minLeft=Math.min(n.left,n.left+(n.width-r.width)),r.minTop=Math.min(n.top,n.top+(n.height-r.height)),r.maxLeft=n.left,r.maxTop=n.top,o===2&&(r.width>=a.width&&(r.minLeft=Math.min(0,g),r.maxLeft=Math.max(0,g)),r.height>=a.height&&(r.minTop=Math.min(0,m),r.maxTop=Math.max(0,m))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=a.width,r.maxTop=a.height},renderCanvas:function(t,e){var i=this.canvasData,a=this.imageData;if(e){var r=Di({width:a.naturalWidth*Math.abs(a.scaleX||1),height:a.naturalHeight*Math.abs(a.scaleY||1),degree:a.rotate||0}),n=r.width,o=r.height,l=i.width*(n/i.naturalWidth),c=i.height*(o/i.naturalHeight);i.left-=(l-i.width)/2,i.top-=(c-i.height)/2,i.width=l,i.height=c,i.aspectRatio=n/o,i.naturalWidth=n,i.naturalHeight=o,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heighte.width?r.height=r.width/i:r.width=r.height*i),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*a),r.height=Math.max(r.minHeight,r.height*a),r.left=e.left+(e.width-r.width)/2,r.top=e.top+(e.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=C({},r)},limitCropBox:function(t,e){var i=this.options,a=this.containerData,r=this.canvasData,n=this.cropBoxData,o=this.limited,l=i.aspectRatio;if(t){var c=Number(i.minCropBoxWidth)||0,s=Number(i.minCropBoxHeight)||0,h=o?Math.min(a.width,r.width,r.width+r.left,a.width-r.left):a.width,p=o?Math.min(a.height,r.height,r.height+r.top,a.height-r.top):a.height;c=Math.min(c,a.width),s=Math.min(s,a.height),l&&(c&&s?s*l>c?s=c/l:c=s*l:c?s=c/l:s&&(c=s*l),p*l>h?p=h/l:h=p*l),n.minWidth=Math.min(c,h),n.minHeight=Math.min(s,p),n.maxWidth=h,n.maxHeight=p}e&&(o?(n.minLeft=Math.max(0,r.left),n.minTop=Math.max(0,r.top),n.maxLeft=Math.min(a.width,r.left+r.width)-n.width,n.maxTop=Math.min(a.height,r.top+r.height)-n.height):(n.minLeft=0,n.minTop=0,n.maxLeft=a.width-n.width,n.maxTop=a.height-n.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=e.width&&i.height>=e.height?De:Zt),V(this.cropBox,C({width:i.width,height:i.height},gt({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),st(this.element,Pt,this.getData())}},Wi={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,a=e?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",n=document.createElement("img");if(e&&(n.crossOrigin=e),n.src=a,n.alt=r,this.viewBox.appendChild(n),this.viewBoxImage=n,!!i){var o=i;typeof i=="string"?o=t.ownerDocument.querySelectorAll(i):i.querySelector&&(o=[i]),this.previews=o,O(o,function(l){var c=document.createElement("img");wt(l,Bt,{width:l.offsetWidth,height:l.offsetHeight,html:l.innerHTML}),e&&(c.crossOrigin=e),c.src=a,c.alt=r,c.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',l.innerHTML="",l.appendChild(c)})}},resetPreview:function(){O(this.previews,function(t){var e=Ft(t,Bt);V(t,{width:e.width,height:e.height}),t.innerHTML=e.html,bi(t,Bt)})},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,a=i.width,r=i.height,n=t.width,o=t.height,l=i.left-e.left-t.left,c=i.top-e.top-t.top;!this.cropped||this.disabled||(V(this.viewBoxImage,C({width:n,height:o},gt(C({translateX:-l,translateY:-c},t)))),O(this.previews,function(s){var h=Ft(s,Bt),p=h.width,g=h.height,m=p,b=g,w=1;a&&(w=p/a,b=r*w),r&&b>g&&(w=g/r,m=a*w,b=g),V(s,{width:m,height:b}),V(s.getElementsByTagName("img")[0],C({width:n*w,height:o*w},gt(C({translateX:-l*w,translateY:-c*w},t))))}))}},Ei={bind:function(){var t=this.element,e=this.options,i=this.cropper;S(e.cropstart)&&A(t,$t,e.cropstart),S(e.cropmove)&&A(t,_t,e.cropmove),S(e.cropend)&&A(t,Ut,e.cropend),S(e.crop)&&A(t,Pt,e.crop),S(e.zoom)&&A(t,qt,e.zoom),A(i,he,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&A(i,de,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&A(i,se,this.onDblclick=this.dblclick.bind(this)),A(t.ownerDocument,le,this.onCropMove=this.cropMove.bind(this)),A(t.ownerDocument,ce,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&A(window,ue,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;S(e.cropstart)&&I(t,$t,e.cropstart),S(e.cropmove)&&I(t,_t,e.cropmove),S(e.cropend)&&I(t,Ut,e.cropend),S(e.crop)&&I(t,Pt,e.crop),S(e.zoom)&&I(t,qt,e.zoom),I(i,he,this.onCropStart),e.zoomable&&e.zoomOnWheel&&I(i,de,this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&I(i,se,this.onDblclick),I(t.ownerDocument,le,this.onCropMove),I(t.ownerDocument,ce,this.onCropEnd),e.responsive&&I(window,ue,this.onResize)}},Ri={resize:function(){if(!this.disabled){var t=this.options,e=this.container,i=this.containerData,a=e.offsetWidth/i.width,r=e.offsetHeight/i.height,n=Math.abs(a-1)>Math.abs(r-1)?a:r;if(n!==1){var o,l;t.restore&&(o=this.getCanvasData(),l=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(O(o,function(c,s){o[s]=c*n})),this.setCropBoxData(O(l,function(c,s){l[s]=c*n})))}}},dblclick:function(){this.disabled||this.options.dragMode===ke||this.setDragMode(vi(this.dragBox,jt)?Be:Kt)},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){e.wheeling=!1},50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||(t.type==="mousedown"||t.type==="pointerdown"&&t.pointerType==="mouse")&&(f(e)&&e!==1||f(i)&&i!==0||t.ctrlKey))){var a=this.options,r=this.pointers,n;t.changedTouches?O(t.changedTouches,function(o){r[o.identifier]=kt(o)}):r[t.pointerId||0]=kt(t),Object.keys(r).length>1&&a.zoomable&&a.zoomOnTouch?n=Me:n=Ft(t.target,vt),si.test(n)&&st(this.element,$t,{originalEvent:t,action:n})!==!1&&(t.preventDefault(),this.action=n,this.cropping=!1,n===Ce&&(this.cropping=!0,z(this.dragBox,Ot)))}},cropMove:function(t){var e=this.action;if(!(this.disabled||!e)){var i=this.pointers;t.preventDefault(),st(this.element,_t,{originalEvent:t,action:e})!==!1&&(t.changedTouches?O(t.changedTouches,function(a){C(i[a.identifier]||{},kt(a,!0))}):C(i[t.pointerId||0]||{},kt(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?O(t.changedTouches,function(a){delete i[a.identifier]}):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,nt(this.dragBox,Ot,this.cropped&&this.options.modal)),st(this.element,Ut,{originalEvent:t,action:e}))}}},Hi={change:function(t){var e=this.options,i=this.canvasData,a=this.containerData,r=this.cropBoxData,n=this.pointers,o=this.action,l=e.aspectRatio,c=r.left,s=r.top,h=r.width,p=r.height,g=c+h,m=s+p,b=0,w=0,M=a.width,k=a.height,y=!0,R;!l&&t.shiftKey&&(l=h&&p?h/p:1),this.limited&&(b=r.minLeft,w=r.minTop,M=b+Math.min(a.width,i.width,i.left+i.width),k=w+Math.min(a.height,i.height,i.top+i.height));var N=n[Object.keys(n)[0]],u={x:N.endX-N.startX,y:N.endY-N.startY},v=function(B){switch(B){case K:g+u.x>M&&(u.x=M-g);break;case J:c+u.xk&&(u.y=k-m);break}};switch(o){case Zt:c+=u.x,s+=u.y;break;case K:if(u.x>=0&&(g>=M||l&&(s<=w||m>=k))){y=!1;break}v(K),h+=u.x,h<0&&(o=J,h=-h,c-=h),l&&(p=h/l,s+=(r.height-p)/2);break;case Q:if(u.y<=0&&(s<=w||l&&(c<=b||g>=M))){y=!1;break}v(Q),p-=u.y,s+=u.y,p<0&&(o=at,p=-p,s-=p),l&&(h=p*l,c+=(r.width-h)/2);break;case J:if(u.x<=0&&(c<=b||l&&(s<=w||m>=k))){y=!1;break}v(J),h-=u.x,c+=u.x,h<0&&(o=K,h=-h,c-=h),l&&(p=h/l,s+=(r.height-p)/2);break;case at:if(u.y>=0&&(m>=k||l&&(c<=b||g>=M))){y=!1;break}v(at),p+=u.y,p<0&&(o=Q,p=-p,s-=p),l&&(h=p*l,c+=(r.width-h)/2);break;case ut:if(l){if(u.y<=0&&(s<=w||g>=M)){y=!1;break}v(Q),p-=u.y,s+=u.y,h=p*l}else v(Q),v(K),u.x>=0?gw&&(p-=u.y,s+=u.y):(p-=u.y,s+=u.y);h<0&&p<0?(o=ft,p=-p,h=-h,s-=p,c-=h):h<0?(o=dt,h=-h,c-=h):p<0&&(o=mt,p=-p,s-=p);break;case dt:if(l){if(u.y<=0&&(s<=w||c<=b)){y=!1;break}v(Q),p-=u.y,s+=u.y,h=p*l,c+=r.width-h}else v(Q),v(J),u.x<=0?c>b?(h-=u.x,c+=u.x):u.y<=0&&s<=w&&(y=!1):(h-=u.x,c+=u.x),u.y<=0?s>w&&(p-=u.y,s+=u.y):(p-=u.y,s+=u.y);h<0&&p<0?(o=mt,p=-p,h=-h,s-=p,c-=h):h<0?(o=ut,h=-h,c-=h):p<0&&(o=ft,p=-p,s-=p);break;case ft:if(l){if(u.x<=0&&(c<=b||m>=k)){y=!1;break}v(J),h-=u.x,c+=u.x,p=h/l}else v(at),v(J),u.x<=0?c>b?(h-=u.x,c+=u.x):u.y>=0&&m>=k&&(y=!1):(h-=u.x,c+=u.x),u.y>=0?m=0&&(g>=M||m>=k)){y=!1;break}v(K),h+=u.x,p=h/l}else v(at),v(K),u.x>=0?g=0&&m>=k&&(y=!1):h+=u.x,u.y>=0?m0?o=u.y>0?mt:ut:u.x<0&&(c-=h,o=u.y>0?ft:dt),u.y<0&&(s-=p),this.cropped||(U(this.cropBox,W),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}y&&(r.width=h,r.height=p,r.left=c,r.top=s,this.action=o,this.renderCropBox()),O(n,function(B){B.startX=B.endX,B.startY=B.endY})}},Li={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&z(this.dragBox,Ot),U(this.cropBox,W),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=C({},this.initialImageData),this.canvasData=C({},this.initialCanvasData),this.cropBoxData=C({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(C(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),U(this.dragBox,Ot),z(this.cropBox,W)),this},replace:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,O(this.previews,function(i){i.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,U(this.cropper,ne)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,z(this.cropper,ne)),this},destroy:function(){var t=this.element;return t[x]?(t[x]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.canvasData,a=i.left,r=i.top;return this.moveTo(Lt(t)?t:a+Number(t),Lt(e)?e:r+Number(e))},moveTo:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.canvasData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(f(t)&&(i.left=t,a=!0),f(e)&&(i.top=e,a=!0),a&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=Number(t),t<0?t=1/(1-t):t=1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var a=this.options,r=this.canvasData,n=r.width,o=r.height,l=r.naturalWidth,c=r.naturalHeight;if(t=Number(t),t>=0&&this.ready&&!this.disabled&&a.zoomable){var s=l*t,h=c*t;if(st(this.element,qt,{ratio:t,oldRatio:n/l,originalEvent:i})===!1)return this;if(i){var p=this.pointers,g=We(this.cropper),m=p&&Object.keys(p).length?Ci(p):{pageX:i.pageX,pageY:i.pageY};r.left-=(s-n)*((m.pageX-g.left-r.left)/n),r.top-=(h-o)*((m.pageY-g.top-r.top)/o)}else rt(e)&&f(e.x)&&f(e.y)?(r.left-=(s-n)*((e.x-r.left)/n),r.top-=(h-o)*((e.y-r.top)/o)):(r.left-=(s-n)/2,r.top-=(h-o)/2);r.width=s,r.height=h,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),f(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,f(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(f(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.imageData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(f(t)&&(i.scaleX=t,a=!0),f(e)&&(i.scaleY=e,a=!0),a&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.options,i=this.imageData,a=this.canvasData,r=this.cropBoxData,n;if(this.ready&&this.cropped){n={x:r.left-a.left,y:r.top-a.top,width:r.width,height:r.height};var o=i.width/i.naturalWidth;if(O(n,function(s,h){n[h]=s/o}),t){var l=Math.round(n.y+n.height),c=Math.round(n.x+n.width);n.x=Math.round(n.x),n.y=Math.round(n.y),n.width=c-n.x,n.height=l-n.y}}else n={x:0,y:0,width:0,height:0};return e.rotatable&&(n.rotate=i.rotate||0),e.scalable&&(n.scaleX=i.scaleX||1,n.scaleY=i.scaleY||1),n},setData:function(t){var e=this.options,i=this.imageData,a=this.canvasData,r={};if(this.ready&&!this.disabled&&rt(t)){var n=!1;e.rotatable&&f(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,n=!0),e.scalable&&(f(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,n=!0),f(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,n=!0)),n&&this.renderCanvas(!0,!0);var o=i.width/i.naturalWidth;f(t.x)&&(r.left=t.x*o+a.left),f(t.y)&&(r.top=t.y*o+a.top),f(t.width)&&(r.width=t.width*o),f(t.height)&&(r.height=t.height*o),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?C({},this.containerData):{}},getImageData:function(){return this.sized?C({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&O(["left","top","width","height","naturalWidth","naturalHeight"],function(i){e[i]=t[i]}),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&rt(t)&&(f(t.left)&&(e.left=t.left),f(t.top)&&(e.top=t.top),f(t.width)?(e.width=t.width,e.height=t.width/i):f(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,e;return this.ready&&this.cropped&&(e={left:t.left,top:t.top,width:t.width,height:t.height}),e||{}},setCropBoxData:function(t){var e=this.cropBoxData,i=this.options.aspectRatio,a,r;return this.ready&&this.cropped&&!this.disabled&&rt(t)&&(f(t.left)&&(e.left=t.left),f(t.top)&&(e.top=t.top),f(t.width)&&t.width!==e.width&&(a=!0,e.width=t.width),f(t.height)&&t.height!==e.height&&(r=!0,e.height=t.height),i&&(a?e.height=e.width/i:r&&(e.width=e.height*i)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=Mi(this.image,this.imageData,e,t);if(!this.cropped)return i;var a=this.getData(t.rounded),r=a.x,n=a.y,o=a.width,l=a.height,c=i.width/Math.floor(e.naturalWidth);c!==1&&(r*=c,n*=c,o*=c,l*=c);var s=o/l,h=Z({aspectRatio:s,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),p=Z({aspectRatio:s,width:t.minWidth||0,height:t.minHeight||0},"cover"),g=Z({aspectRatio:s,width:t.width||(c!==1?i.width:o),height:t.height||(c!==1?i.height:l)}),m=g.width,b=g.height;m=Math.min(h.width,Math.max(p.width,m)),b=Math.min(h.height,Math.max(p.height,b));var w=document.createElement("canvas"),M=w.getContext("2d");w.width=ot(m),w.height=ot(b),M.fillStyle=t.fillColor||"transparent",M.fillRect(0,0,m,b);var k=t.imageSmoothingEnabled,y=k===void 0?!0:k,R=t.imageSmoothingQuality;M.imageSmoothingEnabled=y,R&&(M.imageSmoothingQuality=R);var N=i.width,u=i.height,v=r,B=n,E,H,P,$,L,Y;v<=-o||v>N?(v=0,E=0,P=0,L=0):v<=0?(P=-v,v=0,E=Math.min(N,o+v),L=E):v<=N&&(P=0,E=Math.min(o,N-v),L=E),E<=0||B<=-l||B>u?(B=0,H=0,$=0,Y=0):B<=0?($=-B,B=0,H=Math.min(u,l+B),Y=H):B<=u&&($=0,H=Math.min(l,u-B),Y=H);var j=[v,B,E,H];if(L>0&&Y>0){var T=m/o;j.push(P*T,$*T,L*T,Y*T)}return M.drawImage.apply(M,[i].concat(xe(j.map(function(tt){return Math.floor(ot(tt))})))),w},setAspectRatio:function(t){var e=this.options;return!this.disabled&&!Lt(t)&&(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,a=this.face;if(this.ready&&!this.disabled){var r=t===Kt,n=e.movable&&t===Be;t=r||n?t:ke,e.dragMode=t,wt(i,vt,t),nt(i,jt,r),nt(i,It,n),e.cropBoxMovable||(wt(a,vt,t),nt(a,jt,r),nt(a,It,n))}return this}},Yi=_.Cropper,Re=function(){function t(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(Ze(this,t),!e||!ci.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=C({},fe,rt(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return Ke(t,[{key:"init",value:function(){var e=this.element,i=e.tagName.toLowerCase(),a;if(!e[x]){if(e[x]=this,i==="img"){if(this.isImg=!0,a=e.getAttribute("src")||"",this.originalUrl=a,!a)return;a=e.src}else i==="canvas"&&window.HTMLCanvasElement&&(a=e.toDataURL());this.load(a)}}},{key:"load",value:function(e){var i=this;if(e){this.url=e,this.imageData={};var a=this.element,r=this.options;if(!r.rotatable&&!r.scalable&&(r.checkOrientation=!1),!r.checkOrientation||!window.ArrayBuffer){this.clone();return}if(hi.test(e)){li.test(e)?this.read(Oi(e)):this.clone();return}var n=new XMLHttpRequest,o=this.clone.bind(this);this.reloading=!0,this.xhr=n,n.onabort=o,n.onerror=o,n.ontimeout=o,n.onprogress=function(){n.getResponseHeader("content-type")!==me&&n.abort()},n.onload=function(){i.read(n.response)},n.onloadend=function(){i.reloading=!1,i.xhr=null},r.checkCrossOrigin&&ve(e)&&a.crossOrigin&&(e=we(e)),n.open("GET",e,!0),n.responseType="arraybuffer",n.withCredentials=a.crossOrigin==="use-credentials",n.send()}}},{key:"read",value:function(e){var i=this.options,a=this.imageData,r=zi(e),n=0,o=1,l=1;if(r>1){this.url=Ti(e,me);var c=Ni(r);n=c.rotate,o=c.scaleX,l=c.scaleY}i.rotatable&&(a.rotate=n),i.scalable&&(a.scaleX=o,a.scaleY=l),this.clone()}},{key:"clone",value:function(){var e=this.element,i=this.url,a=e.crossOrigin,r=i;this.options.checkCrossOrigin&&ve(i)&&(a||(a="anonymous"),r=we(i)),this.crossOrigin=a,this.crossOriginUrl=r;var n=document.createElement("img");a&&(n.crossOrigin=a),n.src=r||i,n.alt=e.alt||"The image to crop",this.image=n,n.onload=this.start.bind(this),n.onerror=this.stop.bind(this),z(n,oe),e.parentNode.insertBefore(n,e.nextSibling)}},{key:"start",value:function(){var e=this,i=this.image;i.onload=null,i.onerror=null,this.sizing=!0;var a=_.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(_.navigator.userAgent),r=function(l,c){C(e.imageData,{naturalWidth:l,naturalHeight:c,aspectRatio:l/c}),e.initialImageData=C({},e.imageData),e.sizing=!1,e.sized=!0,e.build()};if(i.naturalWidth&&!a){r(i.naturalWidth,i.naturalHeight);return}var n=document.createElement("img"),o=document.body||document.documentElement;this.sizingImage=n,n.onload=function(){r(n.width,n.height),a||o.removeChild(n)},n.src=i.src,a||(n.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",o.appendChild(n))}},{key:"stop",value:function(){var e=this.image;e.onload=null,e.onerror=null,e.parentNode.removeChild(e),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var e=this.element,i=this.options,a=this.image,r=e.parentNode,n=document.createElement("div");n.innerHTML=pi;var o=n.querySelector(".".concat(x,"-container")),l=o.querySelector(".".concat(x,"-canvas")),c=o.querySelector(".".concat(x,"-drag-box")),s=o.querySelector(".".concat(x,"-crop-box")),h=s.querySelector(".".concat(x,"-face"));this.container=r,this.cropper=o,this.canvas=l,this.dragBox=c,this.cropBox=s,this.viewBox=o.querySelector(".".concat(x,"-view-box")),this.face=h,l.appendChild(a),z(e,W),r.insertBefore(o,e.nextSibling),U(a,oe),this.initPreview(),this.bind(),i.initialAspectRatio=Math.max(0,i.initialAspectRatio)||NaN,i.aspectRatio=Math.max(0,i.aspectRatio)||NaN,i.viewMode=Math.max(0,Math.min(3,Math.round(i.viewMode)))||0,z(s,W),i.guides||z(s.getElementsByClassName("".concat(x,"-dashed")),W),i.center||z(s.getElementsByClassName("".concat(x,"-center")),W),i.background&&z(o,"".concat(x,"-bg")),i.highlight||z(h,ai),i.cropBoxMovable&&(z(h,It),wt(h,vt,Zt)),i.cropBoxResizable||(z(s.getElementsByClassName("".concat(x,"-line")),W),z(s.getElementsByClassName("".concat(x,"-point")),W)),this.render(),this.ready=!0,this.setDragMode(i.dragMode),i.autoCrop&&this.crop(),this.setData(i.data),S(i.ready)&&A(e,pe,i.ready,{once:!0}),st(e,pe)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var e=this.cropper.parentNode;e&&e.removeChild(this.cropper),U(this.element,W)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=Yi,t}},{key:"setDefaults",value:function(e){C(fe,rt(e)&&e)}}])}();C(Re.prototype,Si,Wi,Ei,Ri,Hi,Li);const Xi=typeof window>"u"?[String,Array]:[String,Array,Element,NodeList],Ai={render(){const t=this.crossorigin||void 0;return ie("div",{style:this.containerStyle},[ie("img",{ref:"img",src:this.src,alt:this.alt||"image",style:[{"max-width":"100%"},this.imgStyle],crossorigin:t})])},props:{containerStyle:Object,src:{type:String,default:""},alt:String,imgStyle:Object,viewMode:Number,dragMode:String,initialAspectRatio:Number,aspectRatio:Number,data:Object,preview:Xi,responsive:{type:Boolean,default:!0},restore:{type:Boolean,default:!0},checkCrossOrigin:{type:Boolean,default:!0},checkOrientation:{type:Boolean,default:!0},crossorigin:{type:String},modal:{type:Boolean,default:!0},guides:{type:Boolean,default:!0},center:{type:Boolean,default:!0},highlight:{type:Boolean,default:!0},background:{type:Boolean,default:!0},autoCrop:{type:Boolean,default:!0},autoCropArea:Number,movable:{type:Boolean,default:!0},rotatable:{type:Boolean,default:!0},scalable:{type:Boolean,default:!0},zoomable:{type:Boolean,default:!0},zoomOnTouch:{type:Boolean,default:!0},zoomOnWheel:{type:Boolean,default:!0},wheelZoomRatio:Number,cropBoxMovable:{type:Boolean,default:!0},cropBoxResizable:{type:Boolean,default:!0},toggleDragModeOnDblclick:{type:Boolean,default:!0},minCanvasWidth:Number,minCanvasHeight:Number,minCropBoxWidth:Number,minCropBoxHeight:Number,minContainerWidth:Number,minContainerHeight:Number,ready:Function,cropstart:Function,cropmove:Function,cropend:Function,crop:Function,zoom:Function},mounted(){const{containerStyle:t,src:e,alt:i,imgStyle:a,...r}=this.$options.props,n={};for(const o in r)this[o]!==void 0&&(n[o]=this[o]);this.cropper=new Re(this.$refs.img,n)},methods:{reset(){return this.cropper.reset()},clear(){return this.cropper.clear()},initCrop(){return this.cropper.crop()},replace(t,e=!1){return this.cropper.replace(t,e)},enable(){return this.cropper.enable()},disable(){return this.cropper.disable()},destroy(){return this.cropper.destroy()},move(t,e){return this.cropper.move(t,e)},moveTo(t,e=t){return this.cropper.moveTo(t,e)},relativeZoom(t,e){return this.cropper.zoom(t,e)},zoomTo(t,e){return this.cropper.zoomTo(t,e)},rotate(t){return this.cropper.rotate(t)},rotateTo(t){return this.cropper.rotateTo(t)},scaleX(t){return this.cropper.scaleX(t)},scaleY(t){return this.cropper.scaleY(t)},scale(t,e=t){return this.cropper.scale(t,e)},getData(t=!1){return this.cropper.getData(t)},setData(t){return this.cropper.setData(t)},getContainerData(){return this.cropper.getContainerData()},getImageData(){return this.cropper.getImageData()},getCanvasData(){return this.cropper.getCanvasData()},setCanvasData(t){return this.cropper.setCanvasData(t)},getCropBoxData(){return this.cropper.getCropBoxData()},setCropBoxData(t){return this.cropper.setCropBoxData(t)},getCroppedCanvas(t={}){return this.cropper.getCroppedCanvas(t)},setAspectRatio(t){return this.cropper.setAspectRatio(t)},setDragMode(t){return this.cropper.setDragMode(t)}}},ji=Ie({name:"FsCropper",components:{VueCropper:Ai},props:{title:{type:String},cropperHeight:{type:[String,Number]},dialogWidth:{type:[String,Number],default:"50%"},maxSize:{type:Number,default:5},uploadTip:{type:String},cropper:{type:Object},accept:{type:String,default:".jpg, .jpeg, .png, .gif, .webp"},output:{type:String,default:"blob"},compressQuality:{type:Number,default:.8}},emits:["cancel","done","ready"],setup(t,e){const{ui:i}=Fe(),{t:a}=Qe(),r=F(!1),n=F(),o=F(),l=F(!1),c=F(),s=F(),h=F(),p=F({x:1,y:1});function g(){r.value=!1}function m(){R(),e.emit("cancel")}const b=i.dialog.buildOnClosedBind(m),w=i.dialog.customClass,M=Mt(()=>({...b,[w]:"fs-cropper-dialog",...i.formWrapper.buildWidthBind(i.dialog.name,"960px"),...i.formWrapper.buildInitBind(i.dialog.name),title:t.title||a("fs.extends.cropper.title")}));function k(d){r.value=!0,d!=null&&d!==""&&(c.value=d)}function y(){r.value=!1}function R(){l.value=!1,o.value!=null&&(o.value.value=null,o.value=null),n.value!=null&&n.value.clear()}function N(){return n.value}const u={cropper:N(),zoom:xt,clear:R,close:y,open:k};function v(d){e.emit("ready",{event:d,...u})}function B(d){return d.preventDefault(),!1}function E(){o.value.click()}function H(d){return d.type.indexOf("image")===-1?(i.message.warn("请选择合适的文件类型"),!1):t.maxSize>0&&d.size/1024/1024>t.maxSize?(i.message.warn(`图片大小超出最大限制(${t.maxSize}MB),请重新选择.`),!1):!0}function P(d){const D=d.target.files[0];if(D.type.indexOf("image/")===-1){i.message.warn("Please select an image file");return}if(typeof FileReader=="function"){const q=new FileReader;q.onload=pt=>{c.value=pt.target.result,n.value.replace(pt.target.result)},q.readAsDataURL(D)}else i.message.error("Sorry, FileReader API not supported")}function $(d){d.preventDefault();const D=d.target.files||d.dataTransfer.files;if(D==null)return;l.value=!0;const q=D[0];H(q)&&(h.value=q,P(d))}function L(d,D){return D==null&&(D=t.compressQuality),n.value.getCroppedCanvas().toDataURL(d,D)}async function Y(d,D){return D==null&&(D=t.compressQuality),new Promise((q,pt)=>{function Ae(je){q(je)}n.value.getCroppedCanvas().toBlob(Ae,d,D)})}function j(d){e.emit("done",d)}async function T(d){const D={file:d};if(t.output==="all"){const q=await Y(d.type),pt=L(d.type);D.blob=q,D.dataUrl=pt,j(D);return}if(t.output==="blob"){D.blob=await Y(d.type),j(D);return}t.output==="dataUrl"&&(D.dataUrl=L(d.type),j(D))}async function tt(){if(!l.value){i.message.warn("请先选择图片");return}await T(h.value),r.value=!1}function ht(){n.value.scaleX(p.value.x*=-1)}function et(){n.value.scaleY(p.value.y*=-1)}function lt(){s.value=JSON.stringify(n.value.getCropBoxData(),null,4)}function bt(){s.value=JSON.stringify(n.value.getData(),null,4)}function yt(d,D){n.value.move(d,D)}function ct(){n.value.reset()}function it(d){n.value.rotate(d)}function zt(){n.value.setCropBoxData(JSON.parse(s.value))}function Nt(){n.value.setData(JSON.parse(s.value))}function He(){o.value.click()}function xt(d){n.value.relativeZoom(d)}const Le=Mt(()=>{const d="small";return[{size:d,round:!0,icon:i.icons.edit,text:a("fs.extends.cropper.reChoose"),onClick(){E()}},{size:d,round:!0,text:a("fs.extends.cropper.flipX"),onClick(){ht()}},{size:d,round:!0,text:a("fs.extends.cropper.flipY"),onClick(){et()}},{size:d,round:!0,icon:i.icons.zoomIn,onClick(){xt(.1)}},{size:d,round:!0,icon:i.icons.zoomOut,onClick(){xt(-.1)}},{size:d,round:!0,icon:i.icons.refreshLeft,onClick(){it(90)}},{size:d,round:!0,icon:i.icons.refreshRight,onClick(){it(-90)}},{size:d,round:!0,icon:i.icons.refresh,text:a("fs.extends.cropper.reset"),onClick(){ct()}}]}),Ye=Mt(()=>({title:a("fs.extends.cropper.title"),preview:a("fs.extends.cropper.preview"),cancel:a("fs.extends.cropper.cancel"),confirm:a("fs.extends.cropper.confirm"),chooseImage:a("fs.extends.cropper.chooseImage")})),Xe=Mt(()=>t.uploadTip!=null&&t.uploadTip!==""?t.uploadTip:t.maxSize>0?`${a("fs.extends.cropper.onlySupport")} ${t.accept.replace(/,/g,"、")}, + ${a("fs.extends.cropper.sizeLimit")} ${t.maxSize}M`:`${a("fs.extends.cropper.onlySupport")}${t.accept},${a("fs.extends.cropper.sizeNoLimit")}`);return{ui:i,cropperRef:n,fileInputRef:o,dialogVisible:r,dialogBinding:M,isLoaded:l,imgSrc:c,data:s,file:h,scale:p,computedButtons:Le,handleClose:g,setData:Nt,handleClosed:m,close:y,showFileChooser:He,zoom:xt,setCropBoxData:zt,rotate:it,reset:ct,move:yt,getData:bt,getCropBoxData:lt,flipY:et,flipX:ht,doCropper:tt,doOutput:T,getCropImageBlob:Y,getCropImageDataUrl:L,handleChange:$,setImage:P,checkFile:H,handleClick:E,preventDefault:B,open:k,clear:R,getCropperRef:N,ready:v,computedTexts:Ye,computedUploadTip:Xe}},data(){return{}},computed:{_cropper(){const t={aspectRatio:1,ready:this.ready};return this.cropper==null?t:Object.assign(t,this.cropper)},_cropperHeight(){let t=this.cropperHeight;return t==null&&(t=document.documentElement.clientHeight*.55,t<270&&(t=270)),typeof t=="number"?t+"px":t},_dialogWidth(){let t=this.dialogWidth;return t==null&&(t="50%"),typeof t=="number"?t+"px":t}}}),Ii={class:"fs-cropper-dialog-wrap"},Pi=["accept"],Ui={class:"fs-cropper-dialog__choose fs-cropper-dialog_left"},_i={class:"fs-cropper-dialog__edit fs-cropper-dialog_left"},$i={class:"fs-cropper-dialog__edit-area"},qi={class:"tool-bar"},Fi={class:"fs-cropper-dialog__preview"},Qi={class:"fs-cropper-dialog__preview-title"},Vi={class:"dialog-footer"};function Zi(t,e,i,a,r,n){const o=Gt("fs-button"),l=Gt("vue-cropper");return Ct(),St(ee(t.ui.dialog.name),Ht({ref:"cropperDialogRef",[t.ui.dialog.visible]:t.dialogVisible,["onUpdate:"+t.ui.dialog.visible]:e[2]||(e[2]=c=>t.dialogVisible=c),"append-to-body":"",width:"900px","close-on-click-modal":!0},t.dialogBinding,{"destroy-on-close":!1}),{footer:Wt(()=>[X("div",Vi,[Dt(o,{size:"small",text:t.computedTexts.cancel,onClick:t.handleClose},null,8,["text","onClick"]),Dt(o,{type:"primary",size:"small",text:t.computedTexts.confirm,onClick:e[1]||(e[1]=c=>t.doCropper())},null,8,["text"])])]),default:Wt(()=>[X("div",Ii,[Et(X("input",{ref:"fileInputRef",type:"file",accept:t.accept,onChange:e[0]||(e[0]=(...c)=>t.handleChange&&t.handleChange(...c))},null,40,Pi),[[Rt,!1]]),Et(X("div",Ui,[Dt(o,{round:"",text:t.computedTexts.chooseImage,onClick:t.showFileChooser},null,8,["text","onClick"]),X("p",null,te(t.computedUploadTip),1)],512),[[Rt,!t.isLoaded]]),Et(X("div",_i,[X("div",$i,[Dt(l,Ht({ref:"cropperRef",src:t.imgSrc,preview:".preview",style:{height:t._cropperHeight}},t._cropper),null,16,["src","style"])]),X("div",qi,[(Ct(),St(ee(t.ui.buttonGroup.name),null,{default:Wt(()=>[(Ct(!0),Pe(Ue,null,_e(t.computedButtons,(c,s)=>(Ct(),St(o,Ht({key:s,ref_for:!0},c),null,16))),128))]),_:1}))])],512),[[Rt,t.isLoaded]]),X("div",Fi,[X("span",Qi,te(t.computedTexts.preview),1),e[3]||(e[3]=X("div",{class:"fs-cropper-dialog__preview-120 preview"},null,-1)),X("div",{class:$e(["fs-cropper-dialog__preview-65 preview",{round:t._cropper.aspectRatio===1}])},null,2)])])]),_:1},16)}const Gi=qe(ji,[["render",Zi]]);export{Gi as default}; diff --git a/web/dist/assets/fs-cropper-uploader-a4003ae3.Co0sTjIx.js b/web/dist/assets/fs-cropper-uploader-a4003ae3.Co0sTjIx.js deleted file mode 100644 index efb751d683..0000000000 --- a/web/dist/assets/fs-cropper-uploader-a4003ae3.Co0sTjIx.js +++ /dev/null @@ -1 +0,0 @@ -import{a7 as L,B as G,a1 as Y}from"./index.CkCcWuPb.js";import{w as Z,aA as R,x as c,y as l,z as m,a7 as g,$ as w,a0 as T,a2 as h,a6 as J,aq as K,a3 as S,Z as M,Y as z,D as d,H as X,F as ee,af as te,B as ae}from"./vue.Cw4Y52yh.js";const oe=Z({name:"FsCropperUploader",props:{disabled:{},modelValue:{type:[String,Object,Array]},img:{},type:{type:String},uploadTip:{type:String},title:String,cropperHeight:{type:[String,Number]},dialogWidth:{type:[String,Number],default:"50%"},maxSize:{type:Number,default:5},limit:{type:Number,default:1},accept:{type:String,default:".jpg, .jpeg, .png, .gif, .webp"},cropper:{type:Object},uploader:{type:Object},compressQuality:{type:Number,default:.8},buildUrl:{type:Function,default:async function(e){return typeof e=="object"?e.url:e}},valueType:{type:String,default:"url"}},emits:["update:modelValue","change","ready"],setup(e,n){const{ui:b}=G(),f=d(),I=d(),C=d(),s=d([]),p=b.formItem.injectFormItemContext();let y=e.modelValue;r(e.modelValue);async function r(t){const a=[];if(t==null||t===""){s.value=a;return}if(typeof t=="string")a.push({url:await e.buildUrl(t),value:t,status:"done"});else if(Array.isArray(t))for(const o of t)a.push({url:await e.buildUrl(o),value:o,status:"done"});else if(typeof t=="object")a.push({url:await e.buildUrl(t),value:t,status:"done"});else for(const o of t)a.push({url:await e.buildUrl(o),value:o,status:"done"});s.value=a}function v(){e.disabled||(C.value=void 0,f.value.clear(),f.value.open())}function P(t){s.value.splice(t,1),j()}function A(){const t=s.value;if(t&&t.length>0){for(const a of t)if(a.status==="uploading")return!0}return!1}async function D(t){const a=t.blob,o=t.dataUrl,B=t.file.name,Q=new File([a],B,{type:a.type}),u=te({url:void 0,dataUrl:o,status:"uploading",progress:0}),W=i=>{u.progress=i.percent},F=i=>{u.status="error",u.message="文件上传出错:"+i.message,console.error(i)},$={file:Q,onProgress:W,onError:F,fileName:B};s.value.push(u);try{const i=await V($);let N=i;e.valueType!=="object"&&(N=i[e.valueType]),u.url=await e.buildUrl(N),u.value=N,u.status="done",j()}catch(i){F(i)}}async function V(t){t.options=e.uploader||{};const{getUploaderImpl:a}=Y();let o=await a(t.options.type);if(o==null)throw new Error("Sorry,The component is not ready yet");return await(o==null?void 0:o.upload(t))}async function j(){const t=[];for(const o of s.value)typeof o=="string"?t.push(o):t.push(o.value);let a=t;e.limit===1&&(a=t&&t.length>0?t[0]:void 0),y=a,n.emit("update:modelValue",a),await p.onChange(),await p.onBlur()}function x(t){return t.dataUrl?t.dataUrl:t.url}const U=d(!1),k=d();function q(t){U.value=!0,k.value=x(t)}function H(){U.value=!1,k.value=null}X(()=>e.modelValue,async t=>{n.emit("change",t),t!==y&&await r(t)});const O=ae();function _(t){n.emit("ready",{uploaderRef:O,...t})}const E=ee(()=>({...e}));return{ui:b,cropperRef:f,uploaderImplRef:I,indexRef:C,listRef:s,addNewImage:v,hasUploading:A,cropComplete:D,doUpload:V,removeImage:P,getImageSrc:x,previewUrl:k,previewVisible:U,preview:q,closePreview:H,doReady:_,computedProps:E}}}),re={class:"image-list"},le={class:"image-slot"},se={class:"delete"},ie={key:0,class:"status-uploading"},ne={key:1,class:"status-done"},pe={class:"fs-cropper-preview-content"},ue=["src"];function ce(e,n,b,f,I,C){const s=R("fs-loading"),p=R("fs-icon"),y=R("fs-cropper");return l(),c("div",{class:z(["fs-cropper-uploader",{"is-disabled":e.computedProps.disabled}])},[m("div",re,[(l(),w(S(e.ui.imageGroup.name),null,{default:T(()=>[(l(!0),c(J,null,K(e.listRef,(r,v)=>(l(),c("div",{key:v,class:"image-item"},[(l(),w(S(e.ui.image.name),M({class:"image",src:e.getImageSrc(r),ref_for:!0},e.computedProps.img),{placeholder:T(()=>[m("div",le,[g(s,{loading:!0})])]),_:2},1040,["src"])),m("div",se,[e.computedProps.disabled?h("",!0):(l(),w(p,{key:0,icon:e.ui.icons.remove,onClick:P=>e.removeImage(v)},null,8,["icon","onClick"])),g(p,{icon:e.ui.icons.search,onClick:P=>e.preview(r)},null,8,["icon","onClick"])]),r.status==="uploading"?(l(),c("div",ie,[(l(),w(S(e.ui.progress.name),{type:"circle",percentage:r.progress,width:70},null,8,["percentage"]))])):r.status==="done"?(l(),c("div",ne,[g(p,{icon:e.ui.icons.check,class:"status-down-icon"},null,8,["icon"])])):h("",!0)]))),128)),e.computedProps.limit<=0||e.computedProps.limit>e.listRef.length?(l(),c("div",{key:0,class:"image-item image-plus",onClick:n[0]||(n[0]=(...r)=>e.addNewImage&&e.addNewImage(...r))},[g(p,{icon:e.ui.icons.plus,class:"cropper-uploader-icon"},null,8,["icon"])])):h("",!0)]),_:1}))]),g(y,{ref:"cropperRef",title:e.computedProps.title,"cropper-height":e.computedProps.cropperHeight,"dialog-width":e.computedProps.dialogWidth,accept:e.computedProps.accept,"upload-tip":e.computedProps.uploadTip,"max-size":e.computedProps.maxSize,cropper:e.computedProps.cropper,"compress-quality":e.computedProps.compressQuality,output:"all",onDone:e.cropComplete,onReady:e.doReady},null,8,["title","cropper-height","dialog-width","accept","upload-tip","max-size","cropper","compress-quality","onDone","onReady"]),m("div",{class:z(["fs-cropper-preview",{open:e.previewVisible}]),onClick:n[1]||(n[1]=(...r)=>e.closePreview&&e.closePreview(...r))},[m("div",pe,[e.previewUrl?(l(),c("img",{key:0,src:e.previewUrl,class:"preview-image"},null,8,ue)):h("",!0)])],2)],2)}const ge=L(oe,[["render",ce]]);export{ge as default}; diff --git a/web/dist/assets/fs-cropper-uploader-a4003ae3.DQrYaZaX.js b/web/dist/assets/fs-cropper-uploader-a4003ae3.DQrYaZaX.js new file mode 100644 index 0000000000..11d7971b0b --- /dev/null +++ b/web/dist/assets/fs-cropper-uploader-a4003ae3.DQrYaZaX.js @@ -0,0 +1 @@ +import{k as G,l as $,i as J}from"./index.XK2ik2qb.js";import{d as K,h as R,a as c,o as l,e as m,k as g,b as w,w as z,J as h,G as M,H as X,r as S,L as Y,f as F,g as d,C as Z,c as ee,z as te,B as ae}from"./vue.DmuWcDrn.js";const oe=K({name:"FsCropperUploader",props:{disabled:{},modelValue:{type:[String,Object,Array]},img:{},type:{type:String},uploadTip:{type:String},title:String,cropperHeight:{type:[String,Number]},dialogWidth:{type:[String,Number],default:"50%"},maxSize:{type:Number,default:5},limit:{type:Number,default:1},accept:{type:String,default:".jpg, .jpeg, .png, .gif, .webp"},cropper:{type:Object},uploader:{type:Object},compressQuality:{type:Number,default:.8},buildUrl:{type:Function,default:async function(e){return typeof e=="object"?e.url:e}},valueType:{type:String,default:"url"}},emits:["update:modelValue","change","ready"],setup(e,n){const{ui:b}=$(),f=d(),I=d(),C=d(),s=d([]),p=b.formItem.injectFormItemContext();let y=e.modelValue;r(e.modelValue);async function r(t){const a=[];if(t==null||t===""){s.value=a;return}if(typeof t=="string")a.push({url:await e.buildUrl(t),value:t,status:"done"});else if(Array.isArray(t))for(const o of t)a.push({url:await e.buildUrl(o),value:o,status:"done"});else if(typeof t=="object")a.push({url:await e.buildUrl(t),value:t,status:"done"});else for(const o of t)a.push({url:await e.buildUrl(o),value:o,status:"done"});s.value=a}function v(){e.disabled||(C.value=void 0,f.value.clear(),f.value.open())}function P(t){s.value.splice(t,1),j()}function A(){const t=s.value;if(t&&t.length>0){for(const a of t)if(a.status==="uploading")return!0}return!1}async function D(t){const a=t.blob,o=t.dataUrl,B=t.file.name,L=new File([a],B,{type:a.type}),u=te({url:void 0,dataUrl:o,status:"uploading",progress:0}),Q=i=>{u.progress=i.percent},T=i=>{u.status="error",u.message="文件上传出错:"+i.message,console.error(i)},W={file:L,onProgress:Q,onError:T,fileName:B};s.value.push(u);try{const i=await V(W);let N=i;e.valueType!=="object"&&(N=i[e.valueType]),u.url=await e.buildUrl(N),u.value=N,u.status="done",j()}catch(i){T(i)}}async function V(t){t.options=e.uploader||{};const{getUploaderImpl:a}=J();let o=await a(t.options.type);if(o==null)throw new Error("Sorry,The component is not ready yet");return await(o==null?void 0:o.upload(t))}async function j(){const t=[];for(const o of s.value)typeof o=="string"?t.push(o):t.push(o.value);let a=t;e.limit===1&&(a=t&&t.length>0?t[0]:void 0),y=a,n.emit("update:modelValue",a),await p.onChange(),await p.onBlur()}function x(t){return t.dataUrl?t.dataUrl:t.url}const k=d(!1),U=d();function H(t){k.value=!0,U.value=x(t)}function O(){k.value=!1,U.value=null}Z(()=>e.modelValue,async t=>{n.emit("change",t),t!==y&&await r(t)});const _=ae();function q(t){n.emit("ready",{uploaderRef:_,...t})}const E=ee(()=>({...e}));return{ui:b,cropperRef:f,uploaderImplRef:I,indexRef:C,listRef:s,addNewImage:v,hasUploading:A,cropComplete:D,doUpload:V,removeImage:P,getImageSrc:x,previewUrl:U,previewVisible:k,preview:H,closePreview:O,doReady:q,computedProps:E}}}),re={class:"image-list"},le={class:"image-slot"},se={class:"delete"},ie={key:0,class:"status-uploading"},ne={key:1,class:"status-done"},pe={class:"fs-cropper-preview-content"},ue=["src"];function ce(e,n,b,f,I,C){const s=R("fs-loading"),p=R("fs-icon"),y=R("fs-cropper");return l(),c("div",{class:F(["fs-cropper-uploader",{"is-disabled":e.computedProps.disabled}])},[m("div",re,[(l(),w(S(e.ui.imageGroup.name),null,{default:z(()=>[(l(!0),c(M,null,X(e.listRef,(r,v)=>(l(),c("div",{key:v,class:"image-item"},[(l(),w(S(e.ui.image.name),Y({class:"image",src:e.getImageSrc(r),ref_for:!0},e.computedProps.img),{placeholder:z(()=>[m("div",le,[g(s,{loading:!0})])]),_:2},1040,["src"])),m("div",se,[e.computedProps.disabled?h("",!0):(l(),w(p,{key:0,icon:e.ui.icons.remove,onClick:P=>e.removeImage(v)},null,8,["icon","onClick"])),g(p,{icon:e.ui.icons.search,onClick:P=>e.preview(r)},null,8,["icon","onClick"])]),r.status==="uploading"?(l(),c("div",ie,[(l(),w(S(e.ui.progress.name),{type:"circle",percentage:r.progress,width:70},null,8,["percentage"]))])):r.status==="done"?(l(),c("div",ne,[g(p,{icon:e.ui.icons.check,class:"status-down-icon"},null,8,["icon"])])):h("",!0)]))),128)),e.computedProps.limit<=0||e.computedProps.limit>e.listRef.length?(l(),c("div",{key:0,class:"image-item image-plus",onClick:n[0]||(n[0]=(...r)=>e.addNewImage&&e.addNewImage(...r))},[g(p,{icon:e.ui.icons.plus,class:"cropper-uploader-icon"},null,8,["icon"])])):h("",!0)]),_:1}))]),g(y,{ref:"cropperRef",title:e.computedProps.title,"cropper-height":e.computedProps.cropperHeight,"dialog-width":e.computedProps.dialogWidth,accept:e.computedProps.accept,"upload-tip":e.computedProps.uploadTip,"max-size":e.computedProps.maxSize,cropper:e.computedProps.cropper,"compress-quality":e.computedProps.compressQuality,output:"all",onDone:e.cropComplete,onReady:e.doReady},null,8,["title","cropper-height","dialog-width","accept","upload-tip","max-size","cropper","compress-quality","onDone","onReady"]),m("div",{class:F(["fs-cropper-preview",{open:e.previewVisible}]),onClick:n[1]||(n[1]=(...r)=>e.closePreview&&e.closePreview(...r))},[m("div",pe,[e.previewUrl?(l(),c("img",{key:0,src:e.previewUrl,class:"preview-image"},null,8,ue)):h("",!0)])],2)],2)}const ge=G(oe,[["render",ce]]);export{ge as default}; diff --git a/web/dist/assets/fs-file-uploader-1c0076b5.BrqWgCRO.js b/web/dist/assets/fs-file-uploader-1c0076b5.BrqWgCRO.js deleted file mode 100644 index 52f7079424..0000000000 --- a/web/dist/assets/fs-file-uploader-1c0076b5.BrqWgCRO.js +++ /dev/null @@ -1 +0,0 @@ -import{a7 as pe,B as de,a8 as me,a2 as P,a3 as ye,a1 as we}from"./index.CkCcWuPb.js";import{w as ve,x as ge,y as w,$ as z,a2 as he,a0 as $,a3 as C,as as be,at as xe,Z as H,z as Le,Y as Ue,D as y,F as v,H as Te,P as Fe}from"./vue.Cw4Y52yh.js";const Re=ve({name:"FsFileUploader",inheritAttrs:!1,props:{modelValue:{},limit:{type:Number},sizeLimit:{type:[Number,Object]},pixelLimit:{type:Object,required:!1},showLimitTip:{type:Boolean,default:!0},buildUrl:{default(){return l=>l}},buildUrls:{},button:{type:Object},listType:{type:String},beforeUpload:{type:Function},beforeUploadRequest:{type:Function},uploader:{type:Object},preview:{type:Object},valueType:{type:String,default:"url"},getFileName:{}},emits:["change","update:modelValue","success","exceed","remove"],setup(l,r){const{ui:a}=de(),{t:c}=me(),n=y([]),g=y(),p=y(),K=v(()=>l.getFileName||(async e=>{if(typeof e!="string")return console.warn("获取文件名失败,请配置getFileName"),e;const t=e.substring(e.lastIndexOf("/")+1),i=t.indexOf("?");return i>=0?t.substring(0,i):t}));function h(e){return l.valueType==="object"?e:e[l.valueType]}function Y(e){const t=[];for(let i of e)t.push(h(i));return t}async function Z(e){const t=[];for(let i of e){let o;typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i instanceof Date?(o={url:void 0,key:i,value:i},l.valueType!=="object"&&(o[l.valueType]=i)):o=i,o[a.upload.id]||(o[a.upload.id]=Math.random()+""),o.status||(o.status=a.upload.status.success),t.push(o)}await j(t);for(const i of t)if(!i.name){const o=i.url||i.value;i.name=await K.value(o,i)}return t}async function B(e){const t=[];for(let i of e){const o=i.response||i.fsRes,s={size:i.size,name:i.name,uid:i.uid,...o??i};t.push(s)}return await j(t),Y(t)}async function b(e){const t=[];if(e==null||e.length===0){n.value=t;return}if(e instanceof Array)for(let o of e)t.push(o);else t.push(e);const i=await Z(t);N(i)}async function G(){await S.onChange(),await S.onBlur()}async function V(e){let t=await J(e);O(t),Fe(async()=>{await G()})}async function J(e){if(e==null||e.length===0)return l.limit===1?null:[];if(l.limit===1)return(await B(e))[0];const t=[];for(let i of e)a.upload.isSuccess(i)&&t.push(i);return await B(t)}async function j(e){let t=e.filter(i=>i.url==null);if(l.buildUrls){const i=t.map(s=>h(s)),o=await l.buildUrls(i);for(let s=0;sl.modelValue,async e=>{I(e),e!==g.value&&await b(e)}),b(l.modelValue);function Q(){return n.value.filter(e=>e.status===a.upload.status.uploading).length>0}function d(e,t){N(t),V(t)}function x(e,t,i){r.emit("success",{res:e,file:t,fileList:i}),d(t,i)}function k(e){let t;return e>1024*1024*1024?t=(e/(1024*1024*1024)).toFixed(2)+"G":e>1024*1024?t=(e/(1024*1024)).toFixed(2)+"M":t=Math.round(e/1024)+"K",t}const E=(e=!1)=>{const t=e?a.upload.limitAdd:0;return l.limit>0&&n.value.length>=l.limit+t};function W(){l.showLimitTip&&a.message.warn(c("fs.extends.fileUploader.limitTip",[l.limit]))}function X(){if(E(!0))throw W(),r.emit("exceed",{fileList:n.value,limit:l.limit}),new Error("文件数量超限")}function ee(e){if(l.sizeLimit!=null){let t=l.sizeLimit,i=null;if(typeof l.sizeLimit=="number"?i=(o,s)=>{const f=k(s),u=k(e.size);a.message.warn(c("fs.extends.fileUploader.sizeLimitTip",[f,u]))}:(t=l.sizeLimit.limit,i=l.sizeLimit.tip),e.size>t){let o="文件大小超过限制,当前文件大小:"+e.size/1024+"k";throw i(e.size,t),new Error(o)}}}const te=e=>{let t=0,i=0,o="";if(l.pixelLimit)Array.isArray(l.pixelLimit)?(t=l.pixelLimit[0],i=l.pixelLimit[1]||l.pixelLimit[0]||0,o=l.pixelLimit[2]||""):typeof l.pixelLimit=="object"&&(t=l.pixelLimit.width||0,i=l.pixelLimit.height||0,o=l.pixelLimit.tip||"");else return Promise.resolve(!0);let s=o||c("fs.extends.fileUploader.pixelLimitTip",[t,i]);return new Promise((f,u)=>{let D=new FileReader;D.onload=fe=>{var M;let _=(M=fe.target)==null?void 0:M.result,m=new Image;m.onload=function(){t&&m.width>t||i&&m.height>i?(a.message.warn(s),u(s)):f(!0)},m.onerror=function(Ce){a.message.warn(c("fs.extends.fileUploader.loadError")),u(c("fs.extends.fileUploader.loadError"))},_&&(m.src=_)},D.readAsDataURL(e)})},L=async(e,t=n.value)=>{if(l.beforeUpload&&await l.beforeUpload({file:e,fileList:n.value})===!1)return!1;try{X(),ee(e),T()&&await te(e)}catch{return!1}};function N(e){n.value=e}async function ie(e){e.options=l.uploader||{};const{getUploaderImpl:t}=we();let i=await t(e.options.type);if(i==null)throw a.message.warn("Sorry,The uploader component is not ready yet"),new Error("Sorry,The component is not ready yet");return await(i==null?void 0:i.upload(e))}async function U(e){l.beforeUploadRequest&&await l.beforeUploadRequest(e);const{file:t,onProgress:i,onSuccess:o,onError:s}=e,f={file:t,fileName:t.name,onProgress:i};try{const u=await ie(f);o(u)}catch(u){console.error("上传失败",u),s(u)}}const le=v(()=>se()?{is:"FsIcon",icon:a.icons.plus}:{is:"FsButton",icon:a.icons.upload,text:c("fs.extends.fileUploader.text"),...l.button}),q=y(!1),A=y(),oe=v(()=>({...a.dialog.footer(),...l.preview}));function ae(e){return new Promise((t,i)=>{const o=new FileReader;o.readAsDataURL(e),o.onload=()=>t(o.result),o.onerror=s=>i(s)})}function T(){return l.listType===a.upload.typeImageCard||l.listType===a.upload.typeImage}function se(){return l.listType===a.upload.typeImageCard}const F=async e=>{var t,i;if(!T()){let o;e.url?o=e.url:a.type==="antdv"?o=(t=e.response)==null?void 0:t.url:a.type==="element"?o=(i=e.fsRes)==null?void 0:i.url:o=e.url,window.open(o,"_blank")}!e.url&&!e.preview&&e.originFileObj&&(e.preview=await ae(e.originFileObj)),A.value=e.url||e.preview,q.value=!0};function re(){const e={customRequest:U,beforeUpload:L,limit:l.limit,listType:l.listType,onChange:t=>{const{file:i,fileList:o}=t;d(i,o),i.status==="done"&&x(i.response,i,o)},onPreview:F};return l.limit!=null&&r.attrs.maxCount==null&&(e.maxCount=l.limit),e}function ne(){return{action:"",listType:l.listType,limit:l.limit,beforeUpload:L,httpRequest:U,onExceed:e=>{r.emit("exceed",e,n)},onRemove:(e,t)=>{d(e,t),r.emit("remove",e,t)},onChange:(e,t)=>{d(e,t)},onSuccess:(e,t,i)=>{e!=null&&(t.response=e,t.fsRes=e,x(e,t,i))},onPreview:F}}const R={};function ue(){function e(t){let i=t.value||t;i=ye(i);for(let o of i){const s=R[o.id];s&&P(o,s)}return i}return{action:"",limit:l.limit,listType:l.listType,onBeforeUpload:async({file:t,fileList:i})=>L(t,i),customRequest:t=>{const i=t.file;U({...t,file:i.file,onSuccess:async o=>{const s=l.valueType==="object"?o:o[l.valueType];o.url=await l.buildUrl(s),P(i,o),R[i.id]={...o,fsRes:o},t.onFinish(i)},onProgress:o=>{t.onProgress(o)}})},onExceed:t=>{r.emit("exceed",t)},onRemove:t=>{r.emit("remove",t)},onChange:t=>{const{event:i,file:o,fileList:s}=t,f=e(s);d(o,[...f])},onFinish:t=>{const i=R[t.id];i&&P(t,i);const o=e(n);x(i,t,o)},onPreview:F}}const ce=v(()=>{let e=null;return a.type==="antdv"?e=re():a.type==="element"?e=ne():e=ue(),{...e,...r.attrs}});return{ui:a,fileList:n,fileUploaderRef:p,initValue:b,onChange:I,onInput:O,hasUploading:Q,isPicture:T,computedFileSelectBtn:le,previewVisible:q,previewImage:A,computedPreview:oe,computedOnLimit:E,computedBinding:ce,emitValue:V}}}),Pe=["src"];function ze(l,r,a,c,n,g){return w(),ge("div",{class:Ue(["fs-file-uploader",{"fs-file-uploader-limit":l.computedOnLimit()}])},[(w(),z(C(l.ui.upload.name),H({ref:"fileUploaderRef","file-list":l.fileList,"onUpdate:fileList":r[0]||(r[0]=p=>l.fileList=p)},l.computedBinding),{default:$(()=>[(w(),z(C(l.computedFileSelectBtn.is),be(xe(l.computedFileSelectBtn)),null,16))]),_:1},16,["file-list"])),l.isPicture()?(w(),z(C(l.ui.dialog.name),H({key:0,[l.ui.dialog.visible]:l.previewVisible,["onUpdate:"+l.ui.dialog.visible]:r[1]||(r[1]=p=>l.previewVisible=p)},l.computedPreview),{default:$(()=>[Le("img",{style:{"max-width":"100%","max-height":"100%"},src:l.previewImage},null,8,Pe)]),_:1},16)):he("",!0)],2)}const je=pe(Re,[["render",ze]]);export{je as default}; diff --git a/web/dist/assets/fs-file-uploader-1c0076b5.Csi0yJRC.js b/web/dist/assets/fs-file-uploader-1c0076b5.Csi0yJRC.js new file mode 100644 index 0000000000..3a0871e74e --- /dev/null +++ b/web/dist/assets/fs-file-uploader-1c0076b5.Csi0yJRC.js @@ -0,0 +1 @@ +import{k as pe,l as de,n as me,m as P,j as ye,i as we}from"./index.XK2ik2qb.js";import{d as ve,a as ge,o as w,b as C,J as he,w as J,r as z,O as be,P as xe,L as K,e as Le,f as Ue,g as y,c as v,C as Te,D as Fe}from"./vue.DmuWcDrn.js";const Re=ve({name:"FsFileUploader",inheritAttrs:!1,props:{modelValue:{},limit:{type:Number},sizeLimit:{type:[Number,Object]},pixelLimit:{type:Object,required:!1},showLimitTip:{type:Boolean,default:!0},buildUrl:{default(){return l=>l}},buildUrls:{},button:{type:Object},listType:{type:String},beforeUpload:{type:Function},beforeUploadRequest:{type:Function},uploader:{type:Object},preview:{type:Object},valueType:{type:String,default:"url"},getFileName:{}},emits:["change","update:modelValue","success","exceed","remove"],setup(l,r){const{ui:s}=de(),{t:c}=me(),n=y([]),g=y(),p=y(),$=v(()=>l.getFileName||(async e=>{if(typeof e!="string")return console.warn("获取文件名失败,请配置getFileName"),e;const t=e.substring(e.lastIndexOf("/")+1),i=t.indexOf("?");return i>=0?t.substring(0,i):t}));function h(e){return l.valueType==="object"?e:e[l.valueType]}function G(e){const t=[];for(let i of e)t.push(h(i));return t}async function H(e){const t=[];for(let i of e){let o;typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i instanceof Date?(o={url:void 0,key:i,value:i},l.valueType!=="object"&&(o[l.valueType]=i)):o=i,o[s.upload.id]||(o[s.upload.id]=Math.random()+""),o.status||(o.status=s.upload.status.success),t.push(o)}await V(t);for(const i of t)if(!i.name){const o=i.url||i.value;i.name=await $.value(o,i)}return t}async function B(e){const t=[];for(let i of e){const o=i.response||i.fsRes,a={size:i.size,name:i.name,uid:i.uid,...o??i};t.push(a)}return await V(t),G(t)}async function b(e){const t=[];if(e==null||e.length===0){n.value=t;return}if(e instanceof Array)for(let o of e)t.push(o);else t.push(e);const i=await H(t);N(i)}async function Q(){await k.onChange(),await k.onBlur()}async function j(e){let t=await W(e);O(t),Fe(async()=>{await Q()})}async function W(e){if(e==null||e.length===0)return l.limit===1?null:[];if(l.limit===1)return(await B(e))[0];const t=[];for(let i of e)s.upload.isSuccess(i)&&t.push(i);return await B(t)}async function V(e){let t=e.filter(i=>i.url==null);if(l.buildUrls){const i=t.map(a=>h(a)),o=await l.buildUrls(i);for(let a=0;al.modelValue,async e=>{I(e),e!==g.value&&await b(e)}),b(l.modelValue);function X(){return n.value.filter(e=>e.status===s.upload.status.uploading).length>0}function d(e,t){N(t),j(t)}function x(e,t,i){r.emit("success",{res:e,file:t,fileList:i}),d(t,i)}function S(e){let t;return e>1024*1024*1024?t=(e/(1024*1024*1024)).toFixed(2)+"G":e>1024*1024?t=(e/(1024*1024)).toFixed(2)+"M":t=Math.round(e/1024)+"K",t}const E=(e=!1)=>{const t=e?s.upload.limitAdd:0;return l.limit>0&&n.value.length>=l.limit+t};function Y(){l.showLimitTip&&s.message.warn(c("fs.extends.fileUploader.limitTip",[l.limit]))}function Z(){if(E(!0))throw Y(),r.emit("exceed",{fileList:n.value,limit:l.limit}),new Error("文件数量超限")}function ee(e){if(l.sizeLimit!=null){let t=l.sizeLimit,i=null;if(typeof l.sizeLimit=="number"?i=(o,a)=>{const f=S(a),u=S(e.size);s.message.warn(c("fs.extends.fileUploader.sizeLimitTip",[f,u]))}:(t=l.sizeLimit.limit,i=l.sizeLimit.tip),e.size>t){let o="文件大小超过限制,当前文件大小:"+e.size/1024+"k";throw i(e.size,t),new Error(o)}}}const te=e=>{let t=0,i=0,o="";if(l.pixelLimit)Array.isArray(l.pixelLimit)?(t=l.pixelLimit[0],i=l.pixelLimit[1]||l.pixelLimit[0]||0,o=l.pixelLimit[2]||""):typeof l.pixelLimit=="object"&&(t=l.pixelLimit.width||0,i=l.pixelLimit.height||0,o=l.pixelLimit.tip||"");else return Promise.resolve(!0);let a=o||c("fs.extends.fileUploader.pixelLimitTip",[t,i]);return new Promise((f,u)=>{let D=new FileReader;D.onload=fe=>{var M;let _=(M=fe.target)==null?void 0:M.result,m=new Image;m.onload=function(){t&&m.width>t||i&&m.height>i?(s.message.warn(a),u(a)):f(!0)},m.onerror=function(ze){s.message.warn(c("fs.extends.fileUploader.loadError")),u(c("fs.extends.fileUploader.loadError"))},_&&(m.src=_)},D.readAsDataURL(e)})},L=async(e,t=n.value)=>{if(l.beforeUpload&&await l.beforeUpload({file:e,fileList:n.value})===!1)return!1;try{Z(),ee(e),T()&&await te(e)}catch{return!1}};function N(e){n.value=e}async function ie(e){e.options=l.uploader||{};const{getUploaderImpl:t}=we();let i=await t(e.options.type);if(i==null)throw s.message.warn("Sorry,The uploader component is not ready yet"),new Error("Sorry,The component is not ready yet");return await(i==null?void 0:i.upload(e))}async function U(e){l.beforeUploadRequest&&await l.beforeUploadRequest(e);const{file:t,onProgress:i,onSuccess:o,onError:a}=e,f={file:t,fileName:t.name,onProgress:i};try{const u=await ie(f);o(u)}catch(u){console.error("上传失败",u),a(u)}}const le=v(()=>ae()?{is:"FsIcon",icon:s.icons.plus}:{is:"FsButton",icon:s.icons.upload,text:c("fs.extends.fileUploader.text"),...l.button}),q=y(!1),A=y(),oe=v(()=>({...s.dialog.footer(),...l.preview}));function se(e){return new Promise((t,i)=>{const o=new FileReader;o.readAsDataURL(e),o.onload=()=>t(o.result),o.onerror=a=>i(a)})}function T(){return l.listType===s.upload.typeImageCard||l.listType===s.upload.typeImage}function ae(){return l.listType===s.upload.typeImageCard}const F=async e=>{var t,i;if(!T()){let o;e.url?o=e.url:s.type==="antdv"?o=(t=e.response)==null?void 0:t.url:s.type==="element"?o=(i=e.fsRes)==null?void 0:i.url:o=e.url,window.open(o,"_blank")}!e.url&&!e.preview&&e.originFileObj&&(e.preview=await se(e.originFileObj)),A.value=e.url||e.preview,q.value=!0};function re(){const e={customRequest:U,beforeUpload:L,limit:l.limit,listType:l.listType,onChange:t=>{const{file:i,fileList:o}=t;d(i,o),i.status==="done"&&x(i.response,i,o)},onPreview:F};return l.limit!=null&&r.attrs.maxCount==null&&(e.maxCount=l.limit),e}function ne(){return{action:"",listType:l.listType,limit:l.limit,beforeUpload:L,httpRequest:U,onExceed:e=>{r.emit("exceed",e,n)},onRemove:(e,t)=>{d(e,t),r.emit("remove",e,t)},onChange:(e,t)=>{d(e,t)},onSuccess:(e,t,i)=>{e!=null&&(t.response=e,t.fsRes=e,x(e,t,i))},onPreview:F}}const R={};function ue(){function e(t){let i=t.value||t;i=ye(i);for(let o of i){const a=R[o.id];a&&P(o,a)}return i}return{action:"",limit:l.limit,listType:l.listType,onBeforeUpload:async({file:t,fileList:i})=>L(t,i),customRequest:t=>{const i=t.file;U({...t,file:i.file,onSuccess:async o=>{const a=l.valueType==="object"?o:o[l.valueType];o.url=await l.buildUrl(a),P(i,o),R[i.id]={...o,fsRes:o},t.onFinish(i)},onProgress:o=>{t.onProgress(o)}})},onExceed:t=>{r.emit("exceed",t)},onRemove:t=>{r.emit("remove",t)},onChange:t=>{const{event:i,file:o,fileList:a}=t,f=e(a);d(o,[...f])},onFinish:t=>{const i=R[t.id];i&&P(t,i);const o=e(n);x(i,t,o)},onPreview:F}}const ce=v(()=>{let e=null;return s.type==="antdv"?e=re():s.type==="element"?e=ne():e=ue(),{...e,...r.attrs}});return{ui:s,fileList:n,fileUploaderRef:p,initValue:b,onChange:I,onInput:O,hasUploading:X,isPicture:T,computedFileSelectBtn:le,previewVisible:q,previewImage:A,computedPreview:oe,computedOnLimit:E,computedBinding:ce,emitValue:j}}}),Pe=["src"];function Ce(l,r,s,c,n,g){return w(),ge("div",{class:Ue(["fs-file-uploader",{"fs-file-uploader-limit":l.computedOnLimit()}])},[(w(),C(z(l.ui.upload.name),K({ref:"fileUploaderRef","file-list":l.fileList,"onUpdate:fileList":r[0]||(r[0]=p=>l.fileList=p)},l.computedBinding),{default:J(()=>[(w(),C(z(l.computedFileSelectBtn.is),be(xe(l.computedFileSelectBtn)),null,16))]),_:1},16,["file-list"])),l.isPicture()?(w(),C(z(l.ui.dialog.name),K({key:0,[l.ui.dialog.visible]:l.previewVisible,["onUpdate:"+l.ui.dialog.visible]:r[1]||(r[1]=p=>l.previewVisible=p)},l.computedPreview),{default:J(()=>[Le("img",{style:{"max-width":"100%","max-height":"100%"},src:l.previewImage},null,8,Pe)]),_:1},16)):he("",!0)],2)}const Ve=pe(Re,[["render",Ce]]);export{Ve as default}; diff --git a/web/dist/assets/fs-files-format-d3f2439b.8v7-IHF2.js b/web/dist/assets/fs-files-format-d3f2439b.8v7-IHF2.js deleted file mode 100644 index 36ba771797..0000000000 --- a/web/dist/assets/fs-files-format-d3f2439b.8v7-IHF2.js +++ /dev/null @@ -1 +0,0 @@ -import{a7 as k,B as V}from"./index.CkCcWuPb.js";import{w,x as s,y as t,a6 as d,aq as p,z as g,a5 as y,Z as n,$ as x,a0 as B,a3 as P,F as v,D as U,H as _}from"./vue.Cw4Y52yh.js";const C=w({name:"FsFilesFormat",props:{modelValue:{},color:{default:""},type:{default:"tag"},a:{},tag:{},buildUrl:{},buildUrls:{},getFileName:{}},setup(a,b){const{ui:i}=V(),f=v(()=>a.getFileName||function(e){return typeof e!="string"?(console.warn("获取文件名失败,请配置getFileName"),e):(e==null?void 0:e.lastIndexOf("/"))>=0?e.substring(e.lastIndexOf("/")+1):e});function u(e){return{url:void 0,value:e,name:f.value(e),color:a.color}}async function m(e){if(a.buildUrls){const r=e.map(o=>o.value),h=await a.buildUrls(r);for(let o=0;oa.modelValue,async()=>{c.value=await l()},{immediate:!0});const F=v(()=>({...a}));return{ui:i,itemsRef:c,computedProps:F}}}),N={class:"fs-files-format"},R=["href"],D=["href"];function O(a,b,i,f,u,m){return t(),s("div",N,[a.computedProps.type==="text"?(t(!0),s(d,{key:0},p(a.itemsRef,l=>(t(),s("span",{key:l.url,class:"fs-files-item"},[g("a",n({href:l.url,target:"_blank",ref_for:!0},a.computedProps.a),y(l.name),17,R)]))),128)):(t(!0),s(d,{key:1},p(a.itemsRef,l=>(t(),x(P(a.ui.tag.name),n({key:l.url,class:"fs-tag-item",color:l.color,ref_for:!0},a.computedProps.tag),{default:B(()=>[g("a",n({href:l.url,target:"_blank",ref_for:!0},a.computedProps.a),y(l.name),17,D)]),_:2},1040,["color"]))),128))])}const q=k(C,[["render",O]]);export{q as default}; diff --git a/web/dist/assets/fs-files-format-d3f2439b.CQTDs3Df.js b/web/dist/assets/fs-files-format-d3f2439b.CQTDs3Df.js new file mode 100644 index 0000000000..e31abeebdf --- /dev/null +++ b/web/dist/assets/fs-files-format-d3f2439b.CQTDs3Df.js @@ -0,0 +1 @@ +import{k as F,l as V}from"./index.XK2ik2qb.js";import{d as w,a as s,o as t,G as d,H as p,e as g,K as y,L as n,b as x,w as B,r as P,c as b,g as U,C as _}from"./vue.DmuWcDrn.js";const C=w({name:"FsFilesFormat",props:{modelValue:{},color:{default:""},type:{default:"tag"},a:{},tag:{},buildUrl:{},buildUrls:{},getFileName:{}},setup(a,v){const{ui:i}=V(),f=b(()=>a.getFileName||function(e){return typeof e!="string"?(console.warn("获取文件名失败,请配置getFileName"),e):(e==null?void 0:e.lastIndexOf("/"))>=0?e.substring(e.lastIndexOf("/")+1):e});function u(e){return{url:void 0,value:e,name:f.value(e),color:a.color}}async function m(e){if(a.buildUrls){const r=e.map(o=>o.value),h=await a.buildUrls(r);for(let o=0;oa.modelValue,async()=>{c.value=await l()},{immediate:!0});const k=b(()=>({...a}));return{ui:i,itemsRef:c,computedProps:k}}}),N={class:"fs-files-format"},R=["href"],O=["href"];function D(a,v,i,f,u,m){return t(),s("div",N,[a.computedProps.type==="text"?(t(!0),s(d,{key:0},p(a.itemsRef,l=>(t(),s("span",{key:l.url,class:"fs-files-item"},[g("a",n({href:l.url,target:"_blank",ref_for:!0},a.computedProps.a),y(l.name),17,R)]))),128)):(t(!0),s(d,{key:1},p(a.itemsRef,l=>(t(),x(P(a.ui.tag.name),n({key:l.url,class:"fs-tag-item",color:l.color,ref_for:!0},a.computedProps.tag),{default:B(()=>[g("a",n({href:l.url,target:"_blank",ref_for:!0},a.computedProps.a),y(l.name),17,O)]),_:2},1040,["color"]))),128))])}const $=F(C,[["render",D]]);export{$ as default}; diff --git a/web/dist/assets/fs-uploader-070ca0b5.C2RU4GoG.js b/web/dist/assets/fs-uploader-070ca0b5.C2RU4GoG.js deleted file mode 100644 index 843b28342d..0000000000 --- a/web/dist/assets/fs-uploader-070ca0b5.C2RU4GoG.js +++ /dev/null @@ -1 +0,0 @@ -import{a1 as p,a9 as r}from"./index.CkCcWuPb.js";import{w as n}from"./vue.Cw4Y52yh.js";const m=n({name:"FsUploader",props:{type:{}},setup(e){async function t(){const{getDefaultType:a}=p(),o=e.type||a();return await r(o)}return{getUploaderRef:t}}});export{m as default}; diff --git a/web/dist/assets/fs-uploader-070ca0b5.CZqbYbzt.js b/web/dist/assets/fs-uploader-070ca0b5.CZqbYbzt.js new file mode 100644 index 0000000000..224087b31d --- /dev/null +++ b/web/dist/assets/fs-uploader-070ca0b5.CZqbYbzt.js @@ -0,0 +1 @@ +import{i as a,A as r}from"./index.XK2ik2qb.js";import{d as n}from"./vue.DmuWcDrn.js";const i=n({name:"FsUploader",props:{type:{}},setup(e){async function t(){const{getDefaultType:o}=a(),p=e.type||o();return await r(p)}return{getUploaderRef:t}}});export{i as default}; diff --git a/web/dist/assets/header.BQoAQuJ9.js b/web/dist/assets/header.BQoAQuJ9.js new file mode 100644 index 0000000000..c5e6fff99a --- /dev/null +++ b/web/dist/assets/header.BQoAQuJ9.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.YBPnVDRQ.js","assets/index.XK2ik2qb.js","assets/vue.DmuWcDrn.js","assets/index.JncG-tMh.css","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/index.DPJ4CiP8.css"])))=>i.map(i=>d[i]); +import{O as n,_}from"./index.XK2ik2qb.js";import{d as s,T as c,h as i,p as u,N as d,u as e,b as l,o as p,w as m,k as f,q as h}from"./vue.DmuWcDrn.js";const w=s({name:"layoutHeader"}),R=s({...w,setup(v){const o=h(()=>_(()=>import("./index.YBPnVDRQ.js"),__vite__mapDeps([0,1,2,3,4,5]))),a=n(),{isTagsViewCurrenFull:t}=c(a);return(T,C)=>{const r=i("el-header");return u((p(),l(r,{class:"layout-header"},{default:m(()=>[f(e(o))]),_:1},512)),[[d,!e(t)]])}}});export{R as default}; diff --git a/web/dist/assets/header.D3A4TWO0.js b/web/dist/assets/header.D3A4TWO0.js deleted file mode 100644 index 32022e90c8..0000000000 --- a/web/dist/assets/header.D3A4TWO0.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.DTNB1H71.js","assets/index.CkCcWuPb.js","assets/vue.Cw4Y52yh.js","assets/index.DvQZPXXd.css","assets/_plugin-vue_export-helper.DlAUqK2U.js","assets/index.DPJ4CiP8.css"])))=>i.map(i=>d[i]); -import{b as n,_}from"./index.CkCcWuPb.js";import{w as a,aR as c,aA as i,a1 as u,a8 as l,G as e,$ as d,y as p,a0 as m,a7 as f,aP as h}from"./vue.Cw4Y52yh.js";const w=a({name:"layoutHeader"}),x=a({...w,setup(v){const s=h(()=>_(()=>import("./index.DTNB1H71.js"),__vite__mapDeps([0,1,2,3,4,5]))),o=n(),{isTagsViewCurrenFull:t}=c(o);return(C,R)=>{const r=i("el-header");return u((p(),d(r,{class:"layout-header"},{default:m(()=>[f(e(s))]),_:1},512)),[[l,!e(t)]])}}});export{x as default}; diff --git a/web/dist/assets/horizontal.C8egFxd2.js b/web/dist/assets/horizontal.C8egFxd2.js deleted file mode 100644 index e7d33e6aa5..0000000000 --- a/web/dist/assets/horizontal.C8egFxd2.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/subItem.BfAnlXnN.js","assets/vue.Cw4Y52yh.js","assets/index.CkCcWuPb.js","assets/index.DvQZPXXd.css"])))=>i.map(i=>d[i]); -import{ae as V,u as N,_ as j,o as q,e as G}from"./index.CkCcWuPb.js";import{w as M,aU as Q,af as U,D as I,aR as S,aQ as W,F as J,am as K,O as X,aA as u,x as d,y as l,a7 as r,a0 as c,a6 as R,aq as Y,$ as v,G as Z,aP as ee,z as $,a5 as h,ap as te,a4 as z,ad as ne,P as se}from"./vue.Cw4Y52yh.js";import{_ as ie}from"./_plugin-vue_export-helper.DlAUqK2U.js";const oe={class:"el-menu-horizontal-warp"},ae=["onClick"],le=M({name:"navMenuHorizontal"}),re=M({...le,props:{menuList:{type:Array,default:()=>[]}},setup(T){const f=Q(),w=ee(()=>j(()=>import("./subItem.BfAnlXnN.js"),__vite__mapDeps([0,1,2,3])));U({menuList:[],clientWidth:0});const m=T,A=I(),D=V(),P=N(),{routesList:p}=S(D),{themeConfig:_}=S(P),k=W(),o=I(""),C=J(()=>(m.menuList.shift(),m.menuList)),L=(t,i)=>{for(let e=0;e0&&(n.children.findIndex(s=>s.path===i)!==-1||L(n.children,i)!==null))return e}return null},b=()=>{se(()=>{let t=document.querySelector(".el-menu.el-menu--horizontal li.is-active");if(!t)return!1;A.value.$refs.wrapRef.scrollLeft=t.offsetLeft})},g=t=>t.filter(i=>{var e;return!((e=i.meta)!=null&&e.isHide)}).map(i=>(i=Object.assign({},i),i.children&&(i.children=g(i.children)),i)),B=t=>{const i=t.split("/");let e={children:[]};return g(p.value).map((n,a)=>{n.path===`/${i[1]}`&&(n.k=a,e.item={...n},e.children=[{...n}],n.children&&(e.children=n.children))}),e},H=t=>{const{path:i,meta:e}=t;if(_.value.layout==="classic"){let n=(L(p.value,k.path)||0)-1;o.value=n<0?o.value:C.value[n].path}else{const n=e!=null&&e.isDynamic?e.isDynamicPath.split("/"):i.split("/");n.length>=4&&(e!=null&&e.isHide)?o.value=n.splice(0,3).join("/"):o.value=i}},O=t=>{q.handleOpenLink(t)},x=(t,i)=>{let e=t.children;if(e===void 0&&(o.value=t.path,e=B(t.path).children),e.length>=1){if(e[0].is_catalog){x(e[0]);return}f.push(e[0].path);let{layout:n,isClassicSplitMenu:a}=_.value;n==="classic"&&a&&G.emit("setSendClassicChildren",e[0])}else f.push("/home")};return K(()=>{H(k)}),X(()=>{b()}),(t,i)=>{const e=u("SvgIcon"),n=u("el-sub-menu"),a=u("el-menu-item"),y=u("el-menu");return l(),d("div",oe,[r(y,{"default-active":o.value,"background-color":"transparent",mode:"horizontal"},{default:c(()=>[(l(!0),d(R,null,Y(C.value,(s,E)=>(l(),d(R,null,[s.children&&s.children.length>0?(l(),v(n,{index:s.path,key:s.path},{title:c(()=>[r(e,{name:s.meta.icon},null,8,["name"]),$("span",null,h(t.$t(s.meta.title)),1)]),default:c(()=>[r(Z(w),{chil:s.children},null,8,["chil"])]),_:2},1032,["index"])):(l(),v(a,{index:s.path,key:s.path,style:{"--el-menu-active-color":"#fff"},onClick:F=>x(s,E)},te({_:2},[!s.meta.isLink||s.meta.isLink&&s.meta.isIframe?{name:"title",fn:c(()=>[r(e,{name:s.meta.icon},null,8,["name"]),z(" "+h(t.$t(s.meta.title)),1)]),key:"0"}:{name:"title",fn:c(()=>[$("a",{class:"w100",onClick:ne(F=>O(s),["prevent"])},[r(e,{name:s.meta.icon},null,8,["name"]),z(" "+h(t.$t(s.meta.title)),1)],8,ae)]),key:"1"}]),1032,["index","onClick"]))],64))),256))]),_:1},8,["default-active"])])}}}),he=ie(re,[["__scopeId","data-v-593d995c"]]);export{he as default}; diff --git a/web/dist/assets/horizontal.Ca6WNWsW.js b/web/dist/assets/horizontal.Ca6WNWsW.js new file mode 100644 index 0000000000..1c970bdf1a --- /dev/null +++ b/web/dist/assets/horizontal.Ca6WNWsW.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/subItem.qTCEXAcU.js","assets/vue.DmuWcDrn.js","assets/index.XK2ik2qb.js","assets/index.JncG-tMh.css"])))=>i.map(i=>d[i]); +import{M as F,u as N,_ as j,Q as q,p as G}from"./index.XK2ik2qb.js";import{d as z,v as K,z as Q,g as I,T as S,s as W,c as Y,I as Z,x as J,h as u,a as d,o as a,k as r,w as c,G as v,H as U,b as R,u as X,q as ee,e as M,K as h,Z as te,m as T,Y as ne,D as se}from"./vue.DmuWcDrn.js";import{_ as ie}from"./_plugin-vue_export-helper.DlAUqK2U.js";const oe={class:"el-menu-horizontal-warp"},le=["onClick"],ae=z({name:"navMenuHorizontal"}),re=z({...ae,props:{menuList:{type:Array,default:()=>[]}},setup($){const m=K(),b=ee(()=>j(()=>import("./subItem.qTCEXAcU.js"),__vite__mapDeps([0,1,2,3])));Q({menuList:[],clientWidth:0});const f=$,w=I(),D=F(),H=N(),{routesList:p}=S(D),{themeConfig:_}=S(H),k=W(),o=I(""),C=Y(()=>(f.menuList.shift(),f.menuList)),g=(t,i)=>{for(let e=0;e0&&(n.children.findIndex(s=>s.path===i)!==-1||g(n.children,i)!==null))return e}return null},A=()=>{se(()=>{let t=document.querySelector(".el-menu.el-menu--horizontal li.is-active");if(!t)return!1;w.value.$refs.wrapRef.scrollLeft=t.offsetLeft})},L=t=>t.filter(i=>{var e;return!((e=i.meta)!=null&&e.isHide)}).map(i=>(i=Object.assign({},i),i.children&&(i.children=L(i.children)),i)),B=t=>{const i=t.split("/");let e={children:[]};return L(p.value).map((n,l)=>{n.path===`/${i[1]}`&&(n.k=l,e.item={...n},e.children=[{...n}],n.children&&(e.children=n.children))}),e},E=t=>{const{path:i,meta:e}=t;if(_.value.layout==="classic"){let n=(g(p.value,k.path)||0)-1;o.value=n<0?o.value:C.value[n].path}else{const n=e!=null&&e.isDynamic?e.isDynamicPath.split("/"):i.split("/");n.length>=4&&(e!=null&&e.isHide)?o.value=n.splice(0,3).join("/"):o.value=i}},O=t=>{q.handleOpenLink(t)},x=(t,i)=>{let e=t.children;if(e===void 0&&(o.value=t.path,e=B(t.path).children),e.length>=1){if(e[0].is_catalog){x(e[0]);return}m.push(e[0].path);let{layout:n,isClassicSplitMenu:l}=_.value;n==="classic"&&l&&G.emit("setSendClassicChildren",e[0])}else m.push("/home")};return Z(()=>{E(k)}),J(()=>{A()}),(t,i)=>{const e=u("SvgIcon"),n=u("el-sub-menu"),l=u("el-menu-item"),y=u("el-menu");return a(),d("div",oe,[r(y,{"default-active":o.value,"background-color":"transparent",mode:"horizontal"},{default:c(()=>[(a(!0),d(v,null,U(C.value,(s,P)=>(a(),d(v,null,[s.children&&s.children.length>0?(a(),R(n,{index:s.path,key:s.path},{title:c(()=>[r(e,{name:s.meta.icon},null,8,["name"]),M("span",null,h(t.$t(s.meta.title)),1)]),default:c(()=>[r(X(b),{chil:s.children},null,8,["chil"])]),_:2},1032,["index"])):(a(),R(l,{index:s.path,key:s.path,style:{"--el-menu-active-color":"#fff"},onClick:V=>x(s,P)},te({_:2},[!s.meta.isLink||s.meta.isLink&&s.meta.isIframe?{name:"title",fn:c(()=>[r(e,{name:s.meta.icon},null,8,["name"]),T(" "+h(t.$t(s.meta.title)),1)]),key:"0"}:{name:"title",fn:c(()=>[M("a",{class:"w100",onClick:ne(V=>O(s),["prevent"])},[r(e,{name:s.meta.icon},null,8,["name"]),T(" "+h(t.$t(s.meta.title)),1)],8,le)]),key:"1"}]),1032,["index","onClick"]))],64))),256))]),_:1},8,["default-active"])])}}}),he=ie(re,[["__scopeId","data-v-593d995c"]]);export{he as default}; diff --git a/web/dist/assets/hour.sTApfnsu.js b/web/dist/assets/hour.sTApfnsu.js new file mode 100644 index 0000000000..30fcbf739c --- /dev/null +++ b/web/dist/assets/hour.sTApfnsu.js @@ -0,0 +1 @@ +import{_ as m}from"./hour.vue_vue_type_script_setup_true_lang.CQYhc03P.js";import"./vue.DmuWcDrn.js";export{m as default}; diff --git a/web/dist/assets/hour.vue_vue_type_script_setup_true_lang.CQYhc03P.js b/web/dist/assets/hour.vue_vue_type_script_setup_true_lang.CQYhc03P.js new file mode 100644 index 0000000000..b7e68eba54 --- /dev/null +++ b/web/dist/assets/hour.vue_vue_type_script_setup_true_lang.CQYhc03P.js @@ -0,0 +1 @@ +import{d as G,g as i,c as U,C as V,h as p,b as H,o as _,w as n,k as o,m as r,a as K,G as q,H as A,K as I}from"./vue.DmuWcDrn.js";const M=G({__name:"hour",props:{cron:{},check:{type:Function}},emits:["update"],setup(B,{expose:N,emit:T}){const d=T,f=B,u=i(1),t=i(0),s=i(1),m=i(0),v=i(1),b=i([]),k=f.check;N({cycle01:t,cycle02:s,average01:m,average02:v,checkboxList:b});const y=U(()=>(t.value=k(t.value,0,22),s.value=k(s.value,t.value?t.value+1:1,23),t.value+"-"+s.value)),w=U(()=>(m.value=k(m.value,0,22),v.value=k(v.value,1,23-m.value||0),m.value+"/"+v.value)),C=U(()=>{let a=b.value.join();return a==""?"*":a});V(u,(a,e)=>{F()}),V(y,(a,e)=>{L()}),V(w,(a,e)=>{O()}),V(C,(a,e)=>{S()}),V(f,(a,e)=>{D(a.cron.hour)});function D(a){a&&(a=="*"?u.value=1:typeof a=="string"&&a.indexOf("-")>-1?u.value=2:typeof a=="string"&&a.indexOf("/")>-1?u.value=3:u.value=4)}function F(){switch(f.cron.min==="*"&&d("update","min","0","hour"),f.cron.second==="*"&&d("update","second","0","hour"),u.value){case 1:d("update","hour","*");break;case 2:d("update","hour",y.value);break;case 3:d("update","hour",w.value);break;case 4:d("update","hour",C.value);break}}function L(){u.value==2&&d("update","hour",y.value)}function O(){u.value==3&&d("update","hour",w.value)}function S(){u.value==4&&d("update","hour",C.value)}return(a,e)=>{const x=p("el-radio"),g=p("el-form-item"),c=p("el-input-number"),j=p("el-option"),z=p("el-select"),E=p("el-form");return _(),H(E,{size:"small"},{default:n(()=>[o(g,null,{default:n(()=>[o(x,{modelValue:u.value,"onUpdate:modelValue":e[0]||(e[0]=l=>u.value=l),label:1},{default:n(()=>e[9]||(e[9]=[r(" 小时,允许的通配符[, - * /] ")])),_:1},8,["modelValue"])]),_:1}),o(g,null,{default:n(()=>[o(x,{modelValue:u.value,"onUpdate:modelValue":e[3]||(e[3]=l=>u.value=l),label:2},{default:n(()=>[e[10]||(e[10]=r(" 周期从 ")),o(c,{modelValue:t.value,"onUpdate:modelValue":e[1]||(e[1]=l=>t.value=l),min:0,max:22},null,8,["modelValue"]),e[11]||(e[11]=r(" - ")),o(c,{modelValue:s.value,"onUpdate:modelValue":e[2]||(e[2]=l=>s.value=l),min:t.value?t.value+1:1,max:23},null,8,["modelValue","min"]),e[12]||(e[12]=r(" 小时 "))]),_:1},8,["modelValue"])]),_:1}),o(g,null,{default:n(()=>[o(x,{modelValue:u.value,"onUpdate:modelValue":e[6]||(e[6]=l=>u.value=l),label:3},{default:n(()=>[e[13]||(e[13]=r(" 从 ")),o(c,{modelValue:m.value,"onUpdate:modelValue":e[4]||(e[4]=l=>m.value=l),min:0,max:22},null,8,["modelValue"]),e[14]||(e[14]=r(" 小时开始,每 ")),o(c,{modelValue:v.value,"onUpdate:modelValue":e[5]||(e[5]=l=>v.value=l),min:1,max:23-m.value||0},null,8,["modelValue","max"]),e[15]||(e[15]=r(" 小时执行一次 "))]),_:1},8,["modelValue"])]),_:1}),o(g,null,{default:n(()=>[o(x,{modelValue:u.value,"onUpdate:modelValue":e[8]||(e[8]=l=>u.value=l),label:4},{default:n(()=>[e[16]||(e[16]=r(" 指定 ")),o(z,{clearable:"",modelValue:b.value,"onUpdate:modelValue":e[7]||(e[7]=l=>b.value=l),placeholder:"可多选",multiple:"",style:{width:"100%"}},{default:n(()=>[(_(),K(q,null,A(24,l=>o(j,{key:l,value:l-1},{default:n(()=>[r(I(l-1),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1})]),_:1})}}});export{M as _}; diff --git a/web/dist/assets/iframes.CcKcwRP_.js b/web/dist/assets/iframes.CcKcwRP_.js new file mode 100644 index 0000000000..9f52387cf4 --- /dev/null +++ b/web/dist/assets/iframes.CcKcwRP_.js @@ -0,0 +1 @@ +import{d as h,g as k,s as y,c as d,C as c,j as I,a as n,o,e as w,G as O,H as x,D as L,p,k as R,w as b,N as v,U as B}from"./vue.DmuWcDrn.js";import{x as C}from"./index.XK2ik2qb.js";const D={class:"layout-padding layout-padding-unset layout-iframe"},E={class:"layout-padding-auto layout-padding-view"},N=["src","data-url"],P=h({name:"layoutIframeView"}),V=h({...P,props:{refreshKey:{type:String,default:()=>""},name:{type:String,default:()=>"slide-right"},list:{type:Array,default:()=>[]}},setup(f){const i=f,l=k(),r=y(),g=d(()=>i.list.filter(e=>{var t,s,a;if((t=e.meta)!=null&&t.isIframeOpen){const m=((s=e.meta)==null?void 0:s.isLink)||"";m.includes("{{token}}")&&(e.meta.isLink=m.replace("{{token}}",C.cookie.get("token")))}return(a=e.meta)==null?void 0:a.isIframeOpen})),_=d(()=>r.path),u=(e,t)=>{L(()=>{if(!l.value)return!1;l.value.forEach(s=>{s.dataset.url===e&&(s.onload=()=>{var a;(a=t.meta)!=null&&a.isIframeOpen&&t.meta.loading&&(t.meta.loading=!1)})})})};return c(()=>r.fullPath,e=>{const t=i.list.find(s=>s.path===e);if(!t)return!1;t.meta.isIframeOpen||(t.meta.isIframeOpen=!0),u(e,t)},{immediate:!0}),c(()=>i.refreshKey,()=>{const e=i.list.find(t=>t.path===r.path);if(!e)return!1;e.meta.isIframeOpen&&(e.meta.isIframeOpen=!1),setTimeout(()=>{e.meta.isIframeOpen=!0,e.meta.loading=!0,u(r.fullPath,e)})},{deep:!0}),(e,t)=>{const s=I("loading");return o(),n("div",D,[w("div",E,[(o(!0),n(O,null,x(g.value,a=>p((o(),n("div",{class:"w100",key:a.path,"element-loading-background":"white"},[R(B,{name:f.name,mode:"out-in"},{default:b(()=>[p((o(),n("iframe",{src:a.meta.isLink,key:a.path,frameborder:"0",height:"100%",width:"100%",style:{position:"absolute"},"data-url":a.path,ref_for:!0,ref_key:"iframeRef",ref:l},null,8,N)),[[v,_.value===a.path]])]),_:2},1032,["name"])])),[[s,a.meta.loading]])),128))])])}}});export{V as default}; diff --git a/web/dist/assets/iframes.DGiIlSBz.js b/web/dist/assets/iframes.DGiIlSBz.js deleted file mode 100644 index f0ad9459ca..0000000000 --- a/web/dist/assets/iframes.DGiIlSBz.js +++ /dev/null @@ -1 +0,0 @@ -import{w as h,D as _,aQ as k,F as d,H as c,aJ as I,x as n,y as o,z as w,a6 as x,aq as O,P as L,a1 as p,a7 as P,a0 as R,a8 as b,aF as v}from"./vue.Cw4Y52yh.js";import{x as B}from"./index.CkCcWuPb.js";const D={class:"layout-padding layout-padding-unset layout-iframe"},E={class:"layout-padding-auto layout-padding-view"},F=["src","data-url"],S=h({name:"layoutIframeView"}),C=h({...S,props:{refreshKey:{type:String,default:()=>""},name:{type:String,default:()=>"slide-right"},list:{type:Array,default:()=>[]}},setup(f){const i=f,l=_(),r=k(),g=d(()=>i.list.filter(e=>{var t,s,a;if((t=e.meta)!=null&&t.isIframeOpen){const m=((s=e.meta)==null?void 0:s.isLink)||"";m.includes("{{token}}")&&(e.meta.isLink=m.replace("{{token}}",B.cookie.get("token")))}return(a=e.meta)==null?void 0:a.isIframeOpen})),y=d(()=>r.path),u=(e,t)=>{L(()=>{if(!l.value)return!1;l.value.forEach(s=>{s.dataset.url===e&&(s.onload=()=>{var a;(a=t.meta)!=null&&a.isIframeOpen&&t.meta.loading&&(t.meta.loading=!1)})})})};return c(()=>r.fullPath,e=>{const t=i.list.find(s=>s.path===e);if(!t)return!1;t.meta.isIframeOpen||(t.meta.isIframeOpen=!0),u(e,t)},{immediate:!0}),c(()=>i.refreshKey,()=>{const e=i.list.find(t=>t.path===r.path);if(!e)return!1;e.meta.isIframeOpen&&(e.meta.isIframeOpen=!1),setTimeout(()=>{e.meta.isIframeOpen=!0,e.meta.loading=!0,u(r.fullPath,e)})},{deep:!0}),(e,t)=>{const s=I("loading");return o(),n("div",D,[w("div",E,[(o(!0),n(x,null,O(g.value,a=>p((o(),n("div",{class:"w100",key:a.path,"element-loading-background":"white"},[P(v,{name:f.name,mode:"out-in"},{default:R(()=>[p((o(),n("iframe",{src:a.meta.isLink,key:a.path,frameborder:"0",height:"100%",width:"100%",style:{position:"absolute"},"data-url":a.path,ref_for:!0,ref_key:"iframeRef",ref:l},null,8,F)),[[b,y.value===a.path]])]),_:2},1032,["name"])])),[[s,a.meta.loading]])),128))])])}}});export{C as default}; diff --git a/web/dist/assets/index-03e6f703.C7gOK_VK.js b/web/dist/assets/index-03e6f703.25hsFXXE.js similarity index 98% rename from web/dist/assets/index-03e6f703.C7gOK_VK.js rename to web/dist/assets/index-03e6f703.25hsFXXE.js index af19c38162..6b9eea6f2a 100644 --- a/web/dist/assets/index-03e6f703.C7gOK_VK.js +++ b/web/dist/assets/index-03e6f703.25hsFXXE.js @@ -1,4 +1,4 @@ -import{a7 as $z,a2 as VC,aa as WC,B as Hz,a1 as Uz}from"./index.CkCcWuPb.js";import{w as O3,aA as GC,x as B3,y as k3,a7 as qC,Z as Sy,I as $_,D as il,H as Ww,F as KC,ae as Vz,O as H_,av as Wz,J as Gz}from"./vue.Cw4Y52yh.js";var at=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function qz(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Zu(e){var t={exports:{}};return e(t,t.exports),t.exports}var mi,Sg,yh=function(e){return e&&e.Math==Math&&e},Be=yh(typeof globalThis=="object"&&globalThis)||yh(typeof window=="object"&&window)||yh(typeof self=="object"&&self)||yh(typeof at=="object"&&at)||function(){return this}()||Function("return this")(),F3=Function.prototype,XC=F3.apply,Kz=F3.bind,YC=F3.call,U_=typeof Reflect=="object"&&Reflect.apply||(Kz?YC.bind(XC):function(){return YC.apply(XC,arguments)}),V_=Function.prototype,Gw=V_.bind,qw=V_.call,Xz=Gw&&Gw.bind(qw),pt=Gw?function(e){return e&&Xz(qw,e)}:function(e){return e&&function(){return qw.apply(e,arguments)}},dr=function(e){return typeof e=="function"},Vr=function(e){try{return!!e()}catch{return!0}},zr=!Vr(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),yc=Function.prototype.call,Qr=yc.bind?yc.bind(yc):function(){return yc.apply(yc,arguments)},JC={}.propertyIsEnumerable,ZC=Object.getOwnPropertyDescriptor,Yz=ZC&&!JC.call({1:2},1)?function(e){var t=ZC(this,e);return!!t&&t.enumerable}:JC,T3={f:Yz},Vn=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},Jz=pt({}.toString),Zz=pt("".slice),du=function(e){return Zz(Jz(e),8,-1)},xy=Be.Object,Qz=pt("".split),W_=Vr(function(){return!xy("z").propertyIsEnumerable(0)})?function(e){return du(e)=="String"?Qz(e,""):xy(e)}:xy,e$=Be.TypeError,_3=function(e){if(e==null)throw e$("Can't call method on "+e);return e},To=function(e){return W_(_3(e))},wn=function(e){return typeof e=="object"?e!==null:dr(e)},Jr={},QC=function(e){return dr(e)?e:void 0},Kl=function(e,t){return arguments.length<2?QC(Jr[e])||QC(Be[e]):Jr[e]&&Jr[e][t]||Be[e]&&Be[e][t]},wd=pt({}.isPrototypeOf),Ay=Kl("navigator","userAgent")||"",eS=Be.process,tS=Be.Deno,rS=eS&&eS.versions||tS&&tS.version,nS=rS&&rS.v8;nS&&(Sg=(mi=nS.split("."))[0]>0&&mi[0]<4?1:+(mi[0]+mi[1])),!Sg&&Ay&&(!(mi=Ay.match(/Edge\/(\d+)/))||mi[1]>=74)&&(mi=Ay.match(/Chrome\/(\d+)/))&&(Sg=+mi[1]);var bh,ov=Sg,uo=!!Object.getOwnPropertySymbols&&!Vr(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&ov&&ov<41}),j3=uo&&!Symbol.sham&&typeof Symbol.iterator=="symbol",t$=Be.Object,al=j3?function(e){return typeof e=="symbol"}:function(e){var t=Kl("Symbol");return dr(t)&&wd(t.prototype,t$(e))},r$=Be.String,Kw=function(e){try{return r$(e)}catch{return"Object"}},n$=Be.TypeError,P3=function(e){if(dr(e))return e;throw n$(Kw(e)+" is not a function")},iv=function(e,t){var r=e[t];return r==null?void 0:P3(r)},o$=Be.TypeError,i$=Object.defineProperty,Gi=Be["__core-js_shared__"]||function(e,t){try{i$(Be,e,{value:t,configurable:!0,writable:!0})}catch{Be[e]=t}return t}("__core-js_shared__",{}),Qu=Zu(function(e){(e.exports=function(t,r){return Gi[t]||(Gi[t]=r!==void 0?r:{})})("versions",[]).push({version:"3.19.3",mode:"pure",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})}),a$=Be.Object,yp=function(e){return a$(_3(e))},u$=pt({}.hasOwnProperty),Ue=Object.hasOwn||function(e,t){return u$(yp(e),t)},s$=0,l$=Math.random(),c$=pt(1 .toString),av=function(e){return"Symbol("+(e===void 0?"":e)+")_"+c$(++s$+l$,36)},bc=Qu("wks"),pu=Be.Symbol,oS=pu&&pu.for,f$=j3?pu:pu&&pu.withoutSetter||av,Or=function(e){if(!Ue(bc,e)||!uo&&typeof bc[e]!="string"){var t="Symbol."+e;uo&&Ue(pu,e)?bc[e]=pu[e]:bc[e]=j3&&oS?oS(t):f$(t)}return bc[e]},d$=Be.TypeError,p$=Or("toPrimitive"),h$=function(e,t){if(!wn(e)||al(e))return e;var r,n=iv(e,p$);if(n){if(r=Qr(n,e,t),!wn(r)||al(r))return r;throw d$("Can't convert object to primitive value")}return function(o,i){var a,u;if(dr(a=o.toString)&&!wn(u=Qr(a,o))||dr(a=o.valueOf)&&!wn(u=Qr(a,o))||i!=="string")return u;throw o$("Can't convert object to primitive value")}(e,t)},Xl=function(e){var t=h$(e,"string");return al(t)?t:t+""},Xw=Be.document,g$=wn(Xw)&&wn(Xw.createElement),G_=function(e){return g$?Xw.createElement(e):{}},q_=!zr&&!Vr(function(){return Object.defineProperty(G_("div"),"a",{get:function(){return 7}}).a!=7}),iS=Object.getOwnPropertyDescriptor,v$=zr?iS:function(e,t){if(e=To(e),t=Xl(t),q_)try{return iS(e,t)}catch{}if(Ue(e,t))return Vn(!Qr(T3.f,e,t),e[t])},gm={f:v$},m$=/#|\.prototype\./,bp=function(e,t){var r=b$[y$(e)];return r==E$||r!=w$&&(dr(t)?Vr(t):!!t)},y$=bp.normalize=function(e){return String(e).replace(m$,".").toLowerCase()},b$=bp.data={},w$=bp.NATIVE="N",E$=bp.POLYFILL="P",D$=bp,aS=pt(pt.bind),N3=function(e,t){return P3(e),t===void 0?e:aS?aS(e,t):function(){return e.apply(t,arguments)}},C$=Be.String,S$=Be.TypeError,rn=function(e){if(wn(e))return e;throw S$(C$(e)+" is not an object")},x$=Be.TypeError,uS=Object.defineProperty,A$=zr?uS:function(e,t,r){if(rn(e),t=Xl(t),rn(r),q_)try{return uS(e,t,r)}catch{}if("get"in r||"set"in r)throw x$("Accessors not supported");return"value"in r&&(e[t]=r.value),e},xa={f:A$},Fr=zr?function(e,t,r){return xa.f(e,t,Vn(1,r))}:function(e,t,r){return e[t]=r,e},O$=gm.f,B$=function(e){var t=function(r,n,o){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,o)}return U_(e,this,arguments)};return t.prototype=e.prototype,t},Wo=function(e,t){var r,n,o,i,a,u,s,l,c=e.target,f=e.global,d=e.stat,p=e.proto,v=f?Be:d?Be[c]:(Be[c]||{}).prototype,m=f?Jr:Jr[c]||Fr(Jr,c,{})[c],g=m.prototype;for(o in t)r=!D$(f?o:c+(d?".":"#")+o,e.forced)&&v&&Ue(v,o),a=m[o],r&&(u=e.noTargetGet?(l=O$(v,o))&&l.value:v[o]),i=r&&u?u:t[o],r&&typeof a==typeof i||(s=e.bind&&r?N3(i,Be):e.wrap&&r?B$(i):p&&dr(i)?pt(i):i,(e.sham||i&&i.sham||a&&a.sham)&&Fr(s,"sham",!0),Fr(m,o,s),p&&(Ue(Jr,n=c+"Prototype")||Fr(Jr,n,{}),Fr(Jr[n],o,i),e.real&&g&&!g[o]&&Fr(g,o,i)))},sS=Qu("keys"),vm=function(e){return sS[e]||(sS[e]=av(e))},k$=!Vr(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),lS=vm("IE_PROTO"),Yw=Be.Object,F$=Yw.prototype,uv=k$?Yw.getPrototypeOf:function(e){var t=yp(e);if(Ue(t,lS))return t[lS];var r=t.constructor;return dr(r)&&t instanceof r?r.prototype:t instanceof Yw?F$:null},T$=Be.String,_$=Be.TypeError,sv=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=pt(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),t=r instanceof Array}catch{}return function(n,o){return rn(n),function(i){if(typeof i=="object"||dr(i))return i;throw _$("Can't set "+T$(i)+" as a prototype")}(o),t?e(n,o):n.__proto__=o,n}}():void 0),j$=Math.ceil,P$=Math.floor,I3=function(e){var t=+e;return t!=t||t===0?0:(t>0?P$:j$)(t)},N$=Math.max,I$=Math.min,Jw=function(e,t){var r=I3(e);return r<0?N$(r+t,0):I$(r,t)},R$=Math.min,wp=function(e){return(t=e.length)>0?R$(I3(t),9007199254740991):0;var t},L$=function(e){return function(t,r,n){var o,i=To(t),a=wp(i),u=Jw(n,a);if(e&&r!=r){for(;a>u;)if((o=i[u++])!=o)return!0}else for(;a>u;u++)if((e||u in i)&&i[u]===r)return e||u||0;return!e&&-1}},M$={indexOf:L$(!1)},Ep={},z$=M$.indexOf,cS=pt([].push),K_=function(e,t){var r,n=To(e),o=0,i=[];for(r in n)!Ue(Ep,r)&&Ue(n,r)&&cS(i,r);for(;t.length>o;)Ue(n,r=t[o++])&&(~z$(i,r)||cS(i,r));return i},lv=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],$$=lv.concat("length","prototype"),H$=Object.getOwnPropertyNames||function(e){return K_(e,$$)},R3={f:H$},xg={f:Object.getOwnPropertySymbols},U$=pt([].concat),V$=Kl("Reflect","ownKeys")||function(e){var t=R3.f(rn(e)),r=xg.f;return r?U$(t,r(e)):t},L3=Object.keys||function(e){return K_(e,lv)},W$=zr?Object.defineProperties:function(e,t){rn(e);for(var r,n=To(t),o=L3(t),i=o.length,a=0;i>a;)xa.f(e,r=o[a++],n[r]);return e},G$=Kl("document","documentElement"),X_=vm("IE_PROTO"),Oy=function(){},Y_=function(e){return" - - + + +
diff --git a/web/dist/version-build b/web/dist/version-build index c5c344f671..9d4faeae39 100644 --- a/web/dist/version-build +++ b/web/dist/version-build @@ -1 +1 @@ -3.1.0.1743306062174 \ No newline at end of file +3.1.0.1745228189297 \ No newline at end of file -- Gitee From 3977e905f7ba7addc1e1300e8a4ed7be18fec9ee Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Tue, 22 Apr 2025 10:25:24 +0800 Subject: [PATCH 22/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/requirements.txt | Bin 651 -> 3608 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 9cae2cca7e0fe4085fa49dec92d9f5203dd10aea..bfa119c1a7c8f192aa1a09b09e8b967fccbc8565 100644 GIT binary patch literal 3608 zcmZ{nUvJw+5XA4fKtBo%ONx{BArA!_1Sne6Km!zgGGvLe7)zq8KbD;j-*$dGJRNB} z5NON1z1^AJ*}e0B|4!2?9nxLerD@uxW%{VkWx7bC^g%!0r61D|T3M$Dt+IBdx06`+ z%3gaL?XJ@z)>->$u>PDjX_hKQY2>F)Z93|E_T^aibhR?%?ta!$DD&!?_q-are_Nnyzfx95#bP+4zhN|#vLvYTE8=S!4@{PF!6UIoakv6 zo6Jdw+1pe2%QAee|As#u%T?Sg7x1yqOW&_s5a4)&jh7qXIMu^a; zYr0qVT%CfiDE8&RYg2KiQyPJu}{}6kQ6wg))X}>vRf*xyRfs@Oz!Z@9(VSvGDjRk7ah2{+lb}LMWdV zmx)Zh(8D->W>q|DbuL_V<|J}5oOSk>Rm3#8Nl&t01$(BVb%0*7W~ln39+cTvN$z%Z zTE{y3ZIk189^PqMY=mhRxyqB>YROTS;xP*UJ}-)9m(i(cl&P}m=9zgHl#O_Ay1F~M z70(W)K^@hC15>l`pw6xqmJ6-bvPT`L8#`in`ZGE2^?t3sKE_(svOTP$GFwH+Q#a2= zV_A#IKD6y=+Rv$HitSqIn6<6!pE|TTqn=+m#HRTi|tDFSmZo+QG zlhd-5>fkyGwk7vlWe&dd)s3E3pOtdZ=sWhHa(;|_D}K*W=dF;9!-hKl91r<}6AIq+ zs!fktDgD(O#cfs9qaxCExfY-+)-!qJq~~nRQw)Bt2>z%mJxks3WGiBVD&v03j(G~> zd+lewpa||Sjp`4Yv3BR10o<+??YH!I`f}#&d=|8S3N4lWOP}96D>PJe4C2fP{bUTz z=Y{aMk@1q-gKjBrWemTksL({wz;Ouv{d$995~tp^*8b5Q@Q*Hcp6%cy`}BCZK{*>) zDXcvRucvpuf8w`zw}KvphC5)T-<+dV9JS}02kI+%VRAnOGk1D9ZQSR%lI4s9m)Vd( zCKeGm130&sQgjEIcs;p`O1?zaP&J&LS@%V$@IlC?!slB{zBA>FIL}ttjl4XCFFM7O zuYYTWuX9WtU45UhFFSyBrU_@Ubx~A#)I08u!)}GsC}xt?a*Y0hmrr&p4Tk2I@nh$E z{;l$v73g_{8jfN@uUCr42}YJn-Ae_JI@^XP6No0!k**W#+~kP?o08#^c%t69e3$>L z@IC5keA2#K#U&&6`kpax*178)Gi;@DahfPpHSw5jC1Vb{)o*{hxu`4IfpU?_lRi9K7xtC1F&+4xScU=(DpN@@ zl#Q%=O#rQzY$sY`{xasM+y0+PG;e-W@AYfB!c+33oK4kTt#r>XI#qe1?-)p3nEYVO z+pG1TlG;f=mugI}q1p`jqE=f*V_Myb*=a2|?>r+1_(42}CasCX%0V>y7Qk#(vbl(3 zB=lo{0)PW}zzQodQAq0pE~M_8Ot%@f5L~B^_?jxDqoPNpP#6hGq%8!S`t75$n3PCh zH3af|7edb(xemOcvf)C%N_1Z&{4F*F|BUsN9bp65?xXNSY_^iya%BidmLGH05?3m# zi)rlS^}Bv=<~zHXH`7NU9Ov){=pc!Kk?wm)+YvP%?0sAyaM&&*A+S=d_ma{Xj5wCN P9VQM( Date: Tue, 22 Apr 2025 10:39:54 +0800 Subject: [PATCH 23/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/conf/env.py | 2 -- docker_env/django/Dockerfile | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/conf/env.py b/backend/conf/env.py index 6142f8f16e..f907df958e 100644 --- a/backend/conf/env.py +++ b/backend/conf/env.py @@ -16,7 +16,6 @@ DATABASE_NAME = 'xxibears' # mysql 时使用 # 数据库地址 改为自己数据库地址 DATABASE_HOST = '192.168.100.252' -# DATABASE_HOST = '177.10.0.13' # 正式环境使用 # # 数据库端口 DATABASE_PORT = 3306 # # 数据库用户名 @@ -33,7 +32,6 @@ REDIS_DB = 1 CELERY_BROKER_DB = 3 REDIS_PASSWORD = 'xxibears@666' REDIS_HOST = '192.168.100.252' -# REDIS_HOST = '177.10.0.15' # 正式环境使用 REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' # ================================================= # # ****************** 功能 启停 ******************* # diff --git a/docker_env/django/Dockerfile b/docker_env/django/Dockerfile index 4a9415d162..33cfea9558 100644 --- a/docker_env/django/Dockerfile +++ b/docker_env/django/Dockerfile @@ -3,7 +3,7 @@ WORKDIR /backend COPY ./backend/ . RUN ls ./conf/ RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' -RUN sed -i "s|DATABASE_HOST = '127.0.0.1'|DATABASE_HOST = '177.10.0.1'|g" ./conf/env.py -RUN sed -i "s|REDIS_HOST = '127.0.0.1'|REDIS_HOST = '177.10.0.1'|g" ./conf/env.py +RUN sed -i "s|DATABASE_HOST = '192.168.100.252'|DATABASE_HOST = '177.10.0.1'|g" ./conf/env.py +RUN sed -i "s|REDIS_HOST = '192.168.100.252'|REDIS_HOST = '177.10.0.1'|g" ./conf/env.py RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt CMD ["sh","docker_start.sh"] -- Gitee From a06adfa3bcd1ec7769c84e563208470f27743235 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Tue, 22 Apr 2025 11:41:28 +0800 Subject: [PATCH 24/31] update --- backend/plugins/dvadmin3-flow-backend | 1 - docker-compose.yml | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) delete mode 160000 backend/plugins/dvadmin3-flow-backend diff --git a/backend/plugins/dvadmin3-flow-backend b/backend/plugins/dvadmin3-flow-backend deleted file mode 160000 index e46f638db6..0000000000 --- a/backend/plugins/dvadmin3-flow-backend +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e46f638db664b18091026de8d4d30264bb89f4e1 diff --git a/docker-compose.yml b/docker-compose.yml index f716e2d4bc..b943860bf8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -60,9 +60,8 @@ services: --max_connections=1000 --default-authentication-plugin=mysql_native_password volumes: - - "./docker_env/mysql/data:/var/lib/mysql" - - "./docker_env/mysql/conf.d:/etc/mysql/conf.d" - - "./docker_env/mysql/logs:/logs" + - ./backend:/backend + - ./logs/log:/var/log networks: network: ipv4_address: 177.10.0.13 -- Gitee From 892ef1c97c8ec684c459c568bacf110a41ff6b5a Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Tue, 22 Apr 2025 11:42:58 +0800 Subject: [PATCH 25/31] update --- .../plugins/dvadmin3-flow-backend/.gitignore | 101 ++++ backend/plugins/dvadmin3-flow-backend/LICENSE | 21 + .../plugins/dvadmin3-flow-backend/MANIFEST.in | 1 + .../plugins/dvadmin3-flow-backend/README.md | 50 ++ .../plugins/dvadmin3-flow-backend/__init__.py | 1 + .../dvadmin3_flow/__init__.py | 1 + .../dvadmin3_flow/app_views/__init__.py | 1 + .../dvadmin3_flow/app_views/flow_data.py | 171 +++++++ .../dvadmin3_flow/apps.py | 6 + .../dvadmin3_flow/base_model.py | 463 ++++++++++++++++++ .../dvadmin3_flow/fixtures/__init__.py | 0 .../dvadmin3_flow/fixtures/init_menu.json | 220 +++++++++ .../dvadmin3_flow/fixtures/initialize.py | 26 + .../dvadmin3_flow/migrations/__init__.py | 1 + .../dvadmin3_flow/models.py | 272 ++++++++++ .../dvadmin3_flow/settings.py | 29 ++ .../dvadmin3_flow/urls.py | 17 + .../dvadmin3_flow/views/__init__.py | 1 + .../dvadmin3_flow/views/flow_data.py | 250 ++++++++++ .../dvadmin3_flow/views/flow_info.py | 269 ++++++++++ .../dvadmin3_flow/views/flow_record.py | 21 + .../dvadmin3-flow-backend/pyproject.toml | 6 + .../plugins/dvadmin3-flow-backend/setup.py | 25 + 23 files changed, 1953 insertions(+) create mode 100644 backend/plugins/dvadmin3-flow-backend/.gitignore create mode 100644 backend/plugins/dvadmin3-flow-backend/LICENSE create mode 100644 backend/plugins/dvadmin3-flow-backend/MANIFEST.in create mode 100644 backend/plugins/dvadmin3-flow-backend/README.md create mode 100644 backend/plugins/dvadmin3-flow-backend/__init__.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/__init__.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/app_views/__init__.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/app_views/flow_data.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/apps.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/base_model.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/__init__.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/init_menu.json create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/initialize.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/migrations/__init__.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/models.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/settings.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/urls.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/__init__.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_data.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_info.py create mode 100644 backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_record.py create mode 100644 backend/plugins/dvadmin3-flow-backend/pyproject.toml create mode 100644 backend/plugins/dvadmin3-flow-backend/setup.py diff --git a/backend/plugins/dvadmin3-flow-backend/.gitignore b/backend/plugins/dvadmin3-flow-backend/.gitignore new file mode 100644 index 0000000000..6c50cc968f --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/.gitignore @@ -0,0 +1,101 @@ +# Byte-compiled / optimized / DLL files +*.py[cod] +*$py.class +__pycache__/ +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# IPython Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# dotenv +.env + +# virtualenv +venv/ +ENV/ + +# Spyder project settings +.spyderproject + +# Rope project settings +.ropeproject +.idea/ +*.db +.DS_Store +**/migrations/*.py +!**/migrations/__init__.py +*.pyc +conf/* +!conf/env.example.py +db.sqlite3 +media/ +__pypackages__/ +package-lock.json +gunicorn.pid +!plugins/__init__.py diff --git a/backend/plugins/dvadmin3-flow-backend/LICENSE b/backend/plugins/dvadmin3-flow-backend/LICENSE new file mode 100644 index 0000000000..ad1623906a --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) [2022] [dvadmin3-flow] + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/backend/plugins/dvadmin3-flow-backend/MANIFEST.in b/backend/plugins/dvadmin3-flow-backend/MANIFEST.in new file mode 100644 index 0000000000..8255102652 --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/MANIFEST.in @@ -0,0 +1 @@ +include dvadmin3_flow/fixtures/*.json diff --git a/backend/plugins/dvadmin3-flow-backend/README.md b/backend/plugins/dvadmin3-flow-backend/README.md new file mode 100644 index 0000000000..96b8011e2f --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/README.md @@ -0,0 +1,50 @@ +# dvadmin-flow +1. 插件安装 +~~~ +1. 把后端插件放到 dvadmin/plugins/ 目录下 +2. 把前端插件放到 src/views/plugins/ 目录下 +~~~ +2. 添加setting.py配置 +~~~ +from dvadmin3_flow.settings import * # 审批流组件 +~~~ +3. 迁移数据库 +~~~ +python manage.py makemigrations +python manage.py migrate +python manage.py init +~~~ +4. 给需要配置审批流的model做继承(演示环境配置的角色管理) +~~~ +from dvadmin3_flow.base_model import FlowBaseModel +class Role(CoreModel,FlowBaseModel): + name = models.CharField(max_length=64, verbose_name="角色名称", help_text="角色名称") + key = models.CharField(max_length=64, unique=True, verbose_name="权限字符", help_text="权限字符") + sort = models.IntegerField(default=1, verbose_name="角色顺序", help_text="角色顺序") + status = models.BooleanField(default=True, verbose_name="角色状态", help_text="角色状态") + + class Meta: + db_table = table_prefix + "system_role" + verbose_name = "角色表" + verbose_name_plural = verbose_name + ordering = ("sort",) +~~~ +5. 配置审批流 +~~~ +在审批流中配置审批流,并关联到对应的model上,如下图 +~~~ + +# 页面效果图 + + +![输入链接说明](https://bbs.django-vue-admin.com/uploads/20250321/97fbbf29673edfd66a1edd49237791bb.png) + +![输入链接说明](https://bbs.django-vue-admin.com/uploads/20250321/c43aa51278cbc478287c718d22397479.png) + + +![输入链接说明](https://bbs.django-vue-admin.com/uploads/20250321/9732a5cca9c1166d1a65c35e313ab90d.png) + + +![输入链接说明](https://bbs.django-vue-admin.com/uploads/20250321/3ca9dd0801ce76d21435abcc8a3d505a.png) + +![输入链接说明](https://bbs.django-vue-admin.com/uploads/20250321/a87a8d2329ef66880af5b0f16c5ff823.png) \ No newline at end of file diff --git a/backend/plugins/dvadmin3-flow-backend/__init__.py b/backend/plugins/dvadmin3-flow-backend/__init__.py new file mode 100644 index 0000000000..40a96afc6f --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/__init__.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/__init__.py new file mode 100644 index 0000000000..40a96afc6f --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/app_views/__init__.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/app_views/__init__.py new file mode 100644 index 0000000000..40a96afc6f --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/app_views/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/app_views/flow_data.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/app_views/flow_data.py new file mode 100644 index 0000000000..d9e67673bc --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/app_views/flow_data.py @@ -0,0 +1,171 @@ +from django.db.models import Q, F +from rest_framework.decorators import action +from rest_framework.permissions import IsAuthenticated + +from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse +from dvadmin.utils.serializers import CustomModelSerializer +from dvadmin.utils.viewset import CustomModelViewSet +from dvadmin3_flow.models import FlowData, FlowRecord, FlowAuditUsers, FlowNode + + +class AppFlowDataSerializer(CustomModelSerializer): + """ + 流程管理 创建/更新时的列化器 + """ + + def to_representation(self, instance): + data = super().to_representation(instance) + data["current_node"] = instance.current_node + data["status"] = instance.status + data["start_user_name"] = instance.start_user and instance.start_user.name + # 查询最新的一条记录表 + flow_record_obj = FlowRecord.objects.filter(flow_data_id=data.get('id')).order_by('-create_datetime').first() + if flow_record_obj: + data['pre_user'] = flow_record_obj.pre_user.all().values_list('name',flat=True) + data['pre_dept'] = flow_record_obj.pre_dept.all().values_list('name',flat=True) + data['pre_role'] = flow_record_obj.pre_role.all().values_list('name',flat=True) + # 返回已审核人信息 + data['audit_users'] = FlowAuditUsers.objects.filter(flow_record__flow_data_id=data.get('id')).values('id', + 'audit_user', + 'status', + 'description', + 'create_datetime') + return data + + class Meta: + model = FlowData + fields = ['id', 'no', 'name', 'models_name', 'start_user', + 'completed_time', 'update_datetime', 'create_datetime'] + + +class AppFlowDataViewSet(CustomModelViewSet): + """ + 流程管理接口: + """ + queryset = FlowData.objects.all() + permission_classes = [IsAuthenticated] + serializer_class = AppFlowDataSerializer + extra_filter_class = [] + + @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated]) + def get_flow_data(self, request): + """ + 获取待我处理数据 + :param request: + :return: + """ + # 0待我处理;1我已处理;2我已提交;3抄送我的 + status = int(request.query_params.get('handle_status', 0)) + filter = Q(flowrecord__pre_user__id=request.user.id) + if request.user: + filter |= Q(flowrecord__pre_role__id__in=list(request.user.role.all().values_list('id', flat=True))) + if request.user.dept: + filter |= Q(flowrecord__pre_dept__id=request.user.dept.id) + # queryset = self.filter_queryset(self.get_queryset()) + queryset = self.get_queryset() + if status == 0: + filter = Q(filter) & Q(flowrecord__status=0) + queryset = queryset.filter(filter) + elif status == 1: + queryset = queryset.filter(flowrecord__flowauditusers__audit_user_id=request.user.id) + elif status == 2: + queryset = self.filter_queryset(self.get_queryset()).filter(start_user=self.request.user).filter(filter) + elif status == 3: + filter = Q(filter) & Q(flowrecord__type='Cc') + queryset = self.filter_queryset(queryset.filter(filter)) + page = self.paginate_queryset(queryset.distinct()) + if page is not None: + serializer = self.get_serializer(page, many=True, request=request) + return self.get_paginated_response(serializer.data) + serializer = self.get_serializer(queryset, many=True, request=request) + return SuccessResponse(data=serializer.data, msg="获取成功") + + @action(methods=['post'], detail=True, permission_classes=[IsAuthenticated]) + def handle_pass(self, request,pk, *args, **kwargs): + """ + 处理通过 + :param request: + :return: + """ + reason = request.data.get("reason","无") + instance = FlowData.objects.get(id=pk) + if instance.status != 0: + return ErrorResponse(msg="流程数据状态错误") + filter = Q(flowrecord__pre_user=request.user.id) + if request.user: + filter |= Q(flowrecord__pre_role__in=list(request.user.role.all().values_list('id', flat=True))) + if request.user.dept: + filter |= Q(flowrecord__pre_dept=request.user.dept.id) + if not FlowData.objects.filter(id=instance.id).filter(filter).exists(): + return ErrorResponse(msg="当前数据您无权限审核") + # 进行审核 + flow_record_obj = FlowRecord.objects.filter(flow_data=instance.id).first() + flow_record_obj.status = 1 + flow_record_obj.save() + FlowAuditUsers.objects.create(**{ + "flow_record": flow_record_obj, + "audit_user": self.request.user, + "status": 1, + "description": f"审核通过,处理意见:{reason}", + }) + + return DetailResponse(data=None, msg="处理通过") + + @action(methods=['post'], detail=True, permission_classes=[IsAuthenticated]) + def handle_reject(self, request, pk,*args, **kwargs): + """ + 处理驳回 + :param request: + :return: + """ + reason = request.data.get("reason") + instance = FlowData.objects.get(id=pk) + if instance.status != 0: + return ErrorResponse(msg="流程数据状态错误") + filter = Q(flowrecord__pre_user=request.user.id) + if request.user: + filter |= Q(flowrecord__pre_role__in=list(request.user.role.all().values_list('id', flat=True))) + if request.user.dept: + filter |= Q(flowrecord__pre_dept=request.user.dept.id) + if not FlowData.objects.filter(id=instance.id).filter(filter).exists(): + return ErrorResponse(msg="当前数据您无权限审核") + # 进行审核 + flow_record_obj = FlowRecord.objects.filter(flow_data=instance.id).first() + flow_record_obj.status = 2 + flow_record_obj.save() + FlowAuditUsers.objects.create(**{ + "flow_record": flow_record_obj, + "audit_user": self.request.user, + "status": 2, + "description": reason, + }) + return DetailResponse(data=None, msg="处理驳回") + + @action(methods=['post'], detail=False, permission_classes=[IsAuthenticated]) + def handle_cancel(self, request, *args, **kwargs): + """ + 审核撤销 + :param request: + :return: + """ + instance = FlowData.objects.get(id=request.data.get('id')) + if instance.status != 0: + return ErrorResponse(msg="流程数据状态错误") + filter = Q(flowrecord__pre_user=request.user.id) + if request.user: + filter |= Q(flowrecord__pre_role__in=list(request.user.role.all().values_list('id', flat=True))) + if request.user.dept: + filter |= Q(flowrecord__pre_dept=request.user.dept.id) + if not FlowData.objects.filter(id=instance.id).filter(filter).exists(): + return ErrorResponse(msg="当前数据您无权限审核") + # 进行审核撤销 + flow_record_obj = FlowRecord.objects.filter(flow_data=instance.id).first() + flow_record_obj.status = 3 + flow_record_obj.save() + FlowAuditUsers.objects.create(**{ + "flow_record": flow_record_obj, + "audit_user": self.request.user, + "status": 3, + "description": "手动审核撤销", + }) + return DetailResponse(data=None, msg="处理驳回") diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/apps.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/apps.py new file mode 100644 index 0000000000..7c9752d282 --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class Dvadmin3FlowConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'dvadmin3_flow' diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/base_model.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/base_model.py new file mode 100644 index 0000000000..77e2d3445e --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/base_model.py @@ -0,0 +1,463 @@ +import datetime + +from django.apps import apps +from django.contrib.contenttypes.models import ContentType +from django.db import models, connection +from django.forms.models import model_to_dict +from rest_framework import serializers + +from dvadmin3_flow.models import FlowInfo, FlowData, FlowNode, FlowRecord, FlowAuditUsers + + +class ModelDiffMixin(object): + """ + A model mixin that tracks model fields' values and provide some useful api + to know what fields have been changed. + """ + + def __init__(self, *args, **kwargs): + super(ModelDiffMixin, self).__init__(*args, **kwargs) + self.__initial = self._dict + + @property + def diff(self): + d1 = self.__initial + if d1 is None: + return dict(self._dict) + d2 = self._dict + diffs = [(k, (v, d2[k])) for k, v in d1.items() if v != d2[k]] + return dict(diffs) + + @property + def has_changed(self): + return bool(self.diff) + + @property + def changed_fields(self): + return self.diff.keys() + + def get_field_diff(self, field_name): + """ + Returns a diff for field if it's changed and None otherwise. + """ + return self.diff.get(field_name, None) + + def save(self, *args, **kwargs): + """ + Saves model and set initial state. + """ + super(ModelDiffMixin, self).save(*args, **kwargs) + self.__initial = self._dict + + @property + def _dict(self): + return model_to_dict(self, fields=[field.name for field in self._meta.fields]) + + +class FlowBaseModel(models.Model, ModelDiffMixin): + IS_FLOW = True + is_audit_pass = False + + def save_base(self, raw=..., force_insert=..., force_update=..., using=..., update_fields=...): + operation = 'create' if force_insert else 'update' + if force_update: + operation = 'update' + if self.execute_approval_process(operation): + super().save_base(raw, force_insert, force_update, using, update_fields) + + def delete(self, using=None, keep_parents=False): + if self.execute_approval_process('delete'): + return super().delete(using, keep_parents) + + def execute_approval_process(self, operation, update_fields=None): + """ + 执行审批流 + """ + if self.is_audit_pass == True: + return True + from dvadmin.system.models import Users + + app_label = str(self._meta).split('.')[0] + model = str(self._meta).split('.')[1] + content_type_obj = ContentType.objects.filter(app_label=app_label, model=model).first() + flow_info_obj = FlowInfo.objects.filter(content_type=content_type_obj, operation=operation, status=1).first() + if not flow_info_obj: + return True + print("有流程:flow_info_obj", flow_info_obj) + # 1.创建一个流程任务,并保存要操作的数据,与当前数据 id + flow_node_obj = FlowNode.objects.filter(flow_info=flow_info_obj, node_type='Start').first() + update_fields = self.diff + if operation == 'create': + update_fields = self._dict + data = { + "flow_info": flow_info_obj, + "name": flow_info_obj.name, + "models_name": content_type_obj.name, + "pre_change_content": { + "type": operation, + "id": self.id, + "update_fields": update_fields + }, + "current_node": flow_node_obj.node_dict + } + users = None + if hasattr(self, 'modifier'): + users = Users.objects.filter(id=self.modifier).first() + if users: + data["start_user"] = users + data["name"] = f"{users.name}发起的{flow_info_obj.name}的流程" + data["creator"] = users + data["handler"] = users + data["modifier"] = users.id + data["dept_belong_id"] = users.dept_id + flow_data_obj = FlowData.objects.create(**data) + # 直接创建一条记录数据,并更新 + flow_record_obj = FlowRecord.objects.create(**{ + "flow_data_id": flow_data_obj.id, + "current_node_id": flow_node_obj.node_id, + "type": flow_node_obj.node_type, + "status": 1, + "parent_node_id": flow_node_obj.parent.node_id if flow_node_obj.parent else None, + }) + if users: + flow_record_obj.pre_user.set([users.id]) + FlowAuditUsers.objects.create(**{ + "flow_record": flow_record_obj, + "audit_user": flow_data_obj.start_user, + "status": 1, + "description": "自动审核通过", + }) + # 调用一次执行 + FlowBaseModel.process_engine(flow_data_obj.id) + return + + @classmethod + def conditional_check(self, props, flow_data_obj: FlowData): + """ + 条件确认,返回 true 或 false + """ + + def func_condition(data): + # 1.发起人-本人/部门 + # 2.发起人-角色 + # 3.库表-字符串类型 + # 4.库表-数字类型 + if data.get("type").lower() == 'org': + dept_id = flow_data_obj.start_user.dept_id + user_id = flow_data_obj.start_user.id + dept_ids = [ele.get('id') for ele in data["compareVal"] if ele.get('type') == 'dept'] + user_ids = [ele.get('id') for ele in data["compareVal"] if ele.get('type') == 'user'] + # 1.1.本人/部门属于 IN + if data['compare'] == 'IN': + if dept_id in dept_ids or user_id in user_ids: + return True + # 1.2.本人/部门不属于 NIN + else: + if not (dept_id in dept_ids or user_id in user_ids): + return True + return False + elif data.get("type").lower() == 'role': + roles = flow_data_obj.start_user.role.all().values_list('role_id', flat=True) + role_ids = [ele.get('id') for ele in data["compareVal"]] + # 2.1.拥有角色 + if data['compare'] == 'HAS': + return any([item in role_ids for item in roles]) + # 2.2.不拥有角色 + else: + return not any([item in role_ids for item in roles]) + + elif data.get("group") == 'DATABASE': + # 3.1. string + update_fields = flow_data_obj.pre_change_content.get('update_fields', {}) + if not update_fields: + return False + model_name = data.get("symbol").split('_')[0] + if model_name not in update_fields: + return False + if flow_data_obj.pre_change_content.get('type') == 'update': + model_data = update_fields[model_name][1] + else: + model_data = update_fields[model_name] + if data['type'] == 'TextInput': + # {name: '含有字符串', symbol: 'HAS'}, + # {name: '包含在', symbol: 'IN'}, + # {name: '等于', symbol: 'EQ'}, + # {name: '不等于', symbol: 'NEQ'} + if data['compare'] == 'HAS': + if data["compareVal"][0] in model_data: + return True + elif data['compare'] == 'IN': + return any([item in model_data for item in data["compareVal"]]) + elif data['compare'] == 'EQ': + if data["compareVal"][0] == 'null' and not model_data: + return True + if data["compareVal"][0] == model_data: + return True + else: + if data["compareVal"][0] != model_data: + return True + return False + if data['type'] == 'NumberInput': + # {name: '大于', symbol: 'GT'}, + # {name: '小于', symbol: 'LT'}, + # {name: '等于', symbol: 'EQ'}, + # {name: '大于等于', symbol: 'GT_EQ'}, + # {name: '小于等于', symbol: 'LT_EQ'}, + # {name: '不等于', symbol: 'NEQ'}, + # {name: '包含在', symbol: 'IN'}, + # {name: '介于两者间(含首尾)', symbol: 'BT'}, + if data['compare'] == 'GT': + if int(model_data) > int(data["compareVal"][0]): + return True + elif data['compare'] == 'LT': + if int(model_data) < int(data["compareVal"][0]): + return True + elif data['compare'] == 'EQ': + if int(model_data) == int(data["compareVal"][0]): + return True + elif data['compare'] == 'GT_EQ': + if int(model_data) >= int(data["compareVal"][0]): + return True + elif data['compare'] == 'LT_EQ': + if int(model_data) <= int(data["compareVal"][0]): + return True + elif data['compare'] == 'IN': + if int(model_data) != int(data["compareVal"][0]): + return str(model_data) in data["compareVal"] + elif data['compare'] == 'BT': + if int(data["compareVal"][0]) <= int(model_data) <= int( + data["compareVal"][1]): + return True + return False + return False + + groups = props.get('groups', []) + # 1.如果没有数据则返回 + if len(groups) == 0: + return True + if len(groups) == 1: + conditions = groups[0].get('conditions', []) + if len(conditions) == 0: + return True + # 2.判定 + sum_result = [] + for group in groups: + pass + conditions = group.get('conditions', []) + logic = group.get('logic') + result = [] + for condition in conditions: + # 把执行结果放到数组中 + result.append(func_condition(condition)) + # 判定结果 + result_str = f' {" and " if group.get("logic") else "or"}'.join([str(ele) for ele in result]) + sum_result.append(result_str) + # 全局判定 + all_result_str = f' {" and " if props.get("logic") else "or"}'.join(sum_result) + print("all_result_str", all_result_str) + return eval(all_result_str) + + @classmethod + def save_flow_node_obj(self, flow_data_obj, flow_node_obj, status): + # 更新当前节点状态 + pre_user = [] + pre_dept = [] + pre_role = [] + flow_data_obj.current_node = flow_node_obj.node_dict + flow_data_obj.handler = None + flow_data_obj.save() + # ruleType:ASSIGN_DEPT 指定部门;ASSIGN_USER 指定人员;ROOT_SELF 发起人自己;ASSIGN_ROLE指定角色 + if flow_node_obj.node_dict.get('props', {}).get('ruleType') == 'ASSIGN_USER': + # 1.指定人员 + for user in flow_node_obj.node_dict.get('props', {}).get('assignUser', []): + pre_user.append(user.get('id')) + elif flow_node_obj.node_dict.get('props', {}).get('ruleType') == 'ROOT_SELF': + # 2.发起人自己 + pre_user.append(flow_data_obj.start_user.id) + elif flow_node_obj.node_dict.get('props', {}).get('ruleType') == 'ASSIGN_DEPT': + # 3.指定部门 + for dept in flow_node_obj.node_dict.get('props', {}).get('assignDept', {}).get('dept'): + pre_dept.append(dept.get('id')) + elif flow_node_obj.node_dict.get('props', {}).get('ruleType') == 'ASSIGN_ROLE': + # 4.指定角色 + print(flow_node_obj.node_dict) + for role in flow_node_obj.node_dict.get('props', {}).get('assignRole', {}): + pre_role.append(role.get('id')) + # TODO 根据规则判断是否要自动审核通过 + create_dict = {} + same_root_type = flow_node_obj.props.get('sameRoot', {}).get('type') + # 当审批人与提交人为同一人时,自动审批 + if flow_data_obj.start_user_id in pre_user and same_root_type == 'TO_SKIP': + status = 1 + if flow_node_obj.node_type == 'Cc': + status = 1 + # 获取当前要处理的信息 + flow_data_obj.pre_user.set(pre_user) + flow_data_obj.pre_dept.set(pre_dept) + flow_data_obj.pre_role.set(pre_role) + # 直接创建一条记录数据,并更新 + flow_record_obj = FlowRecord.objects.create(**{ + "flow_data_id": flow_data_obj.id, + "current_node_id": flow_node_obj.node_id, + "type": flow_node_obj.node_type, + "status": status, + "parent_node_id": flow_node_obj.parent.node_id if flow_node_obj.parent else None, + }, **create_dict) + flow_record_obj.pre_user.set(pre_user) + flow_record_obj.pre_dept.set(pre_dept) + flow_record_obj.pre_role.set(pre_role) + # 发通知 + flow_record_obj.create_message_push(flow_record_obj) + if status == 1: + FlowAuditUsers.objects.create(**{ + "flow_record": flow_record_obj, + "audit_user": flow_data_obj.start_user, + "status": 1, + "description": "自动审核通过", + }) + + @classmethod + def _approval_node(self, flow_data_obj, flow_node_obj): + """ + 审核人节点 + """ + self.save_flow_node_obj(flow_data_obj, flow_node_obj, status=0) + + @classmethod + def _gateway_node(self, flow_data_obj, flow_node_obj): + """ + 分支节点 + 1.获取所有父级节点是本分支的子级条件节点 + 2.根据条件判断走哪一个分支节点 + """ + exclusive_node_obj = FlowNode.objects.filter(parent__node_id=flow_node_obj.node_id, + flow_info=flow_data_obj.flow_info) + for exclusive_node in exclusive_node_obj: + # 根据条件判断是否走该节点 + if not self.conditional_check(exclusive_node.props, flow_data_obj): + continue + flow_node_obj = FlowNode.objects.filter(parent__node_id=exclusive_node.node_id, + flow_info=flow_data_obj.flow_info).first() + # 如果flow_node_obj 为空,则直接跳过 + if not flow_node_obj: + self.save_flow_node_obj(flow_data_obj, exclusive_node, status=1) + break + # 更新当前节点状态 + self.save_flow_node_obj(flow_data_obj, flow_node_obj, status=0) + break + + return + + @classmethod + def _cc_node(self, flow_data_obj, flow_node_obj): + # 更新当前节点状态 + self.save_flow_node_obj(flow_data_obj, flow_node_obj, status=1) + + @classmethod + def audit_pass(self, flow_data_obj: FlowData): + """ + 审核通过执行 + """ + instance_id = flow_data_obj.pre_change_content.get('id') + type = flow_data_obj.pre_change_content.get('type') + update_fields_data = flow_data_obj.pre_change_content.get('update_fields') + update_fields = {} + for key, val in update_fields_data.items(): + if type == 'update': + update_fields[key] = val[1] + elif type == 'create': + update_fields[key] = val + instance = apps.get_model(flow_data_obj.flow_info.content_type.app_label, + model_name=flow_data_obj.flow_info.content_type.model) + if type == 'update': + instance.objects.filter(id=instance_id).update(**update_fields) + elif type == 'create': + class DynamicSerializer(serializers.ModelSerializer): + class Meta: + model = instance + fields = '__all__' + + # 创建新数据,使用动态序列化器 + instance.is_audit_pass = True + serializer = DynamicSerializer(data=update_fields) + serializer.is_valid(raise_exception=True) + serializer.save() + instance.is_audit_pass = False + + else: + if 'is_delete' in instance._meta.get_fields(): + instance.objects.filter(id=instance_id).update(is_delete=True) + else: + instance.objects.filter(id=instance_id).delete() + print(f"审核通过后执行更新成功[{instance_id}]") + + @classmethod + def _get_gateway(self, node_id): + """ + 获取 node 节点 id + """ + flow_node_obj = FlowNode.objects.filter(node_id=node_id).first() + if flow_node_obj.node_type == 'Exclusive': + new_flow_node_obj = FlowNode.objects.filter(parent_id=flow_node_obj.parent_id).exclude( + node_type='Exclusive').first() + if new_flow_node_obj: + return new_flow_node_obj + if flow_node_obj.node_type == 'Start': + return None + return self._get_gateway(flow_node_obj.parent.node_id) + + @classmethod + def process_engine(self, flow_data_id): + """ + 审批引擎,进行下一步流转 + """ + flow_data_obj = FlowData.objects.filter(id=flow_data_id).first() + # 1.判断该流程是否是需要人工审核 + flow_record_obj = FlowRecord.objects.filter(flow_data_id=flow_data_id).first() + if flow_record_obj is None: + print("[流程错误] flow_record_obj", flow_record_obj) + return False + if flow_record_obj.status == 0: + print("[需要人工审核通过后才可下一步] flow_record_obj", flow_record_obj) + return False + if flow_record_obj.status == 3: + # 撤销审核 + if not flow_data_obj.completed_time: + flow_data_obj.completed_time = datetime.datetime.now() + flow_data_obj.status = 3 + flow_data_obj.save() + return True + # 2.找该节点的子节点 + flow_node_obj = FlowNode.objects.filter(parent__node_id=flow_data_obj.current_node.get('id'), + flow_info=flow_data_obj.flow_info).first() + if not flow_node_obj: + # 3.判断,如果是条件节点,判断父级的网关节点下一节点。 + node_obj = FlowNode.objects.filter(node_id=flow_data_obj.current_node.get('id'), + flow_info=flow_data_obj.flow_info).first() + flow_node_obj = FlowNode.objects.filter(parent_id=node_obj.parent_id, + flow_info=flow_data_obj.flow_info, + process_index__gt=node_obj.process_index).first() + if not flow_node_obj: + # 4.查询当前节点的上级网关节点 + flow_node_obj = self._get_gateway(flow_data_obj.current_node.get('id')) + if not flow_node_obj: + flow_data_obj.completed_time = datetime.datetime.now() + flow_data_obj.status = 1 + flow_data_obj.save() + # 审核通过 + self.audit_pass(flow_data_obj) + return True + + node_func_dict = { + "Start": self._approval_node, # 开始节点 + "Approval": self._approval_node, # 审核人节点 + "Gateway": self._gateway_node, # 分支节点 + "Cc": self._cc_node, # 抄送节点 + } + node_func_dict[flow_node_obj.node_type](flow_data_obj, flow_node_obj) + # 如果需要继续执行下一节点则继续 + self.process_engine(flow_data_obj.id) + + # 3.审批通过后保存数据 + class Meta: + abstract = True diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/__init__.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/init_menu.json b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/init_menu.json new file mode 100644 index 0000000000..61d6db9355 --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/init_menu.json @@ -0,0 +1,220 @@ +[ + { + "name": "审批流程", + "icon": "iconfont icon-xitongshezhi", + "sort": 9, + "is_link": false, + "is_catalog": true, + "web_path": "/workflow", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "流程管理", + "icon": "iconfont icon-caidan", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/flowManagement", + "component": "plugins/dvadmin3-flow-web/src/flowManagement/index", + "component_name": "flowManagement", + "status": true, + "cache": false, + "visible": true, + "parent": 1, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "flowInfo:Search", + "api": "/api/dvadmin3_flow/flow_info/", + "method": 0 + }, + { + "name": "详情", + "value": "flowInfo:Retrieve", + "api": "/api/dvadmin3_flow/flow_info/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "flowInfo:Create", + "api": "/api/dvadmin3_flow/flow_info/", + "method": 1 + }, + { + "name": "编辑", + "value": "flowInfo:Update", + "api": "/api/dvadmin3_flow/flow_info/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "flowInfo:Delete", + "api": "/api/dvadmin3_flow/flow_info/{id}/", + "method": 3 + } + ], + "menu_field": [] + }, + { + "name": "全部审批", + "icon": "ele-OfficeBuilding", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/flowData", + "component": "plugins/dvadmin3-flow-web/src/flowData/index", + "component_name": "flowData", + "status": true, + "cache": false, + "visible": true, + "parent": 1, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "flowData:Search", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 0 + }, + { + "name": "详情", + "value": "flowData:Retrieve", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "flowData:Create", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 1 + }, + { + "name": "编辑", + "value": "flowData:Update", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "flowData:Delete", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 3 + } + ], + "menu_field": [] + }, + { + "name": "待我处理", + "icon": "ele-ColdDrink", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/flowTodo", + "component": "plugins/dvadmin3-flow-web/src/flowTodo/index", + "component_name": "flowTodo", + "status": true, + "cache": false, + "visible": true, + "parent": 1, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "flowTodo:Search", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 0 + } + ], + "menu_field": [ + + ] + }, + { + "name": "已处理的", + "icon": "ele-ColdDrink", + "sort": 5, + "is_link": false, + "is_catalog": false, + "web_path": "/flowIdo", + "component": "plugins/dvadmin3-flow-web/src/flowIdo/index", + "component_name": "flowIdo", + "status": true, + "cache": false, + "visible": true, + "parent": 1, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "flowIdo:Search", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 0 + } + ], + "menu_field": [ + + ] + }, + { + "name": "我发起的", + "icon": "ele-ColdDrink", + "sort": 6, + "is_link": false, + "is_catalog": false, + "web_path": "/flowSubmitted", + "component": "plugins/dvadmin3-flow-web/src/flowSubmitted/index", + "component_name": "flowSubmitted", + "status": true, + "cache": false, + "visible": true, + "parent": 1, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "flowSubmitted:Search", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 0 + } + ], + "menu_field": [ + + ] + }, + { + "name": "抄送我的", + "icon": "ele-ColdDrink", + "sort": 7, + "is_link": false, + "is_catalog": false, + "web_path": "/flowCC", + "component": "plugins/dvadmin3-flow-web/src/flowCC/index", + "component_name": "flowCC", + "status": true, + "cache": false, + "visible": true, + "parent": 1, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "flowCC:Search", + "api": "/api/dvadmin3_flow/flow_data/{id}/", + "method": 0 + } + ], + "menu_field": [ + + ] + } + ], + "menu_button": [], + "menu_field": [] + } +] \ No newline at end of file diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/initialize.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/initialize.py new file mode 100644 index 0000000000..a7cb33106d --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/fixtures/initialize.py @@ -0,0 +1,26 @@ +# 初始化 +import os + +import django + +from dvadmin.system.fixtures.initSerializer import MenuInitSerializer + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.settings") +django.setup() + +from dvadmin.utils.core_initialize import CoreInitialize + + +class Initialize(CoreInitialize): + + def init_menu(self): + """ + 初始化菜单信息 + """ + self.init_base(MenuInitSerializer, unique_fields=['name', 'web_path', 'component', 'component_name']) + + def run(self): + self.init_menu() + +if __name__ == "__main__": + Initialize(app='dvadmin3_flow').run() diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/migrations/__init__.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/migrations/__init__.py new file mode 100644 index 0000000000..40a96afc6f --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/migrations/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/models.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/models.py new file mode 100644 index 0000000000..d27df0eb3d --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/models.py @@ -0,0 +1,272 @@ +from django.contrib.contenttypes.models import ContentType +from django.db import models + +from application import settings +from dvadmin.utils.models import CoreModel + +table_prefix = 'workflow_' + +AUDIT_STATUS = ( + (0, '进行中'), + (1, '审核通过'), + (2, '审核驳回'), + (3, '审核撤销'), +) + + +class FlowInfo(CoreModel): + content_type = models.ForeignKey(ContentType, db_constraint=False, null=True, blank=True, on_delete=models.CASCADE) + name = models.CharField(max_length=50, verbose_name='名称') + operation = models.CharField(null=True, blank=True,max_length=255, verbose_name='操作') + icon = models.JSONField( blank=True,null=True, verbose_name='图标') + form_conf = models.JSONField( blank=True,null=True, verbose_name='form配置') + is_deleted = models.BooleanField(verbose_name="是否软删除", help_text='是否软删除', blank=True,default=False, db_index=True) + STATUS_CHOICES = ( + (0, '待发布'), + (1, '正常'), + (2, '下架'), + ) + status = models.IntegerField(default=0, choices=STATUS_CHOICES, verbose_name="状态", help_text="状态") + + class Meta: + db_table = table_prefix + 'flow_info' + verbose_name = '流程管理' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + +class FlowNode(CoreModel): + flow_info = models.ForeignKey(FlowInfo, db_constraint=False, on_delete=models.CASCADE) + node_id = models.CharField(max_length=64, verbose_name="节点ID", help_text="节点ID") + process_index = models.IntegerField(default=0, verbose_name="索引", help_text="索引") + name = models.CharField(max_length=64, verbose_name="节点名称", help_text="节点名称") + # Start 开始节点 + # Approval 审批中 + # Cc 抄送 + # Gateway 节点 + node_type = models.CharField(default="Start", max_length=64, verbose_name='节点类型', help_text='节点类型') + props = models.JSONField(null=True, blank=True, verbose_name="条件流程配置", help_text="条件流程配置") + branch = models.JSONField(null=True, blank=True, verbose_name="分支流程配置", help_text="分支流程配置") + is_first = models.BooleanField(default=False, verbose_name="是否首级", help_text="是否首级") + # 子级节点 + parent = models.ForeignKey('self', null=True, blank=True, db_constraint=False, on_delete=models.CASCADE) + + class Meta: + db_table = table_prefix + "flow_node" + verbose_name = "流程节点表" + verbose_name_plural = verbose_name + ordering = ('process_index',) + + @classmethod + def save_flow_node(self, data, flow_info_obj, parent_id=None): + """ + 保存节点数据 + """ + all_node_ids = [] + last_node_id = None + for index, ele in enumerate(data): + # 保存节点信息 + node_id = ele.pop('id') + all_node_ids.append(node_id) + flow_node_obj, _ = FlowNode.objects.update_or_create(flow_info=flow_info_obj, node_id=node_id, defaults={ + "name": ele.get('name'), + "node_type": ele.get('type'), + "props": ele.get('props'), + "branch": ele.get('branch'), + "process_index": index, + "is_first": not parent_id, + "parent_id": parent_id or last_node_id + }) + last_node_id = flow_node_obj.id + # 子级节点数据保存 + branch = ele.get('props', {}).get('branch') + if branch: + for inx, branch_ele in enumerate(branch): + # Gateway下的props-branch + branch_node_id = branch_ele.pop('id') + all_node_ids.append(branch_node_id) + branch_flow_node_obj, _ = FlowNode.objects.update_or_create( + flow_info=flow_info_obj, node_id=branch_node_id, + defaults={ + "name": branch_ele.get('name'), + "node_type": branch_ele.get('type'), + "props": branch_ele.get('props'), + "branch": branch_ele.get('branch'), + "process_index": inx, + "parent_id": flow_node_obj.id + }) + # 条件分支下的各个数据保存 + all_node_ids += self.save_flow_node(ele.get('branch', [])[inx], flow_info_obj, + parent_id=branch_flow_node_obj.id) + return all_node_ids + + @classmethod + def get_flow_node(self, flow_info_obj): + """ + 获取节点数据 + """ + data = [] + flow_node_obj = FlowNode.objects.filter(flow_info=flow_info_obj, is_first=True) + for ele in flow_node_obj: + data.append({ + "id": ele.node_id, + "name": ele.name, + "props": ele.props, + "type": ele.node_type, + "branch": ele.branch + }) + return data + + @property + def node_dict(self): + """ + 根据node_id获取节点数据 + """ + return { + "id": self.node_id, + "name": self.name, + "props": self.props, + "type": self.node_type, + "branch": self.branch + } + + +class FlowData(CoreModel): + flow_info = models.ForeignKey(FlowInfo, db_constraint=False, verbose_name='关联流程节点表', + on_delete=models.CASCADE) + no = models.CharField(max_length=200, verbose_name='流程编号') + name = models.CharField(max_length=100, verbose_name='名称') + models_name = models.CharField(max_length=100, null=True, blank=True, verbose_name='model名称') + status = models.IntegerField(choices=AUDIT_STATUS, default=0, verbose_name='状态') + start_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='发起人', blank=True, null=True, + related_name='start_user', db_constraint=False, + on_delete=models.PROTECT) + pre_user = models.ManyToManyField(settings.AUTH_USER_MODEL, db_constraint=False, verbose_name='预处理人', + blank=True, + related_name='flow_pre_user', ) + pre_dept = models.ManyToManyField("system.Dept", db_constraint=False, verbose_name='预处理部门', blank=True, + related_name='flow_pre_dept', ) + pre_role = models.ManyToManyField("system.Role", verbose_name='预处理角色', db_constraint=False, blank=True) + handler = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='处理人', blank=True, null=True, + related_name='flow_handler', db_constraint=False, + on_delete=models.PROTECT) + pre_change_content = models.JSONField(verbose_name='预改变内容', null=True, blank=True) + current_node = models.JSONField(verbose_name='当前节点') + completed_time = models.DateTimeField(null=True, blank=True, verbose_name='完成时间') + + class Meta: + db_table = table_prefix + 'flow_data' + verbose_name = '流程数据' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def generate_no(self): + # 获取当前日期 + from django.utils import timezone + current_date = timezone.now() + + date_str = current_date.strftime('%Y%m%d') # 格式化日期为 YYYYMMDD + prefix = "SH" + date_str + + # 查找当前最大编号 + max_no = FlowData.objects.filter(no__startswith=prefix).order_by('no').last() + if max_no: + # 解析当前最大编号的顺序部分 + last_sequence = int(max_no.no[len(prefix):]) # 获取顺序编号部分 + else: + last_sequence = 0 + + new_sequence = last_sequence + 1 + return f"{prefix}{new_sequence:06d}" # 生成新的编号,格式为 SHYYYYMMDD000001 + + def save(self, *args, **kwargs): + if not self.no: + # 如果没有提供 no 字段值,则自动生成 + self.no = self.generate_no() + super().save(*args, **kwargs) + + +class FlowRecord(CoreModel): + flow_data = models.ForeignKey(FlowData, db_constraint=False, on_delete=models.CASCADE) + pre_user = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name='预处理人', blank=True, + related_name='pre_user', db_constraint=False, ) + pre_dept = models.ManyToManyField("system.Dept", verbose_name='预处理部门', blank=True, + related_name='pre_dept', db_constraint=False, ) + pre_role = models.ManyToManyField("system.Role", verbose_name='预处理角色', db_constraint=False, blank=True) + handler = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='处理人', blank=True, null=True, + related_name='handler', db_constraint=False, + on_delete=models.PROTECT) + current_node_id = models.CharField(max_length=50, verbose_name='当前节点', null=True, blank=True, ) + parent_node_id = models.CharField(max_length=50, verbose_name='父节点', null=True, blank=True, ) + FLOW_RECORD_TYPE = ( + ("Start", '发起节点'), + ("Approval", '审核节点'), + ("Gateway", '条件节点'), + ("Cc", '抄送节点'), + ) + type = models.CharField(choices=FLOW_RECORD_TYPE, default="",max_length=255, null=True, blank=True, verbose_name='类型') + status = models.IntegerField(choices=AUDIT_STATUS, default=0, verbose_name='状态') + completed_time = models.DateTimeField(null=True, blank=True, verbose_name='完成时间') + + class Meta: + db_table = table_prefix + 'flow_record' + verbose_name = '流转记录' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) + + def save(self, force_insert=False, force_update=False, using=None, update_fields=None): + super().save(force_insert, force_update, using, update_fields) + # 如果审核通过,就走下一步 + print("force_insert", force_insert) + if not force_insert and self.status in [1, 2, 3]: + from dvadmin3_flow.base_model import FlowBaseModel + FlowBaseModel.process_engine(self.flow_data_id) + + @classmethod + def create_message_push(cls, obj, request=None): + from application.websocketConfig import create_message_push + # 通知审核 + user_id = obj.pre_user.all().values_list('id', flat=True) + print("user_id", user_id) + role_id = obj.pre_role.all().values_list('id', flat=True) + dept_id = obj.pre_dept.all().values_list('id', flat=True) + message = { + "contentType": "Content", + "content": "您有一个新审批,请前往查看!", + "notificationTitle": "新审核", + "notificationButton": "点击前往审核", + "path": "/flowTodo" + } + if user_id: + create_message_push(title=obj.flow_data.name, content=message.get("content"), + target_user=list(user_id), + message=message, request=request) + if role_id: + create_message_push(title=obj.flow_data.name, content=message.get("content"), + target_role=list(role_id), + target_type=1, + message=message, request=request) + if dept_id: + create_message_push(title=obj.flow_data.name, content=message.get("content"), + target_role=list(dept_id), + target_type=2, + message=message, request=request) + + +class FlowAuditUsers(models.Model): + flow_record = models.ForeignKey(FlowRecord, db_constraint=False, on_delete=models.CASCADE) + audit_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='审核人', blank=True, null=True, + db_constraint=False, + related_name='audit_user', on_delete=models.PROTECT) + status = models.IntegerField(choices=AUDIT_STATUS, default=0, verbose_name='状态') + description = models.CharField(max_length=255, verbose_name="描述", null=True, blank=True, help_text="描述") + update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间", + verbose_name="修改时间") + create_datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True, help_text="创建时间", + verbose_name="创建时间") + + class Meta: + db_table = table_prefix + 'flow_audit_users' + verbose_name = '流程审核人员' + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/settings.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/settings.py new file mode 100644 index 0000000000..0fd9455c3b --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/settings.py @@ -0,0 +1,29 @@ +from application import settings + +# ================================================= # +# ***************** 插件配置区开始 ******************* +# ================================================= # +# 路由配置 +plugins_url_patterns = [ + {"re_path": r'api/dvadmin3_flow/', "include": "dvadmin3_flow.urls"}, +] +# app 配置 +apps = ['dvadmin3_flow'] +# 租户模式中,public模式共享app配置 +tenant_shared_apps = [] +# 只在普通租户建表,public中无表 +tenant_exclusive_apps = ['dvadmin3_flow'] +# ================================================= # +# ******************* 插件配置区结束 ***************** +# ================================================= # + +# ********** 赋值到 settings 中 ********** +if not hasattr(settings, 'TENANT_SHARED_APPS'): + settings.TENANT_SHARED_APPS = [] +if not hasattr(settings, 'TENANT_EXCLUSIVE_APPS'): + settings.TENANT_EXCLUSIVE_APPS = [] +settings.TENANT_SHARED_APPS += tenant_shared_apps +settings.TENANT_EXCLUSIVE_APPS += tenant_exclusive_apps +settings.INSTALLED_APPS += [app for app in apps if app not in settings.INSTALLED_APPS] +# ********** 注册路由 ********** +settings.PLUGINS_URL_PATTERNS += plugins_url_patterns diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/urls.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/urls.py new file mode 100644 index 0000000000..d148d96cb1 --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/urls.py @@ -0,0 +1,17 @@ +from rest_framework import routers +from django.urls import re_path, path + +from dvadmin3_flow.app_views.flow_data import AppFlowDataViewSet +from dvadmin3_flow.views.flow_info import FlowInfoViewSet +from dvadmin3_flow.views.flow_data import FlowDataViewSet + + +router_url = routers.SimpleRouter() +router_url.register('flow_info', FlowInfoViewSet) +router_url.register('flow_data', FlowDataViewSet) +urlpatterns = [ + path('get_flow_data/',AppFlowDataViewSet.as_view({ + 'get': 'get_flow_data' + })) +] +urlpatterns += router_url.urls diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/__init__.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/__init__.py new file mode 100644 index 0000000000..40a96afc6f --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_data.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_data.py new file mode 100644 index 0000000000..ba7df437e0 --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_data.py @@ -0,0 +1,250 @@ +from django.db.models import Q, F +from rest_framework.decorators import action +from rest_framework.permissions import IsAuthenticated + +from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse +from dvadmin.utils.serializers import CustomModelSerializer +from dvadmin.utils.viewset import CustomModelViewSet +from dvadmin3_flow.models import FlowData, FlowRecord, FlowAuditUsers, FlowNode + + +class FlowDataSerializer(CustomModelSerializer): + """ + 流程管理 创建/更新时的列化器 + """ + + def to_representation(self, instance): + data = super().to_representation(instance) + data["current_node"] = instance.current_node + data["status"] = instance.status + data["start_user_name"] = instance.start_user and instance.start_user.name + # 查询最新的一条记录表 + flow_record_obj = FlowRecord.objects.filter(flow_data_id=data.get('id')).order_by('-create_datetime').first() + if flow_record_obj: + data['pre_user'] = flow_record_obj.pre_user.all().values_list('name',flat=True) + data['pre_dept'] = flow_record_obj.pre_dept.all().values_list('name',flat=True) + data['pre_role'] = flow_record_obj.pre_role.all().values_list('name',flat=True) + # 返回已审核人信息 + data['audit_users'] = FlowAuditUsers.objects.filter(flow_record__flow_data_id=data.get('id')).values('id', + 'audit_user', + 'status', + 'description', + 'create_datetime') + return data + + class Meta: + model = FlowData + fields = ['id', 'no', 'name', 'models_name', 'start_user', + 'completed_time', 'update_datetime', 'create_datetime'] + + +class FlowDataViewSet(CustomModelViewSet): + """ + 流程管理接口: + """ + queryset = FlowData.objects.all() + permission_classes = [IsAuthenticated] + serializer_class = FlowDataSerializer + extra_filter_class = [] + + @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated]) + def get_all_flow_data(self, request): + """ + 获取所有审批流程数据 + :param request: + :return: + """ + self.extra_filter_class = [] + queryset = self.filter_queryset(self.get_queryset()) + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.get_serializer(page, many=True, request=request) + return self.get_paginated_response(serializer.data) + serializer = self.get_serializer(queryset, many=True, request=request) + return SuccessResponse(data=serializer.data, msg="获取成功") + + @action(methods=['get'], detail=True, permission_classes=[IsAuthenticated]) + def get_pre_change_content(self,request,pk): + """ + 获取预审核数据 + """ + instance = FlowData.objects.get(id=pk) + model_class = instance.flow_info.content_type.model_class() + field_verbose_names = {} + for field in model_class._meta.get_fields(): + if hasattr(field, 'verbose_name'): + field_verbose_names[field.name] = field.verbose_name + print(field_verbose_names) + + update_fields = instance.pre_change_content.get("update_fields") + print(update_fields) + def get_verbose_names_from_dicts(dict1, dict2): + verbose_names = {} + for field, value in dict2.items(): + if field in dict1: + verbose_names[dict1[field]] = value + else: + verbose_names[field] = value + return verbose_names + + verbose_names = get_verbose_names_from_dicts(field_verbose_names, update_fields) + print(verbose_names) + instance.pre_change_content["form_data"]=verbose_names + result = instance.pre_change_content + return DetailResponse(data=result) + + @action(methods=['get'], detail=True, permission_classes=[IsAuthenticated]) + def get_flow_record(self,request,pk): + """ + 获取审核记录 + """ + instance = FlowData.objects.get(id=pk) + flow_record = FlowRecord.objects.filter(flow_data_id=pk).order_by("id") + result = list() + for record in flow_record: + node_data = FlowNode.objects.filter(flow_info_id=instance.flow_info_id,node_id=record.current_node_id).values() + audit_users = FlowAuditUsers.objects.filter(flow_record_id=record.id).values(name=F('audit_user__name')) + result.append({ + "startUserName":instance.start_user.name, + "nodeData":node_data[0], + "auditUsers":audit_users, + "preInfo":{ + "pre_user": record.pre_user.all().values('id', 'name'), + "pre_dept": record.pre_dept.all().values('id', 'name'), + "pre_role": record.pre_role.all().values('id', 'name'), + }, + "nodeStatus":record.status + }) + return DetailResponse(data=result) + + @action(methods=['get'], detail=True, permission_classes=[IsAuthenticated]) + def get_flow_process(self, request, pk): + """ + 获取流程图 + """ + instance = FlowData.objects.get(id=pk) + result = FlowNode.get_flow_node(instance.flow_info) + return DetailResponse(data=result) + + @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated]) + def my_pending_handle(self, request): + """ + 获取待我处理数据 + :param request: + :return: + """ + # 0待我处理;1我已处理;2我已提交;3抄送我的 + status = int(request.query_params.get('handle_status', 0)) + filter = Q(flowrecord__pre_user__id=request.user.id) + if request.user: + filter |= Q(flowrecord__pre_role__id__in=list(request.user.role.all().values_list('id', flat=True))) + if request.user.dept: + filter |= Q(flowrecord__pre_dept__id=request.user.dept.id) + # queryset = self.filter_queryset(self.get_queryset()) + queryset = self.get_queryset() + if status == 0: + filter = Q(filter) & Q(flowrecord__status=0) + queryset = queryset.filter(filter) + elif status == 1: + queryset = queryset.filter(flowrecord__flowauditusers__audit_user_id=request.user.id) + elif status == 2: + queryset = self.filter_queryset(self.get_queryset()).filter(start_user=self.request.user).filter(filter) + elif status == 3: + filter = Q(filter) & Q(flowrecord__type='Cc') + queryset = queryset.filter(filter) + page = self.paginate_queryset(queryset.distinct()) + if page is not None: + serializer = self.get_serializer(page, many=True, request=request) + return self.get_paginated_response(serializer.data) + serializer = self.get_serializer(queryset, many=True, request=request) + return SuccessResponse(data=serializer.data, msg="获取成功") + + @action(methods=['post'], detail=True, permission_classes=[IsAuthenticated]) + def handle_pass(self, request,pk, *args, **kwargs): + """ + 处理通过 + :param request: + :return: + """ + reason = request.data.get("reason","无") + instance = FlowData.objects.get(id=pk) + if instance.status != 0: + return ErrorResponse(msg="流程数据状态错误") + filter = Q(flowrecord__pre_user=request.user.id) + if request.user: + filter |= Q(flowrecord__pre_role__in=list(request.user.role.all().values_list('id', flat=True))) + if request.user.dept: + filter |= Q(flowrecord__pre_dept=request.user.dept.id) + if not FlowData.objects.filter(id=instance.id).filter(filter).exists(): + return ErrorResponse(msg="当前数据您无权限审核") + # 进行审核 + flow_record_obj = FlowRecord.objects.filter(flow_data=instance.id).first() + flow_record_obj.status = 1 + flow_record_obj.save() + FlowAuditUsers.objects.create(**{ + "flow_record": flow_record_obj, + "audit_user": self.request.user, + "status": 1, + "description": f"审核通过,处理意见:{reason}", + }) + + return DetailResponse(data=None, msg="处理通过") + + @action(methods=['post'], detail=True, permission_classes=[IsAuthenticated]) + def handle_reject(self, request, pk,*args, **kwargs): + """ + 处理驳回 + :param request: + :return: + """ + reason = request.data.get("reason") + instance = FlowData.objects.get(id=pk) + if instance.status != 0: + return ErrorResponse(msg="流程数据状态错误") + filter = Q(flowrecord__pre_user=request.user.id) + if request.user: + filter |= Q(flowrecord__pre_role__in=list(request.user.role.all().values_list('id', flat=True))) + if request.user.dept: + filter |= Q(flowrecord__pre_dept=request.user.dept.id) + if not FlowData.objects.filter(id=instance.id).filter(filter).exists(): + return ErrorResponse(msg="当前数据您无权限审核") + # 进行审核 + flow_record_obj = FlowRecord.objects.filter(flow_data=instance.id).first() + flow_record_obj.status = 2 + flow_record_obj.save() + FlowAuditUsers.objects.create(**{ + "flow_record": flow_record_obj, + "audit_user": self.request.user, + "status": 2, + "description": reason, + }) + return DetailResponse(data=None, msg="处理驳回") + + @action(methods=['post'], detail=False, permission_classes=[IsAuthenticated]) + def handle_cancel(self, request, *args, **kwargs): + """ + 审核撤销 + :param request: + :return: + """ + instance = FlowData.objects.get(id=request.data.get('id')) + if instance.status != 0: + return ErrorResponse(msg="流程数据状态错误") + filter = Q(flowrecord__pre_user=request.user.id) + if request.user: + filter |= Q(flowrecord__pre_role__in=list(request.user.role.all().values_list('id', flat=True))) + if request.user.dept: + filter |= Q(flowrecord__pre_dept=request.user.dept.id) + if not FlowData.objects.filter(id=instance.id).filter(filter).exists(): + return ErrorResponse(msg="当前数据您无权限审核") + # 进行审核撤销 + flow_record_obj = FlowRecord.objects.filter(flow_data=instance.id).first() + flow_record_obj.status = 3 + flow_record_obj.save() + FlowAuditUsers.objects.create(**{ + "flow_record": flow_record_obj, + "audit_user": self.request.user, + "status": 3, + "description": "手动审核撤销", + }) + return DetailResponse(data=None, msg="处理驳回") diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_info.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_info.py new file mode 100644 index 0000000000..8cd8681e4b --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_info.py @@ -0,0 +1,269 @@ +from django.apps import apps +from django.contrib.contenttypes.models import ContentType +from django.db import models +from django.db.models import Model +from rest_framework import serializers +from rest_framework.decorators import action +from rest_framework.permissions import IsAuthenticated + +from dvadmin.system.models import Dept, Users, Role +from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse +from dvadmin.utils.serializers import CustomModelSerializer +from dvadmin.utils.string_util import random_str +from dvadmin.utils.viewset import CustomModelViewSet +from dvadmin3_flow.models import FlowInfo, FlowNode + + +class FlowInfoSerializer(CustomModelSerializer): + """ + 流程管理 创建/更新时的列化器 + """ + content_type = serializers.SerializerMethodField() + model_name = serializers.SerializerMethodField() + + def get_content_type(self, obj): + if obj.content_type: + return f"{obj.content_type.app_label}.{obj.content_type.model}" + else: + return "" + + def get_model_name(self, instance): + if instance.content_type: + return instance.content_type.name + return "" + + class Meta: + model = FlowInfo + fields = '__all__' + + +class FlowInfoViewSet(CustomModelViewSet): + """ + 流程管理接口: + """ + queryset = FlowInfo.objects.filter(is_deleted=False) + serializer_class = FlowInfoSerializer + + def list(self, request, *args, **kwargs): + self.extra_filter_class = [] + queryset = self.filter_queryset(self.get_queryset()) + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.get_serializer(page, many=True, request=request) + return self.get_paginated_response(serializer.data) + serializer = self.get_serializer(queryset, many=True, request=request) + return SuccessResponse(data=serializer.data, msg="获取成功") + + @action(methods=['GET'], detail=False, permission_classes=[IsAuthenticated]) + def org_tree(self, request, *args, **kwargs): + """ + 获取组织架构列表 + """ + dept_id = self.request.query_params.get('deptId') + type = self.request.query_params.get('type') + if not dept_id or not type: + return ErrorResponse(msg='参数错误') + data = [] + filter = {} + if int(dept_id) != 0: + filter['parent_id'] = dept_id + else: + filter['parent__isnull'] = True + if type == 'role': + for role in Role.objects.all(): + data.append({ + "id": role.id, + "name": role.name, + "avatar": "", + "type": "role" + }) + return DetailResponse(data=data, msg="获取成功") + dept_ids = [] + + for dept in Dept.objects.filter(**filter): + data.append({ + "id": dept.id, + "name": dept.name, + "avatar": "", + "type": "dept" + }) + dept_ids.append(dept.id) + if type == 'user': + for user in Users.objects.filter(dept_id__in=dept_ids): + data.append({ + "id": user.id, + "name": user.name, + "avatar": user.avatar, + "type": "user" + }) + return DetailResponse(data=data, msg="获取成功") + + @action(methods=['GET'], detail=False, permission_classes=[IsAuthenticated]) + def user_search(self, request, *args, **kwargs): + """ + 搜索用户 + """ + user_name = self.request.query_params.get('userName') + if not user_name: + return ErrorResponse(msg='参数错误') + data = [] + + for user in Users.objects.filter(name__icontains=user_name): + data.append({ + "id": user.id, + "name": user.name, + "avatar": user.avatar, + "type": "user" + }) + return DetailResponse(data=data, msg="获取成功") + + @action(methods=['GET'], detail=False, permission_classes=[IsAuthenticated]) + def get_all_flow_content_type(self, request, *args, **kwargs): + """ + 获取所有的model名称 + """ + data = [] + # 获取所有注册的app + apps_list = apps.get_app_configs() + # + # # 遍历所有的app并获取其所有的model + for app in apps_list: + for model in app.get_models(): + if getattr(model, 'ONLY_PUBLIC_TENANTS', False): + continue + if getattr(model, 'IS_FLOW', False): + data.append({ + "label": model._meta.verbose_name, + "value": str(model._meta), + }) + return DetailResponse(data=data, msg="获取成功") + + @action(methods=['get'], detail=True, permission_classes=[IsAuthenticated]) + def get_flow_process(self, request, pk): + instance = FlowInfo.objects.get(id=pk) + result = FlowNode.get_flow_node(instance) + return DetailResponse(data=result) + + @action(methods=['GET'], detail=False, permission_classes=[IsAuthenticated]) + def get_model_fields(self, request): + if not request.query_params.get('model_name'): + return DetailResponse(data=[]) + app_label, model_name = request.query_params.get('model_name').split('.') + try: + # 获取模型类 + model_class = apps.get_model(app_label=app_label, model_name=model_name) + # 检查是否为有效的模型 + if not issubclass(model_class, Model): + raise ValueError(f"{model_name} is not a Django model.") + # 获取模型的字段 + fields = model_class._meta.get_fields() + # 如果你只想要字段的名字,可以这样做 + field_list = [] + for field in fields: + field_verbose_name = "" + if hasattr(field, 'verbose_name'): + field_verbose_name = field.verbose_name + field_type = { + models.CharField: 'TextInput', + models.TextField: 'TextInput', + models.IntegerField: 'NumberInput', + models.FloatField: 'NumberInput', + models.BooleanField: 'NumberInput', + models.DateTimeField: 'datetime', + # 添加更多字段类型映射... + }.get(type(field), 'unknown') + if field_type in ['unknown', 'datetime']: + continue + field_list.append({ + 'label': field_verbose_name or field.name, + 'value': field.name, + 'type': field_type, + 'key': field.name + '_' + random_str(6), + }) + return DetailResponse(data=field_list) + except LookupError as e: + print(f"Model {model_name} not found in app {app_label}.") + return DetailResponse(data=[]) + + def create(self, request, *args, **kwargs): + """ + 创建审批流程 + """ + data = self.request.data + if not data: + return ErrorResponse(msg='流程数据不能为空') + flow_id = data.get('id') + if flow_id: + flow_info_obj = FlowInfo.objects.get(id=flow_id) + else: + flow_info_obj = FlowInfo() + # 保存 model 对象 + if data.get('content_type'): + app_label = data.get('content_type').split('.')[0] + model = data.get('content_type').split('.')[-1] + content_type_obj = ContentType.objects.filter(app_label=app_label, model=model).first() + flow_info_obj.content_type = content_type_obj + flow_info_obj.name = data.get('name') + flow_info_obj.icon = data.get('icon') + flow_info_obj.operation = data.get('operation') + flow_info_obj.form_conf = data.get('formConf') + flow_info_obj.description = data.get('remark') + if self.request.user: + flow_info_obj.creator = self.request.user + flow_info_obj.modifier = self.request.user.id + flow_info_obj.dept_belong_id = self.request.user.dept_id + flow_info_obj.save() + all_node_ids = FlowNode.save_flow_node(data.get('process'), flow_info_obj) + # 删除多余的 ids + FlowNode.objects.filter(flow_info=flow_info_obj).exclude(node_id__in=all_node_ids).delete() + return DetailResponse(msg="成功", data={'flow_id': flow_info_obj.id}) + + def retrieve(self, request, *args, **kwargs): + instance = self.get_object() + content_type = None + if instance.content_type: + content_type = f"{instance.content_type.app_label}.{instance.content_type.model}" + data = { + "id": instance.id, + "content_type": content_type, + "formConf": instance.form_conf, + "icon": instance.icon, + "name": instance.name, + "operation": instance.operation, + "process": FlowNode.get_flow_node(instance), + "remark": instance.description, + } + # 获取节点数据 + return DetailResponse(data=data, msg="获取成功") + + @action(methods=['POST'], detail=True, permission_classes=[IsAuthenticated]) + def publish(self, request, *args, **kwargs): + """ + 进行发布 + """ + instance = self.get_object() + # 发布 + if instance.status == 1: + return ErrorResponse(msg="该流程已发布") + instance.status = 1 + instance.save() + return DetailResponse(msg="发布成功") + + @action(methods=['POST'], detail=True, permission_classes=[IsAuthenticated]) + def unpublish(self, request, *args, **kwargs): + """ + 下架 + """ + instance = self.get_object() + # 发布 + if instance.status == 1: + return ErrorResponse(msg="该流程已下架") + instance.status = 2 + instance.save() + return DetailResponse(msg="下架成功") + + def destroy(self, request, *args, **kwargs): + instance = self.get_object() + instance.is_deleted = True + instance.save() + return DetailResponse(data=[], msg="删除成功") diff --git a/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_record.py b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_record.py new file mode 100644 index 0000000000..4a2e763f58 --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/dvadmin3_flow/views/flow_record.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +from rest_framework import serializers + +from dvadmin.utils.serializers import CustomModelSerializer +from dvadmin3_flow.models import FlowRecord,FlowNode + +class FlowRecordSerializer(CustomModelSerializer): + """ + 流程记录 的列化器 + """ + current_node_info = serializers.SerializerMethodField() + + def get_current_node_info(self, instance): + current_node_id = instance.current_node_id + return FlowNode.objects.filter(node_id=current_node_id).values() + + + + class Meta: + model = FlowRecord + fields = '__all__' \ No newline at end of file diff --git a/backend/plugins/dvadmin3-flow-backend/pyproject.toml b/backend/plugins/dvadmin3-flow-backend/pyproject.toml new file mode 100644 index 0000000000..f6c1689402 --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/pyproject.toml @@ -0,0 +1,6 @@ +[build-system] +requires = [ + "setuptools>=42", + "wheel", +] +build-backend = "setuptools.build_meta" diff --git a/backend/plugins/dvadmin3-flow-backend/setup.py b/backend/plugins/dvadmin3-flow-backend/setup.py new file mode 100644 index 0000000000..b8af31b887 --- /dev/null +++ b/backend/plugins/dvadmin3-flow-backend/setup.py @@ -0,0 +1,25 @@ +import setuptools + +with open("README.md", "r") as fh: + long_description = fh.read() + +setuptools.setup( + name="dvadmin-flow", + version="1.0.0", + author="DVAdmin", + author_email="liqiang@django-vue-admin.com", + description="一款适用于django-vue-admin的flow。", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://gitee.com/huge-dream/dvadmin-flow", + packages=setuptools.find_packages(), + python_requires='>=3.7, <4', + install_requires=[ + ], + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], + include_package_data=True +) -- Gitee From 17f71bdc330fec9baca96cd76820f6bc4f2dd43f Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Tue, 22 Apr 2025 12:17:37 +0800 Subject: [PATCH 26/31] update --- backend/conf/env.py | 11 ++++++++--- backend/docker_start.sh | 9 +++++---- docker_env/django/Dockerfile | 17 +++++++++++++++-- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/backend/conf/env.py b/backend/conf/env.py index f907df958e..b9cd5ef2dc 100644 --- a/backend/conf/env.py +++ b/backend/conf/env.py @@ -16,12 +16,14 @@ DATABASE_NAME = 'xxibears' # mysql 时使用 # 数据库地址 改为自己数据库地址 DATABASE_HOST = '192.168.100.252' +# DATABASE_HOST = '177.10.0.13' # # 数据库端口 DATABASE_PORT = 3306 # # 数据库用户名 DATABASE_USER = "root" # # 数据库密码 DATABASE_PASSWORD = 'xxibears@666' +# DATABASE_PASSWORD = 'Xq0ilC4RxPbi0bUGMe' # 表前缀 TABLE_PREFIX = "xxibears_" @@ -30,19 +32,22 @@ TABLE_PREFIX = "xxibears_" # ================================================= # REDIS_DB = 1 CELERY_BROKER_DB = 3 -REDIS_PASSWORD = 'xxibears@666' REDIS_HOST = '192.168.100.252' +# REDIS_HOST = '177.10.0.15' +REDIS_PASSWORD = 'xxibears@666' +# REDIS_PASSWORD = 'BrYnoC1hBKNM' REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' # ================================================= # # ****************** 功能 启停 ******************* # # ================================================= # DEBUG = True -# DEBUG = False # 正式环境建议关闭 +# DEBUG = False # 启动登录详细概略获取(通过调用api获取ip详细地址。如果是内网,关闭即可) ENABLE_LOGIN_ANALYSIS_LOG = True +# ENABLE_LOGIN_ANALYSIS_LOG = False # 登录接口 /api/token/ 是否需要验证码认证,用于测试,正式环境建议取消 LOGIN_NO_CAPTCHA_AUTH = True -# LOGIN_NO_CAPTCHA_AUTH = False # 正式环境建议取消 +# LOGIN_NO_CAPTCHA_AUTH = False # ================================================= # # ****************** 其他 配置 ******************* # # ================================================= # diff --git a/backend/docker_start.sh b/backend/docker_start.sh index 49ffb5e037..6c80824ae2 100755 --- a/backend/docker_start.sh +++ b/backend/docker_start.sh @@ -1,5 +1,6 @@ #!/bin/bash -# python manage.py makemigrations -# python manage.py migrate -# python manage.py init -y -uvicorn application.asgi:application --port 8000 --host 0.0.0.0 --workers 4 +python manage.py makemigrations +python manage.py migrate +#python manage.py init -y +#python manage.py init_area +uvicorn application.asgi:application --port 8000 --host 0.0.0.0 --workers 4 --reload diff --git a/docker_env/django/Dockerfile b/docker_env/django/Dockerfile index 33cfea9558..ffa28e0bb9 100644 --- a/docker_env/django/Dockerfile +++ b/docker_env/django/Dockerfile @@ -3,7 +3,20 @@ WORKDIR /backend COPY ./backend/ . RUN ls ./conf/ RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' -RUN sed -i "s|DATABASE_HOST = '192.168.100.252'|DATABASE_HOST = '177.10.0.1'|g" ./conf/env.py -RUN sed -i "s|REDIS_HOST = '192.168.100.252'|REDIS_HOST = '177.10.0.1'|g" ./conf/env.py +RUN sed -i "s/^DATABASE_HOST = '192.168.100.252'/# DATABASE_HOST = '192.168.100.252'/" /backend/conf/env.py +RUN sed -i "s/^# DATABASE_HOST = '177.10.0.13'/DATABASE_HOST = '177.10.0.13'/" /backend/conf/env.py +RUN sed -i "s/^DATABASE_PASSWORD = 'xxibears@666'/# DATABASE_PASSWORD = 'xxibears@666'/" /backend/conf/env.py +RUN sed -i "s/^# DATABASE_PASSWORD = 'Xq0ilC4RxPbi0bUGMe'/DATABASE_PASSWORD = 'Xq0ilC4RxPbi0bUGMe'/" /backend/conf/env.py +RUN sed -i "s/^REDIS_HOST = '192.168.100.252'/# REDIS_HOST = '192.168.100.252'/" /backend/conf/env.py +RUN sed -i "s/^# REDIS_HOST = '177.10.0.15'/REDIS_HOST = '177.10.0.15'/" /backend/conf/env.py +RUN sed -i "s/^REDIS_PASSWORD = 'xxibears@666'/# REDIS_PASSWORD = 'xxibears@666'/" /backend/conf/env.py +RUN sed -i "s/^# REDIS_PASSWORD = 'BrYnoC1hBKNM'/REDIS_PASSWORD = 'BrYnoC1hBKNM'/" /backend/conf/env.py +RUN sed -i "s/^DEBUG = True/# DEBUG = True/" /backend/conf/env.py +RUN sed -i "s/^# DEBUG = False/DEBUG = False/" /backend/conf/env.py +RUN sed -i "s/^ENABLE_LOGIN_ANALYSIS_LOG = True/# ENABLE_LOGIN_ANALYSIS_LOG = True/" /backend/conf/env.py +RUN sed -i "s/^# ENABLE_LOGIN_ANALYSIS_LOG = False/ENABLE_LOGIN_ANALYSIS_LOG = False/" /backend/conf/env.py +RUN sed -i "s/^LOGIN_NO_CAPTCHA_AUTH = True/# LOGIN_NO_CAPTCHA_AUTH = True/" /backend/conf/env.py +RUN sed -i "s/^# LOGIN_NO_CAPTCHA_AUTH = False/LOGIN_NO_CAPTCHA_AUTH = False/" /backend/conf/env.py RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt CMD ["sh","docker_start.sh"] + -- Gitee From 98f3e308368f0a563a160992edfbc22d4cd67978 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Wed, 23 Apr 2025 19:00:04 +0800 Subject: [PATCH 27/31] =?UTF-8?q?=E6=81=A2=E5=A4=8Dmysql=E7=9A=84volumes?= =?UTF-8?q?=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b943860bf8..f716e2d4bc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -60,8 +60,9 @@ services: --max_connections=1000 --default-authentication-plugin=mysql_native_password volumes: - - ./backend:/backend - - ./logs/log:/var/log + - "./docker_env/mysql/data:/var/lib/mysql" + - "./docker_env/mysql/conf.d:/etc/mysql/conf.d" + - "./docker_env/mysql/logs:/logs" networks: network: ipv4_address: 177.10.0.13 -- Gitee From cd4e6dda6987b3cb2a095042d9fad5f343b03fee Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Wed, 23 Apr 2025 19:02:24 +0800 Subject: [PATCH 28/31] =?UTF-8?q?=E6=81=A2=E5=A4=8Dmysql=E7=9A=84volumes?= =?UTF-8?q?=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f716e2d4bc..6c8cdf2fb2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -114,5 +114,4 @@ networks: ipam: driver: default config: - - subnet: '177.10.0.0/16' - + - subnet: '177.10.0.0/16' \ No newline at end of file -- Gitee From da470b72ac7d519ac61eb54e115258868739365c Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Thu, 24 Apr 2025 09:25:59 +0800 Subject: [PATCH 29/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=92=8C=E5=85=81=E8=AE=B8celery=E4=BD=BF=E7=94=A8root?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/conf/env.py | 4 ++-- docker-compose.yml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/conf/env.py b/backend/conf/env.py index b9cd5ef2dc..554bd622c6 100644 --- a/backend/conf/env.py +++ b/backend/conf/env.py @@ -23,7 +23,7 @@ DATABASE_PORT = 3306 DATABASE_USER = "root" # # 数据库密码 DATABASE_PASSWORD = 'xxibears@666' -# DATABASE_PASSWORD = 'Xq0ilC4RxPbi0bUGMe' +# DATABASE_PASSWORD = 'BvYHKGyToIcrOArfZ6' # 表前缀 TABLE_PREFIX = "xxibears_" @@ -35,7 +35,7 @@ CELERY_BROKER_DB = 3 REDIS_HOST = '192.168.100.252' # REDIS_HOST = '177.10.0.15' REDIS_PASSWORD = 'xxibears@666' -# REDIS_PASSWORD = 'BrYnoC1hBKNM' +# REDIS_PASSWORD = 'FMgMyF04llil' REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' # ================================================= # # ****************** 功能 启停 ******************* # diff --git a/docker-compose.yml b/docker-compose.yml index 6c8cdf2fb2..0c9e191ee6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -80,6 +80,7 @@ services: PYTHONUNBUFFERED: 1 DATABASE_HOST: xxibears-erp-mysql TZ: Asia/Shanghai + C_FORCE_ROOT: "true" volumes: - ./backend:/backend - ./logs/log:/var/log -- Gitee From 52b1e812fe0fd41f42738b438f63e40374db9263 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Thu, 24 Apr 2025 10:54:11 +0800 Subject: [PATCH 30/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=92=8C=E5=85=81=E8=AE=B8celery=E4=BD=BF=E7=94=A8root?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 1 - docker_env/celery/Dockerfile | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0c9e191ee6..6c8cdf2fb2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -80,7 +80,6 @@ services: PYTHONUNBUFFERED: 1 DATABASE_HOST: xxibears-erp-mysql TZ: Asia/Shanghai - C_FORCE_ROOT: "true" volumes: - ./backend:/backend - ./logs/log:/var/log diff --git a/docker_env/celery/Dockerfile b/docker_env/celery/Dockerfile index e4c68335cd..f9e8f328b7 100644 --- a/docker_env/celery/Dockerfile +++ b/docker_env/celery/Dockerfile @@ -2,6 +2,7 @@ FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxi WORKDIR /backend COPY ./backend/ . RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' +RUN export C_FORCE_ROOT="true" RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt CMD ["celery", "-A", "application", "worker", "-B", "--loglevel=info"] -- Gitee From 4523d3259fa917b577c2a01ace5ee1e3aeb04977 Mon Sep 17 00:00:00 2001 From: Kendrick <509556985@qq.com> Date: Thu, 24 Apr 2025 11:10:18 +0800 Subject: [PATCH 31/31] =?UTF-8?q?=E5=8F=98=E6=9B=B4celery=E7=9A=84?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/celery_start.sh | 3 +++ docker_env/celery/Dockerfile | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 backend/celery_start.sh diff --git a/backend/celery_start.sh b/backend/celery_start.sh new file mode 100644 index 0000000000..25ab0de426 --- /dev/null +++ b/backend/celery_start.sh @@ -0,0 +1,3 @@ +#!/bin/bash +export C_FORCE_ROOT="true" +celery -A application worker -B --loglevel=info \ No newline at end of file diff --git a/docker_env/celery/Dockerfile b/docker_env/celery/Dockerfile index f9e8f328b7..8fee070643 100644 --- a/docker_env/celery/Dockerfile +++ b/docker_env/celery/Dockerfile @@ -2,7 +2,5 @@ FROM crpi-r63u596ki20idsav.cn-shenzhen.personal.cr.aliyuncs.com/gdjcz/basics-xxi WORKDIR /backend COPY ./backend/ . RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' -RUN export C_FORCE_ROOT="true" RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt -CMD ["celery", "-A", "application", "worker", "-B", "--loglevel=info"] - +CMD ["sh","celery_start.sh"] \ No newline at end of file -- Gitee

h$EjJ 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.map(i=>d[i]); +import{ae as V,u as N,_ as j,o as q,e as G}from"./index.CkCcWuPb.js";import{w as M,aU as Q,af as U,D as I,aR as S,aQ as W,F as J,am as K,O as X,aA as u,x as d,y as l,a7 as r,a0 as c,a6 as R,aq as Y,$ as v,G as Z,aP as ee,z as $,a5 as h,ap as te,a4 as z,ad as ne,P as se}from"./vue.Cw4Y52yh.js";import{_ as ie}from"./_plugin-vue_export-helper.DlAUqK2U.js";const oe={class:"el-menu-horizontal-warp"},ae=["onClick"],le=M({name:"navMenuHorizontal"}),re=M({...le,props:{menuList:{type:Array,default:()=>[]}},setup(T){const f=Q(),w=ee(()=>j(()=>import("./subItem.BfAnlXnN.js"),__vite__mapDeps([0,1,2,3])));U({menuList:[],clientWidth:0});const m=T,A=I(),D=V(),P=N(),{routesList:p}=S(D),{themeConfig:_}=S(P),k=W(),o=I(""),C=J(()=>(m.menuList.shift(),m.menuList)),L=(t,i)=>{for(let e=0;e0&&(n.children.findIndex(s=>s.path===i)!==-1||L(n.children,i)!==null))return e}return null},b=()=>{se(()=>{let t=document.querySelector(".el-menu.el-menu--horizontal li.is-active");if(!t)return!1;A.value.$refs.wrapRef.scrollLeft=t.offsetLeft})},g=t=>t.filter(i=>{var e;return!((e=i.meta)!=null&&e.isHide)}).map(i=>(i=Object.assign({},i),i.children&&(i.children=g(i.children)),i)),B=t=>{const i=t.split("/");let e={children:[]};return g(p.value).map((n,a)=>{n.path===`/${i[1]}`&&(n.k=a,e.item={...n},e.children=[{...n}],n.children&&(e.children=n.children))}),e},H=t=>{const{path:i,meta:e}=t;if(_.value.layout==="classic"){let n=(L(p.value,k.path)||0)-1;o.value=n<0?o.value:C.value[n].path}else{const n=e!=null&&e.isDynamic?e.isDynamicPath.split("/"):i.split("/");n.length>=4&&(e!=null&&e.isHide)?o.value=n.splice(0,3).join("/"):o.value=i}},O=t=>{q.handleOpenLink(t)},x=(t,i)=>{let e=t.children;if(e===void 0&&(o.value=t.path,e=B(t.path).children),e.length>=1){if(e[0].is_catalog){x(e[0]);return}f.push(e[0].path);let{layout:n,isClassicSplitMenu:a}=_.value;n==="classic"&&a&&G.emit("setSendClassicChildren",e[0])}else f.push("/home")};return K(()=>{H(k)}),X(()=>{b()}),(t,i)=>{const e=u("SvgIcon"),n=u("el-sub-menu"),a=u("el-menu-item"),y=u("el-menu");return l(),d("div",oe,[r(y,{"default-active":o.value,"background-color":"transparent",mode:"horizontal"},{default:c(()=>[(l(!0),d(R,null,Y(C.value,(s,E)=>(l(),d(R,null,[s.children&&s.children.length>0?(l(),v(n,{index:s.path,key:s.path},{title:c(()=>[r(e,{name:s.meta.icon},null,8,["name"]),$("span",null,h(t.$t(s.meta.title)),1)]),default:c(()=>[r(Z(w),{chil:s.children},null,8,["chil"])]),_:2},1032,["index"])):(l(),v(a,{index:s.path,key:s.path,style:{"--el-menu-active-color":"#fff"},onClick:F=>x(s,E)},te({_:2},[!s.meta.isLink||s.meta.isLink&&s.meta.isIframe?{name:"title",fn:c(()=>[r(e,{name:s.meta.icon},null,8,["name"]),z(" "+h(t.$t(s.meta.title)),1)]),key:"0"}:{name:"title",fn:c(()=>[$("a",{class:"w100",onClick:ne(F=>O(s),["prevent"])},[r(e,{name:s.meta.icon},null,8,["name"]),z(" "+h(t.$t(s.meta.title)),1)],8,ae)]),key:"1"}]),1032,["index","onClick"]))],64))),256))]),_:1},8,["default-active"])])}}}),he=ie(re,[["__scopeId","data-v-593d995c"]]);export{he as default}; diff --git a/web/dist/assets/horizontal.jmWcI8YP.css b/web/dist/assets/horizontal.jmWcI8YP.css new file mode 100644 index 0000000000..e186d134f8 --- /dev/null +++ b/web/dist/assets/horizontal.jmWcI8YP.css @@ -0,0 +1 @@ +.el-menu-horizontal-warp[data-v-593d995c]{flex:1;overflow:hidden;margin-right:30px}.el-menu-horizontal-warp[data-v-593d995c] .el-scrollbar__bar.is-vertical{display:none}.el-menu-horizontal-warp[data-v-593d995c] a{width:100%}.el-menu-horizontal-warp .el-menu.el-menu--horizontal[data-v-593d995c]{display:flex;height:100%;width:100%;box-sizing:border-box} diff --git a/web/dist/assets/iconfont.1741744105265.CEnVhfJy.ttf b/web/dist/assets/iconfont.1741744105265.CEnVhfJy.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4586c5f4f039c7472d89a2db0733361ac0cef4aa GIT binary patch literal 7444 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 literal 0 HcmV?d00001 diff --git a/web/dist/assets/iconfont.1741744105265.Dp-KMXjm.woff b/web/dist/assets/iconfont.1741744105265.Dp-KMXjm.woff new file mode 100644 index 0000000000000000000000000000000000000000..f8cfe784443aa1434b919b8ea3857df5f1604a33 GIT binary patch literal 4264 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 ZC8zVMGzZ*1T&bp;aS4chlEeT2{1*p8%#Z*8 literal 0 HcmV?d00001 diff --git a/web/dist/assets/iconfont.CV5FmyBR.ttf b/web/dist/assets/iconfont.CV5FmyBR.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c82be20bba2eea2c3b290b01b698c3c36b46480a GIT binary patch literal 5532 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 literal 0 HcmV?d00001 diff --git a/web/dist/assets/iframes.DGiIlSBz.js b/web/dist/assets/iframes.DGiIlSBz.js new file mode 100644 index 0000000000..f0ad9459ca --- /dev/null +++ b/web/dist/assets/iframes.DGiIlSBz.js @@ -0,0 +1 @@ +import{w as h,D as _,aQ as k,F as d,H as c,aJ as I,x as n,y as o,z as w,a6 as x,aq as O,P as L,a1 as p,a7 as P,a0 as R,a8 as b,aF as v}from"./vue.Cw4Y52yh.js";import{x as B}from"./index.CkCcWuPb.js";const D={class:"layout-padding layout-padding-unset layout-iframe"},E={class:"layout-padding-auto layout-padding-view"},F=["src","data-url"],S=h({name:"layoutIframeView"}),C=h({...S,props:{refreshKey:{type:String,default:()=>""},name:{type:String,default:()=>"slide-right"},list:{type:Array,default:()=>[]}},setup(f){const i=f,l=_(),r=k(),g=d(()=>i.list.filter(e=>{var t,s,a;if((t=e.meta)!=null&&t.isIframeOpen){const m=((s=e.meta)==null?void 0:s.isLink)||"";m.includes("{{token}}")&&(e.meta.isLink=m.replace("{{token}}",B.cookie.get("token")))}return(a=e.meta)==null?void 0:a.isIframeOpen})),y=d(()=>r.path),u=(e,t)=>{L(()=>{if(!l.value)return!1;l.value.forEach(s=>{s.dataset.url===e&&(s.onload=()=>{var a;(a=t.meta)!=null&&a.isIframeOpen&&t.meta.loading&&(t.meta.loading=!1)})})})};return c(()=>r.fullPath,e=>{const t=i.list.find(s=>s.path===e);if(!t)return!1;t.meta.isIframeOpen||(t.meta.isIframeOpen=!0),u(e,t)},{immediate:!0}),c(()=>i.refreshKey,()=>{const e=i.list.find(t=>t.path===r.path);if(!e)return!1;e.meta.isIframeOpen&&(e.meta.isIframeOpen=!1),setTimeout(()=>{e.meta.isIframeOpen=!0,e.meta.loading=!0,u(r.fullPath,e)})},{deep:!0}),(e,t)=>{const s=I("loading");return o(),n("div",D,[w("div",E,[(o(!0),n(x,null,O(g.value,a=>p((o(),n("div",{class:"w100",key:a.path,"element-loading-background":"white"},[P(v,{name:f.name,mode:"out-in"},{default:R(()=>[p((o(),n("iframe",{src:a.meta.isLink,key:a.path,frameborder:"0",height:"100%",width:"100%",style:{position:"absolute"},"data-url":a.path,ref_for:!0,ref_key:"iframeRef",ref:l},null,8,F)),[[b,y.value===a.path]])]),_:2},1032,["name"])])),[[s,a.meta.loading]])),128))])])}}});export{C as default}; diff --git a/web/dist/assets/img404.DizYJBZK.png b/web/dist/assets/img404.DizYJBZK.png new file mode 100644 index 0000000000000000000000000000000000000000..dc48c7502ce11c5b52cd791e0b366a82b817c236 GIT binary patch literal 71017 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[0]<4?1:+(mi[0]+mi[1])),!Sg&&Ay&&(!(mi=Ay.match(/Edge\/(\d+)/))||mi[1]>=74)&&(mi=Ay.match(/Chrome\/(\d+)/))&&(Sg=+mi[1]);var bh,ov=Sg,uo=!!Object.getOwnPropertySymbols&&!Vr(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&ov&&ov<41}),j3=uo&&!Symbol.sham&&typeof Symbol.iterator=="symbol",t$=Be.Object,al=j3?function(e){return typeof e=="symbol"}:function(e){var t=Kl("Symbol");return dr(t)&&wd(t.prototype,t$(e))},r$=Be.String,Kw=function(e){try{return r$(e)}catch{return"Object"}},n$=Be.TypeError,P3=function(e){if(dr(e))return e;throw n$(Kw(e)+" is not a function")},iv=function(e,t){var r=e[t];return r==null?void 0:P3(r)},o$=Be.TypeError,i$=Object.defineProperty,Gi=Be["__core-js_shared__"]||function(e,t){try{i$(Be,e,{value:t,configurable:!0,writable:!0})}catch{Be[e]=t}return t}("__core-js_shared__",{}),Qu=Zu(function(e){(e.exports=function(t,r){return Gi[t]||(Gi[t]=r!==void 0?r:{})})("versions",[]).push({version:"3.19.3",mode:"pure",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})}),a$=Be.Object,yp=function(e){return a$(_3(e))},u$=pt({}.hasOwnProperty),Ue=Object.hasOwn||function(e,t){return u$(yp(e),t)},s$=0,l$=Math.random(),c$=pt(1 .toString),av=function(e){return"Symbol("+(e===void 0?"":e)+")_"+c$(++s$+l$,36)},bc=Qu("wks"),pu=Be.Symbol,oS=pu&&pu.for,f$=j3?pu:pu&&pu.withoutSetter||av,Or=function(e){if(!Ue(bc,e)||!uo&&typeof bc[e]!="string"){var t="Symbol."+e;uo&&Ue(pu,e)?bc[e]=pu[e]:bc[e]=j3&&oS?oS(t):f$(t)}return bc[e]},d$=Be.TypeError,p$=Or("toPrimitive"),h$=function(e,t){if(!wn(e)||al(e))return e;var r,n=iv(e,p$);if(n){if(r=Qr(n,e,t),!wn(r)||al(r))return r;throw d$("Can't convert object to primitive value")}return function(o,i){var a,u;if(dr(a=o.toString)&&!wn(u=Qr(a,o))||dr(a=o.valueOf)&&!wn(u=Qr(a,o))||i!=="string")return u;throw o$("Can't convert object to primitive value")}(e,t)},Xl=function(e){var t=h$(e,"string");return al(t)?t:t+""},Xw=Be.document,g$=wn(Xw)&&wn(Xw.createElement),G_=function(e){return g$?Xw.createElement(e):{}},q_=!zr&&!Vr(function(){return Object.defineProperty(G_("div"),"a",{get:function(){return 7}}).a!=7}),iS=Object.getOwnPropertyDescriptor,v$=zr?iS:function(e,t){if(e=To(e),t=Xl(t),q_)try{return iS(e,t)}catch{}if(Ue(e,t))return Vn(!Qr(T3.f,e,t),e[t])},gm={f:v$},m$=/#|\.prototype\./,bp=function(e,t){var r=b$[y$(e)];return r==E$||r!=w$&&(dr(t)?Vr(t):!!t)},y$=bp.normalize=function(e){return String(e).replace(m$,".").toLowerCase()},b$=bp.data={},w$=bp.NATIVE="N",E$=bp.POLYFILL="P",D$=bp,aS=pt(pt.bind),N3=function(e,t){return P3(e),t===void 0?e:aS?aS(e,t):function(){return e.apply(t,arguments)}},C$=Be.String,S$=Be.TypeError,rn=function(e){if(wn(e))return e;throw S$(C$(e)+" is not an object")},x$=Be.TypeError,uS=Object.defineProperty,A$=zr?uS:function(e,t,r){if(rn(e),t=Xl(t),rn(r),q_)try{return uS(e,t,r)}catch{}if("get"in r||"set"in r)throw x$("Accessors not supported");return"value"in r&&(e[t]=r.value),e},xa={f:A$},Fr=zr?function(e,t,r){return xa.f(e,t,Vn(1,r))}:function(e,t,r){return e[t]=r,e},O$=gm.f,B$=function(e){var t=function(r,n,o){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,o)}return U_(e,this,arguments)};return t.prototype=e.prototype,t},Wo=function(e,t){var r,n,o,i,a,u,s,l,c=e.target,f=e.global,d=e.stat,p=e.proto,v=f?Be:d?Be[c]:(Be[c]||{}).prototype,m=f?Jr:Jr[c]||Fr(Jr,c,{})[c],g=m.prototype;for(o in t)r=!D$(f?o:c+(d?".":"#")+o,e.forced)&&v&&Ue(v,o),a=m[o],r&&(u=e.noTargetGet?(l=O$(v,o))&&l.value:v[o]),i=r&&u?u:t[o],r&&typeof a==typeof i||(s=e.bind&&r?N3(i,Be):e.wrap&&r?B$(i):p&&dr(i)?pt(i):i,(e.sham||i&&i.sham||a&&a.sham)&&Fr(s,"sham",!0),Fr(m,o,s),p&&(Ue(Jr,n=c+"Prototype")||Fr(Jr,n,{}),Fr(Jr[n],o,i),e.real&&g&&!g[o]&&Fr(g,o,i)))},sS=Qu("keys"),vm=function(e){return sS[e]||(sS[e]=av(e))},k$=!Vr(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),lS=vm("IE_PROTO"),Yw=Be.Object,F$=Yw.prototype,uv=k$?Yw.getPrototypeOf:function(e){var t=yp(e);if(Ue(t,lS))return t[lS];var r=t.constructor;return dr(r)&&t instanceof r?r.prototype:t instanceof Yw?F$:null},T$=Be.String,_$=Be.TypeError,sv=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=pt(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),t=r instanceof Array}catch{}return function(n,o){return rn(n),function(i){if(typeof i=="object"||dr(i))return i;throw _$("Can't set "+T$(i)+" as a prototype")}(o),t?e(n,o):n.__proto__=o,n}}():void 0),j$=Math.ceil,P$=Math.floor,I3=function(e){var t=+e;return t!=t||t===0?0:(t>0?P$:j$)(t)},N$=Math.max,I$=Math.min,Jw=function(e,t){var r=I3(e);return r<0?N$(r+t,0):I$(r,t)},R$=Math.min,wp=function(e){return(t=e.length)>0?R$(I3(t),9007199254740991):0;var t},L$=function(e){return function(t,r,n){var o,i=To(t),a=wp(i),u=Jw(n,a);if(e&&r!=r){for(;a>u;)if((o=i[u++])!=o)return!0}else for(;a>u;u++)if((e||u in i)&&i[u]===r)return e||u||0;return!e&&-1}},M$={indexOf:L$(!1)},Ep={},z$=M$.indexOf,cS=pt([].push),K_=function(e,t){var r,n=To(e),o=0,i=[];for(r in n)!Ue(Ep,r)&&Ue(n,r)&&cS(i,r);for(;t.length>o;)Ue(n,r=t[o++])&&(~z$(i,r)||cS(i,r));return i},lv=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],$$=lv.concat("length","prototype"),H$=Object.getOwnPropertyNames||function(e){return K_(e,$$)},R3={f:H$},xg={f:Object.getOwnPropertySymbols},U$=pt([].concat),V$=Kl("Reflect","ownKeys")||function(e){var t=R3.f(rn(e)),r=xg.f;return r?U$(t,r(e)):t},L3=Object.keys||function(e){return K_(e,lv)},W$=zr?Object.defineProperties:function(e,t){rn(e);for(var r,n=To(t),o=L3(t),i=o.length,a=0;i>a;)xa.f(e,r=o[a++],n[r]);return e},G$=Kl("document","documentElement"),X_=vm("IE_PROTO"),Oy=function(){},Y_=function(e){return" + + + + +