Browse Source

修改甲方单位组件的搜索,新增签名组件,修改成果归档

余思翰 8 months ago
parent
commit
91abb56357

+ 4
- 1
oa-ui/src/main.js View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-01-03 09:23:11
3
  * @Date: 2024-01-03 09:23:11
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-10 11:08:03
5
+ * @LastEditTime: 2024-09-18 17:01:43
6
  */
6
  */
7
 import Vue from 'vue'
7
 import Vue from 'vue'
8
 
8
 
52
 import DictData from '@/components/DictData'
52
 import DictData from '@/components/DictData'
53
 
53
 
54
 import Tinymce from '@/components/tinymce/index.vue'
54
 import Tinymce from '@/components/tinymce/index.vue'
55
+// 签名组件
56
+import AuditorRow from '@/views/flowable/form/components/auditorRow.vue';
55
 
57
 
56
 import publicData from '@/assets/datas/publicData'
58
 import publicData from '@/assets/datas/publicData'
57
 
59
 
85
 Vue.component('ImagePreview', ImagePreview)
87
 Vue.component('ImagePreview', ImagePreview)
86
 Vue.component('tinymce', Tinymce)
88
 Vue.component('tinymce', Tinymce)
87
 Vue.component('RowTitle', RowTitle)
89
 Vue.component('RowTitle', RowTitle)
90
+Vue.component('AuditorRow', AuditorRow)
88
 
91
 
89
 Vue.use(directive)
92
 Vue.use(directive)
90
 Vue.use(plugins)
93
 Vue.use(plugins)

+ 16
- 10
oa-ui/src/views/file/filesProject/achievement.vue View File

3
  * @version: 
3
  * @version: 
4
  * @Author: ysh
4
  * @Author: ysh
5
  * @Date: 2022-09-08 17:16:12
5
  * @Date: 2022-09-08 17:16:12
6
- * @LastEditors: wrh
7
- * @LastEditTime: 2024-06-13 22:42:16
6
+ * @LastEditors: Please set LastEditors
7
+ * @LastEditTime: 2024-09-18 16:03:28
8
 -->
8
 -->
9
 <template>
9
 <template>
10
   <div>
10
   <div>
94
     <el-dialog :title="addTitle" :visible.sync="addOpen" width="50%">
94
     <el-dialog :title="addTitle" :visible.sync="addOpen" width="50%">
95
       <el-form :model="form" ref="achiRef" label-width="110px" :rules="rules">
95
       <el-form :model="form" ref="achiRef" label-width="110px" :rules="rules">
96
         <el-row :gutter="10">
96
         <el-row :gutter="10">
97
-          <el-col :span="4">
98
-            <el-button type="primary" size="mini" @click="openProject = true">选择项目</el-button>
99
-          </el-col>
100
           <el-col :span="15">
97
           <el-col :span="15">
101
-            <el-form-item label="项目名称" prop="projectNumber">
102
-              <el-input v-model="chooseProject.projectNumber" placeholder="请输入项目名称" />
98
+            <el-form-item label="项目编号" prop="projectNumber">
99
+              <el-input v-model="form.projectNumber" disabled placeholder="请输入项目编号" />
100
+            </el-form-item>
101
+            <el-form-item label="项目名称" prop="projectName">
102
+              <el-input v-model="form.projectName" disabled placeholder="请输入项目名称" />
103
             </el-form-item>
103
             </el-form-item>
104
           </el-col>
104
           </el-col>
105
-          <el-col :span="5">
105
+          <el-col :span="3">
106
+            <el-button type="primary" size="mini" @click="openProject = true">选择项目</el-button>
107
+          </el-col>
108
+          <el-col :span="6">
106
             <el-form-item label="数据年份" prop="dataYear">
109
             <el-form-item label="数据年份" prop="dataYear">
107
               <el-input v-model="form.dataYear" placeholder="请输入数据年份" />
110
               <el-input v-model="form.dataYear" placeholder="请输入数据年份" />
108
             </el-form-item>
111
             </el-form-item>
546
     handleDelete(row) {
549
     handleDelete(row) {
547
       const achiIds = row.id;
550
       const achiIds = row.id;
548
       const achiName = row.achiName
551
       const achiName = row.achiName
549
-      this.$modal.confirm('是否确认删除用户编号为"' + achiName + '"的数据项?').then(function () {
552
+      this.$modal.confirm('是否确认成果名为"' + achiName + '"的数据项?').then(function () {
550
         return delAchievement(achiIds);
553
         return delAchievement(achiIds);
551
       }).then(() => {
554
       }).then(() => {
552
         this.getAchiList();
555
         this.getAchiList();
757
         return
760
         return
758
       } else if (val.length == 1) {
761
       } else if (val.length == 1) {
759
         this.chooseProject = val[0]
762
         this.chooseProject = val[0]
760
-        this.chooseProject.projectNumber = this.chooseProject.projectNumber + '-' + this.chooseProject.projectName;
763
+        // this.chooseProject.projectNumber = this.chooseProject.projectNumber + '-' + this.chooseProject.projectName;
764
+        this.$set(this.form,'projectNumber',this.chooseProject.projectNumber)
765
+        this.$set(this.form,'projectName',this.chooseProject.projectName)
761
         this.form.projectId = val[0].projectId
766
         this.form.projectId = val[0].projectId
767
+        this.$refs.achiRef.validateField('projectNumber')
762
         this.form.dataYear = val[0].projectNumber.substring(0, 4)
768
         this.form.dataYear = val[0].projectNumber.substring(0, 4)
763
       }
769
       }
764
       this.openProject = false
770
       this.openProject = false

+ 37
- 15
oa-ui/src/views/file/filesProject/project.vue View File

36
         <el-table-column type="selection" width="50px" :reserve-selection="true" />
36
         <el-table-column type="selection" width="50px" :reserve-selection="true" />
37
         <el-table-column prop="isFinished" label="项目状态" align="center">
37
         <el-table-column prop="isFinished" label="项目状态" align="center">
38
           <template #default="scope">
38
           <template #default="scope">
39
-            <el-tag :type="scope.row.isFinished === '1' ? 'warning' : 'success'" disable-transitions>{{ scope.row.isFinished
40
-              === "1" ? '已结束' : '正在进行'
41
-            }}</el-tag>
39
+            <el-tag :type="scope.row.isFinished === '1' ? 'warning' : 'success'" disable-transitions>{{
40
+        scope.row.isFinished
41
+          === "1" ? '已结束' : '正在进行'
42
+      }}</el-tag>
42
           </template>
43
           </template>
43
         </el-table-column>
44
         </el-table-column>
44
         <el-table-column prop="projectNumber" label="项目编号" align="center" />
45
         <el-table-column prop="projectNumber" label="项目编号" align="center" />
52
         <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
53
         <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
53
           <template #default="scope">
54
           <template #default="scope">
54
             <el-tooltip content="详情" placement="top">
55
             <el-tooltip content="详情" placement="top">
55
-              <el-button type="text" icon="View" @click="handleLook(scope.row)" v-hasPermi="['oa:archive:query']">
56
+              <el-button type="text" icon="View" @click="handleLook(scope.row)" v-hasPermi="['file:achievement:query']">
56
               </el-button>
57
               </el-button>
57
             </el-tooltip>
58
             </el-tooltip>
58
             <el-tooltip content="成果" placement="top">
59
             <el-tooltip content="成果" placement="top">
59
               <el-button type="text" icon="Document" @click="handleLookAchi(scope.row)"
60
               <el-button type="text" icon="Document" @click="handleLookAchi(scope.row)"
60
-                v-hasPermi="['oa:archive:query']">
61
+                v-hasPermi="['file:achievement:query']">
61
               </el-button>
62
               </el-button>
62
             </el-tooltip>
63
             </el-tooltip>
63
             <el-tooltip content="修改" placement="top">
64
             <el-tooltip content="修改" placement="top">
64
-              <el-button type="text" icon="el-icon-edit-outline" @click="handleUpdate(scope.row)" v-hasPermi="['oa:archive:edit']">
65
+              <el-button type="text" icon="el-icon-edit-outline" @click="handleUpdate(scope.row)"
66
+                v-hasPermi="['file:achievement:edit']">
65
               </el-button>
67
               </el-button>
66
             </el-tooltip>
68
             </el-tooltip>
67
             <el-tooltip content="删除" placement="top">
69
             <el-tooltip content="删除" placement="top">
68
-              <el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['oa:archive:remove']">
70
+              <el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
71
+                v-hasPermi="['file:achievement:remove']">
69
               </el-button>
72
               </el-button>
70
             </el-tooltip>
73
             </el-tooltip>
71
           </template>
74
           </template>
135
                 </div>
138
                 </div>
136
                 <div>
139
                 <div>
137
                   <el-upload ref="uploadProCPKml" class="upload-demo" :headers="upload.headers" action=""
140
                   <el-upload ref="uploadProCPKml" class="upload-demo" :headers="upload.headers" action=""
138
-                    :auto-upload="false" :on-success="successUploadProKml" accept=".kml" :on-change="handleCpUploadChange"
139
-                    :show-file-list="false">
141
+                    :auto-upload="false" :on-success="successUploadProKml" accept=".kml"
142
+                    :on-change="handleCpUploadChange" :show-file-list="false">
140
                     <el-button type="primary" icon="el-icon-plus"></el-button>
143
                     <el-button type="primary" icon="el-icon-plus"></el-button>
141
                   </el-upload>
144
                   </el-upload>
142
                 </div>
145
                 </div>
184
         <el-row :gutter="20">
187
         <el-row :gutter="20">
185
           <el-col :span="12">
188
           <el-col :span="12">
186
             <el-form-item label="存放地址" prop="storageAddress">
189
             <el-form-item label="存放地址" prop="storageAddress">
187
-              <el-select v-model="modifyForm.storageAddress" placeholder="请选择" filterable allow-create clearable style="width: 100%;">
190
+              <el-select v-model="modifyForm.storageAddress" placeholder="请选择" filterable allow-create clearable
191
+                style="width: 100%;">
188
                 <el-option v-for="item, index in storageList" :key="index" :label="item.storageAddress"
192
                 <el-option v-for="item, index in storageList" :key="index" :label="item.storageAddress"
189
                   :value="item.storageAddress" />
193
                   :value="item.storageAddress" />
190
               </el-select>
194
               </el-select>
222
                 </div>
226
                 </div>
223
                 <div>
227
                 <div>
224
                   <el-upload ref="uploadProCPKml" class="upload-demo" :headers="upload.headers" action="l"
228
                   <el-upload ref="uploadProCPKml" class="upload-demo" :headers="upload.headers" action="l"
225
-                    :auto-upload="false" :on-success="successUploadProKml" accept=".kml" :on-change="handleCpUploadChange"
226
-                    :show-file-list="false">
229
+                    :auto-upload="false" :on-success="successUploadProKml" accept=".kml"
230
+                    :on-change="handleCpUploadChange" :show-file-list="false">
227
                     <el-button type="primary" icon="el-icon-plus"></el-button>
231
                     <el-button type="primary" icon="el-icon-plus"></el-button>
228
                   </el-upload>
232
                   </el-upload>
229
                 </div>
233
                 </div>
480
     handleUpdate(row) {
484
     handleUpdate(row) {
481
       this.modifyForm = row;
485
       this.modifyForm = row;
482
       let leaderObj = this.$store.state.user.userList.find(obj => obj.userId == row.projectLeader);
486
       let leaderObj = this.$store.state.user.userList.find(obj => obj.userId == row.projectLeader);
483
-      if(leaderObj)
487
+      if (leaderObj)
484
         this.modifyForm.projectLeaderName = leaderObj.nickName
488
         this.modifyForm.projectLeaderName = leaderObj.nickName
485
       this.modifyOpen = true;
489
       this.modifyOpen = true;
486
       this.position = [];
490
       this.position = [];
527
       this.$refs["projectModifyRef"].validate(valid => {
531
       this.$refs["projectModifyRef"].validate(valid => {
528
         if (valid) {
532
         if (valid) {
529
           delete this.modifyForm.params
533
           delete this.modifyForm.params
530
-          for (let i in this.modifyForm) {
531
-            this.uploadKmlData.append(i, this.modifyForm[i] == null ? "" : this.modifyForm[i]);
534
+          // 初始化一个对象来收集要发送的数据  
535
+          const formDataEntries = [];
536
+          // 遍历 modifyForm,收集非空、非对象、非特定跳过的字段  
537
+          for (let key in this.modifyForm) {
538
+            if (key === 'contract' || key === 'partyA' || key === 'projectPlannerUser' || this.modifyForm[key] instanceof Object) {
539
+              continue;
540
+            }
541
+
542
+            // 添加字段到 formDataEntries 数组  
543
+            formDataEntries.push([key, this.modifyForm[key] != null ? this.modifyForm[key] : '']);
532
           }
544
           }
545
+          // 将收集的数据添加到 FormData  
546
+          formDataEntries.forEach(([key, value]) => {
547
+            this.uploadKmlData.append(key, value);
548
+          });
549
+          // for (let i in this.modifyForm) {
550
+          //   if (i == 'contract' || i == 'partyA') continue
551
+          //   if (this.modifyForm[i] instanceof Object) continue
552
+          //   this.uploadKmlData.append(i, this.modifyForm[i] == null ? '' : this.modifyForm[i]);
553
+          // }
533
           // return
554
           // return
534
           updateProject(this.uploadKmlData).then(response => {
555
           updateProject(this.uploadKmlData).then(response => {
535
             this.$modal.msgSuccess("修改成功");
556
             this.$modal.msgSuccess("修改成功");
873
 
894
 
874
 <style lang="scss" scoped>
895
 <style lang="scss" scoped>
875
 @import "@/assets/styles/element-reset.scss";
896
 @import "@/assets/styles/element-reset.scss";
897
+
876
 .centerBox {
898
 .centerBox {
877
   border: 1px dashed #bccfec;
899
   border: 1px dashed #bccfec;
878
   padding: 5px;
900
   padding: 5px;

+ 59
- 183
oa-ui/src/views/flowable/form/archiveForm.vue View File

1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-06-21 18:51:51
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-09-18 16:56:44
6
+-->
1
 <template>
7
 <template>
2
   <div class="app-container">
8
   <div class="app-container">
3
     <el-row :gutter="20">
9
     <el-row :gutter="20">
4
-      <el-col :span="isFlow ? 18:24" :xs="24">
10
+      <el-col :span="isFlow ? 18 : 24" :xs="24">
5
         <h2 class="text-center">成果归档记录表</h2>
11
         <h2 class="text-center">成果归档记录表</h2>
6
         <el-divider></el-divider>
12
         <el-divider></el-divider>
7
         <el-form ref="form" :model="form" :rules="rules" label-width="120px">
13
         <el-form ref="form" :model="form" :rules="rules" label-width="120px">
8
           <el-form-item label="项目信息" prop="projectId">
14
           <el-form-item label="项目信息" prop="projectId">
9
-            <el-button type="primary" size="mini" @click="openProject = true" v-if="taskName == '成果上传'">选择项目</el-button>
15
+            <el-button type="primary" size="mini" @click="openProject = true" v-if="taskName == '归档发起'">选择项目</el-button>
10
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2">
16
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2">
11
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
17
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
12
-              }}</el-descriptions-item>
18
+                }}</el-descriptions-item>
13
               <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
19
               <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
14
-              }}</el-descriptions-item>
20
+                }}</el-descriptions-item>
15
               <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA.partyAName
21
               <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA.partyAName
16
-              }}</el-descriptions-item>
22
+                }}</el-descriptions-item>
17
               <el-descriptions-item label="合同编码" label-class-name="my-label">{{ contractCode
23
               <el-descriptions-item label="合同编码" label-class-name="my-label">{{ contractCode
18
-              }}</el-descriptions-item>
24
+                }}</el-descriptions-item>
19
               <el-descriptions-item label="承担部门" label-class-name="my-label">{{
25
               <el-descriptions-item label="承担部门" label-class-name="my-label">{{
20
-                chooseProject.undertakingDeptName
21
-              }}</el-descriptions-item>
26
+      chooseProject.undertakingDeptName
27
+    }}</el-descriptions-item>
22
               <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser
28
               <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser
23
-                ? chooseProject.projectLeaderUser.nickName : ''
24
-              }}</el-descriptions-item>
29
+      ? chooseProject.projectLeaderUser.nickName : ''
30
+                }}</el-descriptions-item>
25
               <el-descriptions-item label="技术负责人" label-class-name="my-label">{{
31
               <el-descriptions-item label="技术负责人" label-class-name="my-label">{{
26
-                chooseProject.technicalDirectorUser ? chooseProject.technicalDirectorUser.nickName :
27
-                '' }}</el-descriptions-item>
32
+      chooseProject.technicalDirectorUser ? chooseProject.technicalDirectorUser.nickName :
33
+        '' }}</el-descriptions-item>
28
               <el-descriptions-item label="质检审核员" label-class-name="my-label">{{
34
               <el-descriptions-item label="质检审核员" label-class-name="my-label">{{
29
-                chooseProject.qualityInspectorName
30
-              }}</el-descriptions-item>
35
+      chooseProject.qualityInspectorName
36
+    }}</el-descriptions-item>
31
               <!-- <el-descriptions-item label="坐标经度" label-class-name="my-label">{{ chooseProject.kmlLng
37
               <!-- <el-descriptions-item label="坐标经度" label-class-name="my-label">{{ chooseProject.kmlLng
32
               }}</el-descriptions-item>
38
               }}</el-descriptions-item>
33
               <el-descriptions-item label="坐标纬度" label-class-name="my-label">{{ chooseProject.kmlLat
39
               <el-descriptions-item label="坐标纬度" label-class-name="my-label">{{ chooseProject.kmlLat
39
           </el-form-item>
45
           </el-form-item>
40
           <el-form-item label="成果提交日期" prop="submitTime">
46
           <el-form-item label="成果提交日期" prop="submitTime">
41
             <el-date-picker clearable v-model="form.submitTime" type="date" value-format="yyyy-MM-dd"
47
             <el-date-picker clearable v-model="form.submitTime" type="date" value-format="yyyy-MM-dd"
42
-              placeholder="请选择成果提交日期" :disabled="taskName != '成果上传'">
48
+              placeholder="请选择成果提交日期" :disabled="taskName != '归档发起'">
43
             </el-date-picker>
49
             </el-date-picker>
44
           </el-form-item>
50
           </el-form-item>
45
           <el-form-item label="备注说明" prop="submitSituation">
51
           <el-form-item label="备注说明" prop="submitSituation">
46
-            <el-input type="textarea" v-model="form.submitSituation" placeholder="请输入备注说明" :disabled="taskName != '成果上传'"
47
-              :autosize="{ minRows: 4 }" />
52
+            <el-input type="textarea" v-model="form.submitSituation" placeholder="请输入备注说明"
53
+              :disabled="taskName != '归档发起'" :autosize="{ minRows: 4 }" />
48
           </el-form-item>
54
           </el-form-item>
49
-          <el-divider></el-divider>
50
-          <el-form-item label="部门检查员检查" prop="produceComment">
55
+          <!-- <el-divider></el-divider> -->
56
+          <!-- <el-form-item label="部门检查员检查" prop="produceComment">
51
             <el-input type="textarea" v-model="form.produceComment" placeholder="请输入部门检查员检查意见"
57
             <el-input type="textarea" v-model="form.produceComment" placeholder="请输入部门检查员检查意见"
52
               :disabled="taskName != '部门检查'" :autosize="{ minRows: 4 }" />
58
               :disabled="taskName != '部门检查'" :autosize="{ minRows: 4 }" />
53
           </el-form-item>
59
           </el-form-item>
54
           <el-row>
60
           <el-row>
55
             <el-col :span="6" :xs="24" :offset="12">
61
             <el-col :span="6" :xs="24" :offset="12">
56
-              <el-form-item label="签名:" label-width="120px" v-if="taskName != '成果上传'">
62
+              <el-form-item label="签名:" label-width="120px" v-if="taskName != '归档发起'">
57
                 <span class="auditor"> {{ form.produceUser ? form.produceUser.nickName : produceUser }}
63
                 <span class="auditor"> {{ form.produceUser ? form.produceUser.nickName : produceUser }}
58
                 </span>
64
                 </span>
59
               </el-form-item>
65
               </el-form-item>
60
             </el-col>
66
             </el-col>
61
             <el-col :span="6">
67
             <el-col :span="6">
62
-              <el-form-item label="日期:" label-width="120px" v-if="taskName != '成果上传'">
68
+              <el-form-item label="日期:" label-width="120px" v-if="taskName != '归档发起'">
63
                 <span> {{ form.produceTime ? form.produceTime : produceTime }} </span>
69
                 <span> {{ form.produceTime ? form.produceTime : produceTime }} </span>
64
               </el-form-item>
70
               </el-form-item>
65
             </el-col>
71
             </el-col>
75
           </el-form-item>
81
           </el-form-item>
76
           <el-row>
82
           <el-row>
77
             <el-col :span="6" :xs="24" :offset="12">
83
             <el-col :span="6" :xs="24" :offset="12">
78
-              <el-form-item label="签名:" label-width="120px" v-if="taskName != '成果上传' && taskName != '部门检查'">
84
+              <el-form-item label="签名:" label-width="120px" v-if="taskName != '归档发起' && taskName != '部门检查'">
79
                 <span class="auditor"> {{ form.qualityUser ? form.qualityUser.nickName : qualityUser }}
85
                 <span class="auditor"> {{ form.qualityUser ? form.qualityUser.nickName : qualityUser }}
80
                 </span>
86
                 </span>
81
               </el-form-item>
87
               </el-form-item>
82
             </el-col>
88
             </el-col>
83
             <el-col :span="6">
89
             <el-col :span="6">
84
-              <el-form-item label="日期:" label-width="120px" v-if="taskName != '成果上传' && taskName != '部门检查'">
90
+              <el-form-item label="日期:" label-width="120px" v-if="taskName != '归档发起' && taskName != '部门检查'">
85
                 <span> {{ form.qualityTime ? form.qualityTime : qualityTime }} </span>
91
                 <span> {{ form.qualityTime ? form.qualityTime : qualityTime }} </span>
86
               </el-form-item>
92
               </el-form-item>
87
             </el-col>
93
             </el-col>
88
-          </el-row>
94
+          </el-row> -->
89
           <el-form-item label="技术质量与安全部负责人审核" prop="deptComment">
95
           <el-form-item label="技术质量与安全部负责人审核" prop="deptComment">
90
             <el-input type="textarea" v-model="form.deptComment" placeholder="请输入技术质量与安全部负责人审核意见"
96
             <el-input type="textarea" v-model="form.deptComment" placeholder="请输入技术质量与安全部负责人审核意见"
91
-              :disabled="taskName != '技术部审核'" :autosize="{ minRows: 4 }" />
97
+              :disabled="taskName != '技术质量部审核'" :autosize="{ minRows: 4 }" />
92
           </el-form-item>
98
           </el-form-item>
93
-          <el-row>
94
-            <el-col :span="6" :xs="24" :offset="12">
95
-              <el-form-item label="签名:" label-width="120px" v-if="taskName == '技术部审核' || taskName == '成果归档' || taskName == ''">
96
-                <span class="auditor"> {{ form.deptUser ? form.deptUser.nickName : deptUser }}
97
-                </span>
98
-              </el-form-item>
99
-            </el-col>
100
-            <el-col :span="6">
101
-              <el-form-item label="日期:" label-width="120px" v-if="taskName == '技术部审核' || taskName == '成果归档' || taskName == ''">
102
-                <span> {{ form.deptTime ? form.deptTime : deptTime }} </span>
103
-              </el-form-item>
104
-            </el-col>
105
-          </el-row>
99
+          <auditor-row key="1" :isCurrent="taskName == '技术质量部审核'" :signature="form.deptLeader"
100
+            :signTime="form.deptTime"></auditor-row>
106
           <el-form-item label="资料管理">
101
           <el-form-item label="资料管理">
107
             <el-button type="success" size="mini" @click="gotoFile" :disabled="taskName != '成果归档'">前往资料管理系统</el-button>
102
             <el-button type="success" size="mini" @click="gotoFile" :disabled="taskName != '成果归档'">前往资料管理系统</el-button>
108
           </el-form-item>
103
           </el-form-item>
110
             <el-input type="textarea" v-model="form.archiveComment" placeholder="请输入技术质量与安全部归档意见"
105
             <el-input type="textarea" v-model="form.archiveComment" placeholder="请输入技术质量与安全部归档意见"
111
               :disabled="taskName != '成果归档'" :autosize="{ minRows: 4 }" />
106
               :disabled="taskName != '成果归档'" :autosize="{ minRows: 4 }" />
112
           </el-form-item>
107
           </el-form-item>
113
-          <el-row>
114
-            <el-col :span="6" :xs="24" :offset="12">
115
-              <el-form-item label="签名:" label-width="120px" v-if="taskName == '成果归档' || taskName == ''">
116
-                <span class="auditor"> {{ form.archiveUser ? form.archiveUser.nickName : archiveUser }}
117
-                </span>
118
-              </el-form-item>
119
-            </el-col>
120
-            <el-col :span="6">
121
-              <el-form-item label="归档日期:" label-width="120px" v-if="taskName == '成果归档' || taskName == ''">
122
-                <span> {{ form.archiveTime ? form.archiveTime : archiveTime }} </span>
123
-              </el-form-item>
124
-            </el-col>
125
-          </el-row>
108
+          <auditor-row key="2" :isCurrent="taskName == '成果归档'" :signature="form.archiver" :signTime="form.archiveTime"></auditor-row>
126
         </el-form>
109
         </el-form>
127
         <div style="text-align: center;" v-if="isFlow">
110
         <div style="text-align: center;" v-if="isFlow">
128
-          <el-button type="primary" @click="submitForm" :disabled="taskName == '成果归档' && hasArchievement == false">
129
-            交</el-button>
111
+          <el-button type="primary" @click="submitForm" :disabled="taskName == '成果归档' && hasArchievement == false">
112
+            提交并结束流程</el-button>
130
         </div>
113
         </div>
131
       </el-col>
114
       </el-col>
132
       <el-col :span="6" :xs="24" v-if="isFlow">
115
       <el-col :span="6" :xs="24" v-if="isFlow">
169
 import { getUserByRole } from "@/api/system/role";
152
 import { getUserByRole } from "@/api/system/role";
170
 import projectChoose from '@/views/flowable/form/components/chooseProject.vue';
153
 import projectChoose from '@/views/flowable/form/components/chooseProject.vue';
171
 import { listAchievement } from "@/api/file/achievement";
154
 import { listAchievement } from "@/api/file/achievement";
155
+import auditorRow from './components/auditorRow.vue';
172
 
156
 
173
 export default {
157
 export default {
174
   components: {
158
   components: {
175
     FlowUser,
159
     FlowUser,
176
     projectChoose,
160
     projectChoose,
177
-    flow
161
+    flow,
162
+    auditorRow
178
   },
163
   },
179
   props: {
164
   props: {
180
     taskName: {
165
     taskName: {
190
       default: true
175
       default: true
191
     }
176
     }
192
   },
177
   },
193
-  watch:{
194
-    'taskForm.formId'(){
178
+  watch: {
179
+    'taskForm.formId'() {
195
       this.initForm()
180
       this.initForm()
196
     }
181
     }
197
   },
182
   },
222
       archiveList: [],
207
       archiveList: [],
223
       // 弹出层标题
208
       // 弹出层标题
224
       title: "",
209
       title: "",
225
-      // 是否显示弹出层
226
-      open: false,
227
-      // 查询参数
228
-      queryParams: {
229
-        pageNum: 1,
230
-        pageSize: 10,
231
-        projectId: null,
232
-        submitTime: null,
233
-        submitSituation: null,
234
-        locationLng: null,
235
-        locationLat: null,
236
-        produceInspector: null,
237
-        qualityInspector: null,
238
-        deptLeader: null,
239
-        archiver: null,
240
-        receiveTime: null,
241
-        qualityTime: null,
242
-        produceTime: null,
243
-        deptTime: null,
244
-        archiveTime: null,
245
-        produceComment: null,
246
-        qualityComment: null,
247
-        deptComment: null,
248
-        archiveComment: null
249
-      },
250
       // 表单参数
210
       // 表单参数
251
       form: {
211
       form: {
252
         submitTime: undefined,
212
         submitTime: undefined,
289
       this.qualityUser = this.$store.getters.name;
249
       this.qualityUser = this.$store.getters.name;
290
       this.qualityTime = parseTime(new Date(), '{y}-{m}-{d}')
250
       this.qualityTime = parseTime(new Date(), '{y}-{m}-{d}')
291
     }
251
     }
292
-    else if (this.taskName == '技术部审核') {
252
+    else if (this.taskName == '技术质量部审核') {
293
       this.deptUser = this.$store.getters.name;
253
       this.deptUser = this.$store.getters.name;
294
       this.deptTime = parseTime(new Date(), '{y}-{m}-{d}')
254
       this.deptTime = parseTime(new Date(), '{y}-{m}-{d}')
295
     }
255
     }
298
       this.archiveTime = parseTime(new Date(), '{y}-{m}-{d}')
258
       this.archiveTime = parseTime(new Date(), '{y}-{m}-{d}')
299
     }
259
     }
300
     this.getProjectList();
260
     this.getProjectList();
301
-    this.getList();
302
     if (this.isFlow) {
261
     if (this.isFlow) {
303
       flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
262
       flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
304
         this.flowData = res.data;
263
         this.flowData = res.data;
335
       })
294
       })
336
     },
295
     },
337
     initRules() {
296
     initRules() {
338
-      if (this.taskName == '成果上传') {
297
+      if (this.taskName == '归档发起') {
339
         this.rules = {
298
         this.rules = {
340
           submitTime: [
299
           submitTime: [
341
             { required: true, message: '请选择成果提交日期', trigger: 'change' }
300
             { required: true, message: '请选择成果提交日期', trigger: 'change' }
356
             { required: true, message: '请填写审核意见', trigger: 'blur' }
315
             { required: true, message: '请填写审核意见', trigger: 'blur' }
357
           ]
316
           ]
358
         }
317
         }
359
-      } else if (this.taskName == '技术部审核') {
318
+      } else if (this.taskName == '技术质量部审核') {
360
         this.rules = {
319
         this.rules = {
361
           deptComment: [
320
           deptComment: [
362
             { required: true, message: '请填写审核意见', trigger: 'blur' }
321
             { required: true, message: '请填写审核意见', trigger: 'blur' }
364
         }
323
         }
365
       }
324
       }
366
     },
325
     },
367
-    /** 查询cmc成果归档列表 */
368
-    getList() {
369
-      this.loading = true;
370
-      listArchive(this.queryParams).then(response => {
371
-        this.archiveList = response.rows;
372
-        this.total = response.total;
373
-        this.loading = false;
374
-      });
375
-    },
376
-    // 取消按钮
377
-    cancel() {
378
-      this.open = false;
379
-      this.reset();
380
-    },
381
     // 查询项目列表
326
     // 查询项目列表
382
     getProjectList() {
327
     getProjectList() {
383
       this.loading = true
328
       this.loading = true
416
         });
361
         });
417
       }
362
       }
418
     },
363
     },
419
-    // 表单重置
420
-    reset() {
421
-      this.form = {
422
-        archiveId: null,
423
-        projectId: null,
424
-        submitTime: null,
425
-        submitSituation: null,
426
-        locationLng: null,
427
-        locationLat: null,
428
-        produceInspector: null,
429
-        qualityInspector: null,
430
-        deptLeader: null,
431
-        archiver: null,
432
-        receiveTime: null,
433
-        qualityTime: null,
434
-        produceTime: null,
435
-        deptTime: null,
436
-        archiveTime: null,
437
-        produceComment: null,
438
-        qualityComment: null,
439
-        deptComment: null,
440
-        archiveComment: null
441
-      };
442
-      this.resetForm("form");
443
-    },
444
-    /** 搜索按钮操作 */
445
-    handleQuery() {
446
-      this.queryParams.pageNum = 1;
447
-      this.getList();
448
-    },
449
-    /** 重置按钮操作 */
450
-    resetQuery() {
451
-      this.resetForm("queryForm");
452
-      this.handleQuery();
453
-    },
454
-    // 多选框选中数据
455
-    handleSelectionChange(selection) {
456
-      this.ids = selection.map(item => item.archiveId)
457
-      this.single = selection.length !== 1
458
-      this.multiple = !selection.length
459
-    },
460
-    /** 新增按钮操作 */
461
-    handleAdd() {
462
-      this.reset();
463
-      this.open = true;
464
-      this.title = "添加cmc成果归档";
465
-    },
466
-    /** 修改按钮操作 */
467
-    handleUpdate(row) {
468
-      this.reset();
469
-      const archiveId = row.archiveId || this.ids
470
-      getArchive(archiveId).then(response => {
471
-        this.form = response.data;
472
-        this.open = true;
473
-        this.title = "修改cmc成果归档";
474
-      });
475
-    },
476
     /** 提交按钮 */
364
     /** 提交按钮 */
477
     submitForm() {
365
     submitForm() {
478
       this.$refs["form"].validate(valid => {
366
       this.$refs["form"].validate(valid => {
480
           if (this.formTotal != 0) {
368
           if (this.formTotal != 0) {
481
             updateArchive(this.form).then(response => {
369
             updateArchive(this.form).then(response => {
482
               this.$modal.msgSuccess("修改成功");
370
               this.$modal.msgSuccess("修改成功");
483
-              this.open = false;
484
-              this.getList();
485
             });
371
             });
486
             const params = { taskId: this.taskForm.taskId };
372
             const params = { taskId: this.taskForm.taskId };
487
             getNextFlowNode(params).then(res => {
373
             getNextFlowNode(params).then(res => {
488
-              if (this.taskName == '成果上传') {
489
-                const params = { taskId: this.taskForm.taskId };
490
-                this.checkSendUser = true;
491
-                this.completeOpen = true;
492
-                this.completeTitle = "流程审批";
374
+              if (this.taskName == '归档发起') {
375
+                // const params = { taskId: this.taskForm.taskId };
376
+                // this.checkSendUser = true;
377
+                // this.completeOpen = true;
378
+                // this.completeTitle = "流程审批";
379
+                getUsersDeptLeaderByDept({ deptId: 109 }).then(res => {
380
+                  let userId = res.data.userId;
381
+                  this.$set(this.taskForm.variables, "approval", userId);
382
+                  complete(this.taskForm).then(response => {
383
+                    this.$modal.msgSuccess(response.msg);
384
+                    this.$emit('goBack')
385
+                  });
386
+                });
493
               }
387
               }
494
               if (this.taskName == '部门检查') {
388
               if (this.taskName == '部门检查') {
495
                 let approvalList = this.chooseProject.qualityInspector.split(',')
389
                 let approvalList = this.chooseProject.qualityInspector.split(',')
509
                   });
403
                   });
510
                 });
404
                 });
511
               }
405
               }
512
-              if (this.taskName == '技术部审核') {
406
+              if (this.taskName == '技术质量部审核') {
513
                 getUserByRole({ roleId: 6 }).then(result => {
407
                 getUserByRole({ roleId: 6 }).then(result => {
514
                   this.$set(this.taskForm.variables, "approval", result.data[0]);
408
                   this.$set(this.taskForm.variables, "approval", result.data[0]);
515
                   complete(this.taskForm).then(response => {
409
                   complete(this.taskForm).then(response => {
529
             this.form.archiveId = this.taskForm.formId;
423
             this.form.archiveId = this.taskForm.formId;
530
             addArchive(this.form).then(response => {
424
             addArchive(this.form).then(response => {
531
               this.$modal.msgSuccess("新增成功");
425
               this.$modal.msgSuccess("新增成功");
532
-              this.open = false;
533
-              this.getList();
534
             });
426
             });
535
             const params = { taskId: this.taskForm.taskId };
427
             const params = { taskId: this.taskForm.taskId };
536
             getNextFlowNode(params).then(res => {
428
             getNextFlowNode(params).then(res => {
542
         }
434
         }
543
       });
435
       });
544
     },
436
     },
545
-    /** 删除按钮操作 */
546
-    handleDelete(row) {
547
-      const archiveIds = row.archiveId || this.ids;
548
-      this.$modal.confirm('是否确认删除cmc成果归档编号为"' + archiveIds + '"的数据项?').then(function () {
549
-        return delArchive(archiveIds);
550
-      }).then(() => {
551
-        this.getList();
552
-        this.$modal.msgSuccess("删除成功");
553
-      }).catch(() => { });
554
-    },
555
-    /** 导出按钮操作 */
556
-    handleExport() {
557
-      this.download('oa/archive/export', {
558
-        ...this.queryParams
559
-      }, `archive_${new Date().getTime()}.xlsx`)
560
-    },
561
     confirmProject(val) {
437
     confirmProject(val) {
562
       if (val.length > 1) {
438
       if (val.length > 1) {
563
         this.$message.error('请选择一个项目');
439
         this.$message.error('请选择一个项目');
597
       })
473
       })
598
     },
474
     },
599
     gotoFile() {
475
     gotoFile() {
600
-      this.$router.push({ path: '/file' })
476
+      this.$router.push({ path: '/product/archive/file' })
601
     },
477
     },
602
     typeText(flag) {
478
     typeText(flag) {
603
       if (flag == true)
479
       if (flag == true)

+ 80
- 0
oa-ui/src/views/flowable/form/components/auditorRow.vue View File

1
+<template>
2
+  <div>
3
+    <el-row>
4
+      <el-col :span="5" :xs="24" :offset="13">
5
+        <label for="signature" class="labelclass">
6
+          签名: <span class="auditor font-nomal"> {{ localSignature }}</span>
7
+        </label>
8
+      </el-col>
9
+      <el-col :span="6">
10
+        <label for="signTime" class="labelclass">
11
+          日期:<span class="font-nomal"> {{ loaclSignTime }} </span>
12
+        </label>
13
+      </el-col>
14
+    </el-row>
15
+  </div>
16
+</template>
17
+
18
+<script>
19
+import { parseTime } from "@/utils/ruoyi";
20
+export default {
21
+  props: {
22
+    signature: {
23
+      type: Number,
24
+    },
25
+    signTime: {
26
+      type: String,
27
+      default: ''
28
+    },
29
+    isCurrent: {
30
+      type: Boolean,
31
+      default: true
32
+    }
33
+  },
34
+  data() {
35
+    return {
36
+      localSignature: '',
37
+      loaclSignTime: ''
38
+    }
39
+  },
40
+  watch: {
41
+    signature(newval) {
42
+      if (newval)
43
+        this.localSignature = this.getUserName(newval);
44
+    },
45
+    signTime(newval) {
46
+      if (newval)
47
+        this.loaclSignTime = newval;
48
+    }
49
+  },
50
+  mounted() {
51
+    if (this.isCurrent) {
52
+      this.localSignature = this.$store.getters.name;
53
+      this.loaclSignTime = parseTime(new Date(), '{y}-{m}-{d}');
54
+    } else {
55
+      this.localSignature = this.signature;
56
+      this.loaclSignTime = this.signTime;
57
+    }
58
+  }
59
+}
60
+</script>
61
+
62
+<style lang="scss" scoped>
63
+.labelclass {
64
+  text-align: right;
65
+  vertical-align: middle;
66
+  float: left;
67
+  font-size: 14px;
68
+  color: #606266;
69
+  line-height: 40px;
70
+  padding: 0 12px 0 0;
71
+  -webkit-box-sizing: border-box;
72
+  box-sizing: border-box;
73
+}
74
+
75
+.font-nomal {
76
+  padding-left: 15px;
77
+  font-weight: normal;
78
+  color: #000;
79
+}
80
+</style>

+ 22
- 5
oa-ui/src/views/flowable/form/components/choosePartyA.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-06-18 17:38:50
3
  * @Date: 2024-06-18 17:38:50
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-09-05 14:09:31
5
+ * @LastEditTime: 2024-09-18 11:16:02
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
9
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
9
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
10
       <el-form-item label="单位名称" prop="partyAName">
10
       <el-form-item label="单位名称" prop="partyAName">
11
-        <el-input v-model="queryParams.partyAName" placeholder="请输入单位名称" clearable @keyup.enter.native="handleQuery()"/>
11
+        <el-select v-model="queryParams.partyAName" clearable filterable remote reserve-keyword placeholder="请输入单位名称"
12
+          :remote-method="remoteMethod" :loading="queryLoading" style="width: 400px;" @change="handleQuery()">
13
+          <el-option v-for="partyA in queryPartyAList" :key="partyA.partyAId" :label="partyA.partyAName"
14
+            :value="partyA.partyAName">
15
+          </el-option>
16
+        </el-select>
12
       </el-form-item>
17
       </el-form-item>
13
       <el-form-item style="margin-bottom:0;display:none;"> <el-input></el-input> </el-form-item>
18
       <el-form-item style="margin-bottom:0;display:none;"> <el-input></el-input> </el-form-item>
14
       <el-form-item>
19
       <el-form-item>
32
       <el-table-column label="备注说明" align="center" prop="remark" />
37
       <el-table-column label="备注说明" align="center" prop="remark" />
33
     </el-table>
38
     </el-table>
34
 
39
 
35
-    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" :autoScroll="false"
36
-      @pagination="getList" />
40
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
41
+      :autoScroll="false" @pagination="getList" />
37
     <div>
42
     <div>
38
       已选单位:<el-tag v-for="item in choosePartyA" style="margin: 5px;" :key="item.partyAId">{{ item.partyAName }}</el-tag>
43
       已选单位:<el-tag v-for="item in choosePartyA" style="margin: 5px;" :key="item.partyAId">{{ item.partyAName }}</el-tag>
39
     </div>
44
     </div>
81
     return {
86
     return {
82
       // 遮罩层
87
       // 遮罩层
83
       loading: true,
88
       loading: true,
89
+      queryLoading: true,
84
       // 选中数组
90
       // 选中数组
85
       ids: [],
91
       ids: [],
86
       // 非单个禁用
92
       // 非单个禁用
113
           { required: true, message: '请输入单位名称', trigger: 'blur' },
119
           { required: true, message: '请输入单位名称', trigger: 'blur' },
114
         ]
120
         ]
115
       },
121
       },
116
-      choosePartyA: []
122
+      choosePartyA: [],
123
+      queryPartyAList: []
117
     };
124
     };
118
   },
125
   },
119
   created() {
126
   created() {
139
         this.loading = false;
146
         this.loading = false;
140
       });
147
       });
141
     },
148
     },
149
+    remoteMethod(val) {
150
+      listPartyA({
151
+        pageNum: 1,
152
+        pageSize: 30,
153
+        partyAName: val
154
+      }).then(res => {
155
+        this.queryPartyAList = res.rows;
156
+        this.queryLoading = false;
157
+      })
158
+    },
142
     // 取消按钮
159
     // 取消按钮
143
     cancel() {
160
     cancel() {
144
       this.open = false;
161
       this.open = false;

+ 4
- 1
oa-ui/src/views/flowable/form/finance/borrowForm.vue View File

94
                 </td> -->
94
                 </td> -->
95
                 <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">
95
                 <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">
96
                   <el-input v-model="detail.managerAmount" :disabled="taskName != '分管审核'"
96
                   <el-input v-model="detail.managerAmount" :disabled="taskName != '分管审核'"
97
-                    @change="calculateManagerAmount(detail)"></el-input>
97
+                    @blur="calculateManagerAmount(detail)"></el-input>
98
                 </td>
98
                 </td>
99
                 <td>
99
                 <td>
100
                   <el-button type="text" style="color:#F56C6C" icon="el-icon-delete" size="mini" circle
100
                   <el-button type="text" style="color:#F56C6C" icon="el-icon-delete" size="mini" circle
460
         this.rules = {
460
         this.rules = {
461
           managerComment: [
461
           managerComment: [
462
             { required: true, message: '请输入分管领导审核意见', trigger: 'blur' }
462
             { required: true, message: '请输入分管领导审核意见', trigger: 'blur' }
463
+          ],
464
+          managerAmount:[
465
+            { required: true, message: '请输入核准金额', trigger: 'blur' }
463
           ]
466
           ]
464
         }
467
         }
465
       } else if (this.taskName == '总经理审核') {
468
       } else if (this.taskName == '总经理审核') {

Loading…
Cancel
Save