From 3aedad63dd01f1fc5154cb520af32edab967d6e0 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周一, 12 5月 2025 09:15:26 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo

---
 PipeLineLems/pipelinelems_web/src/widgets/OrderManagement-main/dialog/segment/segment.tsx |  128 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 128 insertions(+), 0 deletions(-)

diff --git a/PipeLineLems/pipelinelems_web/src/widgets/OrderManagement-main/dialog/segment/segment.tsx b/PipeLineLems/pipelinelems_web/src/widgets/OrderManagement-main/dialog/segment/segment.tsx
new file mode 100644
index 0000000..3e65244
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/OrderManagement-main/dialog/segment/segment.tsx
@@ -0,0 +1,128 @@
+import { computed, defineComponent, ref, onMounted, watch } from 'vue'
+import BaseDialog from '@/components/BaseDialog/index.vue'
+import styles from './segment.module.scss'
+import { getSegments } from '../../api/process'
+import DyForm from '@/components/DyForm/DyForm'
+import { _t } from '@/libs/Language/Language'
+
+interface SegmentType {
+  segmentId: string
+  segmentName: string
+}
+export default defineComponent({
+  name: 'OrderManagementDialogSegment',
+  props: {
+    modelValue: {
+      type: Boolean,
+      default: false,
+    },
+    id: {
+      type: String,
+      default: '',
+    },
+  },
+  emits: ['update:modelValue', 'confirm'],
+  setup(props, { emit }) {
+    const visible = computed({
+      get() {
+        return props.modelValue
+      },
+      set(value) {
+        emit('update:modelValue', value)
+      },
+    })
+    const formRef = ref<any>(null)
+    const formData = ref<any>({
+      segment: [],
+    })
+    const segmentList = ref<any[]>([])
+    const formItemProps = computed(() => [
+      {
+        prop: 'segment',
+        el: 'select',
+        options: segmentList,
+        label: _t('浜х嚎娈�'),
+        width: '350px',
+        collapseTags: true,
+        multiple: true,
+        collapseTagsTooltip: true,
+        maxCollapseTags: 5,
+        clearable: true,
+        noDataText: _t('璇ュ伐鍗曟病鏈夊彲浣跨敤鐨勪骇绾挎'),
+        rules: [
+          {
+            required: true,
+            message: _t('璇烽�夋嫨浜х嚎娈�'),
+            trigger: 'change',
+            type: 'array',
+          },
+        ],
+      },
+    ])
+    const init = async () => {
+      const res = await getSegments(props.id)
+      segmentList.value = res.map((item: SegmentType) => ({
+        value: item.segmentId,
+        name: item.segmentName,
+      }))
+      formData.value = {
+        segment: res.map((item: SegmentType) => item.segmentId),
+      }
+    }
+
+    const onClose = () => {
+      visible.value = false
+    }
+
+    const onConfirm = async () => {
+      try {
+        await formRef.value?.validate()
+        visible.value = false
+        const segment = formData.value?.segment || []
+        const data = segmentList.value
+          .map((item: any) => {
+            if (segment.includes(item.value)) {
+              return {
+                segmentId: item.value,
+                segmentName: item.name,
+              }
+            }
+            return null
+          })
+          .filter((v) => v)
+
+        emit('confirm', {
+          segments: data,
+        })
+      } catch (error) {
+        console.error(error)
+      }
+    }
+
+    watch(
+      () => props.modelValue,
+      (value) => {
+        if (value) {
+          init()
+        }
+      }
+    )
+
+    return () => (
+      <BaseDialog
+        v-model={visible.value}
+        title={_t('浜х嚎娈甸厤缃�')}
+        onClose={onClose}
+        onConfirm={onConfirm}
+      >
+        <div class={styles.segmentDialog}>
+          <DyForm
+            ref={formRef}
+            v-model:formData={formData.value}
+            formItemProps={formItemProps.value}
+          ></DyForm>
+        </div>
+      </BaseDialog>
+    )
+  },
+})

--
Gitblit v1.9.3