From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/components/bpmnProcessDesigner/package/penal/time-event-config/DurationConfig.vue | 86 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 86 insertions(+), 0 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/penal/time-event-config/DurationConfig.vue b/src/components/bpmnProcessDesigner/package/penal/time-event-config/DurationConfig.vue
new file mode 100644
index 0000000..1aa6a0b
--- /dev/null
+++ b/src/components/bpmnProcessDesigner/package/penal/time-event-config/DurationConfig.vue
@@ -0,0 +1,86 @@
+<template>
+ <div>
+ <div style="margin-bottom: 10px"
+ >褰撳墠閫夋嫨锛�<el-input v-model="isoString" readonly style="width: 300px"
+ /></div>
+ <div v-for="unit in units" :key="unit.key" style="margin-bottom: 8px">
+ <span>{{ unit.label }}锛�</span>
+ <el-button-group>
+ <el-button
+ v-for="val in unit.presets"
+ :key="val"
+ size="mini"
+ @click="setUnit(unit.key, val)"
+ >{{ val }}</el-button
+ >
+ <el-input
+ v-model.number="custom[unit.key]"
+ size="mini"
+ style="width: 60px; margin-left: 8px"
+ placeholder="鑷畾涔�"
+ @change="setUnit(unit.key, custom[unit.key])"
+ />
+ </el-button-group>
+ </div>
+ </div>
+</template>
+
+<script setup>
+import { ref, watch, computed } from 'vue'
+const props = defineProps({ value: String })
+const emit = defineEmits(['change'])
+
+const units = [
+ { key: 'Y', label: '骞�', presets: [1, 2, 3, 4] },
+ { key: 'M', label: '鏈�', presets: [1, 2, 3, 4] },
+ { key: 'D', label: '澶�', presets: [1, 2, 3, 4] },
+ { key: 'H', label: '鏃�', presets: [4, 8, 12, 24] },
+ { key: 'm', label: '鍒�', presets: [5, 10, 30, 50] },
+ { key: 'S', label: '绉�', presets: [5, 10, 30, 50] }
+]
+const custom = ref({ Y: '', M: '', D: '', H: '', m: '', S: '' })
+const isoString = ref('')
+
+function setUnit(key, val) {
+ if (!val || isNaN(val)) {
+ custom.value[key] = ''
+ return
+ }
+ custom.value[key] = val
+ updateIsoString()
+}
+
+function updateIsoString() {
+ let str = 'P'
+ if (custom.value.Y) str += custom.value.Y + 'Y'
+ if (custom.value.M) str += custom.value.M + 'M'
+ if (custom.value.D) str += custom.value.D + 'D'
+ if (custom.value.H || custom.value.m || custom.value.S) str += 'T'
+ if (custom.value.H) str += custom.value.H + 'H'
+ if (custom.value.m) str += custom.value.m + 'M'
+ if (custom.value.S) str += custom.value.S + 'S'
+ isoString.value = str === 'P' ? '' : str
+ emit('change', isoString.value)
+}
+
+watch(
+ () => props.value,
+ (val) => {
+ if (!val) return
+ // 瑙f瀽ISO 8601瀛楃涓插埌custom
+ const match = val.match(
+ /^P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/
+ )
+ if (match) {
+ custom.value.Y = match[1] || ''
+ custom.value.M = match[2] || ''
+ custom.value.D = match[3] || ''
+ custom.value.H = match[4] || ''
+ custom.value.m = match[5] || ''
+ custom.value.S = match[6] || ''
+ updateIsoString()
+ }
+ },
+ { immediate: true }
+)
+</script>
--
Gitblit v1.8.0