From 26bf11018b2b145942631421c7e634c5df91aea6 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期二, 21 一月 2025 15:33:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingModal.vue               |   65 ++++
 src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingForm.vue                |  266 +++++++++++++++++++
 src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingApprovalModal.vue       |   65 ++++
 src/views/dnc/base/WorkUpcomingList.vue                                     |   87 +----
 src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingApprovalForm.vue        |  237 ++++++++++++++++
 src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingModal__Style#Drawer.vue |   91 ++++++
 src/views/dnc/base/modules/WorkDone/WorkDoneForm.vue                        |    8 
 7 files changed, 756 insertions(+), 63 deletions(-)

diff --git a/src/views/dnc/base/WorkUpcomingList.vue b/src/views/dnc/base/WorkUpcomingList.vue
index 23453c8..c034832 100644
--- a/src/views/dnc/base/WorkUpcomingList.vue
+++ b/src/views/dnc/base/WorkUpcomingList.vue
@@ -33,11 +33,15 @@
     <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
     <div class="table-operator">
       <a-button type="primary" @click="searchQuery" icon="search">鍒锋柊</a-button>
-<!--      <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>-->
+      <a-button @click="handleAdd" type="primary" icon="plus">鎵归噺瀹℃牳</a-button>
     </div>
 
     <!-- table鍖哄煙-begin -->
     <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�
+        <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>
+      </div>
 
       <a-table
         ref="table"
@@ -49,6 +53,7 @@
         :dataSource="dataSource"
         :pagination="ipagination"
         :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
         class="j-table-force-nowrap"
         @change="handleTableChange">
 
@@ -73,33 +78,17 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">缂栬緫</a>
+          <a @click="handleApproval(record)">瀹℃壒</a>
           <a-divider type="vertical" />
-          <a-dropdown>
-            <a class="ant-dropdown-link">鏇村
-              <a-icon type="down" />
-            </a>
-            <a-menu slot="overlay">
-              <a-menu-item>
-                <a @click="handleDetail(record)">璇︽儏</a>
-              </a-menu-item>
-              <a-menu-item>
-                <a-popconfirm
-                  title="纭畾鍒犻櫎鍚�?"
-                  @confirm="() => handleDelete(record.id)"
-                >
-                  <a>鍒犻櫎</a>
-                </a-popconfirm>
-              </a-menu-item>
-            </a-menu>
-          </a-dropdown>
+          <a @click="handleDetail(record)">璇︽儏</a>
         </span>
       </a-table>
     </div>
 
 
-    <AssignApproveUserModal ref="modalForm" @ok="modalFormOk"></AssignApproveUserModal>
+    <WorkUpcomingModal ref="modalForm" @ok="modalFormOk"></WorkUpcomingModal>
 
+    <WorkUpcomingApprovalModal ref="modalFormApproval" @ok="modalFormOk"></WorkUpcomingApprovalModal>
   </a-card>
 </template>
 
@@ -109,14 +98,15 @@
 import { mixinDevice } from '@/utils/mixin'
 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import JDictSelectTag from '@comp/dict/JDictSelectTag.vue'
-import AssignApproveUserModal from './modules/AssignApproveUser/AssignApproveUserModal__Style#Drawer.vue'
-
+import WorkUpcomingModal from './modules/WorkUpcoming/WorkUpcomingModal__Style#Drawer.vue'
+import WorkUpcomingApprovalModal from './modules/WorkUpcoming/WorkUpcomingApprovalModal.vue'
 export default {
   name: 'AssignApproveUser',
   mixins:[JeecgListMixin, mixinDevice],
   components: {
     JDictSelectTag,
-    AssignApproveUserModal
+    WorkUpcomingModal,
+    WorkUpcomingApprovalModal
   },
   data () {
     return {
@@ -134,58 +124,28 @@
           }
         },
         {
-          title: '浜у搧鍚嶇О',
+          title: '鏂囨。鍚嶇О',
           align: "center",
-          dataIndex: 'productName',
+          dataIndex: 'assignFileStream.docName',
           width: 200,
         },
         {
           title: '閮ㄤ欢鍚嶇О',
           align: "center",
-          dataIndex: 'componentName',
+          dataIndex: 'assignFileStream.deviceName',
           width: 220,
-        },
-        {
-          title: '闆朵欢鍚嶇О',
-          align: "center",
-          dataIndex: 'partsName',
-          width: 250,
-        },
-        {
-          title: '鏂囨。鍚嶇О',
-          align: "center",
-          dataIndex: 'docName',
-          width: 250,
-        },
-        {
-          title: '璁惧鍚嶇О',
-          align: "center",
-          dataIndex: 'deviceName',
-          width: 250,
         },
         {
           title: '鏂囨。鐗堟湰',
           align: "center",
-          dataIndex: 'version',
+          dataIndex: 'assignFileStream.version',
           width: 250,
         },
         {
-          title: '鐢宠浜�',
+          title: '瀵嗙骇',
           align: "center",
-          dataIndex: 'applyUser_dictText',
-          width:300
-        },
-        {
-          title: '鐢宠鍘熷洜',
-          align: "center",
-          dataIndex: 'applyReason',
-          width:300
-        },
-        {
-          title: '鐢宠鏃堕棿',
-          align: "center",
-          dataIndex: 'applyTime',
-          width:300
+          dataIndex: 'assignFileStream.secretLevel',
+          width: 250,
         },
         {
           title: '鎿嶄綔',
@@ -212,6 +172,11 @@
   },
   methods: {
     initDictConfig(){
+    },
+    handleApproval(record){
+      this.$refs.modalFormApproval.edit(record);
+      this.$refs.modalFormApproval.title = "瀹℃壒";
+      this.$refs.modalFormApproval.disableSubmit = false;
     }
   }
 }
diff --git a/src/views/dnc/base/modules/WorkDone/WorkDoneForm.vue b/src/views/dnc/base/modules/WorkDone/WorkDoneForm.vue
index 2d11626..ba8d8ff 100644
--- a/src/views/dnc/base/modules/WorkDone/WorkDoneForm.vue
+++ b/src/views/dnc/base/modules/WorkDone/WorkDoneForm.vue
@@ -18,7 +18,7 @@
               <a-input  v-decorator="['componentName', validatorRules.componentName]" placeholder="璇疯緭鍏ラ儴浠跺悕绉�"></a-input>
             </a-form-item>
           </a-col>
-          <a-col :span="24">
+          <a-col :span="24" v-if="part">
             <a-form-item label="闆朵欢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
               <a-input  v-decorator="['partsName', validatorRules.partsName]" placeholder="璇疯緭鍏ラ浂浠跺悕绉�"></a-input>
             </a-form-item>
@@ -171,7 +171,8 @@
           edit: "/nc/definition/edit",
           // queryById: "/zhshj/wglltwh/query/by/id"
         },
-        userOptions:[]
+        userOptions:[],
+        part:false,
       }
     },
     computed: {
@@ -205,6 +206,9 @@
         this.form.resetFields();
         this.model = Object.assign({}, record);
         this.visible = true;
+        if (record.partsName){
+          this.part=true
+        }
         this.$nextTick(() => {
           this.form.setFieldsValue(pick(this.model,'productName','componentName','partsName','docName','deviceName','version','applyUser','applyReason','applyTime','approveUser','approveTime','approveContent'))
         })
diff --git a/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingApprovalForm.vue b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingApprovalForm.vue
new file mode 100644
index 0000000..eafac45
--- /dev/null
+++ b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingApprovalForm.vue
@@ -0,0 +1,237 @@
+<!--
+ Description: 鎴戠殑宸ヤ綔鍙�-浠e姙-璇︽儏 Form
+ Author: 浣滆�� liuyh
+ Date:   2025-01-15
+-->
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form :form="form" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-item label="鏂囨。鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.docName', validatorRules.docName]" :disabled="true" placeholder="璇疯緭鍏ユ枃妗e悕绉�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鏂囨。鐗堟湰" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.version', validatorRules.version]" :disabled="true" placeholder="璇疯緭鍏ユ枃妗g増鏈�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鐢宠浜�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.applyUser', validatorRules.applyUser]" :disabled="true" placeholder="璇疯緭鍏ョ敵璇蜂汉"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鐢宠鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-textarea v-decorator="['assignFileStream.applyReason']" rows="4" :disabled="true" placeholder="璇疯緭鍏ョ敵璇峰師鍥�"/>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="瀵嗙骇涓�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag placeholder="璇烽�夋嫨瀵嗙骇"  style="width:100%" :trigger-change="true" v-decorator="['secretLevel']" dictCode="dnc_secret_level"/>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鍚屾剰瀵煎叆宸ユ帶缃�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-checkbox v-model="isAgreed">鍚屾剰瀵煎叆宸ユ帶缃�</a-checkbox>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24" >
+            <a-form-item label="瀹℃壒鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select placeholder="瀹℃壒鐘舵��">
+                <a-select-option v-if="isAgreed" value="1">鍚屾剰</a-select-option>
+                <a-select-option v-if="!isAgreed" value="2">鎷掔粷</a-select-option>
+              </a-select>
+<!--              <j-dict-select-tag  placeholder="璇烽�夋嫨瀹℃壒鐘舵��"  style="width:100%" :trigger-change="true" v-decorator="['status', validatorRules.status]" dictCode="dnc_assign_stream_status"/>-->
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="瀹℃壒鎰忚" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-textarea v-decorator="['assignFileStream.approveContent', validatorRules.approveContent]" rows="4" placeholder="璇疯緭鍏ュ鎵规剰瑙�"/>
+            </a-form-item>
+          </a-col>
+          <a-col v-if="showFlowSubmitButton" :span="24" style="text-align: center">
+            <a-button @click="submitForm">鎻� 浜�</a-button>
+          </a-col>
+        </a-row>
+      </a-form>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import JFormContainer from '@/components/jeecg/JFormContainer'
+  import JDictSelectTag from "@/components/dict/JDictSelectTag"
+
+  export default {
+    name: 'AssignApproveUserForm',
+    components: {
+      JFormContainer,
+      JDictSelectTag,
+    },
+    props: {
+      //娴佺▼琛ㄥ崟data
+      formData: {
+        type: Object,
+        default: ()=>{},
+        required: false
+      },
+      //琛ㄥ崟妯″紡锛歵rue娴佺▼琛ㄥ崟 false鏅�氳〃鍗�
+      formBpm: {
+        type: Boolean,
+        default: false,
+        required: false
+      },
+      //琛ㄥ崟绂佺敤
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        form: this.$form.createForm(this),
+        users:"",
+        isAgreed:true,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+          version: {
+            rules: [
+              { required: true, message: '璇疯緭鍏ユ枃妗g増鏈�!'},
+            ]
+          },
+          applyUser: {
+            rules: [
+              { required: true, message: '璇烽�夋嫨鐢宠浜�!'},
+            ]
+          },
+          approveContent: {
+            rules: [
+              { required: true, message: '璇疯緭鍏ュ鎵规剰瑙�!'},
+            ]
+          },
+          docName: {
+            rules: [
+              { required: true, message: '璇疯緭鍏ユ枃妗e悕绉�!'},
+            ]
+          },
+          status: {
+            rules: [
+              { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!'},
+            ]
+          },
+        },
+        url: {
+          add: "/nc/definition/add",
+          edit: "/nc/definition/edit",
+          approve:"/nc/activit/assign/file/approve",
+          // queryById: "/zhshj/wglltwh/query/by/id"
+        },
+        userOptions:[],
+        part:false,
+        taskId:"",
+        streamId:"",
+      }
+    },
+    computed: {
+      formDisabled(){
+        if(this.formBpm===true){
+          if(this.formData.disabled===false){
+            return false
+          }
+          return true
+        }
+        return this.disabled
+      },
+      showFlowSubmitButton(){
+        if(this.formBpm===true){
+          if(this.formData.disabled===false){
+            return true
+          }
+        }
+        return false
+      }
+    },
+    created () {
+      //濡傛灉鏄祦绋嬩腑琛ㄥ崟锛屽垯闇�瑕佸姞杞芥祦绋嬭〃鍗昫ata
+      this.showFlowData();
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.taskId=record.id;
+        this.streamId=record.businessKey;
+        if (record.assignFileStream.partsName){
+          this.part=true
+        }
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'assignFileStream'))
+        })
+      },
+      getFormFieldValue(field){
+        return this.form.getFieldValue(field)
+      },
+      //娓叉煋娴佺▼琛ㄥ崟鏁版嵁
+      showFlowData(){
+        if(this.formBpm === true){
+          let params = {id:this.formData.dataId};
+          getAction(this.url.queryById,params).then((res)=>{
+            if(res.success){
+              this.edit (res.result);
+            }
+          });
+        }
+      },
+      submitForm () {
+        const that = this;
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let url=this.url.approve+"/"+this.taskId+"/"+this.streamId;
+            let method = 'post';
+            let formData = {};
+            formData.approveContent = values.assignFileStream.approveContent;
+            if (this.isAgreed){
+              formData.status ='2'
+            }else {
+              formData.status ='3'
+            }
+            console.log("琛ㄥ崟鎻愪氦鏁版嵁",formData)
+            httpAction(url,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+
+        })
+      },
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingApprovalModal.vue b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingApprovalModal.vue
new file mode 100644
index 0000000..82410e0
--- /dev/null
+++ b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingApprovalModal.vue
@@ -0,0 +1,65 @@
+<!--
+ Description: 鎴戠殑宸ヤ綔鍙�-浠e姙 Modal
+ Author: 浣滆�� liuyh
+ Date:   2025-01-15
+-->
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="鍏抽棴">
+    <WorkUpcomingApprovalForm ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></WorkUpcomingApprovalForm>
+  </j-modal>
+</template>
+
+<script>
+
+  import WorkUpcomingApprovalForm from './WorkUpcomingApprovalForm.vue'
+  export default {
+    name: 'AssignApproveUserModal',
+    components: {
+      WorkUpcomingApprovalForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingForm.vue b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingForm.vue
new file mode 100644
index 0000000..2fff05c
--- /dev/null
+++ b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingForm.vue
@@ -0,0 +1,266 @@
+<!--
+ Description: 鎴戠殑宸ヤ綔鍙�-浠e姙-璇︽儏 Form
+ Author: 浣滆�� liuyh
+ Date:   2025-01-15
+-->
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form :form="form" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-item label="浜у搧鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.productName', validatorRules.productName]" placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="閮ㄤ欢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.componentName', validatorRules.componentName]" placeholder="璇疯緭鍏ラ儴浠跺悕绉�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24" v-if="part">
+            <a-form-item label="闆朵欢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.partsName', validatorRules.partsName]" placeholder="璇疯緭鍏ラ浂浠跺悕绉�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鏂囨。鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.docName', validatorRules.docName]" placeholder="璇疯緭鍏ユ枃妗e悕绉�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="璁惧鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.deviceName', validatorRules.deviceName]" placeholder="璇疯緭鍏ヨ澶囧悕绉�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鏂囨。鐗堟湰" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.version', validatorRules.version]" placeholder="璇疯緭鍏ユ枃妗g増鏈�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鐢宠浜�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.applyUser', validatorRules.applyUser]" placeholder="璇疯緭鍏ョ敵璇蜂汉"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鐢宠鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.applyReason', validatorRules.applyReason]" placeholder="璇疯緭鍏ョ敵璇峰師鍥�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="鐢宠鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.applyTime', validatorRules.applyTime]" placeholder="璇疯緭鍏ョ敵璇锋椂闂�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="瀹℃壒浜�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.approveUser', validatorRules.approveUser]" placeholder="璇疯緭鍏ュ鎵逛汉"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="瀹℃壒鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input  v-decorator="['assignFileStream.approveTime', validatorRules.approveTime]" placeholder="璇疯緭鍏ュ鎵规椂闂�"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="瀹℃壒鎰忚" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-textarea v-decorator="['assignFileStream.approveContent']" rows="4" placeholder="璇疯緭鍏ュ鎵规剰瑙�"/>
+            </a-form-item>
+          </a-col>
+          <a-col v-if="showFlowSubmitButton" :span="24" style="text-align: center">
+            <a-button @click="submitForm">鎻� 浜�</a-button>
+          </a-col>
+        </a-row>
+      </a-form>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import JFormContainer from '@/components/jeecg/JFormContainer'
+  import JDictSelectTag from "@/components/dict/JDictSelectTag"
+
+  export default {
+    name: 'AssignApproveUserForm',
+    components: {
+      JFormContainer,
+      JDictSelectTag,
+    },
+    props: {
+      //娴佺▼琛ㄥ崟data
+      formData: {
+        type: Object,
+        default: ()=>{},
+        required: false
+      },
+      //琛ㄥ崟妯″紡锛歵rue娴佺▼琛ㄥ崟 false鏅�氳〃鍗�
+      formBpm: {
+        type: Boolean,
+        default: false,
+        required: false
+      },
+      //琛ㄥ崟绂佺敤
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        form: this.$form.createForm(this),
+        users:"",
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+          actName: {
+            productName: [
+              { required: true, message: '璇疯緭鍏ユ祦绋嬪悕绉�!'},
+            ]
+          },
+          componentName: {
+            rules: [
+              { required: true, message: '璇烽�夋嫨閮ㄩ棬鍒嗙粍!'},
+            ]
+          },
+          partsName: {
+            rules: [
+              { required: true, message: '璇烽�夋嫨瀹℃壒浜�!'},
+            ]
+          },
+          docName: {
+            rules: [
+              { required: true, message: '璇疯緭鍏ョ壒娈婂瓧绗�!'},
+            ]
+          },
+          deviceName: {
+            rules: [
+              { required: true, message: '璇疯緭鍏ョ壒娈婂瓧绗�!'},
+            ]
+          },
+          version: {
+            rules: [
+              { required: true, message: '璇疯緭鍏ョ壒娈婂瓧绗�!'},
+            ]
+          },
+          applyUser: {
+            rules: [
+              { required: true, message: '璇疯緭鍏ョ壒娈婂瓧绗�!'},
+            ]
+          },
+          applyReason: {
+            rules: [
+              { required: true, message: '璇疯緭鍏ョ壒娈婂瓧绗�!'},
+            ]
+          },
+        },
+        url: {
+          add: "/nc/definition/add",
+          edit: "/nc/definition/edit",
+          // queryById: "/zhshj/wglltwh/query/by/id"
+        },
+        userOptions:[],
+        part:false,
+      }
+    },
+    computed: {
+      formDisabled(){
+        if(this.formBpm===true){
+          if(this.formData.disabled===false){
+            return false
+          }
+          return true
+        }
+        return this.disabled
+      },
+      showFlowSubmitButton(){
+        if(this.formBpm===true){
+          if(this.formData.disabled===false){
+            return true
+          }
+        }
+        return false
+      }
+    },
+    created () {
+      //濡傛灉鏄祦绋嬩腑琛ㄥ崟锛屽垯闇�瑕佸姞杞芥祦绋嬭〃鍗昫ata
+      this.showFlowData();
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        if (record.assignFileStream.partsName){
+          this.part=true
+        }
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'assignFileStream'))
+        })
+      },
+      getFormFieldValue(field){
+        return this.form.getFieldValue(field)
+      },
+      //娓叉煋娴佺▼琛ㄥ崟鏁版嵁
+      showFlowData(){
+        if(this.formBpm === true){
+          let params = {id:this.formData.dataId};
+          getAction(this.url.queryById,params).then((res)=>{
+            if(res.success){
+              this.edit (res.result);
+            }
+          });
+        }
+      },
+      submitForm () {
+        const that = this;
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            console.log("琛ㄥ崟鎻愪氦鏁版嵁",formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+
+        })
+      },
+      popupCallback(row){
+        this.form.setFieldsValue(pick(row,'C'))
+      },
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingModal.vue b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingModal.vue
new file mode 100644
index 0000000..7d2414c
--- /dev/null
+++ b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingModal.vue
@@ -0,0 +1,65 @@
+<!--
+ Description: 鎴戠殑宸ヤ綔鍙�-浠e姙 Modal
+ Author: 浣滆�� liuyh
+ Date:   2025-01-15
+-->
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="鍏抽棴">
+    <WorkUpcomingForm ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></WorkUpcomingForm>
+  </j-modal>
+</template>
+
+<script>
+
+  import WorkUpcomingForm from './WorkUpcomingForm.vue'
+  export default {
+    name: 'AssignApproveUserModal',
+    components: {
+      WorkUpcomingForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git "a/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingModal__Style\043Drawer.vue" "b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingModal__Style\043Drawer.vue"
new file mode 100644
index 0000000..358107c
--- /dev/null
+++ "b/src/views/dnc/base/modules/WorkUpcoming/WorkUpcomingModal__Style\043Drawer.vue"
@@ -0,0 +1,91 @@
+<!--
+ Description: 鎴戠殑宸ヤ綔鍙�-浠e姙 Modal-Drawer
+ Author: 浣滆�� liuyh
+ Date:   2025-01-15
+-->
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <WorkUpcomingForm ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></WorkUpcomingForm>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">鍏抽棴</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">鎻愪氦</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+
+
+import WorkUpcomingForm from './WorkUpcomingForm.vue'
+
+export default {
+  name: 'AssignApproveUserModal',
+  components: {
+    WorkUpcomingForm,
+  },
+  data() {
+    return {
+      title: "鎿嶄綔",
+      width: 800,
+      visible: false,
+      disableSubmit: false
+    }
+  },
+  methods: {
+    add() {
+      this.visible = true
+      this.$nextTick(() => {
+        this.$refs.realForm.add();
+      })
+    },
+    edit(record) {
+      this.visible = true
+      this.$nextTick(() => {
+        this.$refs.realForm.edit(record);
+      });
+    },
+    close() {
+      this.$emit('close');
+      this.visible = false;
+    },
+    submitCallback() {
+      this.$emit('ok');
+      this.visible = false;
+    },
+    handleOk() {
+      this.$refs.realForm.submitForm();
+    },
+    handleCancel() {
+      this.close()
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+/** Button鎸夐挳闂磋窛 */
+.ant-btn {
+  margin-left: 30px;
+  margin-bottom: 30px;
+  float: right;
+}
+.drawer-footer{
+  position: absolute;
+  bottom: -8px;
+  width: 100%;
+  border-top: 1px solid #e8e8e8;
+  padding: 10px 16px;
+  text-align: right;
+  left: 0;
+  background: #fff;
+  border-radius: 0 0 2px 2px;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3