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
\ No newline at end of file
diff --git a/src/views/iot/product/product/ProductForm.vue b/src/views/iot/product/product/ProductForm.vue
index b974717b..f7fe4087 100644
--- a/src/views/iot/product/product/ProductForm.vue
+++ b/src/views/iot/product/product/ProductForm.vue
@@ -7,10 +7,10 @@
label-width="110px"
v-loading="formLoading"
>
-
+
@@ -145,7 +145,7 @@ const formData = ref({
validateType: ValidateTypeEnum.WEAK
})
const formRules = reactive({
- productKey: [{ required: true, message: '产品标识不能为空', trigger: 'blur' }],
+ productKey: [{ required: true, message: 'ProductKey 不能为空', trigger: 'blur' }],
name: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }],
categoryId: [{ required: true, message: '产品分类不能为空', trigger: 'change' }],
deviceType: [{ required: true, message: '设备类型不能为空', trigger: 'change' }],
diff --git a/src/views/iot/product/product/index.vue b/src/views/iot/product/product/index.vue
index 21ae605d..09bd1773 100644
--- a/src/views/iot/product/product/index.vue
+++ b/src/views/iot/product/product/index.vue
@@ -63,49 +63,93 @@
-
+
-
-
-
-
{{ item.name }}
-
{{ item.productKey }}
+
+
+
+
+
+
+
+
{{ item.name }}
+
+
+
+
+
+
+ 产品分类
+ {{ item.categoryName }}
+
+
+ 产品类型
+
+
+
+ 产品标识
+ {{ item.productKey }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+ 详情
+
+
+
+ 物模型
+
+
+
+
+
-
-
- {{ item.categoryName }}
-
-
-
-
- 编辑
-
-
- 删除
-
@@ -199,6 +243,8 @@ import { ProductApi, ProductVO } from '@/api/iot/product/product'
import ProductForm from './ProductForm.vue'
import { DICT_TYPE } from '@/utils/dict'
import download from '@/utils/download'
+import defaultPicUrl from '@/assets/imgs/iot/device.png'
+import defaultIconUrl from '@/assets/svgs/iot/cube.svg'
/** iot 产品列表 */
defineOptions({ name: 'IoTProduct' })
@@ -216,7 +262,7 @@ const queryParams = reactive({
productKey: undefined
})
const queryFormRef = ref() // 搜索的表单
-const exportLoading = ref(false) // 导出的加载中
+const exportLoading = ref(false) // 导出加载中
const viewMode = ref<'card' | 'list'>('card') // 视图模式状态
/** 查询列表 */
--
Gitee
From dde5911b5fa2941bd61c35a65cf18e93bdd94af4 Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sat, 14 Dec 2024 16:10:23 +0800
Subject: [PATCH 17/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E5=AE=8C?=
=?UTF-8?q?=E5=96=84=E3=80=91IoT=EF=BC=9A=E8=AE=BE=E5=A4=87=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=20deviceKey?=
=?UTF-8?q?=E3=80=81serialNumber=E3=80=81picUrl=20=E7=AD=89=E5=AD=97?=
=?UTF-8?q?=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/iot/device/index.ts | 5 +
.../iot/device/{ => device}/DeviceForm.vue | 110 +++++++++--
.../{ => device}/detail/DeviceDataDetail.vue | 0
.../detail/DeviceDetailsHeader.vue | 0
.../{ => device}/detail/DeviceDetailsInfo.vue | 0
.../detail/DeviceDetailsModel.vue | 0
.../iot/device/{ => device}/detail/index.vue | 0
src/views/iot/device/{ => device}/index.vue | 0
src/views/iot/product/product/ProductForm.vue | 15 +-
.../product/product/detail/ProductTopic.vue | 38 ++--
.../iot/product/product/detail/index.vue | 7 +-
src/views/iot/product/product/index.vue | 175 +++++++++---------
12 files changed, 233 insertions(+), 117 deletions(-)
rename src/views/iot/device/{ => device}/DeviceForm.vue (55%)
rename src/views/iot/device/{ => device}/detail/DeviceDataDetail.vue (100%)
rename src/views/iot/device/{ => device}/detail/DeviceDetailsHeader.vue (100%)
rename src/views/iot/device/{ => device}/detail/DeviceDetailsInfo.vue (100%)
rename src/views/iot/device/{ => device}/detail/DeviceDetailsModel.vue (100%)
rename src/views/iot/device/{ => device}/detail/index.vue (100%)
rename src/views/iot/device/{ => device}/index.vue (100%)
diff --git a/src/api/iot/device/index.ts b/src/api/iot/device/index.ts
index 4f61d56d..2106e75a 100644
--- a/src/api/iot/device/index.ts
+++ b/src/api/iot/device/index.ts
@@ -91,6 +91,11 @@ export const DeviceApi = {
return await request.get({ url: `/iot/device/count?productId=` + productId })
},
+ // 获取设备的精简信息列表
+ getSimpleDeviceList: async (deviceType?: number) => {
+ return await request.get({ url: `/iot/device/simple-list?`, params: { deviceType } })
+ },
+
// 获取设备属性最新数据
getDevicePropertiesLatestData: async (params: any) => {
return await request.get({ url: `/iot/device/data/latest`, params })
diff --git a/src/views/iot/device/DeviceForm.vue b/src/views/iot/device/device/DeviceForm.vue
similarity index 55%
rename from src/views/iot/device/DeviceForm.vue
rename to src/views/iot/device/device/DeviceForm.vue
index 95eff822..138498b1 100644
--- a/src/views/iot/device/DeviceForm.vue
+++ b/src/views/iot/device/device/DeviceForm.vue
@@ -13,6 +13,7 @@
placeholder="请选择产品"
:disabled="formType === 'update'"
clearable
+ @change="handleProductChange"
>
+
+
+
+
+ 重新生成
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
确 定
@@ -41,13 +76,15 @@
diff --git a/src/views/iot/device/detail/DeviceDataDetail.vue b/src/views/iot/device/device/detail/DeviceDataDetail.vue
similarity index 100%
rename from src/views/iot/device/detail/DeviceDataDetail.vue
rename to src/views/iot/device/device/detail/DeviceDataDetail.vue
diff --git a/src/views/iot/device/detail/DeviceDetailsHeader.vue b/src/views/iot/device/device/detail/DeviceDetailsHeader.vue
similarity index 100%
rename from src/views/iot/device/detail/DeviceDetailsHeader.vue
rename to src/views/iot/device/device/detail/DeviceDetailsHeader.vue
diff --git a/src/views/iot/device/detail/DeviceDetailsInfo.vue b/src/views/iot/device/device/detail/DeviceDetailsInfo.vue
similarity index 100%
rename from src/views/iot/device/detail/DeviceDetailsInfo.vue
rename to src/views/iot/device/device/detail/DeviceDetailsInfo.vue
diff --git a/src/views/iot/device/detail/DeviceDetailsModel.vue b/src/views/iot/device/device/detail/DeviceDetailsModel.vue
similarity index 100%
rename from src/views/iot/device/detail/DeviceDetailsModel.vue
rename to src/views/iot/device/device/detail/DeviceDetailsModel.vue
diff --git a/src/views/iot/device/detail/index.vue b/src/views/iot/device/device/detail/index.vue
similarity index 100%
rename from src/views/iot/device/detail/index.vue
rename to src/views/iot/device/device/detail/index.vue
diff --git a/src/views/iot/device/index.vue b/src/views/iot/device/device/index.vue
similarity index 100%
rename from src/views/iot/device/index.vue
rename to src/views/iot/device/device/index.vue
diff --git a/src/views/iot/product/product/ProductForm.vue b/src/views/iot/product/product/ProductForm.vue
index f7fe4087..e4eec674 100644
--- a/src/views/iot/product/product/ProductForm.vue
+++ b/src/views/iot/product/product/ProductForm.vue
@@ -12,7 +12,13 @@
v-model="formData.productKey"
placeholder="请输入 ProductKey"
:readonly="formType === 'update'"
- />
+ >
+
+
+ 重新生成
+
+
+
@@ -184,7 +190,7 @@ const open = async (type: string, id?: number) => {
}
} else {
// 新增时,生成随机 productKey
- formData.value.productKey = generateRandomStr(16)
+ generateProductKey()
}
// 加载分类列表
categoryList.value = await ProductCategoryApi.getSimpleProductCategoryList()
@@ -231,4 +237,9 @@ const resetForm = () => {
}
formRef.value?.resetFields()
}
+
+/** 生成 ProductKey */
+const generateProductKey = () => {
+ formData.value.productKey = generateRandomStr(16)
+}
diff --git a/src/views/iot/product/product/detail/ProductTopic.vue b/src/views/iot/product/product/detail/ProductTopic.vue
index 1e95da5a..a691a614 100644
--- a/src/views/iot/product/product/detail/ProductTopic.vue
+++ b/src/views/iot/product/product/detail/ProductTopic.vue
@@ -3,9 +3,9 @@
()
-// 定义列
-const columns1 = reactive([
- { label: '功能', field: 'function', width: 150 },
- { label: 'Topic 类', field: 'topicClass', width: 800 },
- { label: '操作权限', field: 'operationPermission', width: 100 },
- { label: '描述', field: 'description' }
-])
+// TODO 芋艿:不确定未来会不会改,所以先写死
-const columns2 = reactive([
+// 基础通信 Topic 列
+const basicColumn = reactive([
{ label: '功能', field: 'function', width: 150 },
{ label: 'Topic 类', field: 'topicClass', width: 800 },
{ label: '操作权限', field: 'operationPermission', width: 100 },
{ label: '描述', field: 'description' }
])
-// TODO @haohao:这个,有没可能写到一个枚举里,方便后续维护? /Users/yunai/Java/yudao-ui-admin-vue3/src/views/ai/utils/constants.ts
-const data1 = computed(() => {
+// 基础通信 Topic 数据
+const basicData = computed(() => {
if (!props.product || !props.product.productKey) return []
return [
{
@@ -147,7 +142,16 @@ const data1 = computed(() => {
]
})
-const data2 = computed(() => {
+// 物模型通信 Topic 列
+const functionColumn = reactive([
+ { label: '功能', field: 'function', width: 150 },
+ { label: 'Topic 类', field: 'topicClass', width: 800 },
+ { label: '操作权限', field: 'operationPermission', width: 100 },
+ { label: '描述', field: 'description' }
+])
+
+// 物模型通信 Topic 数据
+const functionData = computed(() => {
if (!props.product || !props.product.productKey) return []
return [
{
diff --git a/src/views/iot/product/product/detail/index.vue b/src/views/iot/product/product/detail/index.vue
index 5c4a32f6..baca1021 100644
--- a/src/views/iot/product/product/detail/index.vue
+++ b/src/views/iot/product/product/detail/index.vue
@@ -36,7 +36,7 @@ const message = useMessage()
const id = Number(route.params.id) // 编号
const loading = ref(true) // 加载中
const product = ref({} as ProductVO) // 详情
-const activeTab = ref('info') // 默认激活的标签页
+const activeTab = ref('info') // 默认为 info 标签页
/** 获取详情 */
const getProductData = async (id: number) => {
@@ -66,6 +66,11 @@ onMounted(async () => {
return
}
await getProductData(id)
+ // 处理 tab 参数
+ const { tab } = route.query
+ if (tab) {
+ activeTab.value = tab as string
+ }
// 查询设备数量
if (product.value.id) {
product.value.deviceCount = await getDeviceCount(product.value.id)
diff --git a/src/views/iot/product/product/index.vue b/src/views/iot/product/product/index.vue
index 09bd1773..1e48a594 100644
--- a/src/views/iot/product/product/index.vue
+++ b/src/views/iot/product/product/index.vue
@@ -63,96 +63,89 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
- 产品分类
- {{ item.categoryName }}
-
-
-
产品类型
-
+
+
+
+
+ 产品分类
+ {{ item.categoryName }}
+
+
+ 产品类型
+
+
+
+ 产品标识
+ {{ item.productKey }}
+
-
-
产品标识
-
{{ item.productKey }}
+
+
-
-
-
-
-
-
+
+
-
-
-
-
- 编辑
-
-
-
- 详情
-
-
-
- 物模型
-
-
-
-
-
+
+
+
+
+ 编辑
+
+
+
+ 详情
+
+
+
+ 物模型
+
+
+
+
+
+
-
-
-
+
+
+
@@ -251,8 +244,11 @@ defineOptions({ name: 'IoTProduct' })
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
+const { push } = useRouter()
+const route = useRoute()
const loading = ref(true) // 列表的加载中
+const activeName = ref('info') // 当前激活的标签页
const list = ref([]) // 列表的数据
const total = ref(0) // 列表的总页数
const queryParams = reactive({
@@ -296,11 +292,19 @@ const openForm = (type: string, id?: number) => {
}
/** 打开详情 */
-const { push } = useRouter()
const openDetail = (id: number) => {
push({ name: 'IoTProductDetail', params: { id } })
}
+/** 打开物模型 */
+const openObjectModel = (item: ProductVO) => {
+ push({
+ name: 'IoTProductDetail',
+ params: { id: item.id },
+ query: { tab: 'function' }
+ })
+}
+
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
@@ -332,5 +336,10 @@ const handleExport = async () => {
/** 初始化 **/
onMounted(() => {
getList()
+ // 处理 tab 参数
+ const { tab } = route.query
+ if (tab) {
+ activeName.value = tab as string
+ }
})
--
Gitee
From 30b19c9100d74c9e0b7cdee9ed5d7b77310b56f5 Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sat, 14 Dec 2024 17:24:33 +0800
Subject: [PATCH 18/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91IoT=EF=BC=9A=E6=96=B0=E5=A2=9E=E8=AE=BE?=
=?UTF-8?q?=E5=A4=87=E5=88=86=E7=BB=84=E7=9A=84=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/iot/device/group/index.ts | 37 ++++
.../iot/device/group/DeviceGroupForm.vue | 112 ++++++++++++
src/views/iot/device/group/index.vue | 168 ++++++++++++++++++
3 files changed, 317 insertions(+)
create mode 100644 src/api/iot/device/group/index.ts
create mode 100644 src/views/iot/device/group/DeviceGroupForm.vue
create mode 100644 src/views/iot/device/group/index.vue
diff --git a/src/api/iot/device/group/index.ts b/src/api/iot/device/group/index.ts
new file mode 100644
index 00000000..5d9f8df7
--- /dev/null
+++ b/src/api/iot/device/group/index.ts
@@ -0,0 +1,37 @@
+import request from '@/config/axios'
+
+// IoT 设备分组 VO
+export interface DeviceGroupVO {
+ id: number // 分组 ID
+ name: string // 分组名字
+ status: number // 分组状态
+ description: string // 分组描述
+}
+
+// IoT 设备分组 API
+export const DeviceGroupApi = {
+ // 查询IoT 设备分组分页
+ getDeviceGroupPage: async (params: any) => {
+ return await request.get({ url: `/iot/device-group/page`, params })
+ },
+
+ // 查询IoT 设备分组详情
+ getDeviceGroup: async (id: number) => {
+ return await request.get({ url: `/iot/device-group/get?id=` + id })
+ },
+
+ // 新增IoT 设备分组
+ createDeviceGroup: async (data: DeviceGroupVO) => {
+ return await request.post({ url: `/iot/device-group/create`, data })
+ },
+
+ // 修改IoT 设备分组
+ updateDeviceGroup: async (data: DeviceGroupVO) => {
+ return await request.put({ url: `/iot/device-group/update`, data })
+ },
+
+ // 删除IoT 设备分组
+ deleteDeviceGroup: async (id: number) => {
+ return await request.delete({ url: `/iot/device-group/delete?id=` + id })
+ }
+}
\ No newline at end of file
diff --git a/src/views/iot/device/group/DeviceGroupForm.vue b/src/views/iot/device/group/DeviceGroupForm.vue
new file mode 100644
index 00000000..64872573
--- /dev/null
+++ b/src/views/iot/device/group/DeviceGroupForm.vue
@@ -0,0 +1,112 @@
+
+
+
+
diff --git a/src/views/iot/device/group/index.vue b/src/views/iot/device/group/index.vue
new file mode 100644
index 00000000..0646fc72
--- /dev/null
+++ b/src/views/iot/device/group/index.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
--
Gitee
From 14fe6c559fa7f12bc7b7538b1d463a8820b2aab0 Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sat, 14 Dec 2024 18:41:35 +0800
Subject: [PATCH 19/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91IoT=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E5=88=86=E7=BB=84=E9=80=89=E6=8B=A9=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/iot/device/group/index.ts | 8 ++-
src/api/iot/device/index.ts | 1 +
src/views/iot/device/device/DeviceForm.vue | 25 ++++++++-
src/views/iot/device/device/index.vue | 61 ++++++++++++++--------
src/views/iot/device/group/index.vue | 1 +
5 files changed, 70 insertions(+), 26 deletions(-)
diff --git a/src/api/iot/device/group/index.ts b/src/api/iot/device/group/index.ts
index 5d9f8df7..02cca70b 100644
--- a/src/api/iot/device/group/index.ts
+++ b/src/api/iot/device/group/index.ts
@@ -6,6 +6,7 @@ export interface DeviceGroupVO {
name: string // 分组名字
status: number // 分组状态
description: string // 分组描述
+ deviceCount?: number // 设备数量
}
// IoT 设备分组 API
@@ -33,5 +34,10 @@ export const DeviceGroupApi = {
// 删除IoT 设备分组
deleteDeviceGroup: async (id: number) => {
return await request.delete({ url: `/iot/device-group/delete?id=` + id })
+ },
+
+ // 获取设备分组的精简信息列表
+ getSimpleDeviceGroupList: async () => {
+ return await request.get({ url: `/iot/device-group/simple-list` })
}
-}
\ No newline at end of file
+}
diff --git a/src/api/iot/device/index.ts b/src/api/iot/device/index.ts
index 2106e75a..f9e388f2 100644
--- a/src/api/iot/device/index.ts
+++ b/src/api/iot/device/index.ts
@@ -28,6 +28,7 @@ export interface DeviceVO {
areaId: number // 地区编码
address: string // 设备详细地址
serialNumber: string // 设备序列号
+ groupIds?: number[] // 添加分组 ID
}
export interface DeviceUpdateStatusVO {
diff --git a/src/views/iot/device/device/DeviceForm.vue b/src/views/iot/device/device/DeviceForm.vue
index 138498b1..bda22adb 100644
--- a/src/views/iot/device/device/DeviceForm.vue
+++ b/src/views/iot/device/device/DeviceForm.vue
@@ -62,6 +62,16 @@
+
+
+
+
+
@@ -76,6 +86,7 @@
diff --git a/src/views/iot/device/group/index.vue b/src/views/iot/device/group/index.vue
index 0646fc72..ea2e4bea 100644
--- a/src/views/iot/device/group/index.vue
+++ b/src/views/iot/device/group/index.vue
@@ -61,6 +61,7 @@
:formatter="dateFormatter"
width="180px"
/>
+
Date: Sat, 14 Dec 2024 18:56:35 +0800
Subject: [PATCH 20/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91IoT=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2=E5=A2=9E=E5=8A=A0=E5=AF=BC=E5=87=BA?=
=?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/iot/device/index.ts | 5 +++
src/views/iot/device/device/index.vue | 46 +++++++++++++++++++++------
2 files changed, 41 insertions(+), 10 deletions(-)
diff --git a/src/api/iot/device/index.ts b/src/api/iot/device/index.ts
index f9e388f2..536f52a6 100644
--- a/src/api/iot/device/index.ts
+++ b/src/api/iot/device/index.ts
@@ -87,6 +87,11 @@ export const DeviceApi = {
return await request.delete({ url: `/iot/device/delete?id=` + id })
},
+ // 导出设备
+ exportDeviceExcel: async (params: any) => {
+ return await request.download({ url: `/iot/device/export-excel`, params })
+ },
+
// 获取设备数量
getDeviceCount: async (productId: number) => {
return await request.get({ url: `/iot/device/count?productId=` + productId })
diff --git a/src/views/iot/device/device/index.vue b/src/views/iot/device/device/index.vue
index 824f41ac..522ab918 100644
--- a/src/views/iot/device/device/index.vue
+++ b/src/views/iot/device/device/index.vue
@@ -104,6 +104,15 @@
新增
+
+ 导出
+
@@ -117,7 +126,7 @@
-
+
{{ products.find((p) => p.id === scope.row.productId)?.name || '-' }}
@@ -127,6 +136,15 @@
+
+
+
+
+ {{ deviceGroups.find((g) => g.id === id)?.name }}
+
+
+
+
@@ -139,15 +157,6 @@
:formatter="dateFormatter"
width="180px"
/>
-
-
-
-
- {{ deviceGroups.find((g) => g.id === id)?.name }}
-
-
-
-
([]) // 产品列表
const deviceGroups = ref([]) // 设备分组列表
@@ -279,4 +290,19 @@ onMounted(async () => {
// 获取分组列表
deviceGroups.value = await DeviceGroupApi.getSimpleDeviceGroupList()
})
+
+/** 导出方法 */
+const handleExport = async () => {
+ try {
+ // 导出的二次确认
+ await message.exportConfirm()
+ // 发起导出
+ exportLoading.value = true
+ const data = await DeviceApi.exportDeviceExcel(queryParams)
+ download.excel(data, '物联网设备.xls')
+ } catch {
+ } finally {
+ exportLoading.value = false
+ }
+}
--
Gitee
From a2dec90edf2f40716c4bcd98384fac857ab44b02 Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sat, 14 Dec 2024 19:12:28 +0800
Subject: [PATCH 21/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91IoT=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F?=
=?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/iot/device/index.ts | 7 ++++-
src/views/iot/device/device/index.vue | 37 ++++++++++++++++++++++++++-
2 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/src/api/iot/device/index.ts b/src/api/iot/device/index.ts
index 536f52a6..49b50337 100644
--- a/src/api/iot/device/index.ts
+++ b/src/api/iot/device/index.ts
@@ -82,11 +82,16 @@ export const DeviceApi = {
return await request.put({ url: `/iot/device/update-status`, data })
},
- // 删除设备
+ // 删除单个设备
deleteDevice: async (id: number) => {
return await request.delete({ url: `/iot/device/delete?id=` + id })
},
+ // 删除多个设备
+ deleteDeviceList: async (ids: number[]) => {
+ return await request.delete({ url: `/iot/device/delete-list`, params: { ids: ids.join(',') } })
+ },
+
// 导出设备
exportDeviceExcel: async (params: any) => {
return await request.download({ url: `/iot/device/export-excel`, params })
diff --git a/src/views/iot/device/device/index.vue b/src/views/iot/device/device/index.vue
index 522ab918..e5f6f2cc 100644
--- a/src/views/iot/device/device/index.vue
+++ b/src/views/iot/device/device/index.vue
@@ -113,13 +113,29 @@
>
导出
+
+ 批量删除
+
-
+
+
{{ scope.row.deviceName }}
@@ -231,6 +247,7 @@ const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出加载状态
const products = ref([]) // 产品列表
const deviceGroups = ref([]) // 设备分组列表
+const selectedIds = ref([]) // 选中的设备编号数组
/** 查询列表 */
const getList = async () => {
@@ -253,6 +270,7 @@ const handleQuery = () => {
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
+ selectedIds.value = [] // 清空选择
handleQuery()
}
@@ -305,4 +323,21 @@ const handleExport = async () => {
exportLoading.value = false
}
}
+
+/** 多选框选中数据 */
+const handleSelectionChange = (selection: DeviceVO[]) => {
+ selectedIds.value = selection.map((item) => item.id)
+}
+
+/** 批量删除按钮操作 */
+const handleDeleteList = async () => {
+ try {
+ await message.delConfirm()
+ // 执行批量删除
+ await DeviceApi.deleteDeviceList(selectedIds.value)
+ message.success(t('common.delSuccess'))
+ // 刷新列表
+ await getList()
+ } catch {}
+}
--
Gitee
From cc45fd5401324caf99d237bce4d0e78a96d9dc79 Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sat, 14 Dec 2024 19:43:13 +0800
Subject: [PATCH 22/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91IoT=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E5=88=86=E7=BB=84=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/iot/device/index.ts | 8 ++
.../iot/device/device/DeviceGroupForm.vue | 90 +++++++++++++++++++
src/views/iot/device/device/index.vue | 40 ++++++---
3 files changed, 127 insertions(+), 11 deletions(-)
create mode 100644 src/views/iot/device/device/DeviceGroupForm.vue
diff --git a/src/api/iot/device/index.ts b/src/api/iot/device/index.ts
index 49b50337..a483484d 100644
--- a/src/api/iot/device/index.ts
+++ b/src/api/iot/device/index.ts
@@ -82,6 +82,14 @@ export const DeviceApi = {
return await request.put({ url: `/iot/device/update-status`, data })
},
+ // 修改设备分组
+ updateDeviceGroup: async (data: {
+ ids: number[]
+ groupIds: number[]
+ }) => {
+ return await request.put({ url: `/iot/device/update-group`, data })
+ },
+
// 删除单个设备
deleteDevice: async (id: number) => {
return await request.delete({ url: `/iot/device/delete?id=` + id })
diff --git a/src/views/iot/device/device/DeviceGroupForm.vue b/src/views/iot/device/device/DeviceGroupForm.vue
new file mode 100644
index 00000000..387e1454
--- /dev/null
+++ b/src/views/iot/device/device/DeviceGroupForm.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
diff --git a/src/views/iot/device/device/index.vue b/src/views/iot/device/device/index.vue
index e5f6f2cc..1d50862f 100644
--- a/src/views/iot/device/device/index.vue
+++ b/src/views/iot/device/device/index.vue
@@ -113,6 +113,15 @@
>
导出
+
+ 添加到分组
+
+
+
--
Gitee
From 646f212d85231c9bb78dec1e7d9287af84bae8e8 Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sat, 14 Dec 2024 20:04:32 +0800
Subject: [PATCH 23/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91IoT=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2=E5=A2=9E=E5=8A=A0=E5=8D=A1=E7=89=87?=
=?UTF-8?q?=E8=A7=86=E5=9B=BE=E5=92=8C=E5=88=97=E8=A1=A8=E8=A7=86=E5=9B=BE?=
=?UTF-8?q?=E5=88=87=E6=8D=A2=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/assets/svgs/iot/card-fill.svg | 1 +
src/views/iot/device/device/index.vue | 108 ++++++++++++++++++++++++++
2 files changed, 109 insertions(+)
create mode 100644 src/assets/svgs/iot/card-fill.svg
diff --git a/src/assets/svgs/iot/card-fill.svg b/src/assets/svgs/iot/card-fill.svg
new file mode 100644
index 00000000..4c74ecdc
--- /dev/null
+++ b/src/assets/svgs/iot/card-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/views/iot/device/device/index.vue b/src/views/iot/device/device/index.vue
index 1d50862f..bcc2df21 100644
--- a/src/views/iot/device/device/index.vue
+++ b/src/views/iot/device/device/index.vue
@@ -86,6 +86,16 @@
/>
+
+
+
+
+
+
+
+
+
+
@@ -137,7 +147,95 @@
+
+
+
+
+
+
+
+
+
+
+
{{ item.deviceName }}
+
+
+
+
+
+
+ 所属产品
+ {{
+ products.find((p) => p.id === item.productId)?.name
+ }}
+
+
+ 设备类型
+
+
+
+ DeviceKey
+ {{ item.deviceKey }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+ 详情
+
+
+
+ 日志
+
+
+
+
+
+
+
+
+
+
+
+
+
查看
+ 日志
+
([]) // 产品列表
const deviceGroups = ref([]) // 设备分组列表
const selectedIds = ref([]) // 选中的设备编号数组
+const viewMode = ref<'card' | 'list'>('card') // 视图模式状态
+const defaultPicUrl = ref('/src/assets/imgs/iot/device.png') // 默认设备图片
+const defaultIconUrl = ref('/src/assets/svgs/iot/card-fill.svg') // 默认设备图标
/** 查询列表 */
const getList = async () => {
@@ -349,6 +452,11 @@ const openGroupForm = () => {
groupFormRef.value.open(selectedIds.value)
}
+/** 打开日志 */
+const openLog = (id: number) => {
+ push({ name: 'IoTDeviceDetail', params: { id }, query: { tab: 'log' } })
+}
+
/** 初始化 **/
onMounted(async () => {
getList()
--
Gitee
From 99b24c107cf5e78d4167a446a5f74161cb576d56 Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sat, 14 Dec 2024 20:44:58 +0800
Subject: [PATCH 24/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91IoT=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9E=9A=E4=B8=BE=E5=8F=8A=E7=8A=B6=E6=80=81?=
=?UTF-8?q?=E6=A0=87=E7=AD=BE=E6=98=BE=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/iot/device/index.ts | 8 +++++
src/views/iot/device/device/index.vue | 47 ++++++++++++++++++++++-----
2 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/src/api/iot/device/index.ts b/src/api/iot/device/index.ts
index a483484d..c618bb19 100644
--- a/src/api/iot/device/index.ts
+++ b/src/api/iot/device/index.ts
@@ -55,6 +55,14 @@ export interface DeviceHistoryDataVO {
data: string // 数据
}
+// IoT 设备状态枚举
+export enum DeviceStatusEnum {
+ INACTIVE = 0, // 未激活
+ ONLINE = 1, // 在线
+ OFFLINE = 2, // 离线
+ DISABLED = 3 // 已禁用
+}
+
// 设备 API
export const DeviceApi = {
// 查询设备分页
diff --git a/src/views/iot/device/device/index.vue b/src/views/iot/device/device/index.vue
index bcc2df21..f4a3702f 100644
--- a/src/views/iot/device/device/index.vue
+++ b/src/views/iot/device/device/index.vue
@@ -150,14 +150,45 @@
-
-
+
+
+
+
+
-
{{ item.deviceName }}
+
{{ item.deviceName }}
+
+
+
+
+
+ {{ getDictLabel(DICT_TYPE.IOT_DEVICE_STATUS, item.status) }}
+
+
@@ -186,7 +217,7 @@
-
+
diff --git a/src/views/iot/device/device/index.vue b/src/views/iot/device/device/index.vue
index f4a3702f..9e7d53eb 100644
--- a/src/views/iot/device/device/index.vue
+++ b/src/views/iot/device/device/index.vue
@@ -242,10 +242,10 @@
class="flex-1 !px-2 !h-[32px] !ml-[10px] text-[13px]"
type="info"
plain
- @click="openLog(item.id)"
+ @click="openModel(item.id)"
>
- 日志
+ 数据
查看
-
日志
+
日志
import { DICT_TYPE, getIntDictOptions, getDictLabel } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
-import { DeviceApi, DeviceVO, DeviceStatusEnum } from '@/api/iot/device'
+import { DeviceApi, DeviceVO, DeviceStatusEnum } from '@/api/iot/device/device'
import DeviceForm from './DeviceForm.vue'
import { ProductApi, ProductVO } from '@/api/iot/product/product'
import { DeviceGroupApi, DeviceGroupVO } from '@/api/iot/device/group'
@@ -483,9 +483,9 @@ const openGroupForm = () => {
groupFormRef.value.open(selectedIds.value)
}
-/** 打开日志 */
-const openLog = (id: number) => {
- push({ name: 'IoTDeviceDetail', params: { id }, query: { tab: 'log' } })
+/** 打开物模型数据 */
+const openModel = (id: number) => {
+ push({ name: 'IoTDeviceDetail', params: { id }, query: { tab: 'model' } })
}
/** 初始化 **/
diff --git a/src/views/iot/product/product/detail/index.vue b/src/views/iot/product/product/detail/index.vue
index baca1021..a2512dc0 100644
--- a/src/views/iot/product/product/detail/index.vue
+++ b/src/views/iot/product/product/detail/index.vue
@@ -18,7 +18,7 @@
\ No newline at end of file
diff --git a/src/views/iot/plugininfo/detail.vue b/src/views/iot/plugininfo/detail.vue
new file mode 100644
index 00000000..2f3f02f9
--- /dev/null
+++ b/src/views/iot/plugininfo/detail.vue
@@ -0,0 +1,44 @@
+
+
+
+ {{ pluginInfo.name }}
+ {{ pluginInfo.pluginId }}
+ {{ pluginInfo.file }}
+ {{ pluginInfo.version }}
+
+
+
+
+
+
+
+ 返回
+
+
+
+
diff --git a/src/views/iot/plugininfo/index.vue b/src/views/iot/plugininfo/index.vue
new file mode 100644
index 00000000..5591cef4
--- /dev/null
+++ b/src/views/iot/plugininfo/index.vue
@@ -0,0 +1,257 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
组件ID: {{ item.pluginId }}
+
+
+
+
Jar包: {{ item.file }}
+
版本号: {{ item.version }}
+
部署方式:
+
状态:
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
--
Gitee
From 5209318bb2c08da543abd5bfd9934b9f0bff925a Mon Sep 17 00:00:00 2001
From: puhui999
Date: Sat, 14 Dec 2024 22:47:17 +0800
Subject: [PATCH 27/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E5=AE=8C?=
=?UTF-8?q?=E5=96=84=E3=80=91IOT:=20=E7=89=A9=E6=A8=A1=E5=9E=8B=E6=9E=9A?=
=?UTF-8?q?=E4=B8=BE=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E7=BB=84=E4=BB=B6?=
=?UTF-8?q?=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/router/modules/remaining.ts | 2 +-
.../product/detail/ThingModel/config.ts | 6 ++---
.../dataSpecs/ThingModelEnumTypeDataSpecs.vue | 27 ++++++++++++++-----
3 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
index 335f5270..8b4bbe0e 100644
--- a/src/router/modules/remaining.ts
+++ b/src/router/modules/remaining.ts
@@ -637,7 +637,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
hidden: true,
activeMenu: '/iot/device'
},
- component: () => import('@/views/iot/device/detail/index.vue')
+ component: () => import('@/views/iot/device/device/detail/index.vue')
}
]
}
diff --git a/src/views/iot/product/product/detail/ThingModel/config.ts b/src/views/iot/product/product/detail/ThingModel/config.ts
index e75fc082..6ba56515 100644
--- a/src/views/iot/product/product/detail/ThingModel/config.ts
+++ b/src/views/iot/product/product/detail/ThingModel/config.ts
@@ -1,6 +1,6 @@
/** dataSpecs 数值型数据结构 */
export interface DataSpecsNumberDataVO {
- dataType: 'INT' | 'FLOAT' | 'DOUBLE' // 数据类型,取值为 INT、FLOAT 或 DOUBLE
+ dataType: 'int' | 'float' | 'double' // 数据类型,取值为 INT、FLOAT 或 DOUBLE
max: string // 最大值,必须与 dataType 设置一致,且为 STRING 类型
min: string // 最小值,必须与 dataType 设置一致,且为 STRING 类型
step: string // 步长,必须与 dataType 设置一致,且为 STRING 类型
@@ -18,7 +18,7 @@ export interface DataSpecsTextDataVO {
/** dataSpecs 枚举型数据结构 */
export interface DataSpecsEnumDataVO {
- dataType: 'ENUM' | 'BOOL'
+ dataType: 'enum' | 'bool'
defaultValue?: string // 默认值,可选
name: string // 枚举项的名称
value: number | undefined // 枚举值
@@ -35,4 +35,4 @@ export const DataSpecsDataType = {
DATE: 'date',
STRUCT: 'struct',
ARRAY: 'array'
-}
+} as const
diff --git a/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelEnumTypeDataSpecs.vue b/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelEnumTypeDataSpecs.vue
index 7b977ae6..75adebdb 100644
--- a/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelEnumTypeDataSpecs.vue
+++ b/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelEnumTypeDataSpecs.vue
@@ -1,9 +1,9 @@
-
+
-
-
参数值
-
参数描述
+
+ 参数值
+ 参数描述
~
+
删除
+添加枚举项
@@ -21,21 +22,35 @@
--
Gitee
From c7d9a7fe52cd7bc10fce1b3cd0827a0626c4169c Mon Sep 17 00:00:00 2001
From: puhui999
Date: Sat, 14 Dec 2024 23:09:14 +0800
Subject: [PATCH 28/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E5=AE=8C?=
=?UTF-8?q?=E5=96=84=E3=80=91IOT:=20=E7=89=A9=E6=A8=A1=E5=9E=8B=E5=B8=83?=
=?UTF-8?q?=E5=B0=94=E5=80=BC=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E7=BB=84?=
=?UTF-8?q?=E4=BB=B6=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../detail/ThingModel/ThingModelDataSpecs.vue | 25 ++++++++++++++++++-
.../product/detail/ThingModel/config.ts | 2 +-
.../dataSpecs/ThingModelEnumTypeDataSpecs.vue | 4 +--
3 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue b/src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue
index 07005b00..036c0f5d 100644
--- a/src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue
+++ b/src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue
@@ -16,6 +16,20 @@
v-if="formData.dataType === DataSpecsDataType.ENUM"
v-model="formData.dataSpecsList"
/>
+
+
+
+
+ {{ item.value }}
+ -
+
+
+
+
diff --git a/src/views/iot/product/product/detail/ThingModel/config.ts b/src/views/iot/product/product/detail/ThingModel/config.ts
index d19de37c..1a028ac9 100644
--- a/src/views/iot/product/product/detail/ThingModel/config.ts
+++ b/src/views/iot/product/product/detail/ThingModel/config.ts
@@ -36,3 +36,16 @@ export const DataSpecsDataType = {
STRUCT: 'struct',
ARRAY: 'array'
} as const
+
+/** 物体模型数据类型配置项 */
+export const dataTypeOptions = [
+ { value: DataSpecsDataType.INT, label: 'int32 (整数型)' },
+ { value: DataSpecsDataType.FLOAT, label: 'float (单精度浮点型)' },
+ { value: DataSpecsDataType.DOUBLE, label: 'double (双精度浮点型)' },
+ { value: DataSpecsDataType.ENUM, label: 'enum(枚举型)' },
+ { value: DataSpecsDataType.BOOL, label: 'bool (布尔型)' },
+ { value: DataSpecsDataType.TEXT, label: 'text (文本型)' },
+ { value: DataSpecsDataType.DATE, label: 'date (时间型)' },
+ { value: DataSpecsDataType.STRUCT, label: 'struct (结构体)' },
+ { value: DataSpecsDataType.ARRAY, label: 'array (数组)' }
+]
diff --git a/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelDataType.vue b/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelDataType.vue
deleted file mode 100644
index cf26e5eb..00000000
--- a/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelDataType.vue
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/views/iot/product/product/detail/ThingModel/dataSpecs/index.ts b/src/views/iot/product/product/detail/ThingModel/dataSpecs/index.ts
index 6e0da102..076dcc50 100644
--- a/src/views/iot/product/product/detail/ThingModel/dataSpecs/index.ts
+++ b/src/views/iot/product/product/detail/ThingModel/dataSpecs/index.ts
@@ -1,5 +1,4 @@
-import ThingModelDataType from './ThingModelDataType.vue'
import ThingModelEnumTypeDataSpecs from './ThingModelEnumTypeDataSpecs.vue'
import ThingModelNumberTypeDataSpecs from './ThingModelNumberTypeDataSpecs.vue'
-export { ThingModelDataType, ThingModelEnumTypeDataSpecs, ThingModelNumberTypeDataSpecs }
+export { ThingModelEnumTypeDataSpecs, ThingModelNumberTypeDataSpecs }
--
Gitee
From 488800b304fbf71eb67bcf6abc717dfbb0dfddf6 Mon Sep 17 00:00:00 2001
From: puhui999
Date: Sun, 15 Dec 2024 00:21:40 +0800
Subject: [PATCH 31/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E5=AE=8C?=
=?UTF-8?q?=E5=96=84=E3=80=91IOT:=20=E7=89=A9=E6=A8=A1=E5=9E=8B=E6=95=B0?=
=?UTF-8?q?=E7=BB=84=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E7=BB=84=E4=BB=B6?=
=?UTF-8?q?=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../detail/ThingModel/ThingModelDataSpecs.vue | 14 +++++++-
.../product/detail/ThingModel/config.ts | 6 ----
.../ThingModelArrayTypeDataSpecs.vue | 34 +++++++++++++++++++
.../detail/ThingModel/dataSpecs/index.ts | 3 +-
4 files changed, 49 insertions(+), 8 deletions(-)
create mode 100644 src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelArrayTypeDataSpecs.vue
diff --git a/src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue b/src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue
index 5a92fb2e..ac585611 100644
--- a/src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue
+++ b/src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue
@@ -47,12 +47,21 @@
+
+
diff --git a/src/views/iot/product/product/detail/ThingModel/config.ts b/src/views/iot/product/product/detail/ThingModel/config.ts
index 1a028ac9..cd9d059d 100644
--- a/src/views/iot/product/product/detail/ThingModel/config.ts
+++ b/src/views/iot/product/product/detail/ThingModel/config.ts
@@ -10,12 +10,6 @@ export interface DataSpecsNumberDataVO {
unitName: string // 单位的名称
}
-/** dataSpecs 文本型数据结构 */
-export interface DataSpecsTextDataVO {
- dataType: 'TEXT'
- length: number
-}
-
/** dataSpecs 枚举型数据结构 */
export interface DataSpecsEnumOrBoolDataVO {
dataType: 'enum' | 'bool'
diff --git a/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelArrayTypeDataSpecs.vue b/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelArrayTypeDataSpecs.vue
new file mode 100644
index 00000000..d96bd7fc
--- /dev/null
+++ b/src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelArrayTypeDataSpecs.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/product/product/detail/ThingModel/dataSpecs/index.ts b/src/views/iot/product/product/detail/ThingModel/dataSpecs/index.ts
index 076dcc50..f2e1daaf 100644
--- a/src/views/iot/product/product/detail/ThingModel/dataSpecs/index.ts
+++ b/src/views/iot/product/product/detail/ThingModel/dataSpecs/index.ts
@@ -1,4 +1,5 @@
import ThingModelEnumTypeDataSpecs from './ThingModelEnumTypeDataSpecs.vue'
import ThingModelNumberTypeDataSpecs from './ThingModelNumberTypeDataSpecs.vue'
+import ThingModelArrayTypeDataSpecs from './ThingModelArrayTypeDataSpecs.vue'
-export { ThingModelEnumTypeDataSpecs, ThingModelNumberTypeDataSpecs }
+export { ThingModelEnumTypeDataSpecs, ThingModelNumberTypeDataSpecs, ThingModelArrayTypeDataSpecs }
--
Gitee
From a5565bb509e71cac5ad892ae8b94137999483fab Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sun, 15 Dec 2024 10:46:42 +0800
Subject: [PATCH 32/86] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91IoT=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F=E5=AF=BC?=
=?UTF-8?q?=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/iot/device/device/index.ts | 7 +-
.../iot/device/device/DeviceImportForm.vue | 139 ++++++++++++++++++
src/views/iot/device/device/index.vue | 16 +-
3 files changed, 159 insertions(+), 3 deletions(-)
create mode 100644 src/views/iot/device/device/DeviceImportForm.vue
diff --git a/src/api/iot/device/device/index.ts b/src/api/iot/device/device/index.ts
index c618bb19..ec80bfab 100644
--- a/src/api/iot/device/device/index.ts
+++ b/src/api/iot/device/device/index.ts
@@ -123,7 +123,7 @@ export const DeviceApi = {
return await request.get({ url: `/iot/device/simple-list?`, params: { deviceType } })
},
- // 获取设备属性最新数据
+ // 获取设备属性最���数据
getDevicePropertiesLatestData: async (params: any) => {
return await request.get({ url: `/iot/device/data/latest`, params })
},
@@ -131,5 +131,10 @@ export const DeviceApi = {
// 获取设备属性历史数据
getDevicePropertiesHistoryData: async (params: any) => {
return await request.get({ url: `/iot/device/data/history`, params })
+ },
+
+ // 获取导入模板
+ importDeviceTemplate: async () => {
+ return await request.download({ url: `/iot/device/get-import-template` })
}
}
diff --git a/src/views/iot/device/device/DeviceImportForm.vue b/src/views/iot/device/device/DeviceImportForm.vue
new file mode 100644
index 00000000..a6412f6a
--- /dev/null
+++ b/src/views/iot/device/device/DeviceImportForm.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
diff --git a/src/views/iot/device/device/index.vue b/src/views/iot/device/device/index.vue
index 9e7d53eb..8525d674 100644
--- a/src/views/iot/device/device/index.vue
+++ b/src/views/iot/device/device/index.vue
@@ -123,6 +123,9 @@
>
导出
+
+ 导入
+
+
+
diff --git a/src/views/iot/product/product/detail/ThingModel/ThingModelForm.vue b/src/views/iot/product/product/detail/ThingModel/ThingModelForm.vue
index 78a39695..f3d55d49 100644
--- a/src/views/iot/product/product/detail/ThingModel/ThingModelForm.vue
+++ b/src/views/iot/product/product/detail/ThingModel/ThingModelForm.vue
@@ -22,8 +22,8 @@
@@ -39,11 +39,12 @@ import { ProductVO } from '@/api/iot/product/product'
import ThingModelDataSpecs from './ThingModelDataSpecs.vue'
import {
ProductFunctionTypeEnum,
- ThinkModelFunctionApi,
- ThingModelData
+ ThingModelData,
+ ThinkModelFunctionApi
} from '@/api/iot/thinkmodelfunction'
import { IOT_PROVIDE_KEY } from '@/views/iot/utils/constants'
import { DataSpecsDataType } from './config'
+import { cloneDeep } from 'lodash-es'
defineOptions({ name: 'IoTProductThingModelForm' })
@@ -58,12 +59,15 @@ const formLoading = ref(false)
const formType = ref('')
const formData = ref
({
type: ProductFunctionTypeEnum.PROPERTY,
+ dataType: DataSpecsDataType.INT,
property: {
dataType: DataSpecsDataType.INT,
- dataSpecsList: [],
- dataSpecs: {}
+ dataSpecs: {
+ dataType: DataSpecsDataType.INT
+ }
}
})
+// TODO puhui999: 表单校验待完善
const formRules = reactive({
name: [
{ required: true, message: '功能名称不能为空', trigger: 'blur' },
@@ -114,7 +118,7 @@ const open = async (type: string, id?: number) => {
if (id) {
formLoading.value = true
try {
- formData.value = await ThinkModelFunctionApi.getThinkModelFunction(id)
+ formData.value = await ThinkModelFunctionApi.getProductThingModel(id)
} finally {
formLoading.value = false
}
@@ -128,14 +132,19 @@ const submitForm = async () => {
await formRef.value.validate()
formLoading.value = true
try {
- const data = formData.value as unknown as ThingModelData
+ const data = cloneDeep(formData.value) as ThingModelData
+ // 信息补全
data.productId = product!.value.id
data.productKey = product!.value.productKey
+ data.description = data.property.description
+ data.dataType = data.property.dataType
+ data.property.identifier = data.identifier
+ data.property.name = data.name
if (formType.value === 'create') {
- await ThinkModelFunctionApi.createThinkModelFunction(data)
+ await ThinkModelFunctionApi.createProductThingModel(data)
message.success(t('common.createSuccess'))
} else {
- await ThinkModelFunctionApi.updateThinkModelFunction(data)
+ await ThinkModelFunctionApi.updateProductThingModel(data)
message.success(t('common.updateSuccess'))
}
} finally {
@@ -149,10 +158,12 @@ const submitForm = async () => {
const resetForm = () => {
formData.value = {
type: ProductFunctionTypeEnum.PROPERTY,
+ dataType: DataSpecsDataType.INT,
property: {
dataType: DataSpecsDataType.INT,
- dataSpecsList: [],
- dataSpecs: {}
+ dataSpecs: {
+ dataType: DataSpecsDataType.INT
+ }
}
}
formRef.value?.resetFields()
diff --git a/src/views/iot/product/product/detail/ThingModel/config.ts b/src/views/iot/product/product/detail/ThingModel/config.ts
index cd9d059d..eb651960 100644
--- a/src/views/iot/product/product/detail/ThingModel/config.ts
+++ b/src/views/iot/product/product/detail/ThingModel/config.ts
@@ -43,3 +43,8 @@ export const dataTypeOptions = [
{ value: DataSpecsDataType.STRUCT, label: 'struct (结构体)' },
{ value: DataSpecsDataType.ARRAY, label: 'array (数组)' }
]
+
+/** 获得物体模型数据类型配置项名称 */
+export const getDataTypeOptionsLabel = (value: string) => {
+ return dataTypeOptions.find((option) => option.value === value)?.label
+}
diff --git a/src/views/iot/product/product/detail/ThingModel/index.vue b/src/views/iot/product/product/detail/ThingModel/index.vue
index 286fe12d..41cbb39d 100644
--- a/src/views/iot/product/product/detail/ThingModel/index.vue
+++ b/src/views/iot/product/product/detail/ThingModel/index.vue
@@ -32,7 +32,12 @@
重置
-
+
添加功能
@@ -49,12 +54,21 @@
-
-
+
+
+ {{ dataTypeOptionsLabel(row.property.dataType) ?? '-' }}
+
+
+
+
+
+ {{ row.property.dataSpecs ?? row.property.dataSpecsList }}
+
+
+
+
--
Gitee
From 4b22837964386974597d6b521acf4c1f492fcea1 Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Mon, 25 Nov 2024 14:36:58 +0800
Subject: [PATCH 40/86] =?UTF-8?q?fix:=20=E5=AE=A1=E6=89=B9=E9=80=9A?=
=?UTF-8?q?=E8=BF=87=E6=97=B6=E8=A1=A8=E5=8D=95=E6=97=A0=E6=B3=95=E6=93=8D?=
=?UTF-8?q?=E4=BD=9C=EF=BC=8C=E7=94=B1=E4=BA=8E=E6=8B=92=E7=BB=9D=E6=97=B6?=
=?UTF-8?q?=E5=85=B1=E7=94=A8=E4=BA=86approveFormFApi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../detail/ProcessInstanceOperationButton.vue | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue b/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue
index b92be7e4..c1a69089 100644
--- a/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue
+++ b/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue
@@ -77,17 +77,6 @@
:rules="genericRule"
label-width="100px"
>
-
-
- 填写表单【{{ runningTask?.formName }}】
-
-
-
Date: Tue, 26 Nov 2024 09:45:35 +0800
Subject: [PATCH 41/86] =?UTF-8?q?feat:=20bpm=E8=AE=BE=E8=AE=A1=E5=99=A8?=
=?UTF-8?q?=E9=80=82=E9=85=8DSimple=E8=AE=BE=E8=AE=A1=E5=99=A8=EF=BC=8C?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=9D=83=E9=99=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../descriptor/flowableDescriptor.json | 25 ++-
.../custom-config/ElementCustomConfig.vue | 210 +++++++++++++++++-
src/views/bpm/model/editor/index.vue | 14 ++
3 files changed, 245 insertions(+), 4 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
index 5544b2d0..c60b524a 100644
--- a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
+++ b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
@@ -1305,8 +1305,31 @@
"isAttr": true
}
]
+ },
+ {
+ "name": "FieldsPermission",
+ "superClass": ["Element"],
+ "meta": {
+ "allowedIn": ["bpmn:UserTask"]
+ },
+ "properties": [
+ {
+ "name": "flowable:field",
+ "type": "String",
+ "isAttr": true
+ },
+ {
+ "name": "flowable:title",
+ "type": "String",
+ "isAttr": true
+ },
+ {
+ "name": "flowable:permission",
+ "type": "String",
+ "isAttr": true
+ }
+ ]
}
-
],
"emumerations": []
}
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue b/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
index 9cf7e966..ac766bf9 100644
--- a/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
@@ -3,6 +3,7 @@
2. 审批人拒绝时
3. 审批人为空时
4. 操作按钮
+ 5. 字段权限
-->
@@ -104,6 +105,47 @@
+
+ 字段权限
+
+
+
字段名称
+
+ 只读
+ 可编辑
+ 隐藏
+
+
+
+
{{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -115,9 +157,11 @@ import {
ASSIGN_EMPTY_HANDLER_TYPES,
AssignEmptyHandlerType,
OPERATION_BUTTON_NAME,
- DEFAULT_BUTTON_SETTING
+ DEFAULT_BUTTON_SETTING,
+ FieldPermissionType
} from '@/components/SimpleProcessDesignerV2/src/consts'
import * as UserApi from '@/api/system/user'
+import { cloneDeep } from 'lodash-es'
defineOptions({ name: 'ElementCustomConfig' })
const props = defineProps({
@@ -148,6 +192,12 @@ const buttonsSettingEl = ref()
const { buttonsSetting, btnDisplayNameEdit, changeBtnDisplayName, btnDisplayNameBlurEvent } =
useButtonsSetting()
+// 字段权限
+const fieldsPermissionEl = ref()
+const { formType, fieldsPermissionConfig, getNodeConfigFormFields } = useFormFieldsPermission(
+ FieldPermissionType.READ
+)
+
const elExtensionElements = ref()
const otherExtensions = ref()
const bpmnElement = ref()
@@ -218,6 +268,21 @@ const resetCustomConfigList = () => {
})
}
+ // 字段权限
+ if (formType.value === 10) {
+ fieldsPermissionEl.value = elExtensionElements.value.values?.filter(
+ (ex) => ex.$type === `${prefix}:FieldsPermission`
+ )
+ if (fieldsPermissionEl.value.length === 0) {
+ getNodeConfigFormFields()
+ fieldsPermissionConfig.value.forEach((el) => {
+ fieldsPermissionEl.value.push(
+ bpmnInstances().moddle.create(`${prefix}:FieldsPermission`, el)
+ )
+ })
+ }
+ }
+
// 保留剩余扩展元素,便于后面更新该元素对应属性
otherExtensions.value =
elExtensionElements.value.values?.filter(
@@ -227,7 +292,8 @@ const resetCustomConfigList = () => {
ex.$type !== `${prefix}:RejectReturnTaskId` &&
ex.$type !== `${prefix}:AssignEmptyHandlerType` &&
ex.$type !== `${prefix}:AssignEmptyUserIds` &&
- ex.$type !== `${prefix}:ButtonsSetting`
+ ex.$type !== `${prefix}:ButtonsSetting` &&
+ ex.$type !== `${prefix}:FieldsPermission`
) ?? []
// 更新元素扩展属性,避免后续报错
@@ -276,7 +342,8 @@ const updateElementExtensions = () => {
returnNodeIdEl.value,
assignEmptyHandlerTypeEl.value,
assignEmptyUserIdsEl.value,
- ...buttonsSettingEl.value
+ ...buttonsSettingEl.value,
+ ...fieldsPermissionEl.value
]
})
bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
@@ -359,6 +426,69 @@ function useButtonsSetting() {
}
}
+// 表单字段权限设置
+function useFormFieldsPermission(defaultPermission) {
+ // 字段权限配置. 需要有 field, title, permissioin 属性
+ const fieldsPermissionConfig = ref>>([])
+
+ const formType = inject[>('formType') // 表单类型
+
+ const formFields = inject][>('formFields') // 流程表单字段
+
+ const getNodeConfigFormFields = (nodeFormFields?: Array>) => {
+ nodeFormFields = toRaw(nodeFormFields)
+ fieldsPermissionConfig.value =
+ cloneDeep(nodeFormFields) || getDefaultFieldsPermission(unref(formFields))
+ }
+ // 默认的表单权限: 获取表单的所有字段,设置字段默认权限为只读
+ const getDefaultFieldsPermission = (formFields?: string[]) => {
+ const defaultFieldsPermission: Array> = []
+ if (formFields) {
+ formFields.forEach((fieldStr: string) => {
+ parseFieldsSetDefaultPermission(JSON.parse(fieldStr), defaultFieldsPermission)
+ })
+ }
+ return defaultFieldsPermission
+ }
+ // 解析字段。赋给默认权限
+ const parseFieldsSetDefaultPermission = (
+ rule: Record,
+ fieldsPermission: Array>,
+ parentTitle: string = ''
+ ) => {
+ const { /**type,*/ field, title: tempTitle, children } = rule
+ if (field && tempTitle) {
+ let title = tempTitle
+ if (parentTitle) {
+ title = `${parentTitle}.${tempTitle}`
+ }
+ fieldsPermission.push({
+ field,
+ title,
+ permission: defaultPermission
+ })
+ // TODO 子表单 需要处理子表单字段
+ // if (type === 'group' && rule.props?.rule && Array.isArray(rule.props.rule)) {
+ // // 解析子表单的字段
+ // rule.props.rule.forEach((item) => {
+ // parseFieldsSetDefaultPermission(item, fieldsPermission, title)
+ // })
+ // }
+ }
+ if (children && Array.isArray(children)) {
+ children.forEach((rule) => {
+ parseFieldsSetDefaultPermission(rule, fieldsPermission)
+ })
+ }
+ }
+
+ return {
+ formType,
+ fieldsPermissionConfig,
+ getNodeConfigFormFields
+ }
+}
+
const userOptions = ref([]) // 用户列表
onMounted(async () => {
// 获得用户列表
@@ -449,4 +579,78 @@ onMounted(async () => {
}
}
}
+
+.field-setting-pane {
+ display: flex;
+ flex-direction: column;
+ font-size: 14px;
+
+ .field-setting-desc {
+ padding-right: 8px;
+ margin-bottom: 16px;
+ font-size: 16px;
+ font-weight: 700;
+ }
+
+ .field-permit-title {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 45px;
+ padding-left: 12px;
+ line-height: 45px;
+ background-color: #f8fafc0a;
+ border: 1px solid #1f38581a;
+
+ .first-title {
+ text-align: left !important;
+ }
+
+ .other-titles {
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .setting-title-label {
+ display: inline-block;
+ width: 100px;
+ padding: 5px 0;
+ font-size: 13px;
+ font-weight: 700;
+ color: #000;
+ text-align: center;
+ }
+ }
+
+ .field-setting-item {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+ height: 38px;
+ padding-left: 12px;
+ border: 1px solid #1f38581a;
+ border-top: 0;
+
+ .field-setting-item-label {
+ display: inline-block;
+ width: 100px;
+ min-height: 16px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ cursor: text;
+ }
+
+ .field-setting-item-group {
+ display: flex;
+ justify-content: space-between;
+
+ .item-radio-wrap {
+ display: inline-block;
+ width: 100px;
+ text-align: center;
+ }
+ }
+ }
+}
diff --git a/src/views/bpm/model/editor/index.vue b/src/views/bpm/model/editor/index.vue
index 3e773691..1a41a50c 100644
--- a/src/views/bpm/model/editor/index.vue
+++ b/src/views/bpm/model/editor/index.vue
@@ -31,6 +31,7 @@ import CustomContentPadProvider from '@/components/bpmnProcessDesigner/package/d
// 自定义左侧菜单(修改 默认任务 为 用户任务)
import CustomPaletteProvider from '@/components/bpmnProcessDesigner/package/designer/plugins/palette'
import * as ModelApi from '@/api/bpm/model'
+import { getForm, FormVO } from '@/api/bpm/form'
defineOptions({ name: 'BpmModelEditor' })
@@ -38,6 +39,12 @@ const router = useRouter() // 路由
const { query } = useRoute() // 路由的查询
const message = useMessage() // 国际化
+// 表单信息
+const formFields = ref([])
+const formType = ref(20)
+provide('formFields', formFields)
+provide('formType', formType)
+
const xmlString = ref(undefined) // BPMN XML
const modeler = ref(null) // BPMN Modeler
const controlForm = ref({
@@ -99,6 +106,13 @@ onMounted(async () => {
`
}
+
+ formType.value = data.formType
+ if (data.formType === 10) {
+ const bpmnForm = (await getForm(data.formId)) as unknown as FormVO
+ formFields.value = bpmnForm?.fields
+ }
+
model.value = {
...data,
bpmnXml: undefined // 清空 bpmnXml 属性
--
Gitee
From 3959fc8531b690d6248289cdc33d4cb91d8428a2 Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Tue, 26 Nov 2024 14:38:50 +0800
Subject: [PATCH 42/86] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=E8=87=AA?=
=?UTF-8?q?=E5=AE=9A=E4=B9=89=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E5=AF=B9=E4=B8=8D=E5=90=8C=E7=B1=BB=E5=9E=8B=E8=8A=82=E7=82=B9?=
=?UTF-8?q?=E7=BB=A9=E6=95=88=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../package/penal/PropertiesPanel.vue | 4 +-
.../custom-config/ElementCustomConfig.vue | 655 +----------------
.../components/BoundaryEventTimer.vue | 13 +
.../custom-config/components/UserTask.vue | 656 ++++++++++++++++++
.../package/penal/custom-config/data.ts | 13 +
5 files changed, 704 insertions(+), 637 deletions(-)
create mode 100644 src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue
create mode 100644 src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTask.vue
create mode 100644 src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts
diff --git a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
index 96e8b080..825dcb7d 100644
--- a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
@@ -54,8 +54,8 @@
其他
-
- 自定义配置
+
+ 自定义配置
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue b/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
index ac766bf9..9d8b3f57 100644
--- a/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
@@ -1,656 +1,41 @@
-
]
-
审批人拒绝时
-
-
-
-
-
-
-
-
-
-
-
-
审批人为空时
-
-
-
-
-
-
-
-
-
-
-
-
审批人与提交人为同一人时
-
-
-
-
-
操作按钮
-
-
-
字段权限
-
-
-
字段名称
-
- 只读
- 可编辑
- 隐藏
-
-
-
-
{{ item.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue
new file mode 100644
index 00000000..81ba670c
--- /dev/null
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue
@@ -0,0 +1,13 @@
+
+
+ 定时边界事件(非中断)
+
+
+
+
+
+
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTask.vue b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTask.vue
new file mode 100644
index 00000000..c592ed5f
--- /dev/null
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTask.vue
@@ -0,0 +1,656 @@
+
+
+
+
审批人拒绝时
+
+
+
+
+
+
+
+
+
+
+
+
审批人为空时
+
+
+
+
+
+
+
+
+
+
+
+
审批人与提交人为同一人时
+
+
+
+
+
操作按钮
+
+
+
字段权限
+
+
+
字段名称
+
+ 只读
+ 可编辑
+ 隐藏
+
+
+
+
{{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts b/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts
new file mode 100644
index 00000000..8870f021
--- /dev/null
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts
@@ -0,0 +1,13 @@
+import UserTask from './components/UserTask.vue'
+import BoundaryEventTimer from './components/BoundaryEventTimer.vue'
+
+export const CustomConfigMap = {
+ UserTask: {
+ name: '用户任务',
+ componet: UserTask
+ },
+ BoundaryEventTimerEventDefinition: {
+ name: '定时边界事件(非中断)',
+ componet: BoundaryEventTimer
+ }
+}
--
Gitee
From 3027872374e09e26b2769649308329b2ad2be95e Mon Sep 17 00:00:00 2001
From: "xunchangguo@126.com"
Date: Tue, 10 Sep 2024 16:10:40 +0800
Subject: [PATCH 43/86] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9serviceTask?=
=?UTF-8?q?=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../designer/plugins/palette/CustomPalette.js | 6 ++
.../plugins/palette/paletteProvider.js | 6 ++
.../package/designer/plugins/translate/zh.js | 1 +
.../package/penal/PropertiesPanel.vue | 4 +-
.../package/penal/task/ElementTask.vue | 5 +
.../task/task-components/ServiceTask.vue | 91 +++++++++++++++++++
6 files changed, 111 insertions(+), 2 deletions(-)
create mode 100644 src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue
diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js b/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js
index 5e2803b5..c1f40c1b 100644
--- a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js
+++ b/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js
@@ -165,6 +165,12 @@ F.prototype.getPaletteEntries = function () {
'bpmn-icon-user-task',
translate('Create User Task')
),
+ 'create.service-task': createAction(
+ 'bpmn:ServiceTask',
+ 'activity',
+ 'bpmn-icon-service',
+ translate('Create Service Task')
+ ),
'create.data-object': createAction(
'bpmn:DataObjectReference',
'data-object',
diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js b/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js
index 7098981c..304875ce 100644
--- a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js
+++ b/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js
@@ -171,6 +171,12 @@ PaletteProvider.prototype.getPaletteEntries = function () {
'bpmn-icon-user-task',
translate('Create User Task')
),
+ 'create.service-task': createAction(
+ 'bpmn:ServiceTask',
+ 'activity',
+ 'bpmn-icon-service',
+ translate('Create Service Task')
+ ),
'create.data-object': createAction(
'bpmn:DataObjectReference',
'data-object',
diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js b/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js
index 777db3e7..7e5aa8c6 100644
--- a/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js
+++ b/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js
@@ -56,6 +56,7 @@ export default {
'Create EndEvent': '创建结束事件',
'Create Task': '创建任务',
'Create User Task': '创建用户任务',
+ 'Create Service Task': '创建服务任务',
'Create Gateway': '创建网关',
'Create DataObjectReference': '创建数据对象',
'Create DataStoreReference': '创建数据存储',
diff --git a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
index 825dcb7d..bd9c1051 100644
--- a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
@@ -27,12 +27,12 @@
- 任务(审批人)
+ 任务
多实例(会签配置)
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
index bbeeb4c8..16ea8b52 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
@@ -30,6 +30,7 @@
--
Gitee
From 79d19983dee7b0adb769ff862a50f373971530c4 Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Thu, 28 Nov 2024 11:32:33 +0800
Subject: [PATCH 44/86] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E4=BB=BB?=
=?UTF-8?q?=E5=8A=A1=E6=8A=98=E5=8F=A0=E9=9D=A2=E6=9D=BF=E5=A4=84=E7=90=86?=
=?UTF-8?q?=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../package/penal/PropertiesPanel.vue | 9 +++---
.../package/penal/task/ElementTask.vue | 29 +++--------------
.../package/penal/task/data.ts | 31 +++++++++++++++++++
3 files changed, 40 insertions(+), 29 deletions(-)
create mode 100644 src/components/bpmnProcessDesigner/package/penal/task/data.ts
diff --git a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
index bd9c1051..c4bc7b2e 100644
--- a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
@@ -1,5 +1,5 @@
-
+
@@ -26,13 +26,13 @@
表单
-
- 任务
+
+ {{ getTaskCollapseItemName(elementType) }}
多实例(会签配置)
@@ -72,6 +72,7 @@ import ElementListeners from './listeners/ElementListeners.vue'
import ElementProperties from './properties/ElementProperties.vue'
// import ElementForm from './form/ElementForm.vue'
import UserTaskListeners from './listeners/UserTaskListeners.vue'
+import { getTaskCollapseItemName,isTaskCollapseItemShow } from './task/data'
defineOptions({ name: 'MyPropertiesPanel' })
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
index 16ea8b52..c1f7c558 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
@@ -29,10 +29,7 @@
diff --git a/src/views/bpm/task/todo/index.vue b/src/views/bpm/task/todo/index.vue
index bf32ecb1..32129376 100644
--- a/src/views/bpm/task/todo/index.vue
+++ b/src/views/bpm/task/todo/index.vue
@@ -16,7 +16,7 @@
class="-mb-15px"
label-width="68px"
>
-
+
-
-
-
搜索
-
-
- 重置
-
+
+
+
+
+
+
+
+
+
+
+
+
+ 高级筛选
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认
+ 取消
+ 清空
+
+
+
+
@@ -95,6 +147,7 @@
--
Gitee
From 7aeb7cfdf2e90b426ff18e6e36bffa584998b063 Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Sun, 1 Dec 2024 15:37:20 +0800
Subject: [PATCH 46/86] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E8=AF=84?=
=?UTF-8?q?=E5=AE=A1=E3=80=91=E5=B7=A5=E4=BD=9C=E6=B5=81=EF=BC=9A=E5=AE=A1?=
=?UTF-8?q?=E6=89=B9=E5=88=97=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pnpm-lock.yaml | 429 +++++++++++++++++++++++++++++++++++--------------
1 file changed, 304 insertions(+), 125 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8ac804de..226b5c23 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -215,11 +215,11 @@ devDependencies:
specifier: ^10.4.17
version: 10.4.20(postcss@8.4.49)
bpmn-js:
- specifier: 8.10.0
- version: 8.10.0
+ specifier: ^17.9.2
+ version: 17.11.1
bpmn-js-properties-panel:
- specifier: 0.46.0
- version: 0.46.0(bpmn-js@8.10.0)
+ specifier: 5.23.0
+ version: 5.23.0(@bpmn-io/properties-panel@3.25.0)(bpmn-js@17.11.1)(camunda-bpmn-js-behaviors@1.7.2)(diagram-js@12.8.1)
consola:
specifier: ^3.2.3
version: 3.2.3
@@ -1465,29 +1465,117 @@ packages:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
+ /@bpmn-io/cm-theme@0.1.0-alpha.2:
+ resolution: {integrity: sha512-ZILgiYzxk3KMvxplUXmdRFQo45/JehDPg5k9tWfehmzUOSE13ssyLPil8uCloMQnb3yyzyOWTjb/wzKXTHlFQw==, tarball: https://registry.npmmirror.com/@bpmn-io/cm-theme/-/cm-theme-0.1.0-alpha.2.tgz}
+ dependencies:
+ '@codemirror/language': 6.10.6
+ '@codemirror/view': 6.35.0
+ '@lezer/highlight': 1.2.1
+ dev: true
+
/@bpmn-io/diagram-js-ui@0.2.3:
resolution: {integrity: sha512-OGyjZKvGK8tHSZ0l7RfeKhilGoOGtFDcoqSGYkX0uhFlo99OVZ9Jn1K7TJGzcE9BdKwvA5Y5kGqHEhdTxHvFfw==, tarball: https://registry.npmmirror.com/@bpmn-io/diagram-js-ui/-/diagram-js-ui-0.2.3.tgz}
dependencies:
htm: 3.1.1
preact: 10.25.0
- dev: false
- /@bpmn-io/element-templates-validator@0.2.0:
- resolution: {integrity: sha512-/ogp0+6zUFdoiY09NYaHL5JtapB8zN1spG8hpML96qetXDCODRxnsqlHTvSwxtZHUDcgun+lxcK8b4wgtCP+6Q==, tarball: https://registry.npmmirror.com/@bpmn-io/element-templates-validator/-/element-templates-validator-0.2.0.tgz}
+ /@bpmn-io/extract-process-variables@0.8.0:
+ resolution: {integrity: sha512-yAS7ZYX+D56K+luC36u96eRMLb4VHcPUwTUqMZ/Z/Je2gou2DJLRbuBTHAB4jjKt4wFCHSG4B8Y+TrBciEYf4w==, tarball: https://registry.npmmirror.com/@bpmn-io/extract-process-variables/-/extract-process-variables-0.8.0.tgz}
dependencies:
- '@camunda/element-templates-json-schema': 0.4.0
- json-source-map: 0.6.1
- min-dash: 3.8.1
+ min-dash: 4.2.2
dev: true
- /@bpmn-io/extract-process-variables@0.4.5:
- resolution: {integrity: sha512-LtHx5b9xqS8avRLrq/uTlKhWzMeV3bWQKIdDic2bdo5n9roitX13GRb01u2S0hSsKDWEhXQtydFYN2b6G7bqfw==, tarball: https://registry.npmmirror.com/@bpmn-io/extract-process-variables/-/extract-process-variables-0.4.5.tgz}
+ /@bpmn-io/feel-editor@1.9.1(@lezer/common@1.2.3):
+ resolution: {integrity: sha512-UxSORdh5cwKM4fib4f9ov6J1/BHGpQVNtA+wPyEdKQyCyz3wqwE2/xe5wneVR1j5QFC5m2Na8nTy4a1TDFvZTw==, tarball: https://registry.npmmirror.com/@bpmn-io/feel-editor/-/feel-editor-1.9.1.tgz}
+ engines: {node: '>= 16'}
dependencies:
- min-dash: 3.8.1
+ '@bpmn-io/feel-lint': 1.3.1
+ '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)
+ '@codemirror/commands': 6.7.1
+ '@codemirror/language': 6.10.6
+ '@codemirror/lint': 6.8.4
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.35.0
+ '@lezer/highlight': 1.2.1
+ lang-feel: 2.2.0
+ min-dom: 4.2.1
+ transitivePeerDependencies:
+ - '@lezer/common'
+ dev: true
+
+ /@bpmn-io/feel-lint@1.3.1:
+ resolution: {integrity: sha512-wcFkJKhOm/iqCt5bzkKvxL5Dr9wKwUD+t164bQYbJsTYouAqmkkxiGsoqck42hXwdIhMSguZ+vqQ3hj5QdiYCA==, tarball: https://registry.npmmirror.com/@bpmn-io/feel-lint/-/feel-lint-1.3.1.tgz}
+ dependencies:
+ '@codemirror/language': 6.10.6
+ lezer-feel: 1.4.0
+ dev: true
+
+ /@bpmn-io/properties-panel@3.25.0(@lezer/common@1.2.3):
+ resolution: {integrity: sha512-SRGgj8uJc1Yyjcht2g36Q+xKR7sTx5VZXvcwDrdmQKlx5Y3nRmvmMjDGzeGDJDb7pNU1DSlaBJic84uISDBMWg==, tarball: https://registry.npmmirror.com/@bpmn-io/properties-panel/-/properties-panel-3.25.0.tgz}
+ dependencies:
+ '@bpmn-io/feel-editor': 1.9.1(@lezer/common@1.2.3)
+ '@codemirror/view': 6.35.0
+ classnames: 2.5.1
+ feelers: 1.4.0
+ focus-trap: 7.6.2
+ min-dash: 4.2.2
+ min-dom: 4.2.1
+ transitivePeerDependencies:
+ - '@lezer/common'
+ dev: true
+
+ /@codemirror/autocomplete@6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3):
+ resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==, tarball: https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.18.3.tgz}
+ peerDependencies:
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+ dependencies:
+ '@codemirror/language': 6.10.6
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.35.0
+ '@lezer/common': 1.2.3
+ dev: true
+
+ /@codemirror/commands@6.7.1:
+ resolution: {integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==, tarball: https://registry.npmmirror.com/@codemirror/commands/-/commands-6.7.1.tgz}
+ dependencies:
+ '@codemirror/language': 6.10.6
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.35.0
+ '@lezer/common': 1.2.3
+ dev: true
+
+ /@codemirror/language@6.10.6:
+ resolution: {integrity: sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==, tarball: https://registry.npmmirror.com/@codemirror/language/-/language-6.10.6.tgz}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.35.0
+ '@lezer/common': 1.2.3
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+ style-mod: 4.1.2
+ dev: true
+
+ /@codemirror/lint@6.8.4:
+ resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==, tarball: https://registry.npmmirror.com/@codemirror/lint/-/lint-6.8.4.tgz}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.35.0
+ crelt: 1.0.6
dev: true
- /@camunda/element-templates-json-schema@0.4.0:
- resolution: {integrity: sha512-M5xW61ba7z2maBxfoT4c1bjuLD8OIL7863et/hULiNG6+R/B9CZ4Qze1juuIfXv4zpF2fYSuUsTPkTtiZrcspQ==, tarball: https://registry.npmmirror.com/@camunda/element-templates-json-schema/-/element-templates-json-schema-0.4.0.tgz}
+ /@codemirror/state@6.4.1:
+ resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==, tarball: https://registry.npmmirror.com/@codemirror/state/-/state-6.4.1.tgz}
+ dev: true
+
+ /@codemirror/view@6.35.0:
+ resolution: {integrity: sha512-I0tYy63q5XkaWsJ8QRv5h6ves7kvtrBWjBcnf/bzohFJQc5c14a1AQRdE8QpPF9eMp5Mq2FMm59TCj1gDfE7kw==, tarball: https://registry.npmmirror.com/@codemirror/view/-/view-6.35.0.tgz}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ style-mod: 4.1.2
+ w3c-keyname: 2.2.8
dev: true
/@commitlint/cli@19.6.0(@types/node@20.17.9)(typescript@5.3.3):
@@ -2274,6 +2362,29 @@ packages:
'@jridgewell/sourcemap-codec': 1.5.0
dev: true
+ /@lezer/common@1.2.3:
+ resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==, tarball: https://registry.npmmirror.com/@lezer/common/-/common-1.2.3.tgz}
+ dev: true
+
+ /@lezer/highlight@1.2.1:
+ resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==, tarball: https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.1.tgz}
+ dependencies:
+ '@lezer/common': 1.2.3
+ dev: true
+
+ /@lezer/lr@1.4.2:
+ resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==, tarball: https://registry.npmmirror.com/@lezer/lr/-/lr-1.4.2.tgz}
+ dependencies:
+ '@lezer/common': 1.2.3
+ dev: true
+
+ /@lezer/markdown@1.3.2:
+ resolution: {integrity: sha512-Wu7B6VnrKTbBEohqa63h5vxXjiC4pO5ZQJ/TDbhJxPQaaIoRD/6UVDhSDtVsCwVZV12vvN9KxuLL3ATMnlG0oQ==, tarball: https://registry.npmmirror.com/@lezer/markdown/-/markdown-1.3.2.tgz}
+ dependencies:
+ '@lezer/common': 1.2.3
+ '@lezer/highlight': 1.2.1
+ dev: true
+
/@microsoft/fetch-event-source@2.0.1:
resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==, tarball: https://registry.npmmirror.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz}
dev: false
@@ -4264,6 +4375,11 @@ packages:
resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, tarball: https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz}
dev: true
+ /array-move@4.0.0:
+ resolution: {integrity: sha512-+RY54S8OuVvg94THpneQvFRmqWdAHeqtMzgMW6JNurHxe8rsS07cHQdfGkXnTUXiBcyZ0j3SiDIxxj0RPiqCkQ==, tarball: https://registry.npmmirror.com/array-move/-/array-move-4.0.0.tgz}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
+
/array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, tarball: https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz}
engines: {node: '>=8'}
@@ -4446,21 +4562,23 @@ packages:
/boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, tarball: https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz}
- /bpmn-js-properties-panel@0.46.0(bpmn-js@8.10.0):
- resolution: {integrity: sha512-8MlNvHklIZZQH9vtoKf0A0A1v0sHO4Iz19jGhHeX15czOOiCfdavjo+q23GHWNKzQA9347F91XYFcrnM6FO8zw==, tarball: https://registry.npmmirror.com/bpmn-js-properties-panel/-/bpmn-js-properties-panel-0.46.0.tgz}
+ /bpmn-js-properties-panel@5.23.0(@bpmn-io/properties-panel@3.25.0)(bpmn-js@17.11.1)(camunda-bpmn-js-behaviors@1.7.2)(diagram-js@12.8.1):
+ resolution: {integrity: sha512-4B27LM8oV14A2QWRvazV17h4NxbkNERcqU+AGJmxKImMlLhu9893MWR+pCdTQCTphBdBkuD8ksWm+1wVCedJ7g==, tarball: https://registry.npmmirror.com/bpmn-js-properties-panel/-/bpmn-js-properties-panel-5.23.0.tgz}
peerDependencies:
- bpmn-js: ^3.x || ^4.x || ^5.x || ^6.x || ^7.x || ^8.x
+ '@bpmn-io/properties-panel': '>= 3.7'
+ bpmn-js: '>= 11.5'
+ camunda-bpmn-js-behaviors: '>= 0.4'
+ diagram-js: '>= 11.9'
dependencies:
- '@bpmn-io/element-templates-validator': 0.2.0
- '@bpmn-io/extract-process-variables': 0.4.5
- bpmn-js: 8.10.0
+ '@bpmn-io/extract-process-variables': 0.8.0
+ '@bpmn-io/properties-panel': 3.25.0(@lezer/common@1.2.3)
+ array-move: 4.0.0
+ bpmn-js: 17.11.1
+ camunda-bpmn-js-behaviors: 1.7.2(bpmn-js@17.11.1)(camunda-bpmn-moddle@7.0.1)(zeebe-bpmn-moddle@1.7.0)
+ diagram-js: 12.8.1
ids: 1.0.5
- inherits: 2.0.4
- lodash: 4.17.21
- min-dom: 3.2.1
- scroll-tabs: 1.0.1
- selection-update: 0.1.2
- semver: 6.3.1
+ min-dash: 4.2.2
+ min-dom: 4.2.1
dev: true
/bpmn-js-token-simulation@0.10.0:
@@ -4471,27 +4589,25 @@ packages:
svg.js: 2.7.1
dev: false
- /bpmn-js@8.10.0:
- resolution: {integrity: sha512-NozeOi01qL0ZdVq8+5hWZcikyEvgrP1yzCBqlhSufJdHFsnEMBCwn2bJJ0B/6JgX+IBwy1sk/Uw+Ds8rQ8vfrw==, tarball: https://registry.npmmirror.com/bpmn-js/-/bpmn-js-8.10.0.tgz}
+ /bpmn-js@17.11.1:
+ resolution: {integrity: sha512-ywCeTg5kvN8lYkU+fHE+YXTGlfKc55lRBn7zW3k1//toeMNPy/PS/uQiujRWdFhMrH5dbtDvlwWukNw2pjWw8Q==, tarball: https://registry.npmmirror.com/bpmn-js/-/bpmn-js-17.11.1.tgz}
dependencies:
- bpmn-moddle: 7.1.3
- css.escape: 1.5.1
- diagram-js: 7.9.0
- diagram-js-direct-editing: 1.8.0(diagram-js@7.9.0)
+ bpmn-moddle: 8.1.0
+ diagram-js: 14.11.3
+ diagram-js-direct-editing: 3.2.0(diagram-js@14.11.3)
ids: 1.0.5
- inherits: 2.0.4
- min-dash: 3.8.1
- min-dom: 3.2.1
- object-refs: 0.3.0
- tiny-svg: 2.2.4
+ inherits-browser: 0.1.0
+ min-dash: 4.2.2
+ min-dom: 4.2.1
+ tiny-svg: 3.1.3
dev: true
- /bpmn-moddle@7.1.3:
- resolution: {integrity: sha512-ZcBfw0NSOdYTSXFKEn7MOXHItz7VfLZTrFYKO8cK6V8ZzGjCcdiLIOiw7Lctw1PJsihhLiZQS8Htj2xKf+NwCg==, tarball: https://registry.npmmirror.com/bpmn-moddle/-/bpmn-moddle-7.1.3.tgz}
+ /bpmn-moddle@8.1.0:
+ resolution: {integrity: sha512-yI5OAFfYVJwViKTsTsonVfCBPtB3MlefADUORwNIxxBOMp21vnoxuxsdgUWlPH/dvAEZh/+mr8UtqOBNu8NC5Q==, tarball: https://registry.npmmirror.com/bpmn-moddle/-/bpmn-moddle-8.1.0.tgz}
dependencies:
- min-dash: 3.8.1
- moddle: 5.0.4
- moddle-xml: 9.0.6
+ min-dash: 4.2.2
+ moddle: 6.2.3
+ moddle-xml: 10.1.0
dev: true
/brace-expansion@1.1.11:
@@ -4598,9 +4714,22 @@ packages:
engines: {node: '>=6'}
dev: false
+ /camunda-bpmn-js-behaviors@1.7.2(bpmn-js@17.11.1)(camunda-bpmn-moddle@7.0.1)(zeebe-bpmn-moddle@1.7.0):
+ resolution: {integrity: sha512-xjLJHc18T40tcYu4JCeYDo1wR5i9+ZqcVnXVP6c4ooAe2gKISbBvFc07gqGpqiwm7TpEBvUfDj3PrRr+ofaf4w==, tarball: https://registry.npmmirror.com/camunda-bpmn-js-behaviors/-/camunda-bpmn-js-behaviors-1.7.2.tgz}
+ peerDependencies:
+ bpmn-js: '>= 9'
+ camunda-bpmn-moddle: '>= 7'
+ zeebe-bpmn-moddle: '>= 0.18'
+ dependencies:
+ bpmn-js: 17.11.1
+ camunda-bpmn-moddle: 7.0.1
+ ids: 1.0.5
+ min-dash: 4.2.2
+ zeebe-bpmn-moddle: 1.7.0
+ dev: true
+
/camunda-bpmn-moddle@7.0.1:
resolution: {integrity: sha512-Br8Diu6roMpziHdpl66Dhnm0DTnCFMrSD9zwLV08LpD52QA0UsXxU87XfHf08HjuB7ly0Hd1bvajZRpf9hbmYQ==, tarball: https://registry.npmmirror.com/camunda-bpmn-moddle/-/camunda-bpmn-moddle-7.0.1.tgz}
- dev: false
/caniuse-lite@1.0.30001684:
resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==, tarball: https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz}
@@ -4686,6 +4815,10 @@ packages:
static-extend: 0.1.2
dev: true
+ /classnames@2.5.1:
+ resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==, tarball: https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz}
+ dev: true
+
/cli-cursor@5.0.0:
resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, tarball: https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz}
engines: {node: '>=18'}
@@ -4726,7 +4859,6 @@ packages:
/clsx@2.1.1:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, tarball: https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz}
engines: {node: '>=6'}
- dev: false
/codemirror@6.65.7:
resolution: {integrity: sha512-HcfnUFJwI2FvH73YWVbbMh7ObWxZiHIycEhv9ZEXy6e8ZKDjtZKbbYFUtsLN46HFXPvU5V2Uvc2d55Z//oFW5A==, tarball: https://registry.npmmirror.com/codemirror/-/codemirror-6.65.7.tgz}
@@ -4820,10 +4952,10 @@ packages:
/component-event@0.1.4:
resolution: {integrity: sha512-GMwOG8MnUHP1l8DZx1ztFO0SJTFnIzZnBDkXAj8RM2ntV2A6ALlDxgbMY1Fvxlg6WPQ+5IM/a6vg4PEYbjg/Rw==, tarball: https://registry.npmmirror.com/component-event/-/component-event-0.1.4.tgz}
+ dev: false
/component-event@0.2.1:
resolution: {integrity: sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==, tarball: https://registry.npmmirror.com/component-event/-/component-event-0.2.1.tgz}
- dev: false
/component-indexof@0.0.3:
resolution: {integrity: sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw==, tarball: https://registry.npmmirror.com/component-indexof/-/component-indexof-0.0.3.tgz}
@@ -4949,6 +5081,10 @@ packages:
typescript: 5.3.3
dev: true
+ /crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==, tarball: https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz}
+ dev: true
+
/cropperjs@1.6.2:
resolution: {integrity: sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==, tarball: https://registry.npmmirror.com/cropperjs/-/cropperjs-1.6.2.tgz}
dev: false
@@ -5027,10 +5163,6 @@ packages:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, tarball: https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz}
engines: {node: '>= 6'}
- /css.escape@1.5.1:
- resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==, tarball: https://registry.npmmirror.com/css.escape/-/css.escape-1.5.1.tgz}
- dev: true
-
/cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, tarball: https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz}
engines: {node: '>=4'}
@@ -5455,14 +5587,14 @@ packages:
dev: true
optional: true
- /diagram-js-direct-editing@1.8.0(diagram-js@7.9.0):
- resolution: {integrity: sha512-B4Xj+PJfgBjbPEzT3uZQEkZI5xHFB0Izc+7BhDFuHidzrEMzQKZrFGdA3PqfWhReHf3dp+iB6Tt11G9eGNjKMw==, tarball: https://registry.npmmirror.com/diagram-js-direct-editing/-/diagram-js-direct-editing-1.8.0.tgz}
+ /diagram-js-direct-editing@3.2.0(diagram-js@14.11.3):
+ resolution: {integrity: sha512-+pyxeQGBSdLiZX0/tmmsm2qZSvm9YtVzod5W3RMHSTR7VrkUMD6E7EX/W9JQv3ebxO7oIdqFmytmNDDpSHnYEw==, tarball: https://registry.npmmirror.com/diagram-js-direct-editing/-/diagram-js-direct-editing-3.2.0.tgz}
peerDependencies:
diagram-js: '*'
dependencies:
- diagram-js: 7.9.0
- min-dash: 3.8.1
- min-dom: 3.2.1
+ diagram-js: 14.11.3
+ min-dash: 4.2.2
+ min-dom: 4.2.1
dev: true
/diagram-js@12.8.1:
@@ -5478,29 +5610,28 @@ packages:
object-refs: 0.3.0
path-intersection: 2.2.1
tiny-svg: 3.1.3
- dev: false
- /diagram-js@7.9.0:
- resolution: {integrity: sha512-o1yUtX5TXV1pmpevP55gxU/AEG6nCidOXGs/HLuxNXG0zMZ3jQta7kMqRxTK93rNw/XuHmP1eMOwdvdJ2RP5qA==, tarball: https://registry.npmmirror.com/diagram-js/-/diagram-js-7.9.0.tgz}
+ /diagram-js@14.11.3:
+ resolution: {integrity: sha512-Seq9BHAXfzKS60L4v4Gvgvv72wOtvrfJQAyyPm9pntSZDMzjoodPSXnEUPud1G2zVCMGEUUW++s0reEdaWgkXA==, tarball: https://registry.npmmirror.com/diagram-js/-/diagram-js-14.11.3.tgz}
dependencies:
- css.escape: 1.5.1
- didi: 5.2.1
- hammerjs: 2.0.8
- inherits: 2.0.4
- min-dash: 3.8.1
- min-dom: 3.2.1
- object-refs: 0.3.0
- path-intersection: 2.2.1
- tiny-svg: 2.2.4
+ '@bpmn-io/diagram-js-ui': 0.2.3
+ clsx: 2.1.1
+ didi: 10.2.2
+ inherits-browser: 0.1.0
+ min-dash: 4.2.2
+ min-dom: 4.2.1
+ object-refs: 0.4.0
+ path-intersection: 3.1.0
+ tiny-svg: 3.1.3
dev: true
- /didi@5.2.1:
- resolution: {integrity: sha512-IKNnajUlD4lWMy/Q9Emkk7H1qnzREgY4UyE3IhmOi/9IKua0JYtYldk928bOdt1yNxN8EiOy1sqtSozEYsmjCg==, tarball: https://registry.npmmirror.com/didi/-/didi-5.2.1.tgz}
+ /didi@10.2.2:
+ resolution: {integrity: sha512-l8NYkYFXV1izHI65EyT8EXOjUZtKmQkHLTT89cSP7HU5J/G7AOj0dXKtLc04EXYlga99PBY18IPjOeZ+c3DI4w==, tarball: https://registry.npmmirror.com/didi/-/didi-10.2.2.tgz}
+ engines: {node: '>= 16'}
dev: true
/didi@9.0.2:
resolution: {integrity: sha512-q2+aj+lnJcUweV7A9pdUrwFr4LHVmRPwTmQLtHPFz4aT7IBoryN6Iy+jmFku+oIzr5ebBkvtBCOb87+dJhb7bg==, tarball: https://registry.npmmirror.com/didi/-/didi-9.0.2.tgz}
- dev: false
/dijkstrajs@1.0.3:
resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==, tarball: https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz}
@@ -5585,6 +5716,11 @@ packages:
/domify@1.4.2:
resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==, tarball: https://registry.npmmirror.com/domify/-/domify-1.4.2.tgz}
+ /domify@2.0.0:
+ resolution: {integrity: sha512-rmvrrmWQPD/X1A/nPBfIVg4r05792QdG9Z4Prk6oQG0F9zBMDkr0GKAdds1wjb2dq1rTz/ywc4ZxpZbgz0tttg==, tarball: https://registry.npmmirror.com/domify/-/domify-2.0.0.tgz}
+ engines: {node: '>=18'}
+ dev: true
+
/dompurify@3.2.1:
resolution: {integrity: sha512-NBHEsc0/kzRYQd+AY6HR6B/IgsqzBABrqJbpCDQII/OK6h7B7LXzweZTDsqSW2LkTRpoxf18YUP+YjGySk6B3w==, tarball: https://registry.npmmirror.com/dompurify/-/dompurify-3.2.1.tgz}
optionalDependencies:
@@ -6228,6 +6364,34 @@ packages:
picomatch: 4.0.2
dev: true
+ /feelers@1.4.0:
+ resolution: {integrity: sha512-CGa/7ILuqoqTaeYeoKsg/4tzu2es9sEEJTmSjdu0lousZBw4V9gcYhHYFNmbrSrKmbAVfOzj6/DsymGJWFIOeg==, tarball: https://registry.npmmirror.com/feelers/-/feelers-1.4.0.tgz}
+ dependencies:
+ '@bpmn-io/cm-theme': 0.1.0-alpha.2
+ '@bpmn-io/feel-lint': 1.3.1
+ '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)
+ '@codemirror/commands': 6.7.1
+ '@codemirror/language': 6.10.6
+ '@codemirror/lint': 6.8.4
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.35.0
+ '@lezer/common': 1.2.3
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+ '@lezer/markdown': 1.3.2
+ feelin: 3.2.0
+ lezer-feel: 1.4.0
+ min-dom: 5.1.1
+ dev: true
+
+ /feelin@3.2.0:
+ resolution: {integrity: sha512-GFDbHsTYk7YXO1tyw1dOjb7IODeAZvNIosdGZThUwPx5XcD/XhO0hnPZXsIbAzSsIdrgGlTEEdby9fZ2gixysA==, tarball: https://registry.npmmirror.com/feelin/-/feelin-3.2.0.tgz}
+ dependencies:
+ '@lezer/lr': 1.4.2
+ lezer-feel: 1.4.0
+ luxon: 3.5.0
+ dev: true
+
/file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, tarball: https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -6311,6 +6475,12 @@ packages:
resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==, tarball: https://registry.npmmirror.com/flatted/-/flatted-3.3.2.tgz}
dev: true
+ /focus-trap@7.6.2:
+ resolution: {integrity: sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==, tarball: https://registry.npmmirror.com/focus-trap/-/focus-trap-7.6.2.tgz}
+ dependencies:
+ tabbable: 6.2.0
+ dev: true
+
/follow-redirects@1.15.9(debug@4.3.7):
resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==, tarball: https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz}
engines: {node: '>=4.0'}
@@ -6674,7 +6844,6 @@ packages:
/htm@3.1.1:
resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==, tarball: https://registry.npmmirror.com/htm/-/htm-3.1.1.tgz}
- dev: false
/html-tags@3.3.1:
resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==, tarball: https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz}
@@ -6772,10 +6941,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /indexof@0.0.1:
- resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==, tarball: https://registry.npmmirror.com/indexof/-/indexof-0.0.1.tgz}
- dev: true
-
/individual@2.0.0:
resolution: {integrity: sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==, tarball: https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz}
dev: false
@@ -6790,7 +6955,6 @@ packages:
/inherits-browser@0.1.0:
resolution: {integrity: sha512-CJHHvW3jQ6q7lzsXPpapLdMx5hDpSF3FSh45pwsj6bKxJJ8Nl8v43i5yXnr3BdfOimGHKyniewQtnAIp3vyJJw==, tarball: https://registry.npmmirror.com/inherits-browser/-/inherits-browser-0.1.0.tgz}
- dev: false
/inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, tarball: https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz}
@@ -7209,10 +7373,6 @@ packages:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, tarball: https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz}
dev: true
- /json-source-map@0.6.1:
- resolution: {integrity: sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==, tarball: https://registry.npmmirror.com/json-source-map/-/json-source-map-0.6.1.tgz}
- dev: true
-
/json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, tarball: https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz}
dev: true
@@ -7302,6 +7462,17 @@ packages:
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==, tarball: https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz}
dev: true
+ /lang-feel@2.2.0:
+ resolution: {integrity: sha512-Ebo5nftYsMfJzB3Ny8Oy4oaDXZXb5x61qtVVmKv6aImvAZUbT76mD60ZbEilizjZQzsR2CcU1iMK5sacIa1NVA==, tarball: https://registry.npmmirror.com/lang-feel/-/lang-feel-2.2.0.tgz}
+ dependencies:
+ '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)
+ '@codemirror/language': 6.10.6
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.35.0
+ '@lezer/common': 1.2.3
+ lezer-feel: 1.4.0
+ dev: true
+
/levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, tarball: https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz}
engines: {node: '>= 0.8.0'}
@@ -7310,6 +7481,14 @@ packages:
type-check: 0.4.0
dev: true
+ /lezer-feel@1.4.0:
+ resolution: {integrity: sha512-kNxG7O38gwpuYy+C3JCRxQNTCE2qu9uTuH5dE3EGVnRhIQMe6rPDz0S8t3urLEOsMud6HI795m6zX2ujfUaqTw==, tarball: https://registry.npmmirror.com/lezer-feel/-/lezer-feel-1.4.0.tgz}
+ dependencies:
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+ min-dash: 4.2.2
+ dev: true
+
/lilconfig@3.1.2:
resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==, tarball: https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.2.tgz}
engines: {node: '>=14'}
@@ -7513,6 +7692,11 @@ packages:
yallist: 3.1.1
dev: true
+ /luxon@3.5.0:
+ resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==, tarball: https://registry.npmmirror.com/luxon/-/luxon-3.5.0.tgz}
+ engines: {node: '>=12'}
+ dev: true
+
/m3u8-parser@4.8.0:
resolution: {integrity: sha512-UqA2a/Pw3liR6Df3gwxrqghCP17OpPlQj6RBPLYygf/ZSQ4MoSgvdvhvt35qV+3NaaA0FSZx93Ix+2brT1U7cA==, tarball: https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-4.8.0.tgz}
dependencies:
@@ -7608,10 +7792,6 @@ packages:
markmap-common: 0.16.0
dev: false
- /matches-selector@1.2.0:
- resolution: {integrity: sha512-c4vLwYWyl+Ji+U43eU/G5FwxWd4ZH0ePUsFs5y0uwD9HUEFBXUQ1zUUan+78IpRD+y4pUfG0nAzNM292K7ItvA==, tarball: https://registry.npmmirror.com/matches-selector/-/matches-selector-1.2.0.tgz}
- dev: true
-
/mathml-tag-names@2.1.3:
resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==, tarball: https://registry.npmmirror.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz}
dev: true
@@ -7721,10 +7901,10 @@ packages:
/min-dash@3.8.1:
resolution: {integrity: sha512-evumdlmIlg9mbRVPbC4F5FuRhNmcMS5pvuBUbqb1G9v09Ro0ImPEgz5n3khir83lFok1inKqVDjnKEg3GpDxQg==, tarball: https://registry.npmmirror.com/min-dash/-/min-dash-3.8.1.tgz}
+ dev: false
/min-dash@4.2.2:
resolution: {integrity: sha512-qbhSYUxk6mBaF096B3JOQSumXbKWHenmT97cSpdNzgkWwGjhjhE/KZODCoDNhI2I4C9Cb6R/Q13S4BYkUSXoXQ==, tarball: https://registry.npmmirror.com/min-dash/-/min-dash-4.2.2.tgz}
- dev: false
/min-document@2.19.0:
resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==, tarball: https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz}
@@ -7744,23 +7924,19 @@ packages:
domify: 1.4.2
dev: false
- /min-dom@3.2.1:
- resolution: {integrity: sha512-v6YCmnDzxk4rRJntWTUiwggLupPw/8ZSRqUq0PDaBwVZEO/wYzCH4SKVBV+KkEvf3u0XaWHly5JEosPtqRATZA==, tarball: https://registry.npmmirror.com/min-dom/-/min-dom-3.2.1.tgz}
- dependencies:
- component-event: 0.1.4
- domify: 1.4.2
- indexof: 0.0.1
- matches-selector: 1.2.0
- min-dash: 3.8.1
- dev: true
-
/min-dom@4.2.1:
resolution: {integrity: sha512-TMoL8SEEIhUWYgkj7XMSgxmwSyGI+4fP2KFFGnN3FbHfbGHVdsLYSz8LoIsgPhz4dWRmLvxWWSMgzZMJW5sZuA==, tarball: https://registry.npmmirror.com/min-dom/-/min-dom-4.2.1.tgz}
dependencies:
component-event: 0.2.1
domify: 1.4.2
min-dash: 4.2.2
- dev: false
+
+ /min-dom@5.1.1:
+ resolution: {integrity: sha512-GaKUlguMAofd3OJsB0OkP17i5kucKqErgVCJxPawO9l5NwIPnr28SAr99zzlzMCWWljISBYrnZVWdE2Q92YGFQ==, tarball: https://registry.npmmirror.com/min-dom/-/min-dom-5.1.1.tgz}
+ dependencies:
+ domify: 2.0.0
+ min-dash: 4.2.2
+ dev: true
/minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz}
@@ -7798,10 +7974,6 @@ packages:
engines: {node: '>=16 || 14 >=14.17'}
dev: true
- /mitt@1.2.0:
- resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==, tarball: https://registry.npmmirror.com/mitt/-/mitt-1.2.0.tgz}
- dev: true
-
/mitt@3.0.1:
resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==, tarball: https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz}
dev: false
@@ -7823,18 +7995,18 @@ packages:
ufo: 1.5.4
dev: true
- /moddle-xml@9.0.6:
- resolution: {integrity: sha512-tl0reHpsY/aKlLGhXeFlQWlYAQHFxTkFqC8tq8jXRYpQSnLVw13T6swMaourLd7EXqHdWsc+5ggsB+fEep6xZQ==, tarball: https://registry.npmmirror.com/moddle-xml/-/moddle-xml-9.0.6.tgz}
+ /moddle-xml@10.1.0:
+ resolution: {integrity: sha512-erWckwLt+dYskewKXJso9u+aAZ5172lOiYxSOqKCPTy7L/xmqH1PoeoA7eVC7oJTt3PqF5TkZzUmbjGH6soQBg==, tarball: https://registry.npmmirror.com/moddle-xml/-/moddle-xml-10.1.0.tgz}
dependencies:
- min-dash: 3.8.1
- moddle: 5.0.4
+ min-dash: 4.2.2
+ moddle: 6.2.3
saxen: 8.1.2
dev: true
- /moddle@5.0.4:
- resolution: {integrity: sha512-Kjb+hjuzO+YlojNGxEUXvdhLYTHTtAABDlDcJTtTcn5MbJF9Zkv4I1Fyvp3Ypmfgg1EfHDZ3PsCQTuML9JD6wg==, tarball: https://registry.npmmirror.com/moddle/-/moddle-5.0.4.tgz}
+ /moddle@6.2.3:
+ resolution: {integrity: sha512-bLVN+ZHL3aKnhxc19XtjUfvdJsS3EsiEJC7bT6YPD11qYmTzvsxrGgyYz1Ouof7TZuGw0lDJ1OLmEnxcpQWk3Q==, tarball: https://registry.npmmirror.com/moddle/-/moddle-6.2.3.tgz}
dependencies:
- min-dash: 3.8.1
+ min-dash: 4.2.2
dev: true
/mpd-parser@0.22.1:
@@ -7994,6 +8166,10 @@ packages:
/object-refs@0.3.0:
resolution: {integrity: sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==, tarball: https://registry.npmmirror.com/object-refs/-/object-refs-0.3.0.tgz}
+ /object-refs@0.4.0:
+ resolution: {integrity: sha512-6kJqKWryKZmtte6QYvouas0/EIJKPI1/MMIuRsiBlNuhIMfqYTggzX2F1AJ2+cDs288xyi9GL7FyasHINR98BQ==, tarball: https://registry.npmmirror.com/object-refs/-/object-refs-0.4.0.tgz}
+ dev: true
+
/object-visit@1.0.1:
resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==, tarball: https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz}
engines: {node: '>=0.10.0'}
@@ -8164,6 +8340,11 @@ packages:
/path-intersection@2.2.1:
resolution: {integrity: sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==, tarball: https://registry.npmmirror.com/path-intersection/-/path-intersection-2.2.1.tgz}
+ /path-intersection@3.1.0:
+ resolution: {integrity: sha512-3xS3lvv/vuwm5aH2BVvNRvnvwR2Drde7jQClKpCXTYXIMMjcw/EnMhzCgeHwqbCpzi760PEfAkU53vSIlrNr9A==, tarball: https://registry.npmmirror.com/path-intersection/-/path-intersection-3.1.0.tgz}
+ engines: {node: '>= 14.20'}
+ dev: true
+
/path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, tarball: https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz}
engines: {node: '>=0.10.0'}
@@ -8415,7 +8596,6 @@ packages:
/preact@10.25.0:
resolution: {integrity: sha512-6bYnzlLxXV3OSpUxLdaxBmE7PMOu0aR3pG6lryK/0jmvcDFPlcXGQAt5DpK3RITWiDrfYZRI0druyaK/S9kYLg==, tarball: https://registry.npmmirror.com/preact/-/preact-10.25.0.tgz}
- dev: false
/prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, tarball: https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz}
@@ -8872,22 +9052,10 @@ packages:
compute-scroll-into-view: 1.0.20
dev: false
- /scroll-tabs@1.0.1:
- resolution: {integrity: sha512-W4xjEwNS4QAyQnaJ450vQTcKpbnalBAfsTDV926WrxEMOqjyj2To8uv2d0Cp0oxMdk5TkygtzXmctPNc2zgBcg==, tarball: https://registry.npmmirror.com/scroll-tabs/-/scroll-tabs-1.0.1.tgz}
- dependencies:
- min-dash: 3.8.1
- min-dom: 3.2.1
- mitt: 1.2.0
- dev: true
-
/scule@1.3.0:
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==, tarball: https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz}
dev: true
- /selection-update@0.1.2:
- resolution: {integrity: sha512-4jzoJNh7VT2s2tvm/kUSskSw7pD0BVcrrGccbfOMK+3AXLBPz6nIy1yo+pbXgvNoTNII96Pq92+sAY+rF0LUAA==, tarball: https://registry.npmmirror.com/selection-update/-/selection-update-0.1.2.tgz}
- dev: true
-
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, tarball: https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz}
hasBin: true
@@ -9245,6 +9413,10 @@ packages:
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==, tarball: https://registry.npmmirror.com/strnum/-/strnum-1.0.5.tgz}
dev: false
+ /style-mod@4.1.2:
+ resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==, tarball: https://registry.npmmirror.com/style-mod/-/style-mod-4.1.2.tgz}
+ dev: true
+
/stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@16.11.0):
resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==, tarball: https://registry.npmmirror.com/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz}
engines: {node: ^12 || >=14}
@@ -9427,6 +9599,10 @@ packages:
resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==, tarball: https://registry.npmmirror.com/systemjs/-/systemjs-6.15.1.tgz}
dev: true
+ /tabbable@6.2.0:
+ resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==, tarball: https://registry.npmmirror.com/tabbable/-/tabbable-6.2.0.tgz}
+ dev: true
+
/table@6.8.2:
resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==, tarball: https://registry.npmmirror.com/table/-/table-6.8.2.tgz}
engines: {node: '>=10.0.0'}
@@ -9462,13 +9638,8 @@ packages:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, tarball: https://registry.npmmirror.com/through/-/through-2.3.8.tgz}
dev: true
- /tiny-svg@2.2.4:
- resolution: {integrity: sha512-NOi39lBknf4UdDEahNkbEAJnzhu1ZcN2j75IS2vLRmIhsfxdZpTChfLKBcN1ShplVmPIXJAIafk6YY5/Aa80lQ==, tarball: https://registry.npmmirror.com/tiny-svg/-/tiny-svg-2.2.4.tgz}
- dev: true
-
/tiny-svg@3.1.3:
resolution: {integrity: sha512-9mwnPqXInRsBmH/DO6NMxBE++9LsqpVXQSSTZGc5bomoKKvL5OX/Hlotw7XVXP6XLRcHWIzZpxfovGqWKgCypQ==, tarball: https://registry.npmmirror.com/tiny-svg/-/tiny-svg-3.1.3.tgz}
- dev: false
/tiny-warning@1.0.3:
resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==, tarball: https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz}
@@ -10177,6 +10348,10 @@ packages:
vue: 3.5.12(typescript@5.3.3)
dev: false
+ /w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, tarball: https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz}
+ dev: true
+
/wangeditor@4.7.15:
resolution: {integrity: sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==, tarball: https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz}
dependencies:
@@ -10429,6 +10604,10 @@ packages:
engines: {node: '>=12.20'}
dev: true
+ /zeebe-bpmn-moddle@1.7.0:
+ resolution: {integrity: sha512-eZ6OXSt0c4n9V/oN/46gTlwDIS3GhWQLt9jbM5uS/YryB4yN8wdrrKrtw+TpyNy0SSKWXNDHyC83nCA2blPO3Q==, tarball: https://registry.npmmirror.com/zeebe-bpmn-moddle/-/zeebe-bpmn-moddle-1.7.0.tgz}
+ dev: true
+
/zrender@5.6.0:
resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==, tarball: https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz}
dependencies:
--
Gitee
From 1e18c582122e2d97f5bc519294c449ff820dc52c Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Mon, 2 Dec 2024 09:50:29 +0800
Subject: [PATCH 47/86] =?UTF-8?q?fix:=20=E8=BE=B9=E7=95=8C=E4=BA=8B?=
=?UTF-8?q?=E4=BB=B6=E5=88=87=E6=8D=A2=E7=B1=BB=E5=88=AB=E6=97=B6=E9=9C=80?=
=?UTF-8?q?=E7=9B=91=E5=90=ACbusinessObject?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../package/penal/PropertiesPanel.vue | 2 +-
.../custom-config/ElementCustomConfig.vue | 24 +++++++++----------
2 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
index c4bc7b2e..c32c7620 100644
--- a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
@@ -56,7 +56,7 @@
自定义配置
-
+
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue b/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
index 9d8b3f57..f9cb9ac4 100644
--- a/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue
@@ -11,27 +11,25 @@ defineOptions({ name: 'ElementCustomConfig' })
const props = defineProps({
id: String,
- type: String
+ type: String,
+ businessObject: {
+ type: Object,
+ default: () => {}
+ }
})
const bpmnInstances = () => (window as any)?.bpmnInstances
const customConfigComponent = ref
(null)
watch(
- () => props.type,
+ () => props.businessObject,
() => {
- if (props.type) {
- const element = bpmnInstances().bpmnElement.businessObject
- let elementType = props.type
- if (element.eventDefinitions) {
- // 处理类似共用BoundaryEvent类型的TimerEvent
- elementType += element.eventDefinitions[0].$type.split(':')[1]
- }
- const config = CustomConfigMap[elementType]
- if (config) {
- customConfigComponent.value = config.componet
- return
+ if (props.type && props.businessObject) {
+ let val = props.type
+ if (props.businessObject.eventDefinitions) {
+ val += props.businessObject.eventDefinitions[0]?.$type.split(':')[1] || ''
}
+ customConfigComponent.value = CustomConfigMap[val]?.componet
}
},
{ immediate: true }
--
Gitee
From e34175d852c831a3ec677c51b96f943b7e49bfaf Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Mon, 2 Dec 2024 14:47:06 +0800
Subject: [PATCH 48/86] =?UTF-8?q?feat:=20bpm=E8=AE=BE=E8=AE=A1=E5=99=A8?=
=?UTF-8?q?=E9=80=82=E9=85=8Dsimple=E8=AE=BE=E8=AE=A1=E5=99=A8=EF=BC=8C?=
=?UTF-8?q?=E8=B6=85=E6=97=B6=E5=AE=A1=E6=89=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../descriptor/flowableDescriptor.json | 28 ++
.../components/BoundaryEventTimer.vue | 247 +++++++++++++++++-
2 files changed, 271 insertions(+), 4 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
index c60b524a..31fb7d85 100644
--- a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
+++ b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
@@ -1329,6 +1329,34 @@
"isAttr": true
}
]
+ },
+ {
+ "name": "BoundaryEventType",
+ "superClass": ["Element"],
+ "meta": {
+ "allowedIn": ["bpmn:BoundaryEvent"]
+ },
+ "properties": [
+ {
+ "name": "value",
+ "type": "Integer",
+ "isBody": true
+ }
+ ]
+ },
+ {
+ "name": "TimeoutHandlerType",
+ "superClass": ["Element"],
+ "meta": {
+ "allowedIn": ["bpmn:BoundaryEvent"]
+ },
+ "properties": [
+ {
+ "name": "value",
+ "type": "Integer",
+ "isBody": true
+ }
+ ]
}
],
"emumerations": []
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue
index 81ba670c..ca46b277 100644
--- a/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue
@@ -1,13 +1,252 @@
- 定时边界事件(非中断)
+ 审批人超时未处理时
+
+
+
+
+
+
+
+
+
+ 当超过
+
+ updateTimeModdle()"
+ />
+
+
+
+
+ 未处理
+
+
+ updateTimeModdle()"
+ />
+
-
+
--
Gitee
From 392273a906ed7f55e8a77fbdbb1c0500f7043321 Mon Sep 17 00:00:00 2001
From: jason <2667446@qq.com>
Date: Fri, 6 Dec 2024 22:40:37 +0800
Subject: [PATCH 49/86] =?UTF-8?q?=E3=80=90=E7=BC=BA=E9=99=B7=E4=BF=AE?=
=?UTF-8?q?=E5=A4=8D=E3=80=911=E3=80=81=E6=9D=A1=E4=BB=B6=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=E7=9A=84=E8=A1=A8=E5=8D=95=E5=AD=97=E6=AE=B5=E5=BF=85?=
=?UTF-8?q?=E9=A1=BB=E4=B8=BA=E5=BF=85=E5=A1=AB=20=202=E3=80=81=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=E6=96=B9=E5=BC=8F=20bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/nodes-config/ConditionNodeConfig.vue | 22 ++++++++-----------
1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue
index ffbf187d..09d6154f 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue
@@ -26,19 +26,13 @@
-
未满足其它条件时,将进入此分支(该分支不可编辑和删除)
+
未满足其它条件时,将进入此分支(该分支不可编辑和删除)
-
+
-
+
@@ -169,6 +164,7 @@ import {
} from '../consts'
import { getDefaultConditionNodeName } from '../utils'
import { useFormFields } from '../node'
+import { BpmModelFormType } from '@/utils/constants'
const message = useMessage() // 消息弹窗
defineOptions({
name: 'ConditionNodeConfig'
@@ -177,8 +173,8 @@ const formType = inject
[>('formType') // 表单类型
const conditionConfigTypes = computed(() => {
return CONDITION_CONFIG_TYPES.filter((item) => {
// 业务表单暂时去掉条件规则选项
- if (formType?.value !== 10) {
- return item.value === ConditionType.RULE
+ if (formType?.value === BpmModelFormType.CUSTOM && item.value === ConditionType.RULE) {
+ return false
} else {
return true
}
--
Gitee
From 0cb0b389c62656185b1fc45467741a73514c8129 Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Wed, 4 Dec 2024 08:37:45 +0800
Subject: [PATCH 50/86] =?UTF-8?q?fix:=20=E4=B8=9A=E5=8A=A1=E8=A1=A8?=
=?UTF-8?q?=E5=8D=95=E5=AD=97=E6=AE=B5=E6=9D=83=E9=99=90=E4=B8=BA=E7=A9=BA?=
=?UTF-8?q?=E6=8A=A5=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../package/penal/custom-config/components/UserTask.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTask.vue b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTask.vue
index c592ed5f..85a4b726 100644
--- a/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTask.vue
@@ -193,7 +193,7 @@ const { buttonsSetting, btnDisplayNameEdit, changeBtnDisplayName, btnDisplayName
useButtonsSetting()
// 字段权限
-const fieldsPermissionEl = ref()
+const fieldsPermissionEl = ref([])
const { formType, fieldsPermissionConfig, getNodeConfigFormFields } = useFormFieldsPermission(
FieldPermissionType.READ
)
--
Gitee
From e1f30b902a1470452e7c0ee8e689ef13092b8ef0 Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Wed, 4 Dec 2024 11:32:57 +0800
Subject: [PATCH 51/86] =?UTF-8?q?feat:=20BPM=E8=AE=BE=E8=AE=A1=E5=99=A8?=
=?UTF-8?q?=E9=80=82=E9=85=8DSimple=E8=AE=BE=E8=AE=A1=E5=99=A8=EF=BC=8C?=
=?UTF-8?q?=E5=A4=9A=E5=AE=9E=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../multi-instance/ElementMultiInstance.vue | 116 +++++++++++++++++-
1 file changed, 114 insertions(+), 2 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue b/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue
index 7cd16f77..69f5107f 100644
--- a/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue
@@ -1,6 +1,30 @@
]
-
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
依次审批
会签
@@ -76,6 +100,8 @@
diff --git a/src/views/bpm/processInstance/detail/index.vue b/src/views/bpm/processInstance/detail/index.vue
index 0461a202..c9fc539a 100644
--- a/src/views/bpm/processInstance/detail/index.vue
+++ b/src/views/bpm/processInstance/detail/index.vue
@@ -49,7 +49,7 @@
class="form-box flex flex-col mb-30px flex-1"
>
-
+
-
@@ -116,6 +116,9 @@
:process-instance="processInstance"
:process-definition="processDefinition"
:userOptions="userOptions"
+ :normal-form ="detailForm"
+ :normal-form-api="fApi"
+ :writable-fields="writableFields"
@success="refresh"
/>
@@ -126,7 +129,7 @@
diff --git a/src/views/bpm/processInstance/detail/index.vue b/src/views/bpm/processInstance/detail/index.vue
index c9fc539a..9809f7a8 100644
--- a/src/views/bpm/processInstance/detail/index.vue
+++ b/src/views/bpm/processInstance/detail/index.vue
@@ -116,7 +116,7 @@
:process-instance="processInstance"
:process-definition="processDefinition"
:userOptions="userOptions"
- :normal-form ="detailForm"
+ :normal-form="detailForm"
:normal-form-api="fApi"
:writable-fields="writableFields"
@success="refresh"
@@ -129,7 +129,7 @@
+
+
--
Gitee
From 8be0844404dec3fc1c9238af290aa3b0180b0b11 Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Thu, 12 Dec 2024 08:33:46 +0800
Subject: [PATCH 77/86] =?UTF-8?q?feat:=20bpmn=E8=AE=BE=E8=AE=A1=E5=99=A8?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0CallActivity=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../descriptor/flowableDescriptor.json | 25 ++
.../task/task-components/CallActivity.vue | 276 +++++++++++++++++-
2 files changed, 297 insertions(+), 4 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
index a5e122ea..7fe1fa79 100644
--- a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
+++ b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json
@@ -406,6 +406,31 @@
"name": "variableMappingDelegateExpression",
"isAttr": true,
"type": "String"
+ },
+ {
+ "name": "calledElementType",
+ "isAttr": true,
+ "type": "String"
+ },
+ {
+ "name": "processInstanceName",
+ "isAttr": true,
+ "type": "String"
+ },
+ {
+ "name": "inheritBusinessKey",
+ "isAttr": true,
+ "type": "Boolean"
+ },
+ {
+ "name": "businessKey",
+ "isAttr": true,
+ "type": "String"
+ },
+ {
+ "name": "inheritVariables",
+ "isAttr": true,
+ "type": "Boolean"
}
]
},
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue
index 8afba3a0..6d8268b5 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue
@@ -1,12 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 输入参数
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+ 移除
+
+
+
+
+
+
+
+
+
+ 输出参数
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+ 移除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取 消
+ 确 定
+
+
-
+const formData = ref({
+ processInstanceName: '',
+ calledElement: '',
+ inheritVariables: false,
+ businessKey: '',
+ inheritBusinessKey: false,
+ calledElementType: 'key'
+})
+const inVariableList = ref()
+const outVariableList = ref()
+const variableType = ref() // 参数类型
+const editingVariableIndex = ref(-1) // 编辑参数下标
+const variableDialogVisible = ref(false)
+const varialbeFormRef = ref()
+const varialbeFormData = ref({
+ source: '',
+ target: ''
+})
+
+const bpmnInstances = () => (window as any)?.bpmnInstances
+const bpmnElement = ref()
+const otherExtensionList = ref()
+
+const initCallActivity = () => {
+ bpmnElement.value = bpmnInstances().bpmnElement
+ console.log(bpmnElement.value.businessObject, 'callActivity')
-
+
--
Gitee
From 78279dcc0624e41efe9d49cd40e418ad5b0ac40b Mon Sep 17 00:00:00 2001
From: jason <2667446@qq.com>
Date: Fri, 13 Dec 2024 22:37:42 +0800
Subject: [PATCH 78/86] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E3=80=91=20=E5=8F=91=E8=B5=B7=E6=B5=81=E7=A8=8B?=
=?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=97=B6=EF=BC=8C=E5=8A=A0=20Loading=20?=
=?UTF-8?q?=E9=81=AE=E7=BD=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../processInstance/create/ProcessDefinitionDetail.vue | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue b/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue
index 38eebd44..3800f191 100644
--- a/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue
+++ b/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue
@@ -8,8 +8,8 @@
-
-
diff --git a/public/favicon.ico b/public/favicon.ico
index 5a7de08267811feb034bb0c54ab38ca417731aab..f8afaa79e8edaaba583a5226cd3d841f995c6c64 100644
GIT binary patch
literal 4286
zcmbu=32anF9LMqLp;bey!6={tD+q!u1*2_txy34>#RC;0ltTp#QbdA?P)JvyqJRhj
zg&v5OsAw<{>k*?O0;>sP@B$JKv>+{A72h>
z|3e|8f6epf7<0ZcrVnT`!=ZNXKl*y+HEV7#CchxO8D;nw?_dh@uobJZ6N8|!r(q)s
zF%U0c24dKPY7E14Ov5ZJ#yY$OwZD$N(AXk;f#ukaUAPgqVl67M4A&tYnRp6!V=Ojd
z4BkUMl$-LOi#eEwNtlm4cmei#q+--3K-|2IQxD)vNlf%ZQddKX#H{&S&xuE*7w
zie6BjJ>$;U`Rk
z#wuPTN^t}BKyz=x?a=%s*o_(}zTU0YdKEE@f*Zdp&syUEHsCBQ!a+oE3^u;*!AYop
zD&B|2-G#Y0jtZ>6vp9;U@f>U(%3I^KPsJ+7HfWtFbgr}TCG<|efsL;_t8ojUm~SEm
z-Cf
zUoU8$-i`V+U%4nJ#Vwxp1{jA0l*a6)ay+ge>t@%4@kqyP(h*HeNebCAci70wYljjkRmo
zx?5^(v27XDGm-AK=eM-mes`>Gvt_bAJ0@WnUf$1y%ln&1Wv+=-=a@(hYVo9_D%XS`
z>~F#k=b1>|W!|4SC+}A4+P{Cv%2sPP$4R5D3kIVErEwD|2ca`Grd3|aVg&X1*2v^}
zC^p~_enAsX#r+d+J4jgx<)=9kZK
z<6`J;hM@Pq2%kc8S0NoqbFlrC1MmZa;_AL_#wGC93@CMm)i?^h%T(jfW^7PwwJY}7
zc0H#&!>QZ6&ZJG>#7x^~&)Z+xe#$BY#Xn5nrOsFzrxR@}5lYafcQYN{Z-YOseU8u5
zm^uW-uZ@qhaaHPm**Py#@8KJh&U0VrUfFPMN@var>Ot}6JL8n=NbK{C*S#A9FCL|G
zR1RLwZ34#|Y(M2V{Dnk0R5;_bp6>j;I0lW^y;Y9-?NNSSOt(xSzJAB|BT@Vvw0CgV
zi`Pd}>U$jT?+c3OZ}-ic%<~`c=b*MpzOmY)&bk1nyM6u`?L9klwa!u`dJjivFLK7V
zIb*l4y_jylJCC})-Gyj`{~V6f_7Hj_6K)P!JZHnZbME@7)O~AdjY8DpB>Z{kEVf}8
z$}kTl2*JC5sl@b;VXnI$)ph4aL4S)sf^uns^7#!1px>=xXzwla{cHdK=d_F_W1@c>
cGwe@ey8moUwlo-%l|+=jQ;drW^E5yDF9n}Ep8x;=
literal 4286
zcmcJTdr*|u8OGm?f3Tad7j|KHxq~xpVq;A@HfgF7QY~O)Go9%q6O&2POq*#slbPnf
zwzf$$rcG^ZYDE+@N@~3q7I49+L1DRyKt#F7{U!nn%U;+^j39aYobU7VmKqZ!%ltTJ
zSayHU`<%1G3`F1^k7e(&;Z`VJu(?k;=T7X%N)jqMq!dMyZeDC3iF!z6rw+67kxV&jDKh*=XMMH7BzC%0ZZgW^F*GR;m`LJ8Nxh;MnV_2
zo#Aeu7~L8}V>!_RD+rBki)NV^cA^7!L1e&FY)JDI!(TGDXW-mnR@`bh?a0EnGI=P9
zy>>$Z2m|CjGIt$Z+!8}0*)asCbu>FBggr}a!3yv^PwX`@<_>sE4e5ZqN9V>rmTRUF
zbU(T+S`C+7@m92s-#UA`Fo4_`PSqdlNi_8Le1D!YO<=@vm4O
z$%$c4iIKfW(ZR8ZbU?mO?%glC2lvBQG7OL4g2E>3CE|D(x!lD@#>|2OxWk0scT#t^
zS6+JEa8?X~2srB%*M&`SJoL{S_(0yf@}t;S27g&Z0Hpg)z+Z89e{|ZcvsAWtlnyU!
zrooK~1ov;@oE;J_FsSek>;)U+*tyTdzLW6F6!^;ZVSuI_-@Jq7m6vJu4@{*G56tUW
zpGZTSVx!<}kX-N$2;dyp7%$QPemsxlS=d(&zn~%_Fjb*XpK`!o{mnXPeP))mj8zZ^lWb$NF4{~3AH+q%ce-ErK%W3!iN7WAAnu?S-NPqStq)-K
z^r;$jQ1|uDpfTeToz0w~uIE_Ym=?0w^$yVAEIfqUV+#(N3e
zk2~QhGcbJDsny&3bvhLwfBl_1IF%8kGpjCBvvt~9zrr8d9#JR!m$M(Jd}05>Eb4nd
zJ`&DTz3>To1b>z3MIY{C28N5L>h#j;Kcx$R41YcR4PV_s^-rhhbVi8kGeYX7r!U!S
zQoWp`s}X+Qa=*iY4)hJLtt9w=1?Lsv?f#1(Q9@*K9WgR|GWA#mr*$@egH|Q{flqJW
zfn&Lc>e2!ND{_P?Q{22wTP^vKVHzF$V&C_+Q16C#BfNFp?VUHBP>oj2B
zhz=UjK_mQU{=dKMNf%Wv_mX3|SB)O*b?E`FSmwIXFFL5s)z(Cu`t>S;|CO%wi8Gz>
zcD{3+@uDaWG)hk4Wq*?l=C;AD68_*>&6hq4$5NbB{u8&riVPuS;Bxqt{>2%98FcW<
z-UZpz{a%6r-kQ#JN!+2ZHi^e>j@Xfb
z(FH3R_9nI5>KFImbdI(Z5j@?YYO33
z34gFFoDTl5j|!g{5?GNTRI+4*l?*4In&hHK`i1Yt`Ne(~9lZ9R?`G5acM|n*SGN8s
znFXUbf8oK55?7tV%W!hALlXom0foB5=@9%tUGVsTz3@jvj0}t(u4OpB%*i{yd6`D*|GZP1pkYzYvxb4teMYa#Zj_Lo>g|rUJiD`FX%!C-Qg-g2Nw4TGLa#a|M&na
z8A`8a_#|~g>R_v;>eddvKnJhy{!TWvy`7|kyQ1Zf^VxYMQp~8#D(_{d@N%#l^n?dP
zJ>eOEc0bbbz}_Ep9p1mVhmnEN1LG{D9z=$tSMNjqf-V*rZoG@=pcx%l%Ab3d&aIih
z8eE{+mp&i+1G+xk}WiODJh<6N)JDmfKzAKZd|2|w0ncYeRMI&V=sBLj;JI14`X
znA}4Vday6K$fZk1`Dluh#aSF*>g2+Oy}Ud24Cm@=8E1fdP!-j*CXKqY;$HSP>1S?o
zig|DLDt@t+^XG}oKAp^97_-1JPiEbH%mN~Xwb-w{LX;}_oG4M?Bhm>5iNXX9qIrUK
L_}7DgzT)vecywrn
diff --git a/public/logo.gif b/public/logo.gif
index fdbd32c675f85af4ed57021ac0638a21a3c6cad3..196b8c8612451e1a7f0d9ab3e20f57a9f6eea79e 100644
GIT binary patch
literal 2385364
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
G(?{ZIXllpqoe_UnE
zH;pn9Z3On^1f9s6dAB_o$&k?Z#kG?A?$S>Y}l$bV*DX{Sm$2P&+o+348^x3yy
zgVVx6Z2-dB(8kSPYTEBePVQu&k8XWOIE4CYHsGHzakN%q({@%5pu~q8m
z@>NqSh(0JqXEK-J$o536oT*W{phCWC2bh@IrFOE!;GF|P(3kaE-1aZUR&4+Hd={A`
zU4%qdfan$=s7!je+8v&vK%D{Eu^Gzl7n$upmx#_M1)6nz+ssd_EvC%=n`0}fYED(3
zo?<~tB9S6T$acP96-xZAg=kbcdN$;<)Tlb95)IaO2er_S=Su5dkx!m|Sz1Lnp6mXp
z*nW4hKkRr4(TS2;h&4db2Du|-7PURz2$Q9F@{(vQ>c7G!P4i*AR%~t+-SA&Ua{qhMhmy(V8&L&`_Q8FR8IpyfCF)ZwNWtlwsj6UJS*j@V)+=r
znYHteVk>M)z?!>@-^0@xul-SQYDW7Lg~inIqNx6hlYt9qKWiH87rTWj$dA7r+oSjS
z<0CH0yAET?7#=c3nC=I9I{0DvfhGFpPAPK-tz@3F|2npqlcK0TMGaq;;T^Yl_PxVd
z-2sn4WG)vruN^aq>m)ej%9h0+5?&64XL?=UJGS$FYbh3URqNP31@#=QA$=2QkA2jC
z#^)3!{@gCeq;?Xd8qz@B|5vdUj{&WXz+=`xV~Lzkl>Tws#XbxQ*zc;(}P
z`mbW^X0d?P_&62S9OX^oKpygCbk4#{YwsppEeY_O-0v8>#BX=~d@MsjG}uWbUVl2a
z+LYrPT*Oh$PHZwtxaX4ZG;Cx68phre45ck4y6rv&AAAUSPhj*G$$o!3wpzw$@@mOM
zeveC;!0+7qQb3=eCE09XP9{a*!_#&|*C}RdKzfKL#U}g(|8K>%^#v2bu%d
zEr+XiT#bCrPF7fFcW50t)XJQ1O
z7y}^ZqwCd4rf9;mkDJfr-`)_$pyBnrd9)?r>jiSblUqcYLCg<&mt&|za;}eojTV*;=|NXoPs6*{Rp_f@(t%#3P6L)N=wBD=lBm&S#rl9ie->by+$H@2(Z!m%Kq79S^s|D1rawcbs
ze&GdevKv>Y7A=S1ykt7eQN7(#A`O*f#b*mx7hCRGgsYmGL{LGT7(dWBbjq@cN7z}c
zwmVm)JQlroY;X7M8)|04KXkYC-LStMa6o+`dhuJa^)hcH765sroaby1s2b=pt6S`e
zQ!WyH<12S<8O?LNJ5GLhE9Io2AR9$AO7HxNe;Ic=D7>z3GiV!O*JB%AbGvIH(K;6y
ze?E78cV0IyEPu^5kPWOy^^mANigvv~=a@Uh|H9K+6rkSq4s&WgglFXRZ1SPs-Sxu5
zh6~aq$^zc5ZN5SKh4wozf9vKCW2JHg}jULaj-`V)b~vF@Kk>+$;}}-BKnQk-a;!P93g>ML%
zAALIzTZ{shj^7&olWya&MvS}pFQASR()-ZIn?BR~oq}33y-yAtnrGl)ZU6SuD>~|A
zpRyRA_ZvP93y?8x3uy_rX$?1iw{I$^lw9&+VShNb8t;FqBD}al{eD#XQTn)_enVv<
zfTnJ^r%%{sFqnJjndg%QE%5~vFgVeD<#2igKvVMH@r6(qLEvzlY6O{FqrYdXZiBBc
zDW+bFB*mA^004OiilG!b0N9&Fla;9u(F{&m0qaBqClKyalF(VDC-n;ED>0!IRiQWM
zmP=olb3hNaCxV_ELKFePhYaszU$C4h`CeoxUz2&!wELa{fGOM|e6isIx1{iT7oqsYJ$5)-P+2zm0zrg6&!)UXVQ&x_bdO#3j#STabKJnnnn
zQ!8It((u?yUoNSK%jMxFlTl`jybl}oNPUdnbcS$|sK(Nw=EQ4|fgI)gA=S-2O=t+idPAAGq=UDM-RY^ZC
zA$NWPQJbERUw(pR^L&=D!JkSKxk}5@1Yjp81cimXYYha)_9#ci1N9P!6DWK$^QLkNstH&~Qs(s1iK~r<8L|>3v%J9(
zzABDTXd+#NTBtx?D;Rbm&fzZ#iH2s!8YSt(g(Y^8@up{RcV)zGX3Up6Q@8LGPUX*C
z<-5uol?dd8ivBXjTHC
zl_=N&%b)!r9_rD
zPs7_BYbP11q?Jpet*S<0uEUhS9b2~RhH++QrkuLW?z$IMrQ(RBMb+44SP`#LJ%4q6
zD`xR-O%s)x4FPsT=2?x=iwNp&+;;zRNe8|)sVexHaMx)=qeSDqWBbaa5rM``kldKj
z-Kfl1`4G3h#X@~Vpy?Ml-wfQe&`k3aQbs+~Do16MzFx-Blps+ZBGpy=LB;HXIkc0x
zFvFLh9k<0sqD4ooUB{%wXZ6Le+!o&MmKU2XxR_0ESnBH}bHJ+id^lg~h7!2o{PCs(
zlBe~Pzrc#I;TYyZ0V`NAY*xi}RTnCeG33`&tJ9mQ(z57`iSLZ7?Tnv6cE+l8qV3f3
z*1q`O)o!-kzKhv0K;MA^YE5BsdqDchzNgZBtMaEbMIt$(y0&{=7u9l;McyCbH{*Bi
z-@FnV!CYHw!qusP)1|xJIY8ArB-9)4)Sm39rV>_{QQL?)fkveP5YYfIYoOxhRX@OK
zg@|p_@}!;+qSogzdx>0q5Sn@h6^L3@cut%
zM`{OfX9tE@T4MZr&q5ogow_jKsQ-tuyKIXp@V5rc(B0i2(jeU+Akv`HE!`#E-Q5k+
z-Q68ScQ;5k(lyWMKTbX8#rX#Nx@O+&wb$=nLNU{XBonON9s2@J#
zv<%a~MW%7ArbmLOi8`iXr(j4?@+dr!D;Y|wHD@GFCn9?(?2l&*wHFc{U|3(-id-u>
z1>4_Fn@Pg~d??;@0#ppLRTtDO2tfs(I%*|f7kx;UP~^G?_(mMJ0rIbNRuL}R5EF_W
z(+poH)RH>0Ta@)%
zG=OGt*Ut51T58T*ZGD{zcr6YR#Iq_};`4Cfxm=3wfQozVP$%j6Bv7g&H!4ZIK)e%@
zqrJY+!M`THQeXvqVjPP=3S#06vX5*Rgj(IBSY3F>fanB%&eikRjmrwqFnVNxED2r@
z(^{XL3xn>O;y6H{e56da$+C97`gAQNGA}){Cx6;@aUGo4a%&c?PXO1~wf#1kOz00e
z2a&7x&SnjIdOziDh{)w4kZe+W?a&Bqo;|K+#VkE^^hJ$t5?Dc4BX30oPs~1zz-#u4
z3$(p7yXH^3q6z&H^I{8H#q`j?+IL%_dYP2v+jx9lAw9<_Q1jMd+j*z4L)*D(JGH0t
zwx^2}eSWsnPE4rITi(t{Wj<;Et^q?H%!1&hiTp&*kW<;9>A-
z;LPCy|0EnG`6d7O;d5Cr3+zfm)ZmEysU%Veeem=;O-OljeiWnhSc-&gAF0n7^w2~6-Q4H$*_=j1@?n5=TX<@<-kvnt~Kln
z8oaTw?SG&Mq5A(o5n`TIkbbGXC-sn-kl0kX-@}_%QiP}QAqMTyZDkpdge+)SvI5Bi0&o#`>6xhs
zm%>u>4^8!H(j<5Oq6p-%;!nkT5!Si1fx)#q(uiD1=JZT_g@~H$9~+P9xmSKs=R+uB
zt53xCVjS$pJ#g?UrA=lc1Op8ID~j+-`v-OPM1?wbmGuHmM#kP$Xiui=+t5Ll*ITM?
zwqLLEVJlit*htZ(4*2#veIdOhKlu-e5VLNf-;p?0Ce`lUk`4-EP|YZxy@CKuLIR8Kk3Yg)B`
zxiSP#akX0ijgbll&)`L=l89!&qUvc$mfhjo%H{QcLJ$ATn1Z%@%iwHZCza9p4&jeJ{K{t)C@r)35pt$#r5tL@d10y$R%6
zRqeKF=d^S8_r-ABOuMpm9jya3RlSMHPo*-Wk3RfcMd*}K5Vr1c|FliK>B0Z|CBbXk
zc4PAZB8YV1&@eN+@~Gqn9h#lovPAkv%U3h{j@T%osD8eU0m>v)M4C1|oAt4?;RFcaw
z0GSxe$0x@DFR0$1KV=Vm-wMvX(V@q}U`Q#1{EH%dMsuxE%$0?RkW?Pj;M$5P
z^;;t3UJ|kLc^A+{pr@Ei(}8s-7k$7#3yx`l|3VRz_x&NZEoa{1_3fz6PTRG)Byy23$ii#fxg*6Z}Xm)h?YT
zvOa}{w|p(Uw2gE7R3j-QP6vUU`tQJYZab6`FLiw6eSzmOa7~GW{I9zJBYp6;
zHWLQhF#Gk~?;w{&Y`~3F^rtY2xe$Y*w3=TmM;8{zlmH>^oi^c|OWjQ5z%NrOJ<-W1
zw|H7ak;Wl*Ik@~ki7mKeTa$Z`7Rz8ZA@9a}?>cM3nGFFO5R^!)%Le(O;is(0N`KnS
zO<{mWro0Hn{Ln-P!zDl^+
zn5Qjg>bEonb=A?8h1R=!T6$ZF8fIgC%L6L?#V20=hyMr57wwD$%YQCz%M4
zEB+N82Qr&aE6%cL*;ZDw&YGkeQR(Z@JKUf>IIZms<@iBCYrFVWL`>RbW_s3B+
zD*9ml-EHLv*8U`tt0?Sj2&^`9qDkQz2+Hm$-Jr$+W|a#!IR*oqEU5;5)cR~VxkFKz
zeh8c?8{pjW=2|0XcYJ^a3L7~@>wb54-{;);pKGdJGl3(@mEDPOCtB`~1Y^bWw}8h~
zejsEFPQqt)n0b!~hU%7a>o<%HJx-9$M)|{pjbvPwUWDwucnRbcXMJt*_^EL?XP3|*
zbspKU3Yq8%K%^Ytea_)0!>&G?F8;NMf#n?5|EVX>y3z!~__K1`^EyJmY#IMptFoo)
z0#1GdYk=*E)(IgIZIW>2B*SU>ph+(FnR$Zw>1oiP#1>=_J^x98`~sbKx%SRFk}---
z4F+m`kmD7d*qUzfX7&K~G_i(wwAZfK=Q65gY?sNVbQ=7#hj4cK7TM@KY%N&c-S_V>
z9+XUAETKmp_B5@S%$34TVMMpi70KTwQ)o=jrExWo$o-;3!mkv@>Q!#no}lJm{^dj=
zGICXW2VbF;09meaY79mZKvk`uxMJyTmDJ+37ekXv`Zk=gNt&x3qQL~{Shb6uSZ7LB8eiTw8_r9
zrb*8;Sphzr``~vMHRDc_n5&!RzVKhY&0@WyepNWftgJ@aJxv