余思翰 преди 6 месеца
родител
ревизия
7c09d56e04

+ 68
- 14
oa-ui/src/views/flowable/form/work/declareForm.vue Целия файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-08-16 09:16:36
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-10-08 09:45:17
5
+ * @LastEditTime: 2024-10-21 16:10:50
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -10,8 +10,14 @@
10 10
       <el-col :span="isFlow ? 18 : 24" :xs="24">
11 11
         <h2 class="text-center">项目工作填报表</h2>
12 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 21
             <el-button icon="el-icon-plus" type="primary" @click="prOpen = true" size="mini"
16 22
               v-if="taskName == '工作填报'">选择项目</el-button>
17 23
           </el-form-item>
@@ -153,6 +159,7 @@ export default {
153 159
         userId: undefined,
154 160
         submitTime: undefined,
155 161
       },
162
+      radio: '0',
156 163
       rules: {
157 164
         projectId: [
158 165
           { required: true, trigger: "blur", message: "请选择项目" },
@@ -191,12 +198,17 @@ export default {
191 198
           this.form.price = 216;
192 199
           this.hasForm = true;
193 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,15 +225,28 @@ export default {
213 225
     submitForm() {
214 226
       this.$refs['form'].validate(valid => {
215 227
         if (valid) {
228
+          this.$set(this.taskForm.variables, "skip", false);
216 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 235
           this.$confirm('是否确认提交表单?', '提示', {
221 236
             confirmButtonText: '确定',
222 237
             cancelButtonText: '取消',
223 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 250
             if (this.hasForm) {
226 251
               updateDeclare(this.form);
227 252
             } else {
@@ -229,9 +254,7 @@ export default {
229 254
               addDeclare(this.form);
230 255
             }
231 256
             const params = { taskId: this.taskForm.taskId };
232
-            let approval = this.chooseProject.projectLeader;
233 257
             getNextFlowNode(params).then(() => {
234
-              this.$set(this.taskForm.variables, "approval", approval);
235 258
               this.handleComplete(this.taskForm);
236 259
             })
237 260
           })
@@ -253,6 +276,7 @@ export default {
253 276
           })
254 277
         }
255 278
       } else if (this.taskName == '部门负责人审核') {
279
+        this.form.checkStatus = '1';
256 280
         this.form.auditStatus = '1';
257 281
         updateDeclare(this.form);
258 282
         this.$set(this.taskForm.variables, "approval", this.form.userId);
@@ -341,6 +365,36 @@ export default {
341 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 400
 </script>

+ 56
- 34
oa-ui/src/views/oa/declare/index.vue Целия файл

@@ -2,7 +2,7 @@
2 2
  * @Author: wrh
3 3
  * @Date: 2024-08-14 14:24:11
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-19 11:47:08
5
+ * @LastEditTime: 2024-10-21 15:00:50
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -22,9 +22,9 @@
22 22
           </el-option>
23 23
         </el-select>
24 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 28
         </el-date-picker>
29 29
       </el-form-item>
30 30
       <el-form-item>
@@ -74,10 +74,10 @@
74 74
     </el-row>
75 75
 
76 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 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 81
       <el-table-column label="填报人" align="center" prop="user.nickName" />
82 82
       <el-table-column label="工作类别" align="center" prop="workType" />
83 83
       <el-table-column label="工作项目" align="center" prop="workItem" />
@@ -110,24 +110,19 @@
110 110
           <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
111 111
         </template>
112 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 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 118
             size="mini"
124 119
             type="text"
125 120
             icon="el-icon-delete"
126 121
             @click="handleDelete(scope.row)"
127 122
             v-hasPermi="['oa:declare:remove']"
128
-          >删除</el-button>
123
+          >删除</el-button> -->
129 124
         </template>
130
-      </el-table-column> -->
125
+      </el-table-column>
131 126
     </el-table>
132 127
 
133 128
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@@ -136,31 +131,37 @@
136 131
     <!-- 添加或修改工作填报对话框 -->
137 132
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
138 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 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 147
         </el-form-item>
145 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 150
         </el-form-item>
148 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 153
         </el-form-item>
151 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 156
         </el-form-item>
154 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 159
         </el-form-item>
157 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 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 165
         </el-form-item>
165 166
       </el-form>
166 167
       <div slot="footer" class="dialog-footer">
@@ -216,7 +217,9 @@ export default {
216 217
         confirmStatus: null
217 218
       },
218 219
       // 表单参数
219
-      form: {},
220
+      form: {
221
+        submitTime: ''
222
+      },
220 223
       // 表单校验
221 224
       rules: {
222 225
       }
@@ -229,6 +232,7 @@ export default {
229 232
     /** 查询工作填报列表 */
230 233
     getList() {
231 234
       this.loading = true;
235
+      this.queryParams.deptId = this.$store.getters.deptId;
232 236
       listDeclare(this.queryParams).then(response => {
233 237
         this.declareList = response.rows;
234 238
         this.total = response.total;
@@ -356,10 +360,28 @@ export default {
356 360
       else
357 361
         return 'warning'
358 362
     },
359
-    predictMoney(row){
363
+    predictMoney(row) {
360 364
       let result = parseFloat(row.price * row.workLoad * row.coefficient)
361 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 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,7 +59,6 @@ export default {
59 59
   },
60 60
   methods: {
61 61
     initDatas() {
62
-      console.log(this.borrowData);
63 62
       if (Object.keys(this.borrowData).length !== 0) {
64 63
         this.borrowAmount = this.borrowData.amount[0];
65 64
         this.borrowUsage = this.borrowData.usage[0];

Loading…
Отказ
Запис