Przeglądaj źródła

修改经营审核、分管审核以新增预算

余思翰 1 rok temu
rodzic
commit
76cb7aa754

+ 50
- 0
oa-ui/src/api/oa/project/projectComment.js Wyświetl plik

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

+ 9
- 0
oa-ui/src/directive/index.js Wyświetl plik

@@ -1,9 +1,16 @@
1
+/*
2
+ * @Author: ysh
3
+ * @Date: 2024-01-03 09:23:11
4
+ * @LastEditors: 
5
+ * @LastEditTime: 2024-04-10 14:33:49
6
+ */
1 7
 import hasRole from './permission/hasRole'
2 8
 import hasPermi from './permission/hasPermi'
3 9
 import dialogDrag from './dialog/drag'
4 10
 import dialogDragWidth from './dialog/dragWidth'
5 11
 import dialogDragHeight from './dialog/dragHeight'
6 12
 import clipboard from './module/clipboard'
13
+import numeric from './module/mustNumber'
7 14
 
8 15
 const install = function(Vue) {
9 16
   Vue.directive('hasRole', hasRole)
@@ -12,11 +19,13 @@ const install = function(Vue) {
12 19
   Vue.directive('dialogDrag', dialogDrag)
13 20
   Vue.directive('dialogDragWidth', dialogDragWidth)
14 21
   Vue.directive('dialogDragHeight', dialogDragHeight)
22
+  Vue.directive('numeric', numeric)
15 23
 }
16 24
 
17 25
 if (window.Vue) {
18 26
   window['hasRole'] = hasRole
19 27
   window['hasPermi'] = hasPermi
28
+  window['numeric'] = numeric
20 29
   Vue.use(install); // eslint-disable-line
21 30
 }
22 31
 

+ 26
- 0
oa-ui/src/directive/module/mustNumber.js Wyświetl plik

@@ -0,0 +1,26 @@
1
+export default {
2
+  numeric: {
3
+    bind(el, binding, vnode) {
4
+      el.oninput = function (e) {
5
+        if (!e.isTrusted) return
6
+
7
+        // 获取输入框的当前值
8
+        let value = el.value
9
+
10
+        // 移除非数字的字符
11
+        value = value.replace(/\D/g, '')
12
+
13
+        // 如果输入框值为空或者第一个字符是0且不只有0一个字符,则设置为空
14
+        if (value === '' || (value[0] === '0' && value.length > 1)) {
15
+          value = ''
16
+        }
17
+
18
+        // 更新输入框的值
19
+        el.value = value
20
+      }
21
+    },
22
+    unbind(el) {
23
+      el.oninput = null
24
+    }
25
+  }
26
+}

+ 2
- 2
oa-ui/src/views/flowable/form/projectProcess/addproject.vue Wyświetl plik

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-08 13:47:45
5
+ * @LastEditTime: 2024-04-10 14:08:00
6 6
 -->
7 7
 
8 8
 <template>
@@ -164,7 +164,7 @@ export default {
164 164
           remark: "",
165 165
         },
166 166
       ],
167
-      restaurants: [{ value: "中国电建集团成都勘测设计研究院有限公司" }],
167
+      restaurants: [{ value: "中国电建集团成都勘测设计研究院有限公司勘测设计分公司" }],
168 168
     };
169 169
   },
170 170
   created() {

+ 59
- 9
oa-ui/src/views/flowable/form/projectProcess/businessReview.vue Wyświetl plik

@@ -2,20 +2,24 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-08 13:56:14
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-09 17:51:14
5
+ * @LastEditTime: 2024-04-10 17:59:08
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
9
+    <h2 style="text-align:center;">经营审核</h2>
9 10
     <el-form :model="form" :rules="rules" label-width="100px" :disabled="disabled">
10
-      <el-form-item label="审核意见:">
11
-        <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="jyComment">
11
+      <el-form-item label="审核意见:" prop="jyComment">
12
+        <el-input type="textarea" :rows="4" placeholder="请输入审核意见" v-model="form.jyComment">
12 13
         </el-input>
13 14
       </el-form-item>
14 15
       <el-form-item label="审核人:">
15
-        {{ name }}
16
+        <span class="auditor">{{ form.jyApprover }}</span>
16 17
       </el-form-item>
17 18
       <el-form-item label="审核时间:">
18
-        {{  }}
19
+        {{ form.jyApprovalTime }}
20
+      </el-form-item>
21
+      <el-form-item>
22
+        <p style="text-align:center;"><el-button type="primary" @click="confirm">确认审核</el-button></p>
19 23
       </el-form-item>
20 24
     </el-form>
21 25
   </div>
@@ -23,6 +27,9 @@
23 27
 
24 28
 <script>
25 29
 import { mapGetters } from 'vuex';
30
+import { parseTime } from "@/utils/ruoyi";
31
+import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
32
+import { getProjectComment, addProjectComment } from "@/api/oa/project/projectComment"
26 33
 export default {
27 34
   computed: {
28 35
     ...mapGetters(['name']),
@@ -39,19 +46,62 @@ export default {
39 46
   },
40 47
   data() {
41 48
     return {
42
-      form: {},
43
-      rules: {},
49
+      form: {
50
+        jyApprover: '',
51
+        jyApprovalTime: ''
52
+      },
53
+      rules: {
54
+        jyComment: [{ required: true, message: "请输入审核意见", trigger: "blur" }]
55
+      },
44 56
       jyComment: "",
45 57
       jyApprovalTime: ""
46 58
     }
47 59
   },
48 60
   created() {
49
-    this.jyApprovalTime = 
61
+    this.initForm();
50 62
   },
51 63
   methods: {
64
+    initForm() {
65
+      console.log(this.taskForm);
66
+      getProjectComment(this.taskForm.formId).then(res => {
67
+        if (res.data) {
68
+          this.form = res.data
69
+        } else {
70
+          if (this.taskName == '经营审核') {
71
+            this.form.jyApprover = this.name;
72
+            this.form.jyApprovalTime = parseTime(new Date(), '{y}-{m}-{d}')
73
+            console.log(this.form);
74
+          } else {
75
+            this.form.jyApprover = '';
76
+            this.form.jyApprovalTime = '';
77
+          }
78
+
79
+          console.log(this.form);
80
+        }
81
+      })
82
+    },
83
+    confirm() {
84
+      const params = { taskId: this.taskForm.taskId };
85
+      // 获取下一个流程节点
86
+      getNextFlowNode(params).then(res => {
87
+        // getUsersDeptLeaderByDept({ deptId: 107 }).then(res => {
88
+        //   let userId = res.data.userId;
89
+        //   this.$set(this.taskForm.variables, "approval", userId);
90
+        //   complete(this.taskForm).then(response => {
91
+        //     this.$modal.msgSuccess(response.msg);
92
+        //     this.$emit("goBack");
93
+        //   });
94
+        // });
95
+      });
96
+    },
52 97
 
53 98
   },
54 99
 }
55 100
 </script>
56 101
 
57
-<style lang="scss" scoped></style>
102
+<style lang="scss" scoped>
103
+.auditor {
104
+  font-family: '华文行楷';
105
+  font-size: 20px;
106
+}
107
+</style>

+ 7
- 4
oa-ui/src/views/flowable/form/projectProcess/index.vue Wyświetl plik

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-09 17:45:47
5
+ * @LastEditTime: 2024-04-10 17:54:14
6 6
 -->
7 7
 
8 8
 <template>
@@ -20,9 +20,11 @@
20 20
             
21 21
           </el-tab-pane>
22 22
           <el-tab-pane label="经营审核" name="经营审核">
23
-            <business-review :taskForm="taskForm" :disabled="taskName != '经营审核'" @goBack="goBack"></business-review>
23
+            <business-review :taskForm="taskForm" :taskName="taskName" :disabled="taskName != '经营审核'" @goBack="goBack"></business-review>
24
+          </el-tab-pane>
25
+          <el-tab-pane label="分管审核" name="分管审核">
26
+            <manage-review :taskForm="taskForm" :taskName="taskName" :disabled="taskName != '分管审核'" @goBack="goBack"></manage-review>
24 27
           </el-tab-pane>
25
-          <el-tab-pane label="分管审核" name="分管审核"></el-tab-pane>
26 28
           <el-tab-pane label="生产确认" name="生产确认"></el-tab-pane>
27 29
           <el-tab-pane label="项目生产" name="项目生产"></el-tab-pane>
28 30
           <el-tab-pane label="质量检查" name="质量检查"></el-tab-pane>
@@ -51,6 +53,7 @@ import arrangeProject from "./arrangeProject.vue"
51 53
 import businessReview from "./businessReview.vue"
52 54
 import flow from '@/views/flowable/task/todo/detail/flow'
53 55
 import { flowXmlAndNode } from "@/api/flowable/definition";
56
+import ManageReview from './manageReview.vue'
54 57
 export default {
55 58
   props: {
56 59
     taskName: {
@@ -60,7 +63,7 @@ export default {
60 63
       type: Object,
61 64
     }
62 65
   },
63
-  components: { addproject, arrangeProject, businessReview, flow },
66
+  components: { addproject, arrangeProject, businessReview, flow, ManageReview },
64 67
   data() {
65 68
     return {
66 69
       activeName: '项目登记',

+ 110
- 0
oa-ui/src/views/flowable/form/projectProcess/manageReview.vue Wyświetl plik

@@ -0,0 +1,110 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-08 13:56:14
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-10 17:56:58
6
+-->
7
+<template>
8
+  <div class="app-container">
9
+    <h2 style="text-align:center;">分管审核</h2>
10
+    <el-form :model="form" :rules="rules" label-width="100px" :disabled="disabled">
11
+      <el-form-item label="审核意见:" prop="jyComment">
12
+        <el-input type="textarea" :rows="4" placeholder="请输入审核意见" v-model="form.jyComment">
13
+        </el-input>
14
+      </el-form-item>
15
+      <el-form-item label="审核人:">
16
+        <span class="auditor">{{ form.manageApprover }}</span>
17
+      </el-form-item>
18
+      <el-form-item label="审核时间:">
19
+        {{ form.manageApprovalTime }}
20
+      </el-form-item>
21
+      <el-form-item>
22
+        <p style="text-align:center;"><el-button type="primary" @click="confirm">确认审核</el-button></p>
23
+      </el-form-item>
24
+    </el-form>
25
+  </div>
26
+</template>
27
+
28
+<script>
29
+import { mapGetters } from 'vuex';
30
+import { parseTime } from "@/utils/ruoyi";
31
+import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
32
+import { getProjectComment, addProjectComment } from "@/api/oa/project/projectComment"
33
+export default {
34
+  computed: {
35
+    ...mapGetters(['name']),
36
+  },
37
+  props: {
38
+    disabled: {
39
+      type: Boolean,
40
+      require: true,
41
+    },
42
+    taskForm: {
43
+      type: Object,
44
+      required: true,
45
+    },
46
+    taskName: {
47
+      type: String,
48
+      required: true,
49
+    },
50
+  },
51
+  data() {
52
+    return {
53
+      form: {
54
+        manageApprover: '',
55
+        manageApprovalTime: ''
56
+      },
57
+      rules: {
58
+        jyComment: [{ required: true, message: "请输入审核意见", trigger: "blur" }]
59
+      },
60
+      jyComment: "",
61
+      manageApprovalTime: ""
62
+    }
63
+  },
64
+  created() {
65
+    this.initForm();
66
+  },
67
+  methods: {
68
+    initForm() {
69
+      console.log(this.taskForm);
70
+      getProjectComment(this.taskForm.formId).then(res => {
71
+        if (res.data) {
72
+          this.form = res.data
73
+        } else {
74
+          if (this.taskName == '分管审核') {
75
+            this.form.manageApprover = this.name;
76
+            this.form.manageApprovalTime = parseTime(new Date(), '{y}-{m}-{d}')
77
+            console.log(this.form);
78
+          } else {
79
+            this.form.manageApprover = '';
80
+            this.form.manageApprovalTime = '';
81
+          }
82
+
83
+        }
84
+      })
85
+    },
86
+    confirm() {
87
+      const params = { taskId: this.taskForm.taskId };
88
+      // 获取下一个流程节点
89
+      getNextFlowNode(params).then(res => {
90
+        // getUsersDeptLeaderByDept({ deptId: 107 }).then(res => {
91
+        //   let userId = res.data.userId;
92
+        //   this.$set(this.taskForm.variables, "approval", userId);
93
+        //   complete(this.taskForm).then(response => {
94
+        //     this.$modal.msgSuccess(response.msg);
95
+        //     this.$emit("goBack");
96
+        //   });
97
+        // });
98
+      });
99
+    },
100
+
101
+  },
102
+}
103
+</script>
104
+
105
+<style lang="scss" scoped>
106
+.auditor {
107
+  font-family: '华文行楷';
108
+  font-size: 20px;
109
+}
110
+</style>

+ 4
- 2
oa-ui/src/views/oa/budget/addBudget.vue Wyświetl plik

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-25 15:05:59
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-09 17:19:08
5
+ * @LastEditTime: 2024-04-10 15:33:40
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -148,6 +148,7 @@
148 148
               <table border="1">
149 149
                 <tr>
150 150
                   <td style="width: 80px">姓名</td>
151
+                  <td style="width: 100px">部门</td>
151 152
                   <td style="width: 100px">岗位工资</td>
152 153
                   <td style="width: 110px">人员成本(天)</td>
153 154
                   <!-- <td style="width: 100px">进出场单价</td> -->
@@ -156,6 +157,7 @@
156 157
                 </tr>
157 158
                 <tr v-for="user in chooseUser" :key="user.userId">
158 159
                   <td>{{ user.nickName }}</td>
160
+                  <td>{{ user.dept.deptName }}</td>
159 161
                   <td>{{ user.salary.salary }}</td>
160 162
                   <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
161 163
                   <!-- <td>
@@ -175,7 +177,7 @@
175 177
                   <td class="staffCost">{{ user.staffCost }}</td>
176 178
                 </tr>
177 179
                 <tr>
178
-                  <td colspan="4">合计</td>
180
+                  <td colspan="5">合计</td>
179 181
                   <td>{{ budgetForm.staffCost }}</td>
180 182
                 </tr>
181 183
               </table>

+ 6
- 4
oa-ui/src/views/oa/budget/components/budgetTable.vue Wyświetl plik

@@ -11,17 +11,19 @@
11 11
       <tr v-if="userLen != 1">
12 12
         <td :rowspan="userLen" class="head">人员</td>
13 13
         <td class="head">姓名</td>
14
+        <td class="head">部门</td>
14 15
         <td class="head">岗位工资</td>
15 16
         <td class="head">人员成本(天)</td>
16
-        <td class="head">进出场单价</td>
17
+        <!-- <td class="head">进出场单价</td> -->
17 18
         <td class="head">预算天数</td>
18 19
         <td class="head">金额</td>
19 20
       </tr>
20 21
       <tr v-for="user in budgetForm.chooseUser" :key="'user' + user.userId">
21 22
         <td>{{ user.nickName }}</td>
23
+        <td>{{ user.dept.deptName }}</td>
22 24
         <td>{{ user.salary.salary }}</td>
23 25
         <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
24
-        <td>{{ user.inOutPrice }}</td>
26
+        <!-- <td>{{ user.inOutPrice }}</td> -->
25 27
         <td>{{ user.days }}</td>
26 28
         <td>{{ user.staffCost }}</td>
27 29
       </tr>
@@ -60,7 +62,7 @@
60 62
         <td>{{ device.depreciation }}</td>
61 63
       </tr>
62 64
       <tr>
63
-        <td colspan="6" class="head">固定成本小计</td>
65
+        <td colspan="6" class="head">间接成本小计</td>
64 66
         <td>{{ budgetForm.fixCost }}</td>
65 67
       </tr>
66 68
       <tr>
@@ -101,7 +103,7 @@
101 103
         <td>{{ budgetForm.directExpense }}</td>
102 104
       </tr>
103 105
       <tr>
104
-        <td colspan="6" class="head">总成本=(固定成本+直接成本)*120%</td>
106
+        <td colspan="6" class="head">总成本=(间接成本+直接成本)*120%</td>
105 107
         <td>{{ totalBudget }}</td>
106 108
       </tr>
107 109
       <!-- <tr>

+ 11
- 4
oa-ui/src/views/oa/budget/components/chooseDevice.vue Wyświetl plik

@@ -2,14 +2,14 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-27 11:10:26
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-09 16:37:57
5
+ * @LastEditTime: 2024-04-10 14:20:42
6 6
 -->
7 7
 <template>
8 8
   <div>
9 9
     <el-form :inline="true">
10 10
       <el-form-item label="设备名称:">
11
-        <el-select v-model="queryParams.name">
12
-          <el-option v-for="item in nameList" :key="item.value" :label="item.label" :value="item.value">
11
+        <el-select v-model="queryParams.name" filterable @change="getList" clearable>
12
+          <el-option v-for="item in nameList" :key="item.name" :label="item.name" :value="item.name">
13 13
           </el-option>
14 14
         </el-select>
15 15
         <!-- <el-input v-model="queryParams.name" clearable></el-input> -->
@@ -48,7 +48,7 @@
48 48
 </template>
49 49
 
50 50
 <script>
51
-import { listDevice } from "@/api/oa/device/device";
51
+import { listDevice,listDeviceName } from "@/api/oa/device/device";
52 52
 export default {
53 53
   data() {
54 54
     return {
@@ -66,6 +66,7 @@ export default {
66 66
   },
67 67
   created() {
68 68
     this.getList();
69
+    this.getNameList();
69 70
   },
70 71
   methods: {
71 72
     getList() {
@@ -76,6 +77,12 @@ export default {
76 77
         this.loading = false;
77 78
       });
78 79
     },
80
+    getNameList(){
81
+      listDeviceName().then(res=>{
82
+        console.log(res);
83
+        this.nameList = res.data
84
+      })
85
+    },
79 86
     handleSelectionChange(val) {
80 87
       this.chooseList = val
81 88
     },

+ 24
- 3
oa-ui/src/views/oa/budget/components/chooseMoney.vue Wyświetl plik

@@ -99,11 +99,21 @@
99 99
           </tr>
100 100
           <tr>
101 101
             <td colspan="8">合计</td>
102
-            <td>{{ settle }}</td>
102
+            <td>{{ Number(settle) - Number(inOutPriceSum) }}</td>
103 103
           </tr>
104 104
         </table>
105 105
         <div style="color:red">tips:预结算表中的系数为:困难系统和调整系数相乘的值(1分制)。例如:困难系数1,调整系数0.8,最终系数为0.8</div>
106 106
       </el-form-item>
107
+      <el-form-item label="进出场费用:">
108
+        <el-input v-numeric v-model="inOutPrice" style="width:200px;" @change="getInoutpriceSum">
109
+          <template slot="append">人天</template>
110
+        </el-input>
111
+        ×
112
+        <el-input v-numeric v-model="peopleNumber" style="width:200px;" @change="getInoutpriceSum">
113
+          <template slot="append">数量</template>
114
+        </el-input>
115
+        = {{ inOutPriceSum }}
116
+      </el-form-item>
107 117
       <el-form-item label="预结算合计:">
108 118
         <el-tag type="danger" style="margin-right:20px;font-size:14px;">¥{{ settle }}</el-tag>
109 119
       </el-form-item>
@@ -141,7 +151,10 @@ export default {
141 151
         subItemLoading: true,
142 152
         scaleGradeLoading: true,
143 153
       },
144
-      settle: 0
154
+      settle: 0,
155
+      inOutPrice:0,
156
+      peopleNumber:0,
157
+      inOutPriceSum:0
145 158
     }
146 159
   },
147 160
   created() {
@@ -251,11 +264,19 @@ export default {
251 264
       for (let work of this.workList) {
252 265
         sum = sum + Number(work.settle)
253 266
       }
267
+      debugger
268
+      sum = sum + this.inOutPriceSum;
254 269
       this.settle = sum.toFixed(2);
255 270
       let obj = {}
256 271
       obj.workList = this.workList;
257 272
       obj.settle = this.settle;
258
-      this.$emit('getSettle', obj)
273
+      obj.inOutPrice = this.inOutPrice;
274
+      obj.peopleNumber = this.peopleNumber;
275
+      this.$emit('getSettle', obj);
276
+    },
277
+    getInoutpriceSum(){
278
+      this.inOutPriceSum = Number(this.inOutPrice) * Number(this.peopleNumber);
279
+      this.getSettleSum()
259 280
     },
260 281
     //数组去重
261 282
     setArray(arr) {

Ładowanie…
Anuluj
Zapisz