瀏覽代碼

修改工作填报

余思翰 7 月之前
父節點
當前提交
7c09d56e04

+ 68
- 14
oa-ui/src/views/flowable/form/work/declareForm.vue 查看文件

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: 2024-10-08 09:45:17
5
+ * @LastEditTime: 2024-10-21 16:10:50
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
-        <el-form ref="form" :model="form" :rules="rules" label-width="100px" :disabled="formDisabled">
14
-          <el-form-item label="项目名称:" prop="projectId">
13
+        <el-form ref="form" :model="form" :rules="rules" label-width="110px" :disabled="formDisabled">
14
+          <el-form-item label="是否零星项目:">
15
+            <el-radio-group v-model="radio" @change="chooseLX" :disabled="taskName != '工作填报'">
16
+              <el-radio label="0">否</el-radio>
17
+              <el-radio label="1">是</el-radio>
18
+            </el-radio-group>
19
+          </el-form-item>
20
+          <el-form-item label="项目名称:" prop="projectId" v-if="radio == '0'">
15
             <el-button icon="el-icon-plus" type="primary" @click="prOpen = true" size="mini"
21
             <el-button icon="el-icon-plus" type="primary" @click="prOpen = true" size="mini"
16
               v-if="taskName == '工作填报'">选择项目</el-button>
22
               v-if="taskName == '工作填报'">选择项目</el-button>
17
           </el-form-item>
23
           </el-form-item>
153
         userId: undefined,
159
         userId: undefined,
154
         submitTime: undefined,
160
         submitTime: undefined,
155
       },
161
       },
162
+      radio: '0',
156
       rules: {
163
       rules: {
157
         projectId: [
164
         projectId: [
158
           { required: true, trigger: "blur", message: "请选择项目" },
165
           { required: true, trigger: "blur", message: "请选择项目" },
191
           this.form.price = 216;
198
           this.form.price = 216;
192
           this.hasForm = true;
199
           this.hasForm = true;
193
           this.countMoney();
200
           this.countMoney();
194
-          getProject(res.data.projectId).then(res => {
195
-            if (res.data) {
196
-              this.chooseProject = res.data
197
-            }
198
-          })
199
-          this.getWorkItemList(this.form.workType);
201
+          if (!res.data.projectId) {
202
+            this.radio = '1'
203
+          } else {
204
+            getProject(res.data.projectId).then(res => {
205
+              if (res.data) {
206
+                this.chooseProject = res.data
207
+              }
208
+            })
209
+            this.getWorkItemList(this.form.workType);
210
+          }
211
+
200
         }
212
         }
201
       })
213
       })
202
     },
214
     },
213
     submitForm() {
225
     submitForm() {
214
       this.$refs['form'].validate(valid => {
226
       this.$refs['form'].validate(valid => {
215
         if (valid) {
227
         if (valid) {
228
+          this.$set(this.taskForm.variables, "skip", false);
216
           if (!this.chooseProject.projectLeader) {
229
           if (!this.chooseProject.projectLeader) {
217
-            this.$message.error('该项目未指定项目负责人,无法提交。')
218
-            return
230
+            if (this.radio == '0') {
231
+              this.$message.error('该项目未指定项目负责人,无法提交。')
232
+              return
233
+            }
219
           }
234
           }
220
           this.$confirm('是否确认提交表单?', '提示', {
235
           this.$confirm('是否确认提交表单?', '提示', {
221
             confirmButtonText: '确定',
236
             confirmButtonText: '确定',
222
             cancelButtonText: '取消',
237
             cancelButtonText: '取消',
223
             type: 'warning'
238
             type: 'warning'
224
-          }).then(() => {
239
+          }).then(async () => {
240
+            if (this.radio == '0') {
241
+              let approval = this.chooseProject.projectLeader;
242
+              this.$set(this.taskForm.variables, "approval", approval);
243
+            } else {
244
+              let resData = await getUsersDeptLeader({ userId: this.form.userId }); 
245
+              if (resData.data) {
246
+                this.$set(this.taskForm.variables, "approval", resData.data.userId);
247
+                this.$set(this.taskForm.variables, "skip", true);
248
+              }
249
+            }
225
             if (this.hasForm) {
250
             if (this.hasForm) {
226
               updateDeclare(this.form);
251
               updateDeclare(this.form);
227
             } else {
252
             } else {
229
               addDeclare(this.form);
254
               addDeclare(this.form);
230
             }
255
             }
231
             const params = { taskId: this.taskForm.taskId };
256
             const params = { taskId: this.taskForm.taskId };
232
-            let approval = this.chooseProject.projectLeader;
233
             getNextFlowNode(params).then(() => {
257
             getNextFlowNode(params).then(() => {
234
-              this.$set(this.taskForm.variables, "approval", approval);
235
               this.handleComplete(this.taskForm);
258
               this.handleComplete(this.taskForm);
236
             })
259
             })
237
           })
260
           })
253
           })
276
           })
254
         }
277
         }
255
       } else if (this.taskName == '部门负责人审核') {
278
       } else if (this.taskName == '部门负责人审核') {
279
+        this.form.checkStatus = '1';
256
         this.form.auditStatus = '1';
280
         this.form.auditStatus = '1';
257
         updateDeclare(this.form);
281
         updateDeclare(this.form);
258
         this.$set(this.taskForm.variables, "approval", this.form.userId);
282
         this.$set(this.taskForm.variables, "approval", this.form.userId);
341
         this.projectList = res.rows;
365
         this.projectList = res.rows;
342
       })
366
       })
343
     },
367
     },
368
+    chooseLX(val) {
369
+      if (val == '1') {
370
+        this.rules = {
371
+          workType: [
372
+            { required: true, trigger: "change", message: "请选择工作类别" },
373
+          ],
374
+          workItem: [
375
+            { required: true, trigger: "change", message: "请选择工作细项" },
376
+          ],
377
+          workContent: [
378
+            { required: true, trigger: "blur", message: "请填写具体内容" },
379
+          ]
380
+        }
381
+      } else {
382
+        this.rules = {
383
+          projectId: [
384
+            { required: true, trigger: "blur", message: "请选择项目" },
385
+          ],
386
+          workType: [
387
+            { required: true, trigger: "change", message: "请选择工作类别" },
388
+          ],
389
+          workItem: [
390
+            { required: true, trigger: "change", message: "请选择工作细项" },
391
+          ],
392
+          workContent: [
393
+            { required: true, trigger: "blur", message: "请填写具体内容" },
394
+          ]
395
+        }
396
+      }
397
+    }
344
   },
398
   },
345
 }
399
 }
346
 </script>
400
 </script>

+ 56
- 34
oa-ui/src/views/oa/declare/index.vue 查看文件

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: 2024-08-19 11:47:08
5
+ * @LastEditTime: 2024-10-21 15:00:50
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
22
           </el-option>
22
           </el-option>
23
         </el-select>
23
         </el-select>
24
       </el-form-item>
24
       </el-form-item>
25
-      <el-form-item label="填报时间" prop="submitTime">
26
-        <el-date-picker clearable v-model="queryParams.submitTime" type="date" value-format="yyyy-MM-dd"
27
-          placeholder="请选择填报时间">
25
+      <el-form-item label="填报月份" prop="submitTime">
26
+        <el-date-picker clearable v-model="queryParams.submitTime" type="month" value-format="yyyy-MM"
27
+          placeholder="请选择填报月份">
28
         </el-date-picker>
28
         </el-date-picker>
29
       </el-form-item>
29
       </el-form-item>
30
       <el-form-item>
30
       <el-form-item>
74
     </el-row>
74
     </el-row>
75
 
75
 
76
     <el-table v-loading="loading" :data="declareList" @selection-change="handleSelectionChange">
76
     <el-table v-loading="loading" :data="declareList" @selection-change="handleSelectionChange">
77
-      <el-table-column type="selection" width="55" align="center" />
77
+      <el-table-column type="index" width="55" align="center" />
78
       <!-- <el-table-column label="填报id" align="center" prop="formId" /> -->
78
       <!-- <el-table-column label="填报id" align="center" prop="formId" /> -->
79
-      <el-table-column label="项目编号" align="center" prop="project.projectNumber" />
80
-      <el-table-column label="项目名称" align="center" prop="project.projectName" />
79
+      <el-table-column label="项目编号" align="center" prop="project.projectNumber" :formatter="formatterProjectNumber" />
80
+      <el-table-column label="项目名称" align="center" prop="project.projectName" :formatter="formatterProjectName" />
81
       <el-table-column label="填报人" align="center" prop="user.nickName" />
81
       <el-table-column label="填报人" align="center" prop="user.nickName" />
82
       <el-table-column label="工作类别" align="center" prop="workType" />
82
       <el-table-column label="工作类别" align="center" prop="workType" />
83
       <el-table-column label="工作项目" align="center" prop="workItem" />
83
       <el-table-column label="工作项目" align="center" prop="workItem" />
110
           <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
110
           <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
111
         </template>
111
         </template>
112
       </el-table-column>
112
       </el-table-column>
113
-      <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
113
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
114
         <template slot-scope="scope">
114
         <template slot-scope="scope">
115
-          <el-button
116
-            size="mini"
117
-            type="text"
118
-            icon="el-icon-edit"
119
-            @click="handleUpdate(scope.row)"
120
-            v-hasPermi="['oa:declare:edit']"
121
-          >修改</el-button>
122
-          <el-button
115
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
116
+            v-hasPermi="['oa:declare:edit']">修改</el-button>
117
+          <!-- <el-button
123
             size="mini"
118
             size="mini"
124
             type="text"
119
             type="text"
125
             icon="el-icon-delete"
120
             icon="el-icon-delete"
126
             @click="handleDelete(scope.row)"
121
             @click="handleDelete(scope.row)"
127
             v-hasPermi="['oa:declare:remove']"
122
             v-hasPermi="['oa:declare:remove']"
128
-          >删除</el-button>
123
+          >删除</el-button> -->
129
         </template>
124
         </template>
130
-      </el-table-column> -->
125
+      </el-table-column>
131
     </el-table>
126
     </el-table>
132
 
127
 
133
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
128
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
136
     <!-- 添加或修改工作填报对话框 -->
131
     <!-- 添加或修改工作填报对话框 -->
137
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
132
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
138
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
133
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
139
-        <el-form-item label="项目id" prop="projectId">
140
-          <el-input v-model="form.projectId" placeholder="请输入项目id" />
134
+        <el-form-item label="项目名称" prop="project.projectNumber" v-if="form.projectId">
135
+          {{ form.project.projectNumber + '-' + form.project.projectName }}
136
+        </el-form-item>
137
+        <el-form-item label="项目名称" v-else>
138
+          {{ form.submitTime ? form.submitTime.substring(0, 4) + '年借调、零星项目' : '借调、零星项目' }}
139
+        </el-form-item>
140
+        <el-form-item label="填报人" prop="userId">
141
+          {{ getUserName(form.userId) }}
141
         </el-form-item>
142
         </el-form-item>
142
-        <el-form-item label="用户id" prop="userId">
143
-          <el-input v-model="form.userId" placeholder="请输入用户id" />
143
+        <el-form-item label="填报时间" prop="submitTime">
144
+          <el-date-picker clearable v-model="form.submitTime" type="date" value-format="yyyy-MM-dd" disabled
145
+            placeholder="请选择填报时间">
146
+          </el-date-picker>
144
         </el-form-item>
147
         </el-form-item>
145
         <el-form-item label="工作项目" prop="workItem">
148
         <el-form-item label="工作项目" prop="workItem">
146
-          <el-input v-model="form.workItem" placeholder="请输入工作项目" />
149
+          <el-input v-model="form.workItem" placeholder="请输入工作项目" disabled />
147
         </el-form-item>
150
         </el-form-item>
148
         <el-form-item label="工作内容">
151
         <el-form-item label="工作内容">
149
-          <editor v-model="form.workContent" :min-height="192" />
152
+          <el-input type="textarea" v-model="form.workContent" :autosize="{ minRows: 4 }" disabled></el-input>
150
         </el-form-item>
153
         </el-form-item>
151
         <el-form-item label="工天" prop="workLoad">
154
         <el-form-item label="工天" prop="workLoad">
152
-          <el-input v-model="form.workLoad" placeholder="请输入工天" />
155
+          <el-input v-model="form.workLoad" placeholder="请输入工天" disabled />
153
         </el-form-item>
156
         </el-form-item>
154
         <el-form-item label="工天单价" prop="price">
157
         <el-form-item label="工天单价" prop="price">
155
-          <el-input v-model="form.price" placeholder="请输入工天单价" />
158
+          <el-input v-model="form.price" placeholder="请输入工天单价" disabled />
156
         </el-form-item>
159
         </el-form-item>
157
         <el-form-item label="系数" prop="coefficient">
160
         <el-form-item label="系数" prop="coefficient">
158
-          <el-input v-model="form.coefficient" placeholder="请输入系数" />
161
+          <el-input v-model="form.coefficient" placeholder="请输入系数" @blur="predictMoney(this.form)" />
159
         </el-form-item>
162
         </el-form-item>
160
-        <el-form-item label="填报时间" prop="submitTime">
161
-          <el-date-picker clearable v-model="form.submitTime" type="date" value-format="yyyy-MM-dd"
162
-            placeholder="请选择填报时间">
163
-          </el-date-picker>
163
+        <el-form-item label="预估绩效">
164
+         <el-tag type="warning">{{ predictMoney(this.form) }}</el-tag>
164
         </el-form-item>
165
         </el-form-item>
165
       </el-form>
166
       </el-form>
166
       <div slot="footer" class="dialog-footer">
167
       <div slot="footer" class="dialog-footer">
216
         confirmStatus: null
217
         confirmStatus: null
217
       },
218
       },
218
       // 表单参数
219
       // 表单参数
219
-      form: {},
220
+      form: {
221
+        submitTime: ''
222
+      },
220
       // 表单校验
223
       // 表单校验
221
       rules: {
224
       rules: {
222
       }
225
       }
229
     /** 查询工作填报列表 */
232
     /** 查询工作填报列表 */
230
     getList() {
233
     getList() {
231
       this.loading = true;
234
       this.loading = true;
235
+      this.queryParams.deptId = this.$store.getters.deptId;
232
       listDeclare(this.queryParams).then(response => {
236
       listDeclare(this.queryParams).then(response => {
233
         this.declareList = response.rows;
237
         this.declareList = response.rows;
234
         this.total = response.total;
238
         this.total = response.total;
356
       else
360
       else
357
         return 'warning'
361
         return 'warning'
358
     },
362
     },
359
-    predictMoney(row){
363
+    predictMoney(row) {
360
       let result = parseFloat(row.price * row.workLoad * row.coefficient)
364
       let result = parseFloat(row.price * row.workLoad * row.coefficient)
361
       return result.toFixed(2)
365
       return result.toFixed(2)
362
-    }
366
+    },
367
+    formatterProjectNumber(row) {
368
+      if (!row.projectId) {
369
+        return '无'
370
+      } else {
371
+        return row.project.projectNumber
372
+      }
373
+    },
374
+    formatterProjectName(row) {
375
+      if (!row.projectId) {
376
+        let year = row.submitTime.substring(0, 4)
377
+        return year + '年借调、零星项目'
378
+      } else {
379
+        return row.project.projectName
380
+      }
381
+    },
363
   }
382
   }
364
 };
383
 };
365
 </script>
384
 </script>
385
+<style lang="scss" scoped>
386
+@import "@/assets/styles/element-reset.scss";
387
+</style>

+ 0
- 1
oa-ui/src/views/statistics/components/borrowStatistics.vue 查看文件

59
   },
59
   },
60
   methods: {
60
   methods: {
61
     initDatas() {
61
     initDatas() {
62
-      console.log(this.borrowData);
63
       if (Object.keys(this.borrowData).length !== 0) {
62
       if (Object.keys(this.borrowData).length !== 0) {
64
         this.borrowAmount = this.borrowData.amount[0];
63
         this.borrowAmount = this.borrowData.amount[0];
65
         this.borrowUsage = this.borrowData.usage[0];
64
         this.borrowUsage = this.borrowData.usage[0];

Loading…
取消
儲存