Browse Source

网页端:工作填报新增工作月份搜索与导出,工作填报流程新增退回按钮

余思翰 21 hours ago
parent
commit
9521cb3c8a

+ 26
- 6
oa-ui/src/views/flowable/form/work/declareForm.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-08-16 09:16:36
3
  * @Date: 2024-08-16 09:16:36
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-07-31 09:48:58
5
+ * @LastEditTime: 2025-09-05 13:59:35
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
10
       <el-col :span="isFlow ? 18 : 24" :xs="24">
10
       <el-col :span="isFlow ? 18 : 24" :xs="24">
11
         <h2 class="text-center">项目工作填报表</h2>
11
         <h2 class="text-center">项目工作填报表</h2>
12
         <el-divider></el-divider>
12
         <el-divider></el-divider>
13
+        <div class="mt20 mb20" v-if="showAlter">
14
+          <el-alert title="任务被退回,请修改后重新提交" type="error" :closable="false">
15
+            <return-comment :taskForm="taskForm" @isReturn="isReturn"></return-comment>
16
+          </el-alert>
17
+        </div>
13
         <el-form ref="form" :model="form" :rules="rules" label-width="110px" :disabled="formDisabled">
18
         <el-form ref="form" :model="form" :rules="rules" label-width="110px" :disabled="formDisabled">
14
           <el-form-item label="是否零星项目:">
19
           <el-form-item label="是否零星项目:">
15
             <el-radio-group v-model="radio" @change="chooseLX" :disabled="taskName != '工作填报'">
20
             <el-radio-group v-model="radio" @change="chooseLX" :disabled="taskName != '工作填报'">
51
           </el-form-item>
56
           </el-form-item>
52
           <el-form-item label="工作日期:" prop="dateRange">
57
           <el-form-item label="工作日期:" prop="dateRange">
53
             <el-date-picker v-model="form.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期"
58
             <el-date-picker v-model="form.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期"
54
-              end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
55
-              :disabled="taskName != '工作填报'" @change="handleDateRangeChange">
59
+              end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :disabled="taskName != '工作填报'"
60
+              @change="handleDateRangeChange">
56
             </el-date-picker>
61
             </el-date-picker>
57
           </el-form-item>
62
           </el-form-item>
58
           <el-form-item label="工天:" prop="workLoad">
63
           <el-form-item label="工天:" prop="workLoad">
80
         </el-form>
85
         </el-form>
81
         <el-row class="text-center mt20" v-if="!formDisabled">
86
         <el-row class="text-center mt20" v-if="!formDisabled">
82
           <el-button type="warning" @click="save" v-if="taskName != '填报人确认'">保 存</el-button>
87
           <el-button type="warning" @click="save" v-if="taskName != '填报人确认'">保 存</el-button>
88
+          <el-button type="danger" @click="returnOpen = true" v-if="taskName != '工作填报' && taskName != '填报人确认'">退
89
+            回</el-button>
83
           <el-button type="primary" @click="submitForm" v-if="taskName == '工作填报'">提 交</el-button>
90
           <el-button type="primary" @click="submitForm" v-if="taskName == '工作填报'">提 交</el-button>
84
           <el-button type="success" @click="approveForm"
91
           <el-button type="success" @click="approveForm"
85
             v-if="taskName != '工作填报' && taskName != '填报人确认'">审核通过</el-button>
92
             v-if="taskName != '工作填报' && taskName != '填报人确认'">审核通过</el-button>
98
     <el-dialog title="选择项目" :visible.sync="prOpen" :width="deviceWidth" append-to-body>
105
     <el-dialog title="选择项目" :visible.sync="prOpen" :width="deviceWidth" append-to-body>
99
       <choose-project @chooseProject="confirmProject"></choose-project>
106
       <choose-project @chooseProject="confirmProject"></choose-project>
100
     </el-dialog>
107
     </el-dialog>
108
+
109
+    <el-dialog title="退回" :visible.sync="returnOpen" width="40%" append-to-body>
110
+      <return-btn :taskForm="taskForm" @goBack="$emit('goBack')" @saves="" @cancel="returnOpen = false"></return-btn>
111
+    </el-dialog>
101
   </div>
112
   </div>
102
 </template>
113
 </template>
103
 
114
 
112
 import chooseProject from '../components/chooseProject.vue';
123
 import chooseProject from '../components/chooseProject.vue';
113
 import { parseTime } from "@/utils/ruoyi";
124
 import { parseTime } from "@/utils/ruoyi";
114
 import { getUsersDeptLeader, getUsersDeptLeaderByDept, getUsersManageLeaderByDept } from "@/api/system/post.js";
125
 import { getUsersDeptLeader, getUsersDeptLeaderByDept, getUsersManageLeaderByDept } from "@/api/system/post.js";
126
+import ReturnComment from "@/views/flowable/form/components/flowBtn/returnComment.vue";
127
+import ReturnBtn from "@/views/flowable/form/components/flowBtn/returnBtn.vue";
115
 export default {
128
 export default {
116
   components: {
129
   components: {
117
     flow,
130
     flow,
118
-    chooseProject
131
+    chooseProject,
132
+    ReturnComment,
133
+    ReturnBtn
119
   },
134
   },
120
   computed: {
135
   computed: {
121
     ...mapState({
136
     ...mapState({
192
       workItemList: [],
207
       workItemList: [],
193
       projectList: [],
208
       projectList: [],
194
       hasForm: false,
209
       hasForm: false,
195
-      money: 0
210
+      money: 0,
211
+      showAlter: true,
212
+      returnOpen: false
196
     }
213
     }
197
   },
214
   },
198
   methods: {
215
   methods: {
448
           this.countMoney();
465
           this.countMoney();
449
         }
466
         }
450
       }
467
       }
451
-    }
468
+    },
469
+    isReturn(val) {
470
+      this.showAlter = val;
471
+    },
452
   },
472
   },
453
 }
473
 }
454
 </script>
474
 </script>

+ 19
- 6
oa-ui/src/views/oa/declare/index.vue View File

2
  * @Author: wrh
2
  * @Author: wrh
3
  * @Date: 2024-08-14 14:24:11
3
  * @Date: 2024-08-14 14:24:11
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-07-31 10:00:14
5
+ * @LastEditTime: 2025-09-05 13:53:52
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
31
           placeholder="请选择填报月份">
31
           placeholder="请选择填报月份">
32
         </el-date-picker>
32
         </el-date-picker>
33
       </el-form-item>
33
       </el-form-item>
34
+
35
+      <el-form-item label="工作月份" prop="workDate">
36
+        <el-date-picker clearable v-model="queryParams.workDate" type="month" value-format="yyyy-MM"
37
+          placeholder="请选择工作月份">
38
+        </el-date-picker>
39
+      </el-form-item>
34
       <el-form-item>
40
       <el-form-item>
35
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
41
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
36
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
42
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
54
       <el-table-column label="工作类别" align="center" prop="workType" />
60
       <el-table-column label="工作类别" align="center" prop="workType" />
55
       <el-table-column label="工作项目" align="center" prop="workItem" />
61
       <el-table-column label="工作项目" align="center" prop="workItem" />
56
       <el-table-column label="工作内容" align="center" prop="workContent" width="250px" />
62
       <el-table-column label="工作内容" align="center" prop="workContent" width="250px" />
57
-      <el-table-column label="开始日期" align="center" prop="beginDate" width="92px"/>
58
-      <el-table-column label="结束日期" align="center" prop="endDate" width="92px"/>
63
+      <el-table-column label="开始日期" align="center" prop="beginDate" width="92px" />
64
+      <el-table-column label="结束日期" align="center" prop="endDate" width="92px" />
59
       <el-table-column label="工天" align="center" prop="workLoad" />
65
       <el-table-column label="工天" align="center" prop="workLoad" />
60
       <el-table-column label="工天单价" align="center" prop="price" />
66
       <el-table-column label="工天单价" align="center" prop="price" />
61
       <el-table-column label="系数" align="center" prop="coefficient" />
67
       <el-table-column label="系数" align="center" prop="coefficient" />
67
       <el-table-column label="审核状态" align="center">
73
       <el-table-column label="审核状态" align="center">
68
         <template slot-scope="scope">
74
         <template slot-scope="scope">
69
           <div>
75
           <div>
70
-            <el-tag :type="formatFn(scope.row, 'checkStatus') ? 'success':'warning'" size="mini">一审</el-tag>
76
+            <el-tag :type="formatFn(scope.row, 'checkStatus') ? 'success' : 'warning'" size="mini">一审</el-tag>
71
             <i v-if="formatFn(scope.row, 'checkStatus')" class="el-icon-circle-check" style="color:#67C23A"></i>
77
             <i v-if="formatFn(scope.row, 'checkStatus')" class="el-icon-circle-check" style="color:#67C23A"></i>
72
             <i v-else class="el-icon-warning-outline" style="color:#E6A23C"></i>
78
             <i v-else class="el-icon-warning-outline" style="color:#E6A23C"></i>
73
           </div>
79
           </div>
74
           <div>
80
           <div>
75
-            <el-tag :type="formatFn(scope.row, 'auditStatus') ? 'success':'warning'" size="mini">二审</el-tag>
81
+            <el-tag :type="formatFn(scope.row, 'auditStatus') ? 'success' : 'warning'" size="mini">二审</el-tag>
76
             <i v-if="formatFn(scope.row, 'auditStatus')" class="el-icon-circle-check" style="color:#67C23A"></i>
82
             <i v-if="formatFn(scope.row, 'auditStatus')" class="el-icon-circle-check" style="color:#67C23A"></i>
77
             <i v-else class="el-icon-warning-outline" style="color:#E6A23C"></i>
83
             <i v-else class="el-icon-warning-outline" style="color:#E6A23C"></i>
78
           </div>
84
           </div>
79
           <div>
85
           <div>
80
-            <el-tag :type="formatFn(scope.row, 'confirmStatus') ? 'success':'warning'" size="mini">确认</el-tag>
86
+            <el-tag :type="formatFn(scope.row, 'confirmStatus') ? 'success' : 'warning'" size="mini">确认</el-tag>
81
             <i v-if="formatFn(scope.row, 'confirmStatus')" class="el-icon-circle-check" style="color:#67C23A"></i>
87
             <i v-if="formatFn(scope.row, 'confirmStatus')" class="el-icon-circle-check" style="color:#67C23A"></i>
82
             <i v-else class="el-icon-warning-outline" style="color:#E6A23C"></i>
88
             <i v-else class="el-icon-warning-outline" style="color:#E6A23C"></i>
83
           </div>
89
           </div>
271
     /** 搜索按钮操作 */
277
     /** 搜索按钮操作 */
272
     handleQuery() {
278
     handleQuery() {
273
       this.queryParams.pageNum = 1;
279
       this.queryParams.pageNum = 1;
280
+      if (this.queryParams.workDate) {
281
+        this.queryParams.beginDate = this.queryParams.workDate;
282
+        this.queryParams.endDate = this.queryParams.workDate;
283
+      } else {
284
+        this.queryParams.beginDate = null;
285
+        this.queryParams.endDate = null;
286
+      }
274
       this.getList();
287
       this.getList();
275
     },
288
     },
276
     /** 重置按钮操作 */
289
     /** 重置按钮操作 */

Loading…
Cancel
Save