From 5b189017d143be6366f56ffcdd3c3699a381e034 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 20 5月 2025 12:43:55 +0800
Subject: [PATCH] 22

---
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/type/type.d.ts                                                         |   45 
 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs                                   |   82 +
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTask.ts                                             |   30 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.tsx                                      |  409 ++++++
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTaskQueryDrawer.ts                                  |   35 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/enum.ts                                                                |   15 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTaskQueryDrawer.ts                                          |   44 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/index.ts                                                               |   14 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/WorkTask.module.scss                                             |    7 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/WorkTask.tsx                                                     |   80 +
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskQueryDrawer.tsx                                    |  879 +++++++++++++
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskDrawer.tsx                                         |  655 ++++++++++
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer.module.scss |    3 
 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs                       |  305 ++++
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTask.ts                                                     |   41 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/Config.ts                                         |  217 +++
 Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/EntityModeQueryDrawer模板.txt                                                |   42 
 HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj                                                              |    2 
 /dev/null                                                                                                                 |  297 ----
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskDrawer/WorkTaskDrawer.tsx                   |   61 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer.tsx         |   71 +
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskDrawer/WorkTaskDrawer.module.scss           |    3 
 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Scripts/UpdateMigrations.bat                                        |    2 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTask.ts                                                |  275 ++++
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTaskDrawer.ts                                               |   44 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTaskDrawer.ts                                       |   34 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/config/WorkTask.json                                             |    3 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/File.ts                                                    |   31 
 PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.module.scss                              |  113 +
 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/CMSPluginDbContext.cs                                               |    1 
 30 files changed, 3,505 insertions(+), 335 deletions(-)

diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj b/HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj
index 69a13a5..37ba0cf 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj
@@ -11,7 +11,7 @@
     </PropertyGroup>
 
     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
-        <CMSRootPath>D:\syc\CMS Editor</CMSRootPath>
+      <CMSRootPath>D:\Program Files\CMS Editor</CMSRootPath>
         <OutputPath>$(CMSRootPath)\plugins\cms.plugin.hiawms</OutputPath>
     </PropertyGroup>
 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/File.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/File.ts
new file mode 100644
index 0000000..9162fef
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/File.ts
@@ -0,0 +1,31 @@
+import { importFileToService, exportFileToClient } from '@/api/file' 
+import { ElMessage } from 'element-plus' 
+import { downloadFile } from '@/utils' 
+import dayjs from 'dayjs' 
+ 
+export const useFile = () => { 
+  /** 
+   * 瀵煎叆鏂囦欢 
+   * @param url 
+   */ 
+  const importFile = async (url: string, file: File) => { 
+    const formData = new FormData() 
+    formData.append('file', file) 
+    await importFileToService(url, formData) 
+    ElMessage('瀵煎叆鎴愬姛') 
+  } 
+  /** 
+   * 瀵煎嚭鏂囦欢 
+   * @param url 
+   */ 
+  const exportFile = async (url: string, params: any, name: string) => { 
+    const res = await exportFileToClient(url, params) 
+    downloadFile(res, `${name}_${dayjs().format('YYYYMMDDHHMMss')}.xlsx`) 
+    ElMessage.success('瀵煎嚭鎴愬姛') 
+  } 
+ 
+  return { 
+    importFile, 
+    exportFile, 
+  } 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTask.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTask.ts
new file mode 100644
index 0000000..a3f1c4d
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTask.ts
@@ -0,0 +1,275 @@
+import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue' 
+import { injectModel } from '@/libs/Provider/Provider' 
+import { WorkTask } from '../Models/WorkTask' 
+import { ElMessage } from 'element-plus' 
+import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
+import { useFile } from './File' 
+ 
+interface CurrentType { 
+  row: any 
+  index: number 
+} 
+export const useWorkTask = (props: any, ctx?: any) => { 
+  const workTask = injectModel<WorkTask>('workTask') 
+  const { exportFile } = useFile() 
+  /** 
+   * 澶撮儴閰嶇疆 
+   */ 
+  const headers = ref({}) 
+  /** 
+   * 鍔ㄦ�佸垪閰嶇疆 
+   */ 
+  const workTaskColumns = ref<Record<string, any>>([]) 
+  /** 
+   * 鎼滅储鍊� 
+   */ 
+  const search = ref('') 
+ 
+  /** 
+   * 鎺掑簭 
+   */ 
+  const sort = ref(0) 
+  /** 
+   * 閫夋嫨椤� 
+   */ 
+  const selection = ref([]) 
+  /** 
+   * 褰撳墠閫変腑鐨勮 
+   */ 
+  const current = ref<any>(null) 
+  /** 
+   * 鏁版嵁婧� 
+   */ 
+  const dataSource: Ref<any[]> = ref([]) 
+ 
+  /** 
+   * 琛ㄦ牸 
+   */ 
+  const tableRef = ref() 
+  const dialogConfig = reactive({ 
+    visible: false, 
+    title: '', 
+    isAdd: false, 
+  }) 
+  const dialogConfigForQuery = reactive({ 
+    visible: false, 
+    title: '', 
+    isAdd: false, 
+  }) 
+ 
+ 
+  const dialogSettingConfig = reactive({ 
+    visible: false, 
+    title: '', 
+  }) 
+ 
+  /** 
+   * 鍒嗛〉鏁版嵁 
+   */ 
+  const paginationParams = ref({}) 
+ 
+  /** 
+   * 鎵撳紑璇︽儏 
+   * @param row 
+   */ 
+  const openDetail = (row: any) => { 
+    current.value = row 
+    dialogConfig.visible = true 
+    dialogConfig.title = row.name 
+    dialogConfig.isAdd = false 
+    sort.value = row.sort 
+  } 
+ 
+  const contextMenu = [ 
+    { 
+      label: '灞曞紑璇︽儏', 
+      fn: (c: CurrentType) => { 
+        current.value = null 
+        sort.value = c.row.sort 
+        nextTick(() => openDetail(c.row)) 
+      }, 
+      divided: true, 
+      icon: 'o', 
+    }, 
+    // { 
+    //   label: '鍚戜笂娣诲姞', 
+    //   fn: (c: CurrentType, pageNum: number) => { 
+    //     current.value = null 
+    //     sort.value = c.index + 1 + (pageNum - 1) * 50 
+    //     dialogConfig.visible = true 
+    //     dialogConfig.title = '娣诲姞' 
+    //     dialogConfig.isAdd = false 
+    //   }, 
+    //   divided: true, 
+    //   icon: 'up', 
+    // }, 
+    // { 
+    //   label: '鍚戜笅娣诲姞', 
+    //   fn: (c: CurrentType, pageNum: number) => { 
+    //     current.value = null 
+    //     sort.value = c.index + 2 + (pageNum - 1) * 50 
+    //     dialogConfig.visible = true 
+    //     dialogConfig.title = '娣诲姞' 
+    //     dialogConfig.isAdd = false 
+    //   }, 
+    //   divided: true, 
+    //   icon: 'down', 
+    // }, 
+    // { 
+    //   label: '鍒涘缓鍓湰', 
+    //   fn: async ({ row }: CurrentType) => { 
+    //     await workTask.cloneData([row.id]) 
+    //     ElMessage.success('鍒涘缓鍓湰鎴愬姛') 
+    //     tableRef.value?.getList() 
+    //   }, 
+    //   divided: true, 
+    //   icon: 'copy', 
+    // }, 
+    { 
+      label: '鍒犻櫎', 
+      fn: async (c: CurrentType) => { 
+        const names = selection.value.map((item: { son_TaskCode: string }) => item.son_TaskCode) 
+        ConfirmBox( 
+          `鏄惁鍒犻櫎${names.length ? names.join(',') : c.row.son_TaskCode}` 
+        ).then(async () => { 
+          const ids = selection.value.map((item: { id: string }) => item.id) 
+          await workTask.deleteWorkTasks(ids.length ? ids : [c.row.id]) 
+          ElMessage.success('鍒犻櫎鎴愬姛') 
+          tableRef.value.getList() 
+        }) 
+      }, 
+      icon: 'close', 
+    }, 
+  ] 
+ 
+  const onCheck = (records: any) => { 
+    selection.value = records 
+  } 
+ 
+  const onAddWorkTask = () => { 
+    const params = tableRef.value?.getPaginationParams() 
+    current.value = null 
+    dialogConfig.visible = true 
+    dialogConfig.isAdd = true 
+    dialogConfig.title = '娣诲姞' 
+    sort.value = params.totalCount + 1 
+  } 
+ 
+  //鐐瑰嚮鎸夐挳銆愰珮绾ф煡璇€�� 
+  const onAdvancedQuery = () => { 
+    const params = tableRef.value?.getPaginationParams() 
+    current.value = null 
+    dialogConfigForQuery.visible = true 
+    dialogConfigForQuery.isAdd = true 
+    dialogConfigForQuery.title = '楂樼骇鏌ヨ' 
+  } 
+  
+  const onConfirmWorkTask = async () => { 
+    dialogConfig.visible = false 
+    if (dialogConfig.isAdd) { 
+      tableRef.value?.scrollToRow({ 
+        skip: true, 
+      }) 
+    } else { 
+      await tableRef.value?.getList() 
+    } 
+  } 
+  /** 
+   * 琛岀偣鍑绘椂鏇存柊current 
+   */ 
+  const onRowClick = ({ row }: any) => { 
+    if (dialogConfig.visible && current.value) { 
+      current.value = row 
+    } 
+  } 
+  /** 
+   * 瀵煎嚭 
+   */ 
+  const onExport = (data={}) => { 
+    //const params = tableRef.value?.getParams() 
+    exportFile('/api/v1/PipeLineLems/workTask/export', data, '浣滀笟浠诲姟') 
+  } 
+ 
+  /** 
+   * 鍏抽敭瀛楁悳绱� 
+   */ 
+  const onSearch = () => { 
+    tableRef.value?.getList({ 
+      Filter: search.value, 
+    }) 
+  } 
+ 
+  /** 
+   * 閲嶇疆琛ㄦ牸鏁版嵁 
+   */ 
+  const reloadList = () => { 
+    tableRef.value?.getList() 
+  } 
+  /** 
+   * 涓婁紶鎴愬姛 
+   */ 
+  const onSuccess = () => { 
+    tableRef.value?.getList() 
+    ElMessage.success('瀵煎叆鎴愬姛') 
+  } 
+  /** 
+   * 澶辫触 
+   * @param err 
+   */ 
+  const onError = (err: any) => { 
+    try { 
+      const message = JSON.parse(err.message) 
+      ElMessage.error(message.msg) 
+    } catch (error) { 
+      ElMessage.error('瀵煎叆澶辫触') 
+    } 
+  } 
+  /** 
+   * 涓婁紶閽╁瓙 
+   */ 
+  const onBeforeUpload = (file: File) => { 
+    const format = ['xlsx', 'xls', 'csv'] 
+    if (!format.includes(file.name.split('.')[1])) { 
+      ElMessage.error('瀵煎叆鏂囦欢鏍煎紡涓嶆纭紝璇峰鍏�.xlsx/.xls涓�.csv鏍煎紡鐨勬枃浠�') 
+      return false 
+    } 
+    return true 
+  } 
+ 
+  onMounted(() => { 
+    headers.value = { 
+      Authorization: `Bearer ${sessionStorage.getItem('Token')}`, 
+      'X-Project': sessionStorage.getItem('X-Project'), 
+    } 
+  }) 
+ 
+  ctx.expose({ 
+    reloadList, 
+  }) 
+ 
+  return { 
+    dataSource, 
+    contextMenu, 
+    dialogConfig, 
+    dialogConfigForQuery, 
+    dialogSettingConfig, 
+    tableRef, 
+    current, 
+    search, 
+    sort, 
+    workTaskColumns, 
+    paginationParams, 
+    headers, 
+    onBeforeUpload, 
+    onError, 
+    onSuccess, 
+    openDetail, 
+    onSearch, 
+    onExport, 
+    onRowClick, 
+    onConfirmWorkTask, 
+    onCheck, 
+    onAddWorkTask, 
+    onAdvancedQuery 
+  } 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskDrawer.tsx b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskDrawer.tsx
new file mode 100644
index 0000000..77fb5f5
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskDrawer.tsx
@@ -0,0 +1,655 @@
+import { 
+  ref, 
+  onMounted, 
+  reactive, 
+  computed, 
+  Ref, 
+  watch, 
+  SetupContext, 
+  h, 
+} from 'vue' 
+import { injectModel } from '@/libs/Provider/Provider' 
+import { WorkTaskDrawer } from '../Models/WorkTaskDrawer' 
+import { ElMessage } from 'element-plus' 
+import isEqual from 'lodash/isEqual' 
+import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
+import { cloneDeep } from 'lodash' 
+// 寮曞叆鍏叡閫夐」閰嶇疆  
+import {   
+  BOOLEAN_OPTIONS_AddEdit  
+} from '@/utils/commonOptionConstants';  
+ 
+export const useWorkTaskDrawer = (props: any, ctx?: any) => { 
+  const workTaskDrawer = injectModel<WorkTaskDrawer>('workTaskDrawer') 
+  /** 
+   * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 
+   */ 
+  const initiateData: Ref<Record<string, any>> = ref({}) 
+  const formData = ref<Record<string, any>>({}) 
+  // ref 
+  const formRef = ref() 
+ 
+  const disabled = ref(false) 
+ 
+  const current = computed(() => { 
+    return props.row || null 
+  }) 
+ 
+   
+  const datePicker = (attrs) => { 
+    return ( 
+      <el-date-picker 
+        type="date" 
+        format="YYYY-MM-DD HH:mm:ss" 
+        formatValue="YYYY-MM-DD HH:mm:ss" 
+        {...attrs} 
+      ></el-date-picker> 
+    ) 
+  } 
+  const inputNumber = (attrs) => { 
+    return ( 
+      <el-input-number 
+        min="1" 
+        step="1" 
+        precision="0" 
+        {...attrs} 
+      ></el-input-number> 
+    ) 
+  } 
+ 
+  const dateTimePicker = (attrs) => { 
+    return ( 
+      <el-date-picker 
+        type="datetime" 
+        format="YYYY-MM-DD HH:mm:ss" 
+        formatValue="YYYY-MM-DD HH:mm:ss" 
+        {...attrs} 
+      ></el-date-picker> 
+    ) 
+  } 
+ 
+  const visible = computed({ 
+    get() { 
+      return props.modelValue 
+    }, 
+    set(val) { 
+      ctx.emit('update:modelValue', val) 
+    }, 
+  }) 
+  /** 
+   * 娣诲姞鐨刦orm瀛楁 
+   */ 
+  const formItems = reactive([ 
+                    { 
+                   label: '瀛愪换鍔$紪鐮�', 
+                   prop: 'son_TaskCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ瓙浠诲姟缂栫爜', 
+              rules: [{required: true, message: '瀛愪换鍔$紪鐮佷笉鑳戒负绌�', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '浠诲姟缂栫爜', 
+                   prop: 'taskCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ换鍔$紪鐮�', 
+              rules: [{required: true, message: '浠诲姟缂栫爜涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '璁″垝鐘舵��', 
+                   prop: 'workPlanStatus', 
+                   el: 'select', 
+                   clearable:true, 
+                   options: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ鍒掔姸鎬�', 
+              rules: [{required: true, message: '璁″垝鐘舵�佷笉鑳戒负绌�', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鍙枡鐘舵��', 
+                   prop: 'callMaterialStatus', 
+                   el: 'select', 
+                   clearable:true, 
+                   options: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ彨鏂欑姸鎬�', 
+              rules: [{required: true, message: '鍙枡鐘舵�佷笉鑳戒负绌�', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鍘熸枡鏍囪瘑', 
+                   prop: 'dataIdentifier', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ師鏂欐爣璇�', 
+                }, 
+                { 
+                   label: '鍘熸枡鍨嬪彿', 
+                   prop: 'materialMode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ師鏂欏瀷鍙�', 
+                }, 
+                { 
+                   label: '闀垮害(mm)', 
+                   prop: 'length', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ暱搴�(mm)', 
+              rules: [{required: true, message: '闀垮害(mm)涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鎵撶爜鍐呭', 
+                   prop: 'markingContent', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墦鐮佸唴瀹�', 
+                }, 
+                { 
+                   label: '鎵撶爜浣嶇疆', 
+                   prop: 'markingPosition', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墦鐮佷綅缃�', 
+              rules: [{required: true, message: '鎵撶爜浣嶇疆涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鍒囧壊浣嶇疆', 
+                   prop: 'cuttingPosition', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ垏鍓蹭綅缃�', 
+              rules: [{required: true, message: '鍒囧壊浣嶇疆涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '绠℃鏁伴噺', 
+                   prop: 'quantity', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 1,
+                   precision: 0, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ娈垫暟閲�', 
+              rules: [{required: true, message: '绠℃鏁伴噺涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '娉曞叞鍘氬害(mm)', 
+                   prop: 'flangeThickness', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ硶鍏板帤搴�(mm)', 
+              rules: [{required: true, message: '娉曞叞鍘氬害(mm)涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '娉曞叞鐩村緞(mm)', 
+                   prop: 'flangeInnerDiameter', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ硶鍏扮洿寰�(mm)', 
+              rules: [{required: true, message: '娉曞叞鐩村緞(mm)涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '娉曞叞鍏О鍘嬪姏', 
+                   prop: 'weldingHeatInput', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ硶鍏板叕绉板帇鍔�', 
+                }, 
+                { 
+                   label: '娉曞叞鍐茬爜鍐呭', 
+                   prop: 'pipeAllowableStress', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ硶鍏板啿鐮佸唴瀹�', 
+                }, 
+                { 
+                   label: '濂楃闀垮害(mm)', 
+                   prop: 'pipeDiameter', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ绠¢暱搴�(mm)', 
+              rules: [{required: true, message: '濂楃闀垮害(mm)涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '濂楃鐩村緞(mm)', 
+                   prop: 'pipeWallThickness', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ绠$洿寰�(mm)', 
+              rules: [{required: true, message: '濂楃鐩村緞(mm)涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '宸ュ巶浠g爜', 
+                   prop: 'factoryCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ伐鍘備唬鐮�', 
+                }, 
+                { 
+                   label: '浜у搧浠g爜', 
+                   prop: 'productCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ骇鍝佷唬鐮�', 
+                }, 
+                { 
+                   label: '宸ヤ綅浠g爜', 
+                   prop: 'workstationCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ伐浣嶄唬鐮�', 
+                }, 
+                { 
+                   label: '璁惧浠g爜', 
+                   prop: 'equipmentCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ澶囦唬鐮�', 
+                }, 
+                { 
+                   label: '浜х嚎缂栫爜', 
+                   prop: 'prodLineCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ骇绾跨紪鐮�', 
+                }, 
+                { 
+                   label: '鑸瑰彿', 
+                   prop: 'shipNumber', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ埞鍙�', 
+                }, 
+                { 
+                   label: '椤圭洰鍙�', 
+                   prop: 'projectNumber', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ」鐩彿', 
+                }, 
+                { 
+                   label: '宸ュ簭鍚嶇О', 
+                   prop: 'processName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ伐搴忓悕绉�', 
+                }, 
+                { 
+                   label: '绠′欢缂栫爜', 
+                   prop: 'pipeFittingCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ浠剁紪鐮�', 
+                }, 
+                { 
+                   label: '椤哄簭鍙�', 
+                   prop: 'preSerialNumber', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ『搴忓彿', 
+                }, 
+                { 
+                   label: '绠℃缂栫爜', 
+                   prop: 'pipeSpecCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ娈电紪鐮�', 
+                }, 
+                { 
+                   label: '绠℃鍚嶇О', 
+                   prop: 'pipeSectionName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ娈靛悕绉�', 
+                }, 
+                { 
+                   label: '澶栧緞(mm)', 
+                   prop: 'outerDiameter', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ寰�(mm)', 
+              rules: [{required: true, message: '澶栧緞(mm)涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '澹佸帤(mm)', 
+                   prop: 'thickness', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ鍘�(mm)', 
+              rules: [{required: true, message: '澹佸帤(mm)涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鏉愯川', 
+                   prop: 'material', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ潗璐�', 
+                }, 
+                { 
+                   label: '宸ヨ壓娴佸悜缂栧彿', 
+                   prop: 'processRouteNumber', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ伐鑹烘祦鍚戠紪鍙�', 
+                }, 
+                { 
+                   label: '璁″垝寮�濮嬫椂闂�', 
+                   prop: 'plannedStartTime', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(datePicker, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ鍒掑紑濮嬫椂闂�', 
+                }, 
+                { 
+                   label: '璁″垝瀹屾垚鏃堕棿', 
+                   prop: 'plannedEndTime', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(datePicker, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ鍒掑畬鎴愭椂闂�', 
+                }, 
+                { 
+                   label: '鐝粍淇℃伅', 
+                   prop: 'teamInfo', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ彮缁勪俊鎭�', 
+                }, 
+                { 
+                   label: '鏃堕棿鎴�', 
+                   prop: 'timestamp', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ椂闂存埑', 
+                }, 
+                { 
+                   label: '澶囨敞', 
+                   prop: 'remark', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ娉�', 
+                },  
+  ]) 
+  /** 
+   * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� 
+   */ 
+  const checkIsEqualObject = () => { 
+    const data = { 
+      formData: formData.value, 
+    } 
+    const check = isEqual(initiateData.value, data) 
+    return check 
+  } 
+ 
+  const onClose = (done: () => void) => { 
+    if (visible.value) { 
+      if (checkIsEqualObject()) { 
+        visible.value = false 
+        done && done() 
+      } else { 
+        ConfirmBox('鏄惁淇濆瓨璁剧疆锛�') 
+          .then(() => { 
+            onConfirm() 
+          }) 
+          .catch(() => { 
+            visible.value = false 
+            done && done() 
+          }) 
+      } 
+    } 
+  } 
+  /** 
+   * 淇濆瓨 
+   */ 
+  const onConfirm = async () => { 
+    await formRef.value?.validate() 
+    const data = { 
+      son_TaskCode: formData.value.son_TaskCode, 
+taskCode: formData.value.taskCode, 
+workPlanStatus: formData.value.workPlanStatus, 
+callMaterialStatus: formData.value.callMaterialStatus, 
+dataIdentifier: formData.value.dataIdentifier, 
+materialMode: formData.value.materialMode, 
+length: formData.value.length, 
+markingContent: formData.value.markingContent, 
+markingPosition: formData.value.markingPosition, 
+cuttingPosition: formData.value.cuttingPosition, 
+quantity: formData.value.quantity, 
+flangeThickness: formData.value.flangeThickness, 
+flangeInnerDiameter: formData.value.flangeInnerDiameter, 
+weldingHeatInput: formData.value.weldingHeatInput, 
+pipeAllowableStress: formData.value.pipeAllowableStress, 
+pipeDiameter: formData.value.pipeDiameter, 
+pipeWallThickness: formData.value.pipeWallThickness, 
+factoryCode: formData.value.factoryCode, 
+productCode: formData.value.productCode, 
+workstationCode: formData.value.workstationCode, 
+equipmentCode: formData.value.equipmentCode, 
+prodLineCode: formData.value.prodLineCode, 
+shipNumber: formData.value.shipNumber, 
+projectNumber: formData.value.projectNumber, 
+processName: formData.value.processName, 
+pipeFittingCode: formData.value.pipeFittingCode, 
+preSerialNumber: formData.value.preSerialNumber, 
+pipeSpecCode: formData.value.pipeSpecCode, 
+pipeSectionName: formData.value.pipeSectionName, 
+outerDiameter: formData.value.outerDiameter, 
+thickness: formData.value.thickness, 
+material: formData.value.material, 
+processRouteNumber: formData.value.processRouteNumber, 
+plannedStartTime: formData.value.plannedStartTime, 
+plannedEndTime: formData.value.plannedEndTime, 
+teamInfo: formData.value.teamInfo, 
+timestamp: formData.value.timestamp, 
+remark: formData.value.remark,  
+    } 
+    if (!current.value) { 
+      await workTaskDrawer.addWorkTask(data) 
+    } else { 
+      const id = current.value.id 
+      await workTaskDrawer.updateWorkTask(id, data) 
+    } 
+    ElMessage.success('淇濆瓨鎴愬姛') 
+    ctx.emit('confirm') 
+  } 
+ 
+  const updateCheckData = () => { 
+    initiateData.value = { 
+      formData: { 
+        ...formData.value, 
+      }, 
+    } 
+  } 
+  const updateFormItemOptions = (propName: string, enumData: any[]) => { 
+    const item = formItems.find((item) => item.prop === propName) 
+    if (item && enumData) { 
+      item.options = enumData.map((item) => ({ 
+        label: item.description, 
+        value: item.value, 
+      })) 
+    } 
+  } 
+  /** 
+   * 閫氱敤鏌ヨ鏋氫妇 
+   */ 
+  const commonQueryEnumForFrom = async () => { 
+    const workPlanStatusEnumEnum = await workTaskDrawer.getWmsEnumData({ 
+ EnumName: 'WorkPlanStatusEnum', 
+}) 
+updateFormItemOptions('workPlanStatus', workPlanStatusEnumEnum) 
+const callMaterialStatusEnumEnum = await workTaskDrawer.getWmsEnumData({ 
+ EnumName: 'CallMaterialStatusEnum', 
+}) 
+updateFormItemOptions('callMaterialStatus', callMaterialStatusEnumEnum) 
+ 
+  } 
+  commonQueryEnumForFrom() 
+  /** 
+   * 寮圭獥鎵撳紑鑾峰彇璇︽儏 
+   */ 
+  const onOpen = async () => { 
+    if (current.value) { 
+      const res = await workTaskDrawer.getWorkTaskDetail(current.value) 
+ 
+      formData.value = { 
+        son_TaskCode: res.son_TaskCode, 
+taskCode: res.taskCode, 
+workPlanStatus: res.workPlanStatus, 
+callMaterialStatus: res.callMaterialStatus, 
+dataIdentifier: res.dataIdentifier, 
+materialMode: res.materialMode, 
+length: res.length, 
+markingContent: res.markingContent, 
+markingPosition: res.markingPosition, 
+cuttingPosition: res.cuttingPosition, 
+quantity: res.quantity, 
+flangeThickness: res.flangeThickness, 
+flangeInnerDiameter: res.flangeInnerDiameter, 
+weldingHeatInput: res.weldingHeatInput, 
+pipeAllowableStress: res.pipeAllowableStress, 
+pipeDiameter: res.pipeDiameter, 
+pipeWallThickness: res.pipeWallThickness, 
+factoryCode: res.factoryCode, 
+productCode: res.productCode, 
+workstationCode: res.workstationCode, 
+equipmentCode: res.equipmentCode, 
+prodLineCode: res.prodLineCode, 
+shipNumber: res.shipNumber, 
+projectNumber: res.projectNumber, 
+processName: res.processName, 
+pipeFittingCode: res.pipeFittingCode, 
+preSerialNumber: res.preSerialNumber, 
+pipeSpecCode: res.pipeSpecCode, 
+pipeSectionName: res.pipeSectionName, 
+outerDiameter: res.outerDiameter, 
+thickness: res.thickness, 
+material: res.material, 
+processRouteNumber: res.processRouteNumber, 
+plannedStartTime: res.plannedStartTime, 
+plannedEndTime: res.plannedEndTime, 
+teamInfo: res.teamInfo, 
+timestamp: res.timestamp, 
+remark: res.remark,  
+        id: res.id, 
+      } 
+      disabled.value = true 
+      updateCheckData() 
+    } else { 
+      formData.value = {} 
+ 
+      disabled.value = false 
+      updateCheckData() 
+    } 
+  } 
+ 
+  watch(() => current.value, onOpen) 
+ 
+  return { 
+    formItems, 
+    formData, 
+    visible, 
+    formRef, 
+    onOpen, 
+    onClose, 
+    onConfirm, 
+  } 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskQueryDrawer.tsx b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskQueryDrawer.tsx
new file mode 100644
index 0000000..a745033
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskQueryDrawer.tsx
@@ -0,0 +1,879 @@
+import { 
+  ref, 
+  onMounted, 
+  reactive, 
+  computed, 
+  Ref, 
+  watch, 
+  SetupContext, 
+  h, 
+} from 'vue' 
+import { injectModel } from '@/libs/Provider/Provider' 
+import { WorkTaskDrawer } from '../Models/WorkTaskDrawer' 
+import { ElMessage } from 'element-plus' 
+import isEqual from 'lodash/isEqual' 
+import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
+import { cloneDeep } from 'lodash' 
+// 寮曞叆鍏叡閫夐」閰嶇疆 
+import {  
+  FILTER_MODE_OPTIONS_STRING,  
+  FILTER_MODE_OPTIONS_NUM, 
+  FILTER_MODE_OPTIONS_BOOL 
+} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'; 
+// 寮曞叆鍏叡琛ㄥ崟宸ュ叿鏂囦欢 
+import { collectFormDataForHighQuery,onResetForHighSelect,onResetForHighQuery } from '@/utils/myformUtils';
+import {  
+  BOOLEAN_OPTIONS 
+} from '@/utils/commonOptionConstants'; 
+ 
+export const useWorkTaskQueryDrawer = (props: any, ctx?: any) => { 
+  const workTaskDrawer = injectModel<WorkTaskDrawer>('WorkTaskDrawer') 
+  /** 
+   * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 
+   */ 
+  const initiateData: Ref<Record<string, any>> = ref({}) 
+  const formData = ref<Record<string, any>>({}) 
+  // ref 
+  const formRef = ref() 
+ 
+  const disabled = ref(false) 
+ 
+  const current = computed(() => { 
+    return props.row || null 
+  }) 
+ 
+  const inputNumber = (attrs) => { 
+    return ( 
+      <el-input-number 
+        min="1" 
+        step="1" 
+        precision="0" 
+        {...attrs} 
+      ></el-input-number> 
+    ) 
+  } 
+ 
+    const datePickerRange = (attrs) => { 
+    return ( 
+      <el-date-picker 
+        type="daterange" 
+        value-format="YYYY-MM-DD HH:mm:ss" 
+        start-placeholder="寮�濮嬫棩鏈�" 
+        end-placeholder="缁撴潫鏃ユ湡" 
+        {...attrs} 
+      ></el-date-picker> 
+    ) 
+  } 
+ 
+  const dateTimePickerRange = (attrs) => { 
+    return ( 
+      <el-date-picker 
+        type="datetimerange" 
+        value-format="YYYY-MM-DD HH:mm:ss" 
+        start-placeholder="寮�濮嬫棩鏈�" 
+        end-placeholder="缁撴潫鏃ユ湡" 
+        {...attrs} 
+      ></el-date-picker> 
+    ) 
+  } 
+ 
+  const visible = computed({ 
+    get() { 
+      return props.modelValue 
+    }, 
+    set(val) { 
+      ctx.emit('update:modelValue', val) 
+    }, 
+  }) 
+  /** 
+   * 楂樼骇鏌ヨ鐨刦orm瀛楁 
+   */ 
+  const formItems = reactive([ 
+                    { 
+                   label: '瀛愪换鍔$紪鐮�', 
+                   prop: 'son_TaskCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ瓙浠诲姟缂栫爜', 
+                   highSelectAttrs:{ 
+                     prop: 'son_TaskCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '浠诲姟缂栫爜', 
+                   prop: 'taskCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ换鍔$紪鐮�', 
+                   highSelectAttrs:{ 
+                     prop: 'taskCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '璁″垝鐘舵��', 
+                   prop: 'workPlanStatus', 
+                   el: 'select', 
+                   clearable:true, 
+                   option: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ鍒掔姸鎬�', 
+                   highSelectAttrs:{ 
+                     prop: 'workPlanStatus_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_BOOL 
+                   } 
+                }, 
+                { 
+                   label: '鍙枡鐘舵��', 
+                   prop: 'callMaterialStatus', 
+                   el: 'select', 
+                   clearable:true, 
+                   option: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ彨鏂欑姸鎬�', 
+                   highSelectAttrs:{ 
+                     prop: 'callMaterialStatus_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_BOOL 
+                   } 
+                }, 
+                { 
+                   label: '鍘熸枡鏍囪瘑', 
+                   prop: 'dataIdentifier', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ師鏂欐爣璇�', 
+                   highSelectAttrs:{ 
+                     prop: 'dataIdentifier_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '鍘熸枡鍨嬪彿', 
+                   prop: 'materialMode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ師鏂欏瀷鍙�', 
+                   highSelectAttrs:{ 
+                     prop: 'materialMode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '闀垮害(mm)', 
+                   prop: 'length', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ暱搴�(mm)', 
+                   highSelectAttrs:{ 
+                     prop: 'length_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '鎵撶爜鍐呭', 
+                   prop: 'markingContent', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墦鐮佸唴瀹�', 
+                   highSelectAttrs:{ 
+                     prop: 'markingContent_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '鎵撶爜浣嶇疆', 
+                   prop: 'markingPosition', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墦鐮佷綅缃�', 
+                   highSelectAttrs:{ 
+                     prop: 'markingPosition_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '鍒囧壊浣嶇疆', 
+                   prop: 'cuttingPosition', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ垏鍓蹭綅缃�', 
+                   highSelectAttrs:{ 
+                     prop: 'cuttingPosition_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '绠℃鏁伴噺', 
+                   prop: 'quantity', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 1,
+                   precision: 0, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ娈垫暟閲�', 
+                   highSelectAttrs:{ 
+                     prop: 'quantity_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '娉曞叞鍘氬害(mm)', 
+                   prop: 'flangeThickness', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ硶鍏板帤搴�(mm)', 
+                   highSelectAttrs:{ 
+                     prop: 'flangeThickness_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '娉曞叞鐩村緞(mm)', 
+                   prop: 'flangeInnerDiameter', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ硶鍏扮洿寰�(mm)', 
+                   highSelectAttrs:{ 
+                     prop: 'flangeInnerDiameter_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '娉曞叞鍏О鍘嬪姏', 
+                   prop: 'weldingHeatInput', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ硶鍏板叕绉板帇鍔�', 
+                   highSelectAttrs:{ 
+                     prop: 'weldingHeatInput_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '娉曞叞鍐茬爜鍐呭', 
+                   prop: 'pipeAllowableStress', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ硶鍏板啿鐮佸唴瀹�', 
+                   highSelectAttrs:{ 
+                     prop: 'pipeAllowableStress_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '濂楃闀垮害(mm)', 
+                   prop: 'pipeDiameter', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ绠¢暱搴�(mm)', 
+                   highSelectAttrs:{ 
+                     prop: 'pipeDiameter_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '濂楃鐩村緞(mm)', 
+                   prop: 'pipeWallThickness', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ绠$洿寰�(mm)', 
+                   highSelectAttrs:{ 
+                     prop: 'pipeWallThickness_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '宸ュ巶浠g爜', 
+                   prop: 'factoryCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ伐鍘備唬鐮�', 
+                   highSelectAttrs:{ 
+                     prop: 'factoryCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '浜у搧浠g爜', 
+                   prop: 'productCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ骇鍝佷唬鐮�', 
+                   highSelectAttrs:{ 
+                     prop: 'productCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '宸ヤ綅浠g爜', 
+                   prop: 'workstationCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ伐浣嶄唬鐮�', 
+                   highSelectAttrs:{ 
+                     prop: 'workstationCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '璁惧浠g爜', 
+                   prop: 'equipmentCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ澶囦唬鐮�', 
+                   highSelectAttrs:{ 
+                     prop: 'equipmentCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '浜х嚎缂栫爜', 
+                   prop: 'prodLineCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ骇绾跨紪鐮�', 
+                   highSelectAttrs:{ 
+                     prop: 'prodLineCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '鑸瑰彿', 
+                   prop: 'shipNumber', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ埞鍙�', 
+                   highSelectAttrs:{ 
+                     prop: 'shipNumber_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '椤圭洰鍙�', 
+                   prop: 'projectNumber', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ」鐩彿', 
+                   highSelectAttrs:{ 
+                     prop: 'projectNumber_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '宸ュ簭鍚嶇О', 
+                   prop: 'processName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ伐搴忓悕绉�', 
+                   highSelectAttrs:{ 
+                     prop: 'processName_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '绠′欢缂栫爜', 
+                   prop: 'pipeFittingCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ浠剁紪鐮�', 
+                   highSelectAttrs:{ 
+                     prop: 'pipeFittingCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '椤哄簭鍙�', 
+                   prop: 'preSerialNumber', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ『搴忓彿', 
+                   highSelectAttrs:{ 
+                     prop: 'preSerialNumber_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '绠℃缂栫爜', 
+                   prop: 'pipeSpecCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ娈电紪鐮�', 
+                   highSelectAttrs:{ 
+                     prop: 'pipeSpecCode_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '绠℃鍚嶇О', 
+                   prop: 'pipeSectionName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ娈靛悕绉�', 
+                   highSelectAttrs:{ 
+                     prop: 'pipeSectionName_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '澶栧緞(mm)', 
+                   prop: 'outerDiameter', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ寰�(mm)', 
+                   highSelectAttrs:{ 
+                     prop: 'outerDiameter_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '澹佸帤(mm)', 
+                   prop: 'thickness', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ鍘�(mm)', 
+                   highSelectAttrs:{ 
+                     prop: 'thickness_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_NUM 
+                   } 
+                }, 
+                { 
+                   label: '鏉愯川', 
+                   prop: 'material', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ潗璐�', 
+                   highSelectAttrs:{ 
+                     prop: 'material_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '宸ヨ壓娴佸悜缂栧彿', 
+                   prop: 'processRouteNumber', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ伐鑹烘祦鍚戠紪鍙�', 
+                   highSelectAttrs:{ 
+                     prop: 'processRouteNumber_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '璁″垝寮�濮嬫椂闂�', 
+                   prop: 'plannedStartTime', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(dateTimePickerRange, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ鍒掑紑濮嬫椂闂�', 
+                   isDateControl: true, // 鏄惧紡鏍囪涓烘棩鏈熸帶浠� 
+                }, 
+                { 
+                   label: '璁″垝瀹屾垚鏃堕棿', 
+                   prop: 'plannedEndTime', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(dateTimePickerRange, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ鍒掑畬鎴愭椂闂�', 
+                   isDateControl: true, // 鏄惧紡鏍囪涓烘棩鏈熸帶浠� 
+                }, 
+                { 
+                   label: '鐝粍淇℃伅', 
+                   prop: 'teamInfo', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ彮缁勪俊鎭�', 
+                   highSelectAttrs:{ 
+                     prop: 'teamInfo_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '鏃堕棿鎴�', 
+                   prop: 'timestamp', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ椂闂存埑', 
+                   highSelectAttrs:{ 
+                     prop: 'timestamp_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '鍒涘缓鏃堕棿', 
+                   prop: 'creationTime', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(dateTimePickerRange, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ垱寤烘椂闂�', 
+                   isDateControl: true, // 鏄惧紡鏍囪涓烘棩鏈熸帶浠� 
+                }, 
+                { 
+                   label: '淇敼鏃堕棿', 
+                   prop: 'lastModificationTime', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(dateTimePickerRange, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ慨鏀规椂闂�', 
+                   isDateControl: true, // 鏄惧紡鏍囪涓烘棩鏈熸帶浠� 
+                }, 
+                { 
+                   label: '鍒涘缓浜�', 
+                   prop: 'creatorName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ垱寤轰汉', 
+                   highSelectAttrs:{ 
+                     prop: 'creatorName_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '淇敼浜�', 
+                   prop: 'lastModifierName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ慨鏀逛汉', 
+                   highSelectAttrs:{ 
+                     prop: 'lastModifierName_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                }, 
+                { 
+                   label: '澶囨敞', 
+                   prop: 'remark', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ娉�', 
+                   highSelectAttrs:{ 
+                     prop: 'remark_FilterMode', 
+                     el: 'select',  
+                     placeholder: '璇烽�夋嫨',  
+                     options:FILTER_MODE_OPTIONS_STRING 
+                   } 
+                },  
+  ]) 
+  /** 
+   * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� 
+   */ 
+  const checkIsEqualObject = () => { 
+    const data = { 
+      formData: formData.value, 
+    } 
+    const check = isEqual(initiateData.value, data) 
+    return check 
+  } 
+//   /** 
+//  * 鑾峰彇琛ㄥ崟鏁版嵁 - 浼樺寲鐗� 
+//  */ 
+// const commonGetFormData = () => { 
+//   const data = {}; 
+   
+//   // 閬嶅巻琛ㄥ崟閰嶇疆鏀堕泦鏁版嵁 
+//   formItems.forEach(item => { 
+//     // 鏀堕泦鍩虹瀛楁 
+//     data[item.prop] = formData.value[item.prop] || ''; 
+     
+//     // 鏀堕泦杩囨护妯″紡瀛楁 
+//     if (item.highSelectAttrs && item.highSelectAttrs.prop) { 
+//       const filterModeProp = item.highSelectAttrs.prop; 
+//       data[filterModeProp] = formData.value[filterModeProp] || ''; 
+//     } 
+//   }); 
+   
+//   return data; 
+// } 
+  const onClose = (done: () => void) => { 
+    if (visible.value) { 
+      visible.value = false 
+      const data =collectFormDataForHighQuery(formItems,formData); 
+      ctx.emit('close', data) 
+    } 
+  } 
+  /** 
+   * 纭鏌ヨ 
+   */ 
+  const onConfirmQuery = async () => { 
+    const data =collectFormDataForHighQuery(formItems,formData); 
+    ctx.emit('confirmQuery', data) 
+  } 
+  // /**  
+  //  * 閲嶇疆鍏叡select鏌ヨ  
+  //  */  
+  // const onResetForHighSelect = () => {   
+  //     // 閬嶅巻鎵�鏈夎〃鍗曞瓧娈�   
+  //     formItems.forEach(item => {   
+  //       // 妫�鏌ュ瓧娈垫槸鍚︽湁楂樼骇鏌ヨ鐨勮繃婊ゆā寮忛厤缃�   
+  //       if (item.highSelectAttrs && item.highSelectAttrs.prop) {   
+  //         const filterModeProp = item.highSelectAttrs.prop;   
+  //         const options = item.highSelectAttrs.options || [];   
+       
+  //         // 濡傛灉瀛樺湪閫夐」锛屽垯璁剧疆涓虹涓�涓�夐」鐨勫��   
+  //         if (options.length > 0) {   
+  //           // 鍋囪閫夐」鏍煎紡涓� { value, label } 鎴栫被浼肩粨鏋�   
+  //           const firstValue = options[0].value !== undefined ? options[0].value : options[0];   
+  //           formData.value[filterModeProp] = firstValue;   
+  //         }   
+  //       }   
+  //     });   
+  // }   
+    /** 
+    * 閲嶇疆鏌ヨ - 浼樺寲鐗� 
+    */ 
+    const onReset = async () => { 
+        // // 1. 娓呯┖鎵�鏈夊熀纭�瀛楁锛堜笉鍖呭惈杩囨护妯″紡瀛楁锛� 
+        // const baseFields = formItems.reduce((acc, item) => { 
+        // acc[item.prop] = ''; 
+        // return acc; 
+        // }, {}); 
+   
+        // // 2. 搴旂敤鍩虹瀛楁鍒濆鍊� 
+        // formData.value = { ...baseFields }; 
+
+        onResetForHighQuery(formItems,formData);
+   
+        // 3. 浣跨敤鍘熸湁鏂规硶閲嶇疆杩囨护妯″紡瀛楁 
+        onResetForHighSelect(formItems,formData); // 淇濈暀鍘熸湁鏂规硶璋冪敤 
+   
+        // 4. 鍚戠埗缁勪欢鍙戦�佽嚜瀹氫箟浜嬩欢 
+        ctx.emit('restQuery'); 
+    } 
+ 
+  const updateCheckData = () => { 
+    initiateData.value = { 
+      formData: { 
+        ...formData.value, 
+      }, 
+    } 
+  } 
+  const updateFormItemOptions = (propName: string, enumData: any[]) => { 
+    const item = formItems.find((item) => item.prop === propName) 
+    if (item && enumData) { 
+      item.options = enumData.map((item) => ({ 
+        label: item.description, 
+        value: item.value, 
+      })) 
+    } 
+  } 
+  /** 
+   * 閫氱敤鏌ヨ鏋氫妇 
+   */ 
+  const commonQueryEnumForFrom = async () => { 
+    const workPlanStatusEnumEnum = await workTaskDrawer.getWmsEnumData({ 
+ EnumName: 'WorkPlanStatusEnum', 
+}) 
+updateFormItemOptions('workPlanStatus', workPlanStatusEnumEnum) 
+const callMaterialStatusEnumEnum = await workTaskDrawer.getWmsEnumData({ 
+ EnumName: 'CallMaterialStatusEnum', 
+}) 
+updateFormItemOptions('callMaterialStatus', callMaterialStatusEnumEnum) 
+ 
+  } 
+  commonQueryEnumForFrom() 
+  onResetForHighSelect(formItems,formData);//閲嶇疆鍏叡select鏌ヨ  
+  /** 
+   * 寮圭獥鎵撳紑鑾峰彇璇︽儏 
+   */ 
+  const onOpen = async () => { 
+    disabled.value = false 
+    updateCheckData() 
+  } 
+ 
+  watch(() => current.value, onOpen) 
+ 
+  return { 
+    formItems, 
+    formData, 
+    visible, 
+    formRef, 
+    onOpen, 
+    onClose, 
+    onConfirmQuery, 
+    onReset, 
+  } 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTask.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTask.ts
new file mode 100644
index 0000000..e797eba
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTask.ts
@@ -0,0 +1,30 @@
+import { Base } from '@/libs/Base/Base' 
+const request = Base.request 
+ 
+/** 
+ * 娣诲姞 
+ * @returns 
+ */ 
+export const addWorkTask = (data: any) => { 
+  return request.post('/api/v1/PipeLineLems/workTask', data) 
+} 
+ 
+/** 
+ * 鎵归噺鍒犻櫎 
+ * @returns 
+ */ 
+export const deleteWorkTasks = (ids: string[]) => { 
+  return request({ 
+    data: ids, 
+    url: '/api/v1/PipeLineLems/workTask', 
+    method: 'delete', 
+  }) 
+} 
+ 
+/** 
+ * 鍏嬮殕 
+ * @returns 
+ */ 
+export const cloneData = (data: any) => { 
+  return request.post('/api/v1/PipeLineLems/workTask/clone', data) 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTaskDrawer.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTaskDrawer.ts
new file mode 100644
index 0000000..1fd7d98
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTaskDrawer.ts
@@ -0,0 +1,34 @@
+import { Base } from '@/libs/Base/Base' 
+const request = Base.request 
+ 
+/** 
+ * 娣诲姞 
+ * @returns 
+ */ 
+export const addWorkTask = (data: any) => { 
+  return request.post('/api/v1/PipeLineLems/workTask', data) 
+} 
+ 
+/** 
+ * 鑾峰彇璇︽儏 
+ * @returns 
+ */ 
+export const getWorkTask = (id: string) => { 
+  return request.get(`/api/v1/PipeLineLems/workTask/${id}`) 
+} 
+ 
+/** 
+ * 鏇存柊 
+ * @returns 
+ */ 
+export const updateWorkTask = (id: string, data: Record<string, any>) => { 
+  return request.put(`/api/v1/PipeLineLems/workTask/${id}`, data) 
+} 
+ 
+/** 
+ * 鑾峰彇鏋氫妇 
+ * @returns 
+ */ 
+export const getWmsEnumData = (data: any) => { 
+  return request.post('/api/v1/WareCmsUtilityApi/WmsEnum', data) 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTaskQueryDrawer.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTaskQueryDrawer.ts
new file mode 100644
index 0000000..ec2326e
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/Service/WorkTaskQueryDrawer.ts
@@ -0,0 +1,35 @@
+import { Base } from '@/libs/Base/Base' 
+const request = Base.request 
+ 
+/** 
+ * 娣诲姞 
+ * @returns 
+ */ 
+export const addWorkTask = (data: any) => { 
+  return request.post('/api/v1/PipeLineLems/workTask', data) 
+} 
+ 
+/** 
+ * 鑾峰彇璇︽儏 
+ * @returns 
+ */ 
+export const getWorkTask = (id: string) => { 
+  return request.get(`/api/v1/PipeLineLems/workTask/${id}`) 
+} 
+ 
+/** 
+ * 鏇存柊 
+ * @returns 
+ */ 
+export const updateWorkTask = (id: string, data: Record<string, any>) => { 
+  return request.put(`/api/v1/PipeLineLems/workTask/${id}`, data) 
+} 
+ 
+/** 
+ * 鑾峰彇鏋氫妇 
+ * @returns 
+ */ 
+export const getWmsEnumData = (data: any) => { 
+  return request.post('/api/v1/WareCmsUtilityApi/WmsEnum', data) 
+} 
+ 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTask.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTask.ts
new file mode 100644
index 0000000..afa7a0c
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTask.ts
@@ -0,0 +1,41 @@
+import { Base } from '@/libs/Base/Base' 
+import { 
+  deleteWorkTasks, 
+  addWorkTask, 
+  cloneData, 
+} from './Service/WorkTask' 
+ 
+export class WorkTask extends Base<{ [key: string]: any }> { 
+  constructor() { 
+    super({ 
+      data: [], 
+    }) 
+  } 
+  onMounted() {} 
+  /** 
+   * 鍒犻櫎 
+   * @param id 
+   * @returns 
+   */ 
+  async deleteWorkTasks(ids: string[]) { 
+    return deleteWorkTasks(ids) 
+  } 
+ 
+  /** 
+   * 娣诲姞鏁版嵁 
+   * @param data 
+   * @returns 
+   */ 
+  addWorkTask(data: Record<string, any>) { 
+    return addWorkTask(data) 
+  } 
+ 
+  /** 
+   * 鍏嬮殕 
+   * @param ids 
+   * @returns 
+   */ 
+  cloneData(ids: string[]) { 
+    return cloneData(ids) 
+  } 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTaskDrawer.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTaskDrawer.ts
new file mode 100644
index 0000000..68b4a01
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTaskDrawer.ts
@@ -0,0 +1,44 @@
+import { Base } from '@/libs/Base/Base' 
+import { 
+  addWorkTask, 
+  getWorkTask, 
+  updateWorkTask, 
+  getWmsEnumData, 
+} from './Service/WorkTaskDrawer' 
+import { useGlobalState } from '@/libs/Store/Store' 
+ 
+export class WorkTaskDrawer extends Base<{ [key: string]: any }> { 
+  constructor() { 
+    super({ 
+      data: [], 
+      workTask: {}, 
+    }) 
+  } 
+ 
+  /** 
+   * 娣诲姞 
+   * @param data 
+   */ 
+  async addWorkTask(data: Record<string, any>) { 
+    return addWorkTask(data) 
+  } 
+  /** 
+   * 鏇存柊 
+   * @param data 
+   */ 
+  async updateWorkTask(id: string, data: Record<string, any>) { 
+    return updateWorkTask(id, data) 
+  } 
+ 
+  /** 
+   * 鑾峰彇璇︽儏 
+   */ 
+  async getWorkTaskDetail(current: any, id?: string) { 
+    return getWorkTask(id || current?.id) 
+  } 
+ 
+  //  鑾峰彇鏋氫妇鍊� 
+  async getWmsEnumData(data: Record<string, any>) { 
+    return getWmsEnumData(data) 
+  } 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTaskQueryDrawer.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTaskQueryDrawer.ts
new file mode 100644
index 0000000..84d2e80
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Models/WorkTaskQueryDrawer.ts
@@ -0,0 +1,44 @@
+import { Base } from '@/libs/Base/Base' 
+import { 
+  addWorkTask, 
+  getWorkTask, 
+  updateWorkTask, 
+  getWmsEnumData, 
+} from './Service/WorkTaskQueryDrawer' 
+import { useGlobalState } from '@/libs/Store/Store' 
+ 
+export class WorkTaskQueryDrawer extends Base<{ [key: string]: any }> { 
+  constructor() { 
+    super({ 
+      data: [], 
+      workTask: {}, 
+    }) 
+  } 
+ 
+  /** 
+   * 娣诲姞 
+   * @param data 
+   */ 
+  async addWorkTask(data: Record<string, any>) { 
+    return addWorkTask(data) 
+  } 
+  /** 
+   * 鏇存柊 
+   * @param data 
+   */ 
+  async updateWorkTask(id: string, data: Record<string, any>) { 
+    return updateWorkTask(id, data) 
+  } 
+ 
+  /** 
+   * 鑾峰彇璇︽儏 
+   */ 
+  async getWorkTaskDetail(current: any, id?: string) { 
+    return getWorkTask(id || current?.id) 
+  } 
+ 
+  //  鑾峰彇鏋氫妇鍊� 
+  async getWmsEnumData(data: Record<string, any>) { 
+    return getWmsEnumData(data) 
+  } 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskDrawer/WorkTaskDrawer.module.scss b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskDrawer/WorkTaskDrawer.module.scss
new file mode 100644
index 0000000..177adca
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskDrawer/WorkTaskDrawer.module.scss
@@ -0,0 +1,3 @@
+.drawer { 
+  width: 800px; 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskDrawer/WorkTaskDrawer.tsx b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskDrawer/WorkTaskDrawer.tsx
new file mode 100644
index 0000000..ad6e44f
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskDrawer/WorkTaskDrawer.tsx
@@ -0,0 +1,61 @@
+import { SetupContext, defineComponent } from 'vue' 
+import BaseDrawer from '@/components/BaseDrawer/BaseDrawer' 
+import styles from './WorkTaskDrawer.module.scss' 
+import { useWorkTaskDrawer } from '../../../../Controllers/WorkTaskDrawer.tsx' 
+import DyForm from '@/components/DyForm/DyForm' 
+ 
+// @ts-ignore 
+export default defineComponent<{ 
+  [key: string]: any 
+}>({ 
+  name: '寮圭獥', 
+  props: { 
+    modelValue: { 
+      type: Boolean, 
+      default: false, 
+    }, 
+    title: { 
+      type: String, 
+      default: '', 
+    }, 
+    row: { 
+      type: Object, 
+    }, 
+    sort: { 
+      type: Number, 
+      default: 0, 
+    }, 
+  }, 
+  emits: ['update:modelValue', 'close', 'submit', 'confirm'], 
+  setup(props: Record<string, any>, ctx: SetupContext) { 
+    const { 
+      onClose, 
+      onConfirm, 
+      onOpen, 
+      formRef, 
+      visible, 
+      formItems, 
+      formData, 
+    } = useWorkTaskDrawer(props, ctx) 
+    return () => ( 
+      <BaseDrawer 
+        class={styles.drawer} 
+        size="800px" 
+        title={props.title || '娣诲姞'} 
+        v-model={visible.value} 
+        close-on-click-modal={true} 
+        onConfirm={onConfirm} 
+        onOpen={onOpen} 
+        before-close={onClose} 
+        onClose={onClose} 
+      > 
+        <DyForm 
+          ref={formRef} 
+          formData={formData.value} 
+          labelWidth="106px" 
+          formItemProps={formItems} 
+        ></DyForm> 
+      </BaseDrawer> 
+    ) 
+  }, 
+}) 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer.module.scss b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer.module.scss
new file mode 100644
index 0000000..177adca
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer.module.scss
@@ -0,0 +1,3 @@
+.drawer { 
+  width: 800px; 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer.tsx b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer.tsx
new file mode 100644
index 0000000..a60ac04
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer.tsx
@@ -0,0 +1,71 @@
+/* 
+ * 鐗╂枡鍩虹淇℃伅鏌ヨ寮瑰嚭妗� 
+*/ 
+import { SetupContext, defineComponent } from 'vue' 
+import BaseQueryDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer' 
+import styles from './WorkTaskQueryDrawer.module.scss' 
+import { useWorkTaskQueryDrawer } from '../../../../Controllers/WorkTaskQueryDrawer.tsx' 
+import DyFormForHighQuery from '@/components/DyFormForHighQuery/DyFormForHighQuery'  
+ 
+// @ts-ignore 
+export default defineComponent<{ 
+  [key: string]: any 
+}>({ 
+  name: '寮圭獥', 
+  props: { 
+    //鏋氫妇绫诲瀷瀛楀吀 
+    enumListDict:{ 
+      type: Array as () => Array<{ key: string; value: object }>, // 瀹氫箟鏁扮粍鍏冪礌绫诲瀷 
+      default: () => [] // 榛樿鍊� 
+    }, 
+    modelValue: { 
+      type: Boolean, 
+      default: false, 
+    }, 
+    title: { 
+      type: String, 
+      default: '', 
+    }, 
+    row: { 
+      type: Object, 
+    }, 
+    sort: { 
+      type: Number, 
+      default: 0, 
+    }, 
+  }, 
+  emits: ['update:modelValue', 'close', 'submit', 'confirmquery1'], 
+  setup(props: Record<string, any>, ctx: SetupContext) { 
+    const { 
+      onClose, 
+      onConfirmQuery, 
+      onOpen, 
+      onReset, 
+      formRef, 
+      visible, 
+      formItems, 
+      formData, 
+    } = useWorkTaskQueryDrawer(props, ctx) 
+    return () => ( 
+      <BaseQueryDrawer 
+        class={styles.drawer} 
+        size="800px" 
+        title={props.title || '楂樼骇鏌ヨ'} 
+        v-model={visible.value} 
+        close-on-click-modal={true} 
+        onReset={onReset} 
+        onConfirmQueryForBase={onConfirmQuery} 
+        onOpen={onOpen} 
+        before-close={onClose} 
+        onClose={onClose} 
+      > 
+        <DyFormForHighQuery 
+          ref={formRef} 
+          formData={formData.value} 
+          labelWidth="106px" 
+          formItemProps={formItems} 
+        ></DyFormForHighQuery> 
+      </BaseQueryDrawer> 
+    ) 
+  }, 
+}) 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/Config.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/Config.ts
new file mode 100644
index 0000000..30f5152
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/Config.ts
@@ -0,0 +1,217 @@
+export const columns = [ 
+  { 
+    type: 'seq', 
+    width: 60, 
+    title: '搴忓彿', 
+  }, 
+  { 
+  field: 'son_TaskCode', 
+  title: '瀛愪换鍔$紪鐮�', 
+  width:160, 
+}, 
+{ 
+  field: 'taskCode', 
+  title: '浠诲姟缂栫爜', 
+  width:160, 
+}, 
+{ 
+  field: 'workPlanStatusDesc', 
+  title: '璁″垝鐘舵��', 
+  width:160, 
+}, 
+{ 
+  field: 'callMaterialStatusDesc', 
+  title: '鍙枡鐘舵��', 
+  width:160, 
+}, 
+{ 
+  field: 'dataIdentifier', 
+  title: '鍘熸枡鏍囪瘑', 
+  width:160, 
+}, 
+{ 
+  field: 'materialMode', 
+  title: '鍘熸枡鍨嬪彿', 
+  width:160, 
+}, 
+{ 
+  field: 'length', 
+  title: '闀垮害(mm)', 
+  width:160, 
+}, 
+{ 
+  field: 'markingContent', 
+  title: '鎵撶爜鍐呭', 
+  width:160, 
+}, 
+{ 
+  field: 'markingPosition', 
+  title: '鎵撶爜浣嶇疆', 
+  width:160, 
+}, 
+{ 
+  field: 'cuttingPosition', 
+  title: '鍒囧壊浣嶇疆', 
+  width:160, 
+}, 
+{ 
+  field: 'quantity', 
+  title: '绠℃鏁伴噺', 
+  width:160, 
+}, 
+{ 
+  field: 'flangeThickness', 
+  title: '娉曞叞鍘氬害(mm)', 
+  width:160, 
+}, 
+{ 
+  field: 'flangeInnerDiameter', 
+  title: '娉曞叞鐩村緞(mm)', 
+  width:160, 
+}, 
+{ 
+  field: 'weldingHeatInput', 
+  title: '娉曞叞鍏О鍘嬪姏', 
+  width:160, 
+}, 
+{ 
+  field: 'pipeAllowableStress', 
+  title: '娉曞叞鍐茬爜鍐呭', 
+  width:160, 
+}, 
+{ 
+  field: 'pipeDiameter', 
+  title: '濂楃闀垮害(mm)', 
+  width:160, 
+}, 
+{ 
+  field: 'pipeWallThickness', 
+  title: '濂楃鐩村緞(mm)', 
+  width:160, 
+}, 
+{ 
+  field: 'factoryCode', 
+  title: '宸ュ巶浠g爜', 
+  width:160, 
+}, 
+{ 
+  field: 'productCode', 
+  title: '浜у搧浠g爜', 
+  width:160, 
+}, 
+{ 
+  field: 'workstationCode', 
+  title: '宸ヤ綅浠g爜', 
+  width:160, 
+}, 
+{ 
+  field: 'equipmentCode', 
+  title: '璁惧浠g爜', 
+  width:160, 
+}, 
+{ 
+  field: 'prodLineCode', 
+  title: '浜х嚎缂栫爜', 
+  width:160, 
+}, 
+{ 
+  field: 'shipNumber', 
+  title: '鑸瑰彿', 
+  width:160, 
+}, 
+{ 
+  field: 'projectNumber', 
+  title: '椤圭洰鍙�', 
+  width:160, 
+}, 
+{ 
+  field: 'processName', 
+  title: '宸ュ簭鍚嶇О', 
+  width:160, 
+}, 
+{ 
+  field: 'pipeFittingCode', 
+  title: '绠′欢缂栫爜', 
+  width:160, 
+}, 
+{ 
+  field: 'preSerialNumber', 
+  title: '椤哄簭鍙�', 
+  width:160, 
+}, 
+{ 
+  field: 'pipeSpecCode', 
+  title: '绠℃缂栫爜', 
+  width:160, 
+}, 
+{ 
+  field: 'pipeSectionName', 
+  title: '绠℃鍚嶇О', 
+  width:160, 
+}, 
+{ 
+  field: 'outerDiameter', 
+  title: '澶栧緞(mm)', 
+  width:160, 
+}, 
+{ 
+  field: 'thickness', 
+  title: '澹佸帤(mm)', 
+  width:160, 
+}, 
+{ 
+  field: 'material', 
+  title: '鏉愯川', 
+  width:160, 
+}, 
+{ 
+  field: 'processRouteNumber', 
+  title: '宸ヨ壓娴佸悜缂栧彿', 
+  width:160, 
+}, 
+{ 
+  field: 'plannedStartTime', 
+  title: '璁″垝寮�濮嬫椂闂�', 
+  width:180, 
+}, 
+{ 
+  field: 'plannedEndTime', 
+  title: '璁″垝瀹屾垚鏃堕棿', 
+  width:180, 
+}, 
+{ 
+  field: 'teamInfo', 
+  title: '鐝粍淇℃伅', 
+  width:160, 
+}, 
+{ 
+  field: 'timestamp', 
+  title: '鏃堕棿鎴�', 
+  width:160, 
+}, 
+{ 
+  field: 'creationTime', 
+  title: '鍒涘缓鏃堕棿', 
+  width:180, 
+}, 
+{ 
+  field: 'lastModificationTime', 
+  title: '淇敼鏃堕棿', 
+  width:180, 
+}, 
+{ 
+  field: 'creatorName', 
+  title: '鍒涘缓浜�', 
+  width:160, 
+}, 
+{ 
+  field: 'lastModifierName', 
+  title: '淇敼浜�', 
+  width:160, 
+}, 
+{ 
+  field: 'remark', 
+  title: '澶囨敞', 
+  width:160, 
+},  
+] 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.module.scss b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.module.scss
new file mode 100644
index 0000000..fdf4260
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.module.scss
@@ -0,0 +1,113 @@
+.workTaskContent { 
+  width: 100%; 
+  height: 100%; 
+ 
+  .workTaskList { 
+    width: 100%; 
+    height: calc(100% - 70px); 
+  } 
+  .headerContent { 
+    display: flex; 
+    justify-content: space-between; 
+    align-items: center; 
+    height: 43px; 
+  } 
+  .header { 
+    margin-bottom: 12px; 
+    display: flex; 
+    justify-content: flex-end; 
+    align-items: center; 
+  } 
+} 
+ 
+.tagBox { 
+  width: auto; 
+  min-width: 80px; 
+  height: 24px; 
+  background: #ffffff; 
+  border-radius: 19px 19px 19px 19px; 
+  opacity: 1; 
+  border: 1px dashed #bcc4cc; 
+  width: 50px; 
+  height: 20px; 
+  font-size: 14px; 
+  font-family: PingFang SC, PingFang SC; 
+  font-weight: 400; 
+  color: #5a84ff; 
+  display: flex; 
+  justify-content: center; 
+  align-items: center; 
+  // cursor: pointer; 
+} 
+ 
+.group { 
+  display: flex; 
+  justify-content: space-between; 
+  align-items: center; 
+} 
+ 
+.groupTable { 
+  width: 100%; 
+} 
+ 
+.overBox { 
+  width: 100%; 
+  height: calc(100% - 20px); 
+  overflow: auto; 
+  :global(.cs-collapse-item__header) { 
+    background-color: #f1f1f1; 
+    padding: 0 20px; 
+    height: 35px; 
+    font-size: 16px; 
+    font-family: PingFang SC, PingFang SC; 
+    font-weight: 500; 
+  } 
+  :global(.cs-collapse-item__content) { 
+    padding-bottom: 0px; 
+  } 
+} 
+.groupHeader { 
+  width: 100%; 
+  height: 30px; 
+  background: #ccc; 
+} 
+ 
+.hideBlock { 
+  display: none; 
+} 
+.queryForm { 
+  padding: 10px; 
+  background: #f5f7fa; 
+  margin-bottom: 0px; 
+  border-radius: 4px; 
+   
+  .el-form-item { 
+    margin-right: 20px; 
+    margin-bottom: 0; 
+     
+    // 缁熶竴杈撳叆妗嗗拰閫夋嫨妗嗙殑瀹藉害 
+    .el-input, .el-select { 
+      width: 200px; // 璁剧疆缁熶竴鐨勫搴� 
+    } 
+     
+    // 閫夋嫨妗嗗唴閮ㄨ緭鍏ユ鏍峰紡 
+    .el-select .el-input__wrapper { 
+      height: 32px; // 涓庤緭鍏ユ楂樺害涓�鑷� 
+      padding: 1px 11px; // 涓庤緭鍏ユ鍐呰竟璺濅竴鑷� 
+    } 
+     
+    // 鏃ユ湡閫夋嫨鍣ㄥ搴� 
+    .el-date-editor { 
+      width: 220px; 
+    } 
+  } 
+} 
+ 
+// 濡傛灉闇�瑕佹洿绮剧‘鐨勬帶鍒讹紝鍙互鍗曠嫭璁剧疆 
+.formItem { 
+  width: 200px; 
+   
+  &.el-input, &.el-select { 
+    width: 100%; 
+  } 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.tsx b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.tsx
new file mode 100644
index 0000000..8045a4e
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.tsx
@@ -0,0 +1,409 @@
+import { computed, defineComponent, onMounted, reactive, ref } from 'vue' 
+import type { Ref } from 'vue' 
+import BaseTable from '@/components/Table/Table' 
+import styles from './WorkTask.module.scss' 
+import { useWorkTask } from '../../../Controllers/WorkTask' 
+import IconButton from '@/components/IconButton/IconButton' 
+import WorkTaskDrawer from '../Dialog/WorkTaskDrawer/WorkTaskDrawer' 
+import WorkTaskQueryDrawer from '../Dialog/WorkTaskQueryDrawer/WorkTaskQueryDrawer' 
+import Search from '@/components/Search/Search' 
+import { columns } from './Config' 
+import TdButton from '@/components/TdButton/TdButton' 
+import { vPermission } from '@/libs/Permission/Permission' 
+import dayjs from 'dayjs' 
+import { 
+  getWmsEnumData 
+} from '@/widgets/WorkTask/Models/Service/WorkTaskDrawer' 
+import { 
+  ElInput, 
+  ElSelect, 
+  ElOption, 
+  ElDatePicker, 
+  ElForm, 
+  ElFormItem, 
+} from 'element-plus' 
+import { injectModel } from '@/libs/Provider/Provider' 
+// 寮曞叆鍏叡閫夐」閰嶇疆  
+import {   
+  FILTER_MODE_OPTIONS_STRING 
+} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';  
+ 
+interface RenderTableType { 
+  url?: string 
+  dataSource: Ref<any[]> 
+  isDrag?: boolean 
+  isChecked?: boolean 
+  isHidePagination?: boolean 
+  params?: Record<string, any> 
+  autoHeight?: boolean 
+} 
+ 
+export default defineComponent({ 
+  name: 'WorkTask', 
+  directives: { 
+    permission: vPermission, 
+  }, 
+  setup(props, ctx) { 
+    const { 
+      dataSource, 
+      contextMenu, 
+      dialogConfig, 
+      dialogConfigForQuery, 
+      tableRef, 
+      current, 
+      search, 
+      sort, 
+      headers, 
+      onError, 
+      onSearch, 
+      onRowClick, 
+      onConfirmWorkTask, 
+      onCheck, 
+      onAddWorkTask, 
+      onAdvancedQuery, 
+      onExport, 
+      openDetail, 
+      onSuccess, 
+      onBeforeUpload, 
+    } = useWorkTask(props, ctx) 
+ 
+    //瀹氫箟楂樼骇鏌ヨ寮曠敤 
+   const workTaskQueryDrawerRef=ref(null); 
+    // 鏂板鐨勬煡璇㈡潯浠� 
+    const queryForm = ref({ 
+      searchVal: '', 
+      str_searchFormInputAttrs:[], 
+      searchVal_FilterMode:'' 
+    }) 
+    //瀹氫箟鏁翠綋妯$硦鏌ヨ鐨勫垪鏁扮粍(娉ㄦ剰锛氬繀椤诲ぇ灏忓啓璺熷悗绔殑瀹炰綋绫诲睘鎬у悕涓�鑷达紝鍚﹀垯浼氬鑷村尮閰嶄笉瀵圭殑闂) 
+    const _searchFormInputAttrs = ref([ 
+     'Son_TaskCode','TaskCode','DataIdentifier','MaterialMode','MarkingContent','WeldingHeatInput','PipeAllowableStress','FactoryCode','ProductCode','WorkstationCode','EquipmentCode','ProdLineCode','ShipNumber','ProjectNumber','ProcessName','PipeFittingCode','PreSerialNumber','PipeSpecCode','PipeSectionName','Material','ProcessRouteNumber','TeamInfo','Timestamp','CreatorName','LastModifierName','Remark' 
+    ]); 
+    const searchFormInputAttrs_Placeholder = ref('璇疯緭鍏ュ瓙浠诲姟缂栫爜/浠诲姟缂栫爜/鍘熸枡鏍囪瘑/鍘熸枡鍨嬪彿/鎵撶爜鍐呭/娉曞叞鍏О鍘嬪姏/娉曞叞鍐茬爜鍐呭/宸ュ巶浠g爜/浜у搧浠g爜/宸ヤ綅浠g爜/璁惧浠g爜/浜х嚎缂栫爜/鑸瑰彿/椤圭洰鍙�/宸ュ簭鍚嶇О/绠′欢缂栫爜/椤哄簭鍙�/绠℃缂栫爜/绠℃鍚嶇О/鏉愯川/宸ヨ壓娴佸悜缂栧彿/鐝粍淇℃伅/鏃堕棿鎴�/鍒涘缓浜�/淇敼浜�/澶囨敞'); 
+     
+ 
+    // 鍔ㄦ�佹灇涓鹃�夐」 
+    const enumOptions = reactive({ 
+      workPlanStatus: [] as Array<{label: string; value: any }>, 
+callMaterialStatus: [] as Array<{label: string; value: any }>,  
+    }) 
+ 
+    // 鑾峰彇鏋氫妇鏁版嵁 
+    const fetchEnumData = async () => { 
+      try { 
+        const workPlanStatusEnumData = await getWmsEnumData({ 
+ EnumName: 'WorkPlanStatusEnum', 
+}) 
+enumOptions.workPlanStatus = workPlanStatusEnumData.map((item) => ({ 
+  label: item.description, 
+  value: item.value, 
+})) 
+const callMaterialStatusEnumData = await getWmsEnumData({ 
+ EnumName: 'CallMaterialStatusEnum', 
+}) 
+enumOptions.callMaterialStatus = callMaterialStatusEnumData.map((item) => ({ 
+  label: item.description, 
+  value: item.value, 
+})) 
+ 
+      } catch (error) { 
+        console.error('鑾峰彇鏋氫妇鏁版嵁澶辫触:', error) 
+      } 
+    } 
+ 
+    // 瀹氫箟鍝嶅簲寮忔煡璇㈡暟鎹�  
+    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });   
+    // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹�  
+    onMounted(() => {  
+      fetchEnumData()  
+      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';  
+      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;   
+      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;  
+    })  
+ 
+    // 鏂扮増鐨勬煡璇㈡柟娉曪紙涓婚〉闈腑鐨勬寜閽�愭煡璇€�戯級 
+    const handleQueryForMain = async () => { 
+      _curHighQueryData.value.searchVal = queryForm.value.searchVal; 
+      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;  
+      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value; 
+      tableRef.value.getList(_curHighQueryData.value) 
+    } 
+    // 鏂扮増鐨勬煡璇㈡柟娉曪紙楂樼骇鏌ヨ涓殑鎸夐挳銆愭煡璇€�戯級 
+    const handleQuery = async (extraParams = {}) => { 
+      let filteredData = commonGetHighQueryForm(extraParams); 
+      commonSaveCurHighQueryData(filteredData); 
+      tableRef.value.getList(filteredData) 
+    } 
+    // 鏂扮増鐨勬煡璇㈤噸缃� 
+    const resetQuery = () => { 
+      queryForm.value.searchVal = '' 
+      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || ''; 
+      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value; 
+    } 
+     //鏂扮増鐨勫鍑烘柟娉� 
+     const handleExport=()=>{ 
+      onExport(_curHighQueryData.value); 
+    } 
+    // 鏂扮増鐨勬煡璇㈠脊鍑烘鍏抽棴鏂规硶 
+    const closeQuery = (extraParams={}) => { 
+      let filteredData = commonGetHighQueryForm(extraParams); 
+      console.log("closeQuery鏂规硶"); 
+      console.log(filteredData); 
+      commonSaveCurHighQueryData(filteredData); 
+    } 
+    //淇濆瓨鏌ヨ鍊� 
+    const commonSaveCurHighQueryData=(filteredData={})=>{ 
+      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData }; 
+      _curHighQueryData.value.searchVal = queryForm.value.searchVal 
+      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode  
+      _curHighQueryData.value.str_searchFormInputAttrs =_searchFormInputAttrs.value; 
+    } 
+     //鑾峰彇楂樼骇鏌ヨ寮瑰嚭妗嗙殑鏌ヨ鍊� 
+     const commonGetHighQueryForm=(extraParams={})=>{ 
+      // 杩囨护鎺� undefined 鐨勫�� 
+      let filteredData = Object.assign( 
+        {}, 
+        ...Object.entries(extraParams).map(([key, value]) => 
+          value !== undefined ? { [key]: value } : {} 
+        ) 
+      ) 
+      //缁勫悎妯$硦鏌ヨ 
+      filteredData.searchVal = queryForm.value.searchVal 
+      filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode  
+      filteredData.str_searchFormInputAttrs =_searchFormInputAttrs.value; 
+      return filteredData; 
+    } 
+    
+ 
+    /** 
+     * @returns 琛ㄦ牸 
+     */ 
+    const RenderBaseTable = (props: RenderTableType) => { 
+      const { 
+        url, 
+        dataSource, 
+        isDrag, 
+        isChecked, 
+        isHidePagination, 
+        params, 
+        autoHeight, 
+      } = props 
+ 
+      return ( 
+        <div 
+          class={{ 
+            [styles.workTaskList]: true, 
+          }} 
+        > 
+          <BaseTable 
+            ref={tableRef} 
+            url={url} 
+            sortUrlTpl="/api/v1/PipeLineLems/workTask/{id}/adjustsort/{sort}" 
+            v-model:dataSource={dataSource.value} 
+            columns={columns} 
+            contextMenu={contextMenu} 
+            params={params} 
+            isDrag={isDrag} 
+            isChecked={isChecked} 
+            autoHeight={autoHeight} 
+            onCheck={onCheck} 
+            onRowClick={onRowClick} 
+            isHidePagination={isHidePagination} 
+            pageSize={20} 
+            v-slots={{ 
+              plannedStartTime: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.plannedStartTime != null 
+     ? dayjs(row.plannedStartTime).format('YYYY-MM-DD HH:mm:ss') 
+      : '-'} 
+   </div>  
+  ) 
+},
+plannedEndTime: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.plannedEndTime != null 
+     ? dayjs(row.plannedEndTime).format('YYYY-MM-DD HH:mm:ss') 
+      : '-'} 
+   </div>  
+  ) 
+},
+creationTime: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.creationTime != null 
+     ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss') 
+      : '-'} 
+   </div>  
+  ) 
+},
+lastModificationTime: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.lastModificationTime != null 
+     ? dayjs(row.lastModificationTime).format('YYYY-MM-DD HH:mm:ss') 
+      : '-'} 
+   </div>  
+  ) 
+},
+isDeleted: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.isDeleted != null ? (row.isDeleted ? '鏄�' : '鍚�') : '-'} 
+   </div>  
+  ) 
+},
+deletionTime: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.deletionTime != null 
+     ? dayjs(row.deletionTime).format('YYYY-MM-DD HH:mm:ss') 
+      : '-'} 
+   </div>  
+  ) 
+},
+isDisabled: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.isDisabled != null ? (row.isDisabled ? '鏄�' : '鍚�') : '-'} 
+   </div>  
+  ) 
+}, 
+              name: ({ row }: any) => { 
+                return row?.name ? ( 
+                  <TdButton 
+                    onClick={() => openDetail(row)} 
+                    text={<span style="color:#5a84ff">璇︽儏</span>} 
+                    icon="scale" 
+                    tip={row?.name} 
+                    hover 
+                  > 
+                    {row?.name} 
+                  </TdButton> 
+                ) : ( 
+                  '-' 
+                ) 
+              }, 
+            }} 
+          ></BaseTable> 
+        </div> 
+      ) 
+    } 
+ 
+    return () => { 
+      return ( 
+        <div class={styles.workTaskContent}> 
+          {/* 娣诲姞/缂栬緫 */} 
+          <WorkTaskDrawer 
+            v-model={dialogConfig.visible} 
+            title={dialogConfig.title} 
+            row={current.value} 
+            sort={sort.value} 
+            onConfirm={onConfirmWorkTask} 
+          /> 
+          {/* 楂樼骇鏌ヨ */} 
+          <WorkTaskQueryDrawer 
+            ref="workTaskQueryDrawerRef" 
+            v-model={dialogConfigForQuery.visible} 
+            title={dialogConfigForQuery.title} 
+            row={current.value} 
+            sort={sort.value} 
+            onConfirmQuery={handleQuery} 
+            onRestQuery={resetQuery} 
+            onClose={closeQuery} 
+          /> 
+ 
+          <div class={styles.headerContent}> 
+            <div class={styles.header}> 
+              <IconButton 
+                v-permission="workTask-add" 
+                icon="add-p" 
+                onClick={onAddWorkTask} 
+                type="primary" 
+              > 
+                娣诲姞 
+              </IconButton> 
+              <el-divider direction="vertical" /> 
+ 
+              <el-upload 
+                v-permission="workTask-import" 
+                name="file" 
+                accept=".xlsx,.xls,.csv" 
+                show-file-list={false} 
+                onError={onError} 
+                onSuccess={onSuccess} 
+                before-upload={onBeforeUpload} 
+                headers={headers.value} 
+                action="/api/v1/PipeLineLems/workTask/import" 
+              > 
+                <IconButton icon="in">瀵煎叆</IconButton> 
+              </el-upload> 
+ 
+              <IconButton 
+                v-permission="workTask-output" 
+                icon="out" 
+                onClick={handleExport} 
+              > 
+                瀵煎嚭 
+              </IconButton> 
+            </div> 
+            <ElFormItem style={{ marginTop: '15px' }}> 
+              <ElFormItem label="鍏抽敭瀛�"> 
+                 <el-tooltip 
+                  class="box-item" 
+                  effect="dark" 
+                  content={searchFormInputAttrs_Placeholder.value} 
+                  placement="top-start" 
+                > 
+                <ElInput 
+                  v-model={queryForm.value.searchVal} 
+                  placeholder={searchFormInputAttrs_Placeholder.value} 
+                  clearable 
+                  class={styles.formItem} 
+                /> 
+                </el-tooltip> 
+              </ElFormItem> 
+              <ElFormItem label="" style="width:100px;">  
+                   <ElSelect 
+                                v-model={queryForm.value.searchVal_FilterMode} 
+                                placeholder="璇烽�夋嫨" 
+                                class={styles.formItem} 
+                              > 
+                                {FILTER_MODE_OPTIONS_STRING.map((option) => ( 
+                                  <ElOption 
+                                    key={option.value} 
+                                    label={option.label} 
+                                    value={option.value} 
+                                  /> 
+                                ))} 
+                              </ElSelect> 
+              </ElFormItem>  
+              <IconButton type="primary" icon="search" onClick={handleQueryForMain}> 
+                鏌ヨ 
+              </IconButton> 
+              {/* <IconButton style="" icon="refresh" onClick={resetQuery}> 
+                閲嶇疆 
+              </IconButton> */} 
+              <IconButton 
+                v-permission="workTask-add" 
+                icon="search" 
+                onClick={onAdvancedQuery} 
+                type="primary" 
+              > 
+                楂樼骇鏌ヨ 
+              </IconButton> 
+            </ElFormItem> 
+          </div> 
+ 
+          <RenderBaseTable 
+            url="/api/v1/PipeLineLems/workTask/page" 
+            dataSource={dataSource} 
+            isChecked={true} 
+            isDrag={true} 
+          /> 
+        </div> 
+      ) 
+    } 
+  }, 
+}) 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/WorkTask.module.scss b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/WorkTask.module.scss
new file mode 100644
index 0000000..ad4cde7
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/WorkTask.module.scss
@@ -0,0 +1,7 @@
+.WorkTask { 
+  background-color: #fff; 
+  border-radius: 5px 5px 0 0; 
+  width: 100%; 
+  height: 100%; 
+  border: 1px solid #dbdbdb; 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/WorkTask.tsx b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/WorkTask.tsx
new file mode 100644
index 0000000..036696a
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/WorkTask.tsx
@@ -0,0 +1,80 @@
+import { 
+  Component, 
+  DefineComponent, 
+  defineComponent, 
+  markRaw, 
+  ref, 
+  SetupContext, 
+  onMounted, 
+} from 'vue' 
+import styles from './WorkTask.module.scss' 
+import Tab from '@/components/Tab/Tab' 
+import { useProvideModels } from '@/libs/Provider/app' 
+import { usePermission } from '@/libs/Permission/Permission' 
+import { permissionCodes } from '../enum' 
+import { ModuleType, TabItem } from '../type/Type' 
+import { getEntityNames } from '@/hooks/hook' 
+import TabPane from '@/components/Tab/TabPane' 
+ 
+const Models: ModuleType = import.meta.glob('./config/*.json', { 
+  eager: true, 
+}) 
+ 
+const entityNames = getEntityNames(Models) 
+ 
+const nameToLabelMap = [{ name: 'WorkTask', label: '浣滀笟浠诲姟' }] 
+ 
+export default defineComponent({ 
+  name: 'WorkTask', 
+ 
+  setup(props, ctx: SetupContext) { 
+    useProvideModels() 
+    usePermission(props, permissionCodes) 
+ 
+    const rf = ref<{ 
+      [key: string]: any 
+    }>({}) 
+ 
+    const tabData = ref<TabItem[]>([]) 
+ 
+    const onTabChange = (v: string) => { 
+      rf.value?.[v]?.reloadList() 
+    } 
+ 
+    const initTableData = async () => { 
+      for (const i in entityNames) { 
+        const name = entityNames[i] 
+        const module = await import(`./Pages/${name}/${name}.tsx`) 
+        const WorkTask = markRaw(module.default) 
+        const foundLabel = 
+          nameToLabelMap.find((item) => item.name === name)?.label || name 
+        tabData.value.push({ 
+          label: foundLabel, 
+          name, 
+          component: WorkTask, 
+        }) 
+      } 
+    } 
+ 
+    initTableData() 
+ 
+    return () => { 
+      return ( 
+        <div class={styles.WorkTask}> 
+          <Tab data={tabData.value} type="list" onTab={onTabChange}> 
+            {tabData.value.map((widgetInfo) => { 
+              const Widget: any = widgetInfo.component 
+              return ( 
+                <TabPane label={widgetInfo.label} name={widgetInfo.name}> 
+                  <Widget 
+                    ref={(r: any) => (rf.value['WorkTask'] = r)} 
+                  ></Widget> 
+                </TabPane> 
+              ) 
+            })} 
+          </Tab> 
+        </div> 
+      ) 
+    } 
+  }, 
+}) 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/config/WorkTask.json b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/config/WorkTask.json
new file mode 100644
index 0000000..a9b211b
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/config/WorkTask.json
@@ -0,0 +1,3 @@
+{ 
+  "name": "WorkTask" 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/enum.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/enum.ts
new file mode 100644
index 0000000..154e8db
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/enum.ts
@@ -0,0 +1,15 @@
+export interface TabType { 
+  label: string 
+  name: string 
+  columns?: any[] 
+  data?: any[] 
+  isFooter: boolean 
+  [key: string]: any 
+} 
+ 
+export const permissionCodes = { 
+  'workTask-list': '鍒楄〃-鍒楄〃', 
+  'workTask-add': '鍒楄〃-娣诲姞', 
+  'workTask-import': '鍒楄〃-瀵煎叆', 
+  'workTask-output': '鍒楄〃-杈撳嚭', 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/index.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/index.ts
new file mode 100644
index 0000000..62f5587
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/index.ts
@@ -0,0 +1,14 @@
+import WorkTask from './Views/WorkTask' 
+import Setting from '@/components/Setting/Setting' 
+import { provider } from '@/provider/index' 
+import p from '../../assets/svg/p.svg' 
+ 
+export default { 
+  is: 'WorkTask', 
+  name: '浣滀笟浠诲姟', 
+  category: 'run', 
+  icon: p, 
+  authorizationRequired: false, 
+  canvasView: provider(WorkTask), 
+  settingsView: Setting, 
+} 
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/type/type.d.ts b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/type/type.d.ts
new file mode 100644
index 0000000..10b93d4
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/WorkTask/type/type.d.ts
@@ -0,0 +1,45 @@
+import { Component } from 'vue' 
+ 
+export interface DataItemType { 
+  id?: string 
+  name?: string 
+  code?: string 
+  description?: string 
+  label?: string 
+  value?: string | number 
+} 
+ 
+export interface WorkTaskBaseType { 
+  id?: string 
+  name?: string 
+  code?: string 
+  value?: number 
+  description?: string 
+  options?: Array<DataItemType> 
+  abilityValue?: number | string 
+  data?: DataItemType 
+  defaultValue?: string | number 
+  flow: string 
+} 
+ 
+export interface FlowDefinitionType { 
+  id?: string 
+  name?: string 
+  code?: string 
+  description?: string 
+} 
+ 
+export type ModuleType = Record< 
+  string, 
+  { 
+    default: Record<string, string> 
+    name: string 
+  } 
+> 
+ 
+export interface TabItem { 
+  name: string 
+  label: string 
+  component: Component 
+  hidden?: boolean 
+} 
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
index 7b61b13..f681023 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -8,6 +8,7 @@
 using CMS.Plugin.OrderManagement.Abstractions.Models;
 using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.CallMaterialOrder;
 using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
+using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
 using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
 using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder;
 using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrderRecord;
@@ -23,6 +24,7 @@
 using Microsoft.Extensions.DependencyInjection;
 using Newtonsoft.Json;
 using Volo.Abp;
+using Volo.Abp.ObjectMapping;
 using Volo.Abp.Uow;
 
 namespace CMS.Plugin.PipeLineLems.Application.Implements;
@@ -112,6 +114,14 @@
         //TODO:杩欓噷璋冪敤wms鐨勫彨鏂欐帴鍙�
         try
         {
+            //棣栧厛鍒ゆ柇搴撳瓨鏄惁瀛樺湪
+            var dto = await IsExistInWms(input.PipeSpecCode);
+            if (dto != null)
+            {
+                throw new UserFriendlyException($"宸茬粡鍒嗘嫞杩囷紝搴撳瓨鍦ㄥ簱浣峽dto.PlaceNo},鎵樼洏鍙穥dto.ContainerNo}");
+            }
+
+
             WmsMaterialStockCreateDto param = new WmsMaterialStockCreateDto()
             {
                 ContainerNo = input.ContinerNo,
@@ -258,6 +268,7 @@
         };
         return response;
     }
+
     /// <summary>
     /// 鍒涘缓浣滀笟璁″垝
     /// </summary>
@@ -266,7 +277,6 @@
     /// <param name="workPlanAppService"></param>
     /// <returns></returns>
     /// <exception cref="UserFriendlyException"></exception>
-
     public async Task<MesOrderResponse> CommonCreatebyApsAsync(List<WorkPlanInput> input, IServiceProvider _serviceProvider,
     WorkPlanAppService workPlanAppService,
     string userId, string userAccount
@@ -306,6 +316,8 @@
         var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
         var productProvider = _serviceProvider.GetRequiredService<IProductProvider>();
         var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>();
+
+        var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
 
         List<OrderModel> orderModels = new List<OrderModel>();
 
@@ -443,16 +455,36 @@
                 insertObj.CreatorName = userAccount;
                 insertObj.Remark = "绯荤粺瀵煎叆";
                 await workPlanAppService.CreateAsync(insertObj);
+
+                //澧炲姞鏂板璁″垝浠诲姟琛ㄦ暟鎹� 銆怑ditby shaocx,2025-05-20銆�
+                var org_insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj);
+                org_insertTaskObj.Son_TaskCode = insertObj.TaskCode;
+                await workTaskAppService.CreateAsync(org_insertTaskObj);
+                if (insertObj.ProcessName == "鍒囧壊宸ュ簭")
+                {//鏂板缓 鍒嗘嫞宸ュ簭
+                    var insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj);
+                    insertTaskObj.Son_TaskCode = insertObj.TaskCode + "_1";
+                    insertTaskObj.ProcessName = "鍒嗘嫞宸ュ簭";
+                    await workTaskAppService.CreateAsync(insertTaskObj);
+                }
+                else if (insertObj.ProcessName == "瑁呴厤宸ュ簭")
+                {//鏂板缓 娉曞叞鍐茬爜宸ュ簭(澶氫釜)
+                 //鐩墠鏆傛椂鎼炴垚涓�涓硶鍏�
+                    var insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj);
+                    insertTaskObj.Son_TaskCode = insertObj.TaskCode + "_1";
+                    insertTaskObj.ProcessName = "娉曞叞鍐茬爜宸ュ簭";
+                    await workTaskAppService.CreateAsync(insertTaskObj);
+                }
             }
 
             #endregion
 
             await uow.CompleteAsync();
         }
-        catch (Exception)
+        catch (Exception ex)
         {
             await uow.RollbackAsync();
-            throw;
+            throw ex;
         }
         finally
         {
@@ -1150,6 +1182,50 @@
     }
 
     /// <summary>
+    /// 绠℃缂栫爜鏄惁瀛樺湪搴撳瓨涓�
+    /// </summary>
+    /// <param name="pipeSpecCode"></param>
+    /// <returns></returns>
+    /// <exception cref="UserFriendlyException"></exception>
+    public async Task<WmsMaterialStockDto> IsExistInWms(string pipeSpecCode)
+    {
+        //TODO:杩欓噷璋冪敤wms鐨勫簱瀛樻煡璇㈡帴鍙�
+        try
+        {
+            GetWmsMaterialStockInput param = new GetWmsMaterialStockInput()
+            {
+                RedundantField2 = pipeSpecCode,
+                RedundantField2_FilterMode = SearchFilterModeEnum.绮惧噯鏌ヨ
+            };
+
+            string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/";
+            string url = baseUrl + "LMesOperate/FindListByFilter";
+            string json = JsonConvert.SerializeObject(param);
+            var result = HttpApiRequest.HttpPost(url, json);
+            var res = JsonConvert.DeserializeObject<CmsApiResponse<List<WmsMaterialStockDto>>>(result);
+            if (res.Code == 200)
+            {
+                var retData = res.Data as List<WmsMaterialStockDto>;
+                if (retData?.Count > 0)
+                {
+                    return retData.First();
+                }
+                return null;
+
+            }
+            else
+            {
+                throw new UserFriendlyException(res.Message);
+            };
+        }
+        catch (Exception)
+        {
+
+            throw;
+        }
+    }
+
+    /// <summary>
     /// 鐢熸垚闅忔満鐨刉msTaskNo
     /// </summary>
     /// <returns>闅忔満鐢熸垚鐨勪换鍔$紪鍙�</returns>
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/CMSPluginDbContext.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/CMSPluginDbContext.cs
index 5273088..fd98c04 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/CMSPluginDbContext.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/CMSPluginDbContext.cs
@@ -34,6 +34,7 @@
 
         builder.ConfigureMyTestEntityName();
         builder.ConfigureWorkPlan();
+        builder.ConfigureWorkTask();
         builder.ConfigureCallMaterialOrder();
         builder.ConfigureCallMaterialOrderRecord();
 
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250515064954_Update1.Designer.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250515064954_Update1.Designer.cs
deleted file mode 100644
index 688e61d..0000000
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250515064954_Update1.Designer.cs
+++ /dev/null
@@ -1,673 +0,0 @@
-锘�// <auto-generated />
-using System;
-using CMS.Plugin.PipeLineLems.MySQL;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Volo.Abp.EntityFrameworkCore;
-
-#nullable disable
-
-namespace CMS.Plugin.PipeLineLems.MySQL.Migrations
-{
-    [DbContext(typeof(CMSPluginDbContext))]
-    [Migration("20250515064954_Update1")]
-    partial class Update1
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
-                .HasAnnotation("ProductVersion", "6.0.16")
-                .HasAnnotation("Relational:MaxIdentifierLength", 64);
-
-            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder.CallMaterialOrder", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("char(36)");
-
-                    b.Property<int>("CallMaterialStatus")
-                        .HasColumnType("int")
-                        .HasComment("鍙枡鐘舵��");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasMaxLength(40)
-                        .HasColumnType("varchar(40)")
-                        .HasColumnName("ConcurrencyStamp")
-                        .HasComment("骞跺彂鎴�");
-
-                    b.Property<DateTime>("CreationTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("CreationTime")
-                        .HasComment("鍒涘缓鏃堕棿");
-
-                    b.Property<Guid?>("CreatorId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("CreatorId")
-                        .HasComment("鍒涘缓浜篒D");
-
-                    b.Property<string>("CreatorName")
-                        .HasMaxLength(64)
-                        .HasColumnType("varchar(64)")
-                        .HasComment("鍒涘缓浜�");
-
-                    b.Property<string>("DataIdentifier")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鍘熸枡鏍囪瘑");
-
-                    b.Property<string>("DeleteRemark")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鍒犻櫎澶囨敞");
-
-                    b.Property<Guid?>("DeleterId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("DeleterId")
-                        .HasComment("鍒犻櫎浜篒D");
-
-                    b.Property<DateTime?>("DeletionTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("DeletionTime")
-                        .HasComment("鍒犻櫎鏃堕棿");
-
-                    b.Property<string>("ExtraField1")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁1");
-
-                    b.Property<string>("ExtraField2")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁2");
-
-                    b.Property<string>("ExtraField3")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁3");
-
-                    b.Property<string>("ExtraProperties")
-                        .HasColumnType("longtext")
-                        .HasColumnName("ExtraProperties")
-                        .HasComment("鎵╁睍灞炴��");
-
-                    b.Property<bool>("IsDeleted")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("tinyint(1)")
-                        .HasDefaultValue(false)
-                        .HasColumnName("IsDeleted")
-                        .HasComment("鏄惁鍒犻櫎");
-
-                    b.Property<bool?>("IsDisabled")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("tinyint(1)")
-                        .HasDefaultValue(false)
-                        .HasComment("鏄惁绂佺敤");
-
-                    b.Property<DateTime?>("LastModificationTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("LastModificationTime")
-                        .HasComment("淇敼鏃堕棿");
-
-                    b.Property<Guid?>("LastModifierId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("LastModifierId")
-                        .HasComment("淇敼浜篒D");
-
-                    b.Property<string>("LastModifierName")
-                        .HasMaxLength(64)
-                        .HasColumnType("varchar(64)")
-                        .HasComment("淇敼浜�");
-
-                    b.Property<string>("MaterialMode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鍘熸枡鍨嬪彿");
-
-                    b.Property<string>("OperationRemark")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎿嶄綔澶囨敞");
-
-                    b.Property<int>("Quantity")
-                        .HasColumnType("int")
-                        .HasComment("鍙枡鏁伴噺");
-
-                    b.Property<string>("Remark")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("澶囨敞");
-
-                    b.Property<int>("Sort")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasDefaultValue(0)
-                        .HasComment("鎺掑簭");
-
-                    b.Property<string>("WmsRetResult")
-                        .HasColumnType("longtext")
-                        .HasComment("WMS杩斿洖缁撴灉");
-
-                    b.Property<string>("WmsTaskNo")
-                        .HasColumnType("longtext")
-                        .HasComment("WMS浠诲姟鍙�");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DataIdentifier")
-                        .IsUnique();
-
-                    b.ToTable("scms_callmaterialorders", (string)null);
-
-                    b.HasComment("鍙枡鍗曡〃");
-                });
-
-            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.CallMaterialOrderRecord.CallMaterialOrderRecord", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("char(36)");
-
-                    b.Property<int>("CallMaterialStatus")
-                        .HasColumnType("int")
-                        .HasComment("鍙枡鐘舵��");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasMaxLength(40)
-                        .HasColumnType("varchar(40)")
-                        .HasColumnName("ConcurrencyStamp")
-                        .HasComment("骞跺彂鎴�");
-
-                    b.Property<DateTime>("CreationTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("CreationTime")
-                        .HasComment("鍒涘缓鏃堕棿");
-
-                    b.Property<Guid?>("CreatorId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("CreatorId")
-                        .HasComment("鍒涘缓浜篒D");
-
-                    b.Property<string>("CreatorName")
-                        .HasMaxLength(64)
-                        .HasColumnType("varchar(64)")
-                        .HasComment("鍒涘缓浜�");
-
-                    b.Property<string>("DataIdentifier")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鍘熸枡鏍囪瘑");
-
-                    b.Property<Guid?>("DeleterId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("DeleterId")
-                        .HasComment("鍒犻櫎浜篒D");
-
-                    b.Property<DateTime?>("DeletionTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("DeletionTime")
-                        .HasComment("鍒犻櫎鏃堕棿");
-
-                    b.Property<string>("ExtraField1")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁1");
-
-                    b.Property<string>("ExtraField2")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁2");
-
-                    b.Property<string>("ExtraField3")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁3");
-
-                    b.Property<string>("ExtraProperties")
-                        .HasColumnType("longtext")
-                        .HasColumnName("ExtraProperties")
-                        .HasComment("鎵╁睍灞炴��");
-
-                    b.Property<bool>("IsDeleted")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("tinyint(1)")
-                        .HasDefaultValue(false)
-                        .HasColumnName("IsDeleted")
-                        .HasComment("鏄惁鍒犻櫎");
-
-                    b.Property<DateTime?>("LastModificationTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("LastModificationTime")
-                        .HasComment("淇敼鏃堕棿");
-
-                    b.Property<Guid?>("LastModifierId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("LastModifierId")
-                        .HasComment("淇敼浜篒D");
-
-                    b.Property<string>("MaterialMode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鍘熸枡鍨嬪彿");
-
-                    b.Property<int>("Quantity")
-                        .HasColumnType("int")
-                        .HasComment("鍙枡鏁伴噺");
-
-                    b.Property<string>("Remark")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("澶囨敞");
-
-                    b.Property<int>("Sort")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasDefaultValue(0)
-                        .HasComment("鎺掑簭");
-
-                    b.Property<string>("WmsRetResult")
-                        .HasColumnType("longtext")
-                        .HasComment("WMS杩斿洖缁撴灉");
-
-                    b.Property<string>("WmsTaskNo")
-                        .HasColumnType("longtext")
-                        .HasComment("WMS浠诲姟鍙�");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DataIdentifier");
-
-                    b.ToTable("scms_callmaterialorderrecords", (string)null);
-
-                    b.HasComment("鍙枡璁板綍琛�");
-                });
-
-            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.MyTestEntityNames.MyTestEntityName", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("char(36)");
-
-                    b.Property<string>("Code")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("varchar(64)")
-                        .HasComment("缂栫爜");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasMaxLength(40)
-                        .HasColumnType("varchar(40)")
-                        .HasColumnName("ConcurrencyStamp");
-
-                    b.Property<DateTime>("CreationTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("CreationTime");
-
-                    b.Property<Guid?>("CreatorId")
-                        .HasColumnType("char(36)")
-                        .HasColumnName("CreatorId");
-
-                    b.Property<Guid?>("DeleterId")
-                        .HasColumnType("char(36)")
-                        .HasColumnName("DeleterId");
-
-                    b.Property<DateTime?>("DeletionTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("DeletionTime");
-
-                    b.Property<string>("ExtraProperties")
-                        .HasColumnType("longtext")
-                        .HasColumnName("ExtraProperties");
-
-                    b.Property<bool>("IsDeleted")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("tinyint(1)")
-                        .HasDefaultValue(false)
-                        .HasColumnName("IsDeleted");
-
-                    b.Property<bool?>("IsDisabled")
-                        .HasColumnType("tinyint(1)")
-                        .HasComment("鏄惁绂佺敤");
-
-                    b.Property<DateTime?>("LastModificationTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("LastModificationTime");
-
-                    b.Property<Guid?>("LastModifierId")
-                        .HasColumnType("char(36)")
-                        .HasColumnName("LastModifierId");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("varchar(64)")
-                        .HasComment("鍚嶇О");
-
-                    b.Property<string>("Remark")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("澶囨敞");
-
-                    b.Property<int>("Sort")
-                        .HasColumnType("int")
-                        .HasComment("鎺掑簭");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("Name");
-
-                    b.ToTable("scms_mytestentitynames", (string)null);
-
-                    b.HasComment("MyTestEntityName");
-                });
-
-            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.WorkPlan.WorkPlan", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("char(36)");
-
-                    b.Property<int>("CallMaterialStatus")
-                        .HasColumnType("int")
-                        .HasComment("鍙枡鐘舵��");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasMaxLength(40)
-                        .HasColumnType("varchar(40)")
-                        .HasColumnName("ConcurrencyStamp")
-                        .HasComment("骞跺彂鎴�");
-
-                    b.Property<DateTime>("CreationTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("CreationTime")
-                        .HasComment("鍒涘缓鏃堕棿");
-
-                    b.Property<Guid?>("CreatorId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("CreatorId")
-                        .HasComment("鍒涘缓浜篒D");
-
-                    b.Property<string>("CreatorName")
-                        .HasMaxLength(64)
-                        .HasColumnType("varchar(64)")
-                        .HasComment("鍒涘缓浜�");
-
-                    b.Property<decimal>("CuttingPosition")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("鍒囧壊浣嶇疆");
-
-                    b.Property<string>("DataIdentifier")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鍘熸枡鏍囪瘑");
-
-                    b.Property<string>("DeleteRemark")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鍒犻櫎澶囨敞");
-
-                    b.Property<Guid?>("DeleterId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("DeleterId")
-                        .HasComment("鍒犻櫎浜篒D");
-
-                    b.Property<DateTime?>("DeletionTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("DeletionTime")
-                        .HasComment("鍒犻櫎鏃堕棿");
-
-                    b.Property<string>("EquipmentCode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("璁惧浠g爜");
-
-                    b.Property<string>("ExtraField1")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁1");
-
-                    b.Property<string>("ExtraField2")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁2");
-
-                    b.Property<string>("ExtraField3")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎵╁睍瀛楁3");
-
-                    b.Property<string>("ExtraProperties")
-                        .HasColumnType("longtext")
-                        .HasColumnName("ExtraProperties")
-                        .HasComment("鎵╁睍灞炴��");
-
-                    b.Property<string>("FactoryCode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("宸ュ巶浠g爜");
-
-                    b.Property<decimal>("FlangeInnerDiameter")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("娉曞叞鐩村緞(mm)");
-
-                    b.Property<decimal>("FlangeThickness")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("娉曞叞鍘氬害(mm)");
-
-                    b.Property<bool>("IsDeleted")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("tinyint(1)")
-                        .HasDefaultValue(false)
-                        .HasColumnName("IsDeleted")
-                        .HasComment("鏄惁鍒犻櫎");
-
-                    b.Property<bool?>("IsDisabled")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("tinyint(1)")
-                        .HasDefaultValue(false)
-                        .HasComment("鏄惁绂佺敤");
-
-                    b.Property<DateTime?>("LastModificationTime")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("LastModificationTime")
-                        .HasComment("淇敼鏃堕棿");
-
-                    b.Property<Guid?>("LastModifierId")
-                        .HasMaxLength(36)
-                        .HasColumnType("char(36)")
-                        .HasColumnName("LastModifierId")
-                        .HasComment("淇敼浜篒D");
-
-                    b.Property<string>("LastModifierName")
-                        .HasMaxLength(64)
-                        .HasColumnType("varchar(64)")
-                        .HasComment("淇敼浜�");
-
-                    b.Property<decimal>("Length")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("闀垮害(mm)");
-
-                    b.Property<string>("MarkingContent")
-                        .HasMaxLength(1024)
-                        .HasColumnType("varchar(1024)")
-                        .HasComment("鎵撶爜鍐呭");
-
-                    b.Property<decimal>("MarkingPosition")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("鎵撶爜浣嶇疆");
-
-                    b.Property<string>("Material")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鏉愯川");
-
-                    b.Property<string>("MaterialMode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鍘熸枡鍨嬪彿");
-
-                    b.Property<string>("OperationRemark")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鎿嶄綔澶囨敞");
-
-                    b.Property<decimal>("OuterDiameter")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("澶栧緞(mm)");
-
-                    b.Property<string>("PipeAllowableStress")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("娉曞叞鍐茬爜鍐呭");
-
-                    b.Property<decimal>("PipeDiameter")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("濂楃闀垮害(mm)");
-
-                    b.Property<string>("PipeFittingCode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("绠′欢缂栫爜");
-
-                    b.Property<string>("PipeSectionName")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("绠℃鍚嶇О");
-
-                    b.Property<string>("PipeSpecCode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("绠℃缂栫爜");
-
-                    b.Property<decimal>("PipeWallThickness")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("濂楃鐩村緞(mm)");
-
-                    b.Property<DateTime?>("PlannedEndTime")
-                        .HasColumnType("datetime(6)")
-                        .HasComment("璁″垝瀹屾垚鏃堕棿");
-
-                    b.Property<DateTime?>("PlannedStartTime")
-                        .HasColumnType("datetime(6)")
-                        .HasComment("璁″垝寮�濮嬫椂闂�");
-
-                    b.Property<string>("PreSerialNumber")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("椤哄簭鍙�");
-
-                    b.Property<string>("ProcessName")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("宸ュ簭鍚嶇О");
-
-                    b.Property<string>("ProcessRouteNumber")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("宸ヨ壓娴佸悜缂栧彿");
-
-                    b.Property<string>("ProdLineCode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("浜х嚎缂栫爜");
-
-                    b.Property<string>("ProductCode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("浜у搧浠g爜");
-
-                    b.Property<string>("ProjectNumber")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("椤圭洰鍙�");
-
-                    b.Property<int>("Quantity")
-                        .HasColumnType("int")
-                        .HasComment("绠℃鏁伴噺");
-
-                    b.Property<string>("Remark")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("澶囨敞");
-
-                    b.Property<string>("ShipNumber")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鑸瑰彿");
-
-                    b.Property<int>("Sort")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasDefaultValue(0)
-                        .HasComment("鎺掑簭");
-
-                    b.Property<string>("TaskCode")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("浠诲姟缂栫爜");
-
-                    b.Property<string>("TeamInfo")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鐝粍淇℃伅");
-
-                    b.Property<decimal>("Thickness")
-                        .HasColumnType("decimal(18,2)")
-                        .HasComment("澹佸帤(mm)");
-
-                    b.Property<string>("Timestamp")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("鏃堕棿鎴�");
-
-                    b.Property<string>("WeldingHeatInput")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("娉曞叞鍏О鍘嬪姏");
-
-                    b.Property<int>("WorkPlanStatus")
-                        .HasColumnType("int")
-                        .HasComment("璁″垝鐘舵��");
-
-                    b.Property<string>("WorkstationCode")
-                        .HasMaxLength(256)
-                        .HasColumnType("varchar(256)")
-                        .HasComment("宸ヤ綅浠g爜");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DataIdentifier");
-
-                    b.HasIndex("PlannedEndTime");
-
-                    b.HasIndex("PlannedStartTime");
-
-                    b.HasIndex("TaskCode")
-                        .IsUnique();
-
-                    b.ToTable("scms_workplans", (string)null);
-
-                    b.HasComment("浣滀笟璁″垝琛�");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250515064954_Update1.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250515064954_Update1.cs
deleted file mode 100644
index 2c578b0..0000000
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250515064954_Update1.cs
+++ /dev/null
@@ -1,297 +0,0 @@
-锘縰sing System;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace CMS.Plugin.PipeLineLems.MySQL.Migrations
-{
-    public partial class Update1 : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterDatabase()
-                .Annotation("MySql:CharSet", "utf8mb4");
-
-            migrationBuilder.CreateTable(
-                name: "scms_callmaterialorderrecords",
-                columns: table => new
-                {
-                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
-                    DataIdentifier = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false, comment: "鍘熸枡鏍囪瘑")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    MaterialMode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍘熸枡鍨嬪彿")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    CallMaterialStatus = table.Column<int>(type: "int", nullable: false, comment: "鍙枡鐘舵��"),
-                    Quantity = table.Column<int>(type: "int", nullable: false, comment: "鍙枡鏁伴噺"),
-                    WmsRetResult = table.Column<string>(type: "longtext", nullable: true, comment: "WMS杩斿洖缁撴灉")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    WmsTaskNo = table.Column<string>(type: "longtext", nullable: true, comment: "WMS浠诲姟鍙�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true, comment: "鎵╁睍灞炴��")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true, comment: "骞跺彂鎴�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "鍒涘缓鏃堕棿"),
-                    CreatorId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "鍒涘缓浜篒D", collation: "ascii_general_ci"),
-                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "淇敼鏃堕棿"),
-                    LastModifierId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "淇敼浜篒D", collation: "ascii_general_ci"),
-                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false, comment: "鏄惁鍒犻櫎"),
-                    DeleterId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "鍒犻櫎浜篒D", collation: "ascii_general_ci"),
-                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "鍒犻櫎鏃堕棿"),
-                    CreatorName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "鍒涘缓浜�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    Sort = table.Column<int>(type: "int", nullable: false, defaultValue: 0, comment: "鎺掑簭"),
-                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "澶囨敞")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraField1 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁1")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraField2 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁2")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraField3 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁3")
-                        .Annotation("MySql:CharSet", "utf8mb4")
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_scms_callmaterialorderrecords", x => x.Id);
-                },
-                comment: "鍙枡璁板綍琛�")
-                .Annotation("MySql:CharSet", "utf8mb4");
-
-            migrationBuilder.CreateTable(
-                name: "scms_callmaterialorders",
-                columns: table => new
-                {
-                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
-                    DataIdentifier = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false, comment: "鍘熸枡鏍囪瘑")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    MaterialMode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍘熸枡鍨嬪彿")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    CallMaterialStatus = table.Column<int>(type: "int", nullable: false, comment: "鍙枡鐘舵��"),
-                    Quantity = table.Column<int>(type: "int", nullable: false, comment: "鍙枡鏁伴噺"),
-                    WmsRetResult = table.Column<string>(type: "longtext", nullable: true, comment: "WMS杩斿洖缁撴灉")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    WmsTaskNo = table.Column<string>(type: "longtext", nullable: true, comment: "WMS浠诲姟鍙�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true, comment: "鎵╁睍灞炴��")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true, comment: "骞跺彂鎴�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "鍒涘缓鏃堕棿"),
-                    CreatorId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "鍒涘缓浜篒D", collation: "ascii_general_ci"),
-                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "淇敼鏃堕棿"),
-                    LastModifierId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "淇敼浜篒D", collation: "ascii_general_ci"),
-                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false, comment: "鏄惁鍒犻櫎"),
-                    DeleterId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "鍒犻櫎浜篒D", collation: "ascii_general_ci"),
-                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "鍒犻櫎鏃堕棿"),
-                    CreatorName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "鍒涘缓浜�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    LastModifierName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "淇敼浜�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    OperationRemark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎿嶄綔澶囨敞")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    DeleteRemark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍒犻櫎澶囨敞")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    Sort = table.Column<int>(type: "int", nullable: false, defaultValue: 0, comment: "鎺掑簭"),
-                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "澶囨敞")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, defaultValue: false, comment: "鏄惁绂佺敤"),
-                    ExtraField1 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁1")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraField2 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁2")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraField3 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁3")
-                        .Annotation("MySql:CharSet", "utf8mb4")
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_scms_callmaterialorders", x => x.Id);
-                },
-                comment: "鍙枡鍗曡〃")
-                .Annotation("MySql:CharSet", "utf8mb4");
-
-            migrationBuilder.CreateTable(
-                name: "scms_mytestentitynames",
-                columns: table => new
-                {
-                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
-                    Code = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "缂栫爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    Name = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "鍚嶇О")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
-                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "澶囨敞")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, comment: "鏄惁绂佺敤"),
-                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
-                    CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
-                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true),
-                    LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
-                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false),
-                    DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
-                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_scms_mytestentitynames", x => x.Id);
-                },
-                comment: "MyTestEntityName")
-                .Annotation("MySql:CharSet", "utf8mb4");
-
-            migrationBuilder.CreateTable(
-                name: "scms_workplans",
-                columns: table => new
-                {
-                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
-                    TaskCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false, comment: "浠诲姟缂栫爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    WorkPlanStatus = table.Column<int>(type: "int", nullable: false, comment: "璁″垝鐘舵��"),
-                    CallMaterialStatus = table.Column<int>(type: "int", nullable: false, comment: "鍙枡鐘舵��"),
-                    DataIdentifier = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍘熸枡鏍囪瘑")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    MaterialMode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍘熸枡鍨嬪彿")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闀垮害(mm)"),
-                    MarkingContent = table.Column<string>(type: "varchar(1024)", maxLength: 1024, nullable: true, comment: "鎵撶爜鍐呭")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    MarkingPosition = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎵撶爜浣嶇疆"),
-                    CuttingPosition = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍒囧壊浣嶇疆"),
-                    Quantity = table.Column<int>(type: "int", nullable: false, comment: "绠℃鏁伴噺"),
-                    FlangeThickness = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "娉曞叞鍘氬害(mm)"),
-                    FlangeInnerDiameter = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "娉曞叞鐩村緞(mm)"),
-                    WeldingHeatInput = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "娉曞叞鍏О鍘嬪姏")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    PipeAllowableStress = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "娉曞叞鍐茬爜鍐呭")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    PipeDiameter = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "濂楃闀垮害(mm)"),
-                    PipeWallThickness = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "濂楃鐩村緞(mm)"),
-                    FactoryCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "宸ュ巶浠g爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ProductCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "浜у搧浠g爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    WorkstationCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "宸ヤ綅浠g爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    EquipmentCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "璁惧浠g爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ProdLineCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "浜х嚎缂栫爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ShipNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鑸瑰彿")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ProjectNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "椤圭洰鍙�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ProcessName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "宸ュ簭鍚嶇О")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    PipeFittingCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "绠′欢缂栫爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    PreSerialNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "椤哄簭鍙�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    PipeSpecCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "绠℃缂栫爜")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    PipeSectionName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "绠℃鍚嶇О")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    OuterDiameter = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "澶栧緞(mm)"),
-                    Thickness = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "澹佸帤(mm)"),
-                    Material = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鏉愯川")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ProcessRouteNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "宸ヨ壓娴佸悜缂栧彿")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    PlannedStartTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "璁″垝寮�濮嬫椂闂�"),
-                    PlannedEndTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "璁″垝瀹屾垚鏃堕棿"),
-                    TeamInfo = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鐝粍淇℃伅")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    Timestamp = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鏃堕棿鎴�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true, comment: "鎵╁睍灞炴��")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true, comment: "骞跺彂鎴�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "鍒涘缓鏃堕棿"),
-                    CreatorId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "鍒涘缓浜篒D", collation: "ascii_general_ci"),
-                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "淇敼鏃堕棿"),
-                    LastModifierId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "淇敼浜篒D", collation: "ascii_general_ci"),
-                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false, comment: "鏄惁鍒犻櫎"),
-                    DeleterId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "鍒犻櫎浜篒D", collation: "ascii_general_ci"),
-                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "鍒犻櫎鏃堕棿"),
-                    CreatorName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "鍒涘缓浜�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    LastModifierName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "淇敼浜�")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    OperationRemark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎿嶄綔澶囨敞")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    DeleteRemark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍒犻櫎澶囨敞")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    Sort = table.Column<int>(type: "int", nullable: false, defaultValue: 0, comment: "鎺掑簭"),
-                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "澶囨敞")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, defaultValue: false, comment: "鏄惁绂佺敤"),
-                    ExtraField1 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁1")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraField2 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁2")
-                        .Annotation("MySql:CharSet", "utf8mb4"),
-                    ExtraField3 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鎵╁睍瀛楁3")
-                        .Annotation("MySql:CharSet", "utf8mb4")
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_scms_workplans", x => x.Id);
-                },
-                comment: "浣滀笟璁″垝琛�")
-                .Annotation("MySql:CharSet", "utf8mb4");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_scms_callmaterialorderrecords_DataIdentifier",
-                table: "scms_callmaterialorderrecords",
-                column: "DataIdentifier");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_scms_callmaterialorders_DataIdentifier",
-                table: "scms_callmaterialorders",
-                column: "DataIdentifier",
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_scms_mytestentitynames_Name",
-                table: "scms_mytestentitynames",
-                column: "Name");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_scms_workplans_DataIdentifier",
-                table: "scms_workplans",
-                column: "DataIdentifier");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_scms_workplans_PlannedEndTime",
-                table: "scms_workplans",
-                column: "PlannedEndTime");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_scms_workplans_PlannedStartTime",
-                table: "scms_workplans",
-                column: "PlannedStartTime");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_scms_workplans_TaskCode",
-                table: "scms_workplans",
-                column: "TaskCode",
-                unique: true);
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "scms_callmaterialorderrecords");
-
-            migrationBuilder.DropTable(
-                name: "scms_callmaterialorders");
-
-            migrationBuilder.DropTable(
-                name: "scms_mytestentitynames");
-
-            migrationBuilder.DropTable(
-                name: "scms_workplans");
-        }
-    }
-}
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs
index 5f49a49..6135f3c 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs
@@ -125,6 +125,9 @@
                         .HasColumnType("varchar(64)")
                         .HasComment("淇敼浜�");
 
+                    b.Property<string>("MaterialBatch")
+                        .HasColumnType("longtext");
+
                     b.Property<string>("MaterialMode")
                         .HasMaxLength(256)
                         .HasColumnType("varchar(256)")
@@ -255,6 +258,9 @@
                         .HasColumnType("char(36)")
                         .HasColumnName("LastModifierId")
                         .HasComment("淇敼浜篒D");
+
+                    b.Property<string>("MaterialBatch")
+                        .HasColumnType("longtext");
 
                     b.Property<string>("MaterialMode")
                         .HasMaxLength(256)
@@ -665,6 +671,305 @@
 
                     b.HasComment("浣滀笟璁″垝琛�");
                 });
+
+            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.WorkTask.WorkTask", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("char(36)");
+
+                    b.Property<int>("CallMaterialStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍙枡鐘舵��");
+
+                    b.Property<string>("ConcurrencyStamp")
+                        .IsConcurrencyToken()
+                        .HasMaxLength(40)
+                        .HasColumnType("varchar(40)")
+                        .HasColumnName("ConcurrencyStamp")
+                        .HasComment("骞跺彂鎴�");
+
+                    b.Property<DateTime>("CreationTime")
+                        .HasColumnType("datetime(6)")
+                        .HasColumnName("CreationTime")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<Guid?>("CreatorId")
+                        .HasMaxLength(36)
+                        .HasColumnType("char(36)")
+                        .HasColumnName("CreatorId")
+                        .HasComment("鍒涘缓浜篒D");
+
+                    b.Property<string>("CreatorName")
+                        .HasMaxLength(64)
+                        .HasColumnType("varchar(64)")
+                        .HasComment("鍒涘缓浜�");
+
+                    b.Property<decimal>("CuttingPosition")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍒囧壊浣嶇疆");
+
+                    b.Property<string>("DataIdentifier")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鍘熸枡鏍囪瘑");
+
+                    b.Property<string>("DeleteRemark")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鍒犻櫎澶囨敞");
+
+                    b.Property<Guid?>("DeleterId")
+                        .HasMaxLength(36)
+                        .HasColumnType("char(36)")
+                        .HasColumnName("DeleterId")
+                        .HasComment("鍒犻櫎浜篒D");
+
+                    b.Property<DateTime?>("DeletionTime")
+                        .HasColumnType("datetime(6)")
+                        .HasColumnName("DeletionTime")
+                        .HasComment("鍒犻櫎鏃堕棿");
+
+                    b.Property<string>("EquipmentCode")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("璁惧浠g爜");
+
+                    b.Property<string>("ExtraField1")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鎵╁睍瀛楁1");
+
+                    b.Property<string>("ExtraField2")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鎵╁睍瀛楁2");
+
+                    b.Property<string>("ExtraField3")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鎵╁睍瀛楁3");
+
+                    b.Property<string>("ExtraProperties")
+                        .HasColumnType("longtext")
+                        .HasColumnName("ExtraProperties")
+                        .HasComment("鎵╁睍灞炴��");
+
+                    b.Property<string>("FactoryCode")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("宸ュ巶浠g爜");
+
+                    b.Property<decimal>("FlangeInnerDiameter")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("娉曞叞鐩村緞(mm)");
+
+                    b.Property<decimal>("FlangeThickness")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("娉曞叞鍘氬害(mm)");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("tinyint(1)")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<bool?>("IsDisabled")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("tinyint(1)")
+                        .HasDefaultValue(false)
+                        .HasComment("鏄惁绂佺敤");
+
+                    b.Property<DateTime?>("LastModificationTime")
+                        .HasColumnType("datetime(6)")
+                        .HasColumnName("LastModificationTime")
+                        .HasComment("淇敼鏃堕棿");
+
+                    b.Property<Guid?>("LastModifierId")
+                        .HasMaxLength(36)
+                        .HasColumnType("char(36)")
+                        .HasColumnName("LastModifierId")
+                        .HasComment("淇敼浜篒D");
+
+                    b.Property<string>("LastModifierName")
+                        .HasMaxLength(64)
+                        .HasColumnType("varchar(64)")
+                        .HasComment("淇敼浜�");
+
+                    b.Property<decimal>("Length")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闀垮害(mm)");
+
+                    b.Property<string>("MarkingContent")
+                        .HasMaxLength(1024)
+                        .HasColumnType("varchar(1024)")
+                        .HasComment("鎵撶爜鍐呭");
+
+                    b.Property<decimal>("MarkingPosition")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎵撶爜浣嶇疆");
+
+                    b.Property<string>("Material")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鏉愯川");
+
+                    b.Property<string>("MaterialMode")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鍘熸枡鍨嬪彿");
+
+                    b.Property<string>("OperationRemark")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鎿嶄綔澶囨敞");
+
+                    b.Property<decimal>("OuterDiameter")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("澶栧緞(mm)");
+
+                    b.Property<string>("PipeAllowableStress")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("娉曞叞鍐茬爜鍐呭");
+
+                    b.Property<decimal>("PipeDiameter")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("濂楃闀垮害(mm)");
+
+                    b.Property<string>("PipeFittingCode")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("绠′欢缂栫爜");
+
+                    b.Property<string>("PipeSectionName")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("绠℃鍚嶇О");
+
+                    b.Property<string>("PipeSpecCode")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("绠℃缂栫爜");
+
+                    b.Property<decimal>("PipeWallThickness")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("濂楃鐩村緞(mm)");
+
+                    b.Property<DateTime?>("PlannedEndTime")
+                        .HasColumnType("datetime(6)")
+                        .HasComment("璁″垝瀹屾垚鏃堕棿");
+
+                    b.Property<DateTime?>("PlannedStartTime")
+                        .HasColumnType("datetime(6)")
+                        .HasComment("璁″垝寮�濮嬫椂闂�");
+
+                    b.Property<string>("PreSerialNumber")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("椤哄簭鍙�");
+
+                    b.Property<string>("ProcessName")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("宸ュ簭鍚嶇О");
+
+                    b.Property<string>("ProcessRouteNumber")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("宸ヨ壓娴佸悜缂栧彿");
+
+                    b.Property<string>("ProdLineCode")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("浜х嚎缂栫爜");
+
+                    b.Property<string>("ProductCode")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("浜у搧浠g爜");
+
+                    b.Property<string>("ProjectNumber")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("椤圭洰鍙�");
+
+                    b.Property<int>("Quantity")
+                        .HasColumnType("int")
+                        .HasComment("绠℃鏁伴噺");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<string>("ShipNumber")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鑸瑰彿");
+
+                    b.Property<string>("Son_TaskCode")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("瀛愪换鍔$紪鐮�");
+
+                    b.Property<int>("Sort")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int")
+                        .HasDefaultValue(0)
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TaskCode")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("浠诲姟缂栫爜");
+
+                    b.Property<string>("TeamInfo")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鐝粍淇℃伅");
+
+                    b.Property<decimal>("Thickness")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("澹佸帤(mm)");
+
+                    b.Property<string>("Timestamp")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("鏃堕棿鎴�");
+
+                    b.Property<string>("WeldingHeatInput")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("娉曞叞鍏О鍘嬪姏");
+
+                    b.Property<int>("WorkPlanStatus")
+                        .HasColumnType("int")
+                        .HasComment("璁″垝鐘舵��");
+
+                    b.Property<string>("WorkstationCode")
+                        .HasMaxLength(256)
+                        .HasColumnType("varchar(256)")
+                        .HasComment("宸ヤ綅浠g爜");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DataIdentifier");
+
+                    b.HasIndex("PlannedEndTime");
+
+                    b.HasIndex("PlannedStartTime");
+
+                    b.HasIndex("Son_TaskCode")
+                        .IsUnique();
+
+                    b.ToTable("scms_worktasks", (string)null);
+
+                    b.HasComment("浣滀笟浠诲姟琛�");
+                });
 #pragma warning restore 612, 618
         }
     }
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Scripts/UpdateMigrations.bat b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Scripts/UpdateMigrations.bat
index b3d587a..4a1c743 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Scripts/UpdateMigrations.bat
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Scripts/UpdateMigrations.bat
@@ -1,6 +1,6 @@
 cd ../
 ::dotnet ef migrations add InitialCreate -c CMSPluginDbContext -o Migrations
-dotnet ef migrations add Update1 -c CMSPluginDbContext -o Migrations
+dotnet ef migrations add Update2 -c CMSPluginDbContext -o Migrations
 ::dotnet ef migrations add Update2 -c CMSPluginDbContext -o Migrations
 ::dotnet ef migrations add Update3 -c CMSPluginDbContext -o Migrations
 cmd
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityModeQueryDrawer\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityModeQueryDrawer\346\250\241\346\235\277.txt"
index d00e438..eb5cd46 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityModeQueryDrawer\346\250\241\346\235\277.txt"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityModeQueryDrawer\346\250\241\346\235\277.txt"
@@ -20,6 +20,8 @@
   FILTER_MODE_OPTIONS_NUM,
   FILTER_MODE_OPTIONS_BOOL
 } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';
+// 引入公共表单工具文件 
+import { collectFormDataForHighQuery,onResetForHighSelect,onResetForHighQuery } from '@/utils/myformUtils';
 import { 
   BOOLEAN_OPTIONS
 } from '@/utils/commonOptionConstants';
@@ -122,7 +124,7 @@
   const onClose = (done: () => void) => {
     if (visible.value) {
       visible.value = false
-      const data =commonGetFormData();
+      const data =collectFormDataForHighQuery(formItems,formData); 
       ctx.emit('close', data)
     }
   }
@@ -130,46 +132,20 @@
    * 确认查询
    */
   const onConfirmQuery = async () => {
-    const data =commonGetFormData();
+    const data =collectFormDataForHighQuery(formItems,formData); 
     ctx.emit('confirmQuery', data)
   }
-  /** 
-   * 重置公共select查询 
-   */ 
-  const onResetForHighSelect = () => {  
-      // 遍历所有表单字段  
-      formItems.forEach(item => {  
-        // 检查字段是否有高级查询的过滤模式配置  
-        if (item.highSelectAttrs && item.highSelectAttrs.prop) {  
-          const filterModeProp = item.highSelectAttrs.prop;  
-          const options = item.highSelectAttrs.options || [];  
-      
-          // 如果存在选项,则设置为第一个选项的值  
-          if (options.length > 0) {  
-            // 假设选项格式为 { value, label } 或类似结构  
-            const firstValue = options[0].value !== undefined ? options[0].value : options[0];  
-            formData.value[filterModeProp] = firstValue;  
-          }  
-        }  
-      });  
-  }  
     /**
     * 重置查询 - 优化版
     */
     const onReset = async () => {
-        // 1. 清空所有基础字段(不包含过滤模式字段)
-        const baseFields = formItems.reduce((acc, item) => {
-        acc[item.prop] = '';
-        return acc;
-        }, {});
+        // 1. 清空所有基础字段(不包含过滤模式字段),应用基础字段初始值  
+        onResetForHighQuery(formItems,formData);
   
-        // 2. 应用基础字段初始值
-        formData.value = { ...baseFields };
+        // 2. 使用原有方法重置过滤模式字段
+        onResetForHighSelect(); 
   
-        // 3. 使用原有方法重置过滤模式字段
-        onResetForHighSelect(); // 保留原有方法调用
-  
-        // 4. 向父组件发送自定义事件
+        // 3. 向父组件发送自定义事件
         ctx.emit('restQuery');
     }
 

--
Gitblit v1.9.3