Selaa lähdekoodia

新增项目生产界面

余思翰 1 vuosi sitten
vanhempi
commit
090ad1e55d

+ 50
- 0
oa-ui/src/api/oa/project/projectProgress.js Näytä tiedosto

1
+/*
2
+ * @Author: ysh
3
+ * @Date: 2024-04-07 15:29:32
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-16 10:04:18
6
+ */
7
+import request from '@/utils/request'
8
+
9
+// 查询cmc项目内容列表
10
+export function listProjectProgress(query) {
11
+  return request({
12
+    url: '/oa/projectProgress/list',
13
+    method: 'get',
14
+    params: query
15
+  })
16
+}
17
+
18
+// 查询cmc项目内容详细
19
+export function getProjectProgress(projectId) {
20
+  return request({
21
+    url: '/oa/projectProgress/' + projectId,
22
+    method: 'get'
23
+  })
24
+}
25
+
26
+// 新增cmc项目内容
27
+export function addProjectProgress(data) {
28
+  return request({
29
+    url: '/oa/projectProgress',
30
+    method: 'post',
31
+    data: data
32
+  })
33
+}
34
+
35
+// 修改cmc项目内容
36
+export function updateProjectProgress(data) {
37
+  return request({
38
+    url: '/oa/projectProgress',
39
+    method: 'put',
40
+    data: data
41
+  })
42
+}
43
+
44
+// 删除cmc项目内容
45
+export function delProjectProgress(projectId) {
46
+  return request({
47
+    url: '/oa/projectProgress/' + projectId,
48
+    method: 'delete'
49
+  })
50
+}

+ 229
- 0
oa-ui/src/views/flowable/form/projectProcess/inProgress.vue Näytä tiedosto

1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-08 13:56:14
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-16 11:42:20
6
+-->
7
+<template>
8
+  <div class="app-container">
9
+    <h2 style="text-align: center;">项目运作情况</h2>
10
+    <div class="headers">
11
+      基本作业情况记录
12
+      <div class="line"></div>
13
+    </div>
14
+    <el-form ref="progress" :model="form" :disabled="disabled" label-width="100px">
15
+      <el-row :gutter="20">
16
+        <el-col :span="11">
17
+          <el-form-item label="使用车辆(车牌号):" label-width="153px">
18
+
19
+          </el-form-item>
20
+        </el-col>
21
+        <el-col :span="11">
22
+          <el-form-item label="驾驶员:">
23
+
24
+          </el-form-item>
25
+        </el-col>
26
+      </el-row>
27
+      <el-form-item label="参与人员:">
28
+
29
+      </el-form-item>
30
+      <el-row :gutter="20">
31
+        <el-col :span="11">
32
+          <el-form-item label="进场时间:">
33
+            <el-date-picker type="date" placeholder="选择日期" v-model="form.entryTime"></el-date-picker>
34
+          </el-form-item>
35
+        </el-col>
36
+        <el-col :span="11">
37
+          <el-form-item label="撤场时间:">
38
+            <el-date-picker type="date" placeholder="选择日期" v-model="form.exitTime"></el-date-picker>
39
+          </el-form-item>
40
+        </el-col>
41
+      </el-row>
42
+      <el-form-item label="项目进度:">
43
+        <table border="1">
44
+          <tr>
45
+            <td style="width:80px">序号</td>
46
+            <td>截止日期</td>
47
+            <td>累计总进度(%)</td>
48
+            <td style="width:300px;">情况说明</td>
49
+          </tr>
50
+          <tr v-for="(progress, index) in progressList" :key="index">
51
+            <td>
52
+              {{ index + 1 }}
53
+            </td>
54
+            <td>
55
+              <el-date-picker type="date" placeholder="选择日期" v-model="progress.date"
56
+                value-format="yyyy-MM-dd"></el-date-picker>
57
+            </td>
58
+            <td>
59
+              <el-input-number v-model="progress.percentage" :controls="false" style="width:120px;"></el-input-number>%
60
+            </td>
61
+            <td>
62
+              <el-input v-model="progress.situation" type="textarea"></el-input>
63
+            </td>
64
+            <td>
65
+              <el-button type="danger" icon="el-icon-minus" size="mini" circle
66
+                @click="deleProgressItem(index)"></el-button>
67
+            </td>
68
+          </tr>
69
+        </table>
70
+        <el-button icon="el-icon-plus" size="mini" @click="addProgressList()" type="primary" plain></el-button>
71
+      </el-form-item>
72
+    </el-form>
73
+    <div class="headers">
74
+      项目借款
75
+      <div class="line"></div>
76
+    </div>
77
+
78
+    <div class="headers">
79
+      成果汇交
80
+      <div class="line"></div>
81
+    </div>
82
+    <div class="headers">
83
+      产值结算(内部)
84
+      <div class="line"></div>
85
+    </div>
86
+    <div slot="footer" class="dialog-footer" style="text-align: center">
87
+      <el-button @click="preserve()" :disabled="disabled" type="success">保 存</el-button>
88
+      <el-button type="primary" @click="confirmAddForm" :disabled="disabled">提交下一个流程</el-button>
89
+    </div>
90
+  </div>
91
+</template>
92
+
93
+<script>
94
+import { mapGetters } from 'vuex';
95
+import { parseTime } from "@/utils/ruoyi";
96
+import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
97
+import { getProjectComment, addProjectComment, updateProjectComment } from "@/api/oa/project/projectComment"
98
+import { getUsersDeptLeaderByDept } from '@/api/system/post'
99
+import { addProjectProgress } from '@/api/oa/project/projectProgress'
100
+import { Snowflake } from '@/utils/snowFlake.js'
101
+import { listBudgetCar, getBudgetCar } from "@/api/oa/budget/budgetCar";
102
+import { listBudgetDevice, getBudgetDevice } from "@/api/oa/budget/budgetDevice";
103
+import { listBudgetSettle, getBudgetSettle } from "@/api/oa/budget/budgetSettle";
104
+import { listBudgetStaff, getBudgetStaff } from "@/api/oa/budget/budgetStaff";
105
+import { listBudget } from "@/api/oa/budget/budget";
106
+export default {
107
+  computed: {
108
+    ...mapGetters(['name', 'userId']),
109
+  },
110
+  props: {
111
+    disabled: {
112
+      type: Boolean,
113
+      require: true,
114
+    },
115
+    taskForm: {
116
+      type: Object,
117
+      required: true,
118
+    },
119
+    taskName: {
120
+      type: String,
121
+      required: true,
122
+    },
123
+  },
124
+  data() {
125
+    return {
126
+      form: {
127
+        manageApprover: '',
128
+        manageApproverName: '',
129
+        manageApprovalTime: ''
130
+      },
131
+      rules: {
132
+        manageComment: [{ required: true, message: "请输入审核意见", trigger: "blur" }]
133
+      },
134
+      progressList: [{
135
+        date: "",
136
+        percentage: "",
137
+        situation: "",
138
+      }]
139
+    }
140
+  },
141
+  watch: {
142
+    taskName(newval, oldval) {
143
+      if (newval == '项目生产') {
144
+        this.doesItExistBudget(this.taskForm.formId)
145
+      }
146
+    }
147
+  },
148
+  created() {
149
+    if (this.taskName == '项目生产') {
150
+      this.doesItExistBudget(this.taskForm.formId)
151
+    }
152
+  },
153
+  methods: {
154
+    doesItExistBudget(projectId) {
155
+      listBudget({ projectId }).then(res => {
156
+        console.log(res);
157
+      })
158
+    },
159
+    addProgressList() {
160
+      this.progressList.push({
161
+        date: "",
162
+        percentage: "",
163
+        situation: "",
164
+      });
165
+    },
166
+    deleProgressItem(index) {
167
+      let arr = this.progressList;
168
+      if (arr.length == 1) {
169
+        return;
170
+      }
171
+      if (index >= 0 && index < arr.length) {
172
+        arr.splice(index, 1);
173
+      }
174
+    },
175
+    handleAddProgress(form) {
176
+      addProjectProgress(form)
177
+    },
178
+    confirmAddForm() {
179
+      for (let progress of this.progressList) {
180
+        progress.projectId = this.taskForm.formId
181
+        progress.progressId = new Snowflake(1n, 1n, 0n).nextId().toString();
182
+        console.log(progress.progressId);
183
+        // addProjectProgress(progress);
184
+      }
185
+    },
186
+    preserve() {
187
+
188
+    }
189
+  },
190
+}
191
+</script>
192
+
193
+<style lang="scss" scoped>
194
+.auditor {
195
+  font-family: '华文行楷';
196
+  font-size: 20px;
197
+}
198
+
199
+table {
200
+  /*边框*/
201
+  /* border: 1px solid black; */
202
+  text-align: center;
203
+  border-collapse: collapse;
204
+  /*设置背景颜色*/
205
+  /* background-color: #bfa; */
206
+}
207
+
208
+.headers {
209
+  position: relative;
210
+  font-weight: bold;
211
+  font-size: 18px;
212
+  padding-left: 40px;
213
+  padding-bottom: 40px;
214
+
215
+  .line {
216
+    position: absolute;
217
+    left: 22px;
218
+    top: 5px;
219
+    width: 5px;
220
+    height: 14px;
221
+    border-radius: 10px;
222
+    background-color: #2893E5;
223
+  }
224
+}
225
+
226
+::v-deep .el-textarea.is-disabled .el-textarea__inner {
227
+  color: #121212 !important;
228
+}
229
+</style>

+ 7
- 3
oa-ui/src/views/flowable/form/projectProcess/index.vue Näytä tiedosto

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
3
  * @Date: 2024-02-27 14:49:15
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-12 14:17:01
5
+ * @LastEditTime: 2024-04-15 09:32:33
6
 -->
6
 -->
7
 
7
 
8
 <template>
8
 <template>
37
             <sc-confirm :taskForm="taskForm" :taskName="taskName" :disabled="taskName != '生产确认'"
37
             <sc-confirm :taskForm="taskForm" :taskName="taskName" :disabled="taskName != '生产确认'"
38
               @goBack="goBack"></sc-confirm>
38
               @goBack="goBack"></sc-confirm>
39
           </el-tab-pane>
39
           </el-tab-pane>
40
-          <el-tab-pane label="项目生产" name="项目生产"></el-tab-pane>
40
+          <el-tab-pane label="项目生产" name="项目生产">
41
+            <in-progress :taskForm="taskForm" :taskName="taskName" :disabled="taskName != '项目生产'"
42
+              @goBack="goBack"></in-progress>
43
+          </el-tab-pane>
41
           <el-tab-pane label="质量检查" name="质量检查"></el-tab-pane>
44
           <el-tab-pane label="质量检查" name="质量检查"></el-tab-pane>
42
           <el-tab-pane label="成果归档" name="成果归档"></el-tab-pane>
45
           <el-tab-pane label="成果归档" name="成果归档"></el-tab-pane>
43
         </el-tabs>
46
         </el-tabs>
66
 import { flowXmlAndNode } from "@/api/flowable/definition";
69
 import { flowXmlAndNode } from "@/api/flowable/definition";
67
 import ManageReview from './manageReview.vue'
70
 import ManageReview from './manageReview.vue'
68
 import ScConfirm from './scConfirm.vue'
71
 import ScConfirm from './scConfirm.vue'
72
+import InProgress from './inProgress.vue'
69
 export default {
73
 export default {
70
   props: {
74
   props: {
71
     taskName: {
75
     taskName: {
75
       type: Object,
79
       type: Object,
76
     }
80
     }
77
   },
81
   },
78
-  components: { addproject, arrangeProject, businessReview, flow, ManageReview, ScConfirm },
82
+  components: { addproject, arrangeProject, businessReview, flow, ManageReview, ScConfirm, InProgress },
79
   data() {
83
   data() {
80
     return {
84
     return {
81
       activeName: '项目登记',
85
       activeName: '项目登记',

+ 27
- 17
oa-ui/src/views/flowable/form/projectProcess/scConfirm.vue Näytä tiedosto

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-08 13:56:14
3
  * @Date: 2024-04-08 13:56:14
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-12 17:32:47
5
+ * @LastEditTime: 2024-04-15 10:33:51
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
32
 import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
32
 import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
33
 import { getProjectComment, addProjectComment, updateProjectComment } from "@/api/oa/project/projectComment"
33
 import { getProjectComment, addProjectComment, updateProjectComment } from "@/api/oa/project/projectComment"
34
 import { getUsersDeptLeaderByDept } from '@/api/system/post'
34
 import { getUsersDeptLeaderByDept } from '@/api/system/post'
35
+import { getProject } from '@/api/oa/project/project'
35
 export default {
36
 export default {
36
   computed: {
37
   computed: {
37
     ...mapGetters(['name', 'userId']),
38
     ...mapGetters(['name', 'userId']),
131
       }
132
       }
132
     },
133
     },
133
     sign() {
134
     sign() {
134
-      debugger
135
       this.form.scApprover = this.$store.state.user.id;
135
       this.form.scApprover = this.$store.state.user.id;
136
       if (this.form.scApproverName != null && this.form.scApproverName != undefined && this.form.scApproverName != '') {
136
       if (this.form.scApproverName != null && this.form.scApproverName != undefined && this.form.scApproverName != '') {
137
         let sign = this.form.scApproverName + ',' + this.$store.state.user.name;
137
         let sign = this.form.scApproverName + ',' + this.$store.state.user.name;
147
           this.form.projectId = this.taskForm.formId
147
           this.form.projectId = this.taskForm.formId
148
           debugger
148
           debugger
149
           if (this.form.scApprover == '' || this.form.scApprover == null) {
149
           if (this.form.scApprover == '' || this.form.scApprover == null) {
150
+            if (this.form.scApproverName != '' && this.form.scApproverName != null){
151
+              this.form.scApprover = this.$store.state.user.id;
152
+            }else {
150
             this.$modal.msgError('请签名');
153
             this.$modal.msgError('请签名');
151
             return
154
             return
152
           }
155
           }
153
-          updateProjectComment(this.form)
154
-          const params = { taskId: this.taskForm.taskId };
155
-          // 获取下一个流程节点
156
-          getNextFlowNode(params).then(res => {
157
-            this.$set(this.taskForm.variables, "approval", this.deptLeaderList);
158
-            complete(this.taskForm).then(response => {
159
-              this.$modal.msgSuccess(response.msg);
160
-              this.$emit("goBack");
161
-            });
162
-          });
163
-        } else {
164
-          this.$modal.msgError('必填项未写');
165
-          return false;
156
+
166
         }
157
         }
167
-      })
158
+        updateProjectComment(this.form)
159
+        const params = { taskId: this.taskForm.taskId };
160
+        // 获取下一个流程节点
161
+        getNextFlowNode(params).then(res => {
162
+          getProject(this.taskForm.formId).then(res => {
163
+            if (res.data) {
164
+              this.$set(this.taskForm.variables, "approval", res.data.projectLeader);
165
+              complete(this.taskForm).then(response => {
166
+                this.$modal.msgSuccess(response.msg);
167
+                this.$emit("goBack");
168
+              });
169
+            }
170
+          })
168
 
171
 
169
-    },
172
+        });
173
+      } else {
174
+        this.$modal.msgError('必填项未写');
175
+        return false;
176
+      }
177
+  })
178
+
179
+},
170
 
180
 
171
   },
181
   },
172
 }
182
 }

Loading…
Peruuta
Tallenna