Browse Source

修改项目预算、项目生产

余思翰 1 year ago
parent
commit
12b338d6ca

+ 1
- 1
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectProgressController.java View File

74
     @PostMapping
74
     @PostMapping
75
     public AjaxResult add(@RequestBody CmcProjectProgress cmcProjectProgress)
75
     public AjaxResult add(@RequestBody CmcProjectProgress cmcProjectProgress)
76
     {
76
     {
77
-        cmcProjectProgress.setProjectId(new SnowFlake().generateId());
77
+        cmcProjectProgress.setProgressId(new SnowFlake().generateId());
78
         return toAjax(cmcProjectProgressService.insertCmcProjectProgress(cmcProjectProgress));
78
         return toAjax(cmcProjectProgressService.insertCmcProjectProgress(cmcProjectProgress));
79
     }
79
     }
80
 
80
 

+ 1
- 0
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcProjectProgressMapper.xml View File

29
     <select id="selectCmcProjectProgressByProjectId" parameterType="String" resultMap="CmcProjectProgressResult">
29
     <select id="selectCmcProjectProgressByProjectId" parameterType="String" resultMap="CmcProjectProgressResult">
30
         <include refid="selectCmcProjectProgressVo"/>
30
         <include refid="selectCmcProjectProgressVo"/>
31
         where project_id = #{projectId}
31
         where project_id = #{projectId}
32
+        order by date asc
32
     </select>
33
     </select>
33
         
34
         
34
     <insert id="insertCmcProjectProgress" parameterType="CmcProjectProgress">
35
     <insert id="insertCmcProjectProgress" parameterType="CmcProjectProgress">

+ 6
- 6
oa-ui/src/api/oa/project/projectProgress.js View File

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

+ 23
- 9
oa-ui/src/views/flowable/form/budget/budgetInfo.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-03 16:28:09
3
  * @Date: 2024-04-03 16:28:09
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-09 15:48:22
5
+ * @LastEditTime: 2024-04-17 15:21:14
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="main">
8
   <div class="main">
17
       <tr>
17
       <tr>
18
         <td :rowspan="userLen" class="head vertical-text">人员</td>
18
         <td :rowspan="userLen" class="head vertical-text">人员</td>
19
         <td class="head" style="width:250px">姓名</td>
19
         <td class="head" style="width:250px">姓名</td>
20
+        <td class="head">部门</td>
20
         <td class="head">岗位工资</td>
21
         <td class="head">岗位工资</td>
21
         <td class="head">人员成本(天)</td>
22
         <td class="head">人员成本(天)</td>
22
-        <td class="head">进出场单价</td>
23
+        <!-- <td class="head">进出场单价</td> -->
23
         <td class="head">预算天数</td>
24
         <td class="head">预算天数</td>
24
         <td class="head">金额</td>
25
         <td class="head">金额</td>
25
       </tr>
26
       </tr>
26
       <tr v-for="user, index in chooseUser" :key="'user' + index">
27
       <tr v-for="user, index in chooseUser" :key="'user' + index">
27
         <td>{{ user.user ? user.user.nickName : '' }}</td>
28
         <td>{{ user.user ? user.user.nickName : '' }}</td>
29
+        <td>{{ user.dept? user.dept.deptName : '' }}</td>
28
         <td>{{ user.salary.salary }}</td>
30
         <td>{{ user.salary.salary }}</td>
29
         <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
31
         <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
30
-        <td>{{ user.inOutPrice }}</td>
31
         <td>{{ user.days }}</td>
32
         <td>{{ user.days }}</td>
32
         <td>{{ user.staffCost }}</td>
33
         <td>{{ user.staffCost }}</td>
33
       </tr>
34
       </tr>
80
       </tr>
81
       </tr>
81
       <tr v-for="(work, index) in workList" :key="'work' + index">
82
       <tr v-for="(work, index) in workList" :key="'work' + index">
82
         <td>{{ workContentList.length != 0 ? workContentList[index].content : "" }}</td>
83
         <td>{{ workContentList.length != 0 ? workContentList[index].content : "" }}</td>
83
-        <td>{{ work.cmcprice ? work.cmcprice : '' }}</td>
84
+        <td>{{ work.scaleGrade }}</td>
84
         <td>{{ work.workload }}</td>
85
         <td>{{ work.workload }}</td>
85
         <td>{{ work.price }}</td>
86
         <td>{{ work.price }}</td>
86
         <td>{{ work.coefficient }}</td>
87
         <td>{{ work.coefficient }}</td>
87
         <td>{{ work.settle }}</td>
88
         <td>{{ work.settle }}</td>
88
       </tr>
89
       </tr>
90
+      <tr>
91
+        <td colspan="5" class="head">进出场津贴</td>
92
+        <td>{{ budgetForm.inOutPriceSum }}</td>
93
+      </tr>
89
       <tr>
94
       <tr>
90
         <td colspan="5" class="head">外协费用</td>
95
         <td colspan="5" class="head">外协费用</td>
91
         <td>{{ budgetForm.outExpense }}</td>
96
         <td>{{ budgetForm.outExpense }}</td>
169
         console.log(res);
174
         console.log(res);
170
         this.budgetForm = res.rows[0];
175
         this.budgetForm = res.rows[0];
171
         getBudgetDevice(this.budgetForm.budgetId).then(res => {
176
         getBudgetDevice(this.budgetForm.budgetId).then(res => {
172
-          console.log(res);
173
           this.chooseDevice = res.data;
177
           this.chooseDevice = res.data;
174
           this.deviceLen = res.data.length + 1;
178
           this.deviceLen = res.data.length + 1;
175
         })
179
         })
176
         getBudgetStaff(this.budgetForm.budgetId).then(res => {
180
         getBudgetStaff(this.budgetForm.budgetId).then(res => {
177
-          console.log(res);
178
           this.chooseUser = res.data;
181
           this.chooseUser = res.data;
179
           this.userLen = res.data.length + 1;
182
           this.userLen = res.data.length + 1;
183
+          let days = 0;
184
+          for(let d of this.chooseUser){
185
+            days = days + d.days
186
+          }
187
+          this.budgetForm.inOutPriceSum = Number(days) * Number(this.chooseUser[0].inOutPrice)
180
         })
188
         })
181
         getBudgetCar(this.budgetForm.budgetId).then(res => {
189
         getBudgetCar(this.budgetForm.budgetId).then(res => {
182
-          console.log(res);
183
           this.chooseCar = res.data;
190
           this.chooseCar = res.data;
184
           this.carLen = res.data.length + 1;
191
           this.carLen = res.data.length + 1;
185
         })
192
         })
186
         getBudgetSettle(this.budgetForm.budgetId).then(res => {
193
         getBudgetSettle(this.budgetForm.budgetId).then(res => {
187
-          console.log(res);
188
           this.workList = res.data;
194
           this.workList = res.data;
189
-          this.workLen = res.data.length + 5;
195
+          this.workLen = res.data.length + 6;
196
+          for(let work of this.workList){
197
+            if(work.groundType == '0'){
198
+              work.price = work.cmcPrice.commonPrice
199
+              work.scaleGrade = work.cmcPrice.scaleGrade
200
+            }else{
201
+              work.price = work.cmcPrice.complexPrice
202
+            }
203
+          }
190
           this.getProjectWorkList();
204
           this.getProjectWorkList();
191
         })
205
         })
192
       });
206
       });

+ 3
- 2
oa-ui/src/views/flowable/form/projectProcess/addproject.vue View File

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
3
  * @Date: 2024-02-27 14:49:15
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-16 17:03:17
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-17 15:27:10
6
 -->
6
 -->
7
 
7
 
8
 <template>
8
 <template>
159
         },
159
         },
160
       ],
160
       ],
161
       restaurants: [{ value: "中国电建集团成都勘测设计研究院有限公司勘测设计分公司" }],
161
       restaurants: [{ value: "中国电建集团成都勘测设计研究院有限公司勘测设计分公司" }],
162
+      registrantUser:''
162
     };
163
     };
163
   },
164
   },
164
   created() {
165
   created() {

+ 230
- 120
oa-ui/src/views/flowable/form/projectProcess/inProgress.vue View File

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-16 11:42:20
5
+ * @LastEditTime: 2024-04-17 17:58:35
6
 -->
6
 -->
7
 <template>
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="驾驶员:">
8
+  <div>
9
+    <el-skeleton animated :rows="20" v-if="loading" class="app-container" />
10
+    <div class="app-container" v-if="!loading">
11
+      <h2 style="text-align: center">项目运作情况</h2>
12
+      <div class="headers">
13
+        基本作业情况记录
14
+        <div class="line"></div>
15
+      </div>
16
+      <el-form ref="progress" :model="form" :disabled="disabled" label-width="100px">
17
+        <el-row :gutter="20" v-if="!noBudget">
18
+          <el-col :span="11">
19
+            <el-form-item label="使用车辆(车牌号):" label-width="153px">
20
+              {{ form.licensePlate }}
21
+            </el-form-item>
22
+          </el-col>
23
+          <el-col :span="11">
24
+            <el-form-item label="驾驶员:">
25
+              {{ form.driver }}
26
+            </el-form-item>
27
+          </el-col>
28
+        </el-row>
29
+        <el-form-item label="参与人员:" v-if="!noBudget">
30
+          {{ form.staff }}
31
+        </el-form-item>
32
+        <div v-if="noBudget">
33
+          <el-alert title="项目未做预算表,请先编制预算表" type="warning" effect="dark">
34
+          </el-alert>
35
+        </div>
36
+        <el-row :gutter="20">
37
+          <el-col :span="11">
38
+            <el-form-item label="进场时间:">
39
+              <el-date-picker
40
+                type="date"
41
+                placeholder="选择日期"
42
+                v-model="form.entryTime"
43
+                value-format="yyyy-MM-dd"
44
+              ></el-date-picker>
45
+            </el-form-item>
46
+          </el-col>
47
+          <el-col :span="11">
48
+            <el-form-item label="撤场时间:">
49
+              <el-date-picker
50
+                type="date"
51
+                placeholder="选择日期"
52
+                v-model="form.exitTime"
53
+                value-format="yyyy-MM-dd"
54
+              ></el-date-picker>
55
+            </el-form-item>
56
+          </el-col>
57
+        </el-row>
58
+        <el-form-item label="项目进度:">
59
+          <table border="1">
60
+            <tr>
61
+              <td style="width: 80px">序号</td>
62
+              <td>截止日期</td>
63
+              <td>累计总进度(%)</td>
64
+              <td style="width: 300px">情况说明</td>
65
+            </tr>
66
+            <tr v-for="(progress, index) in progressList" :key="index">
67
+              <td>
68
+                {{ index + 1 }}
69
+              </td>
70
+              <td>
71
+                <el-date-picker
72
+                  type="date"
73
+                  placeholder="选择日期"
74
+                  v-model="progress.date"
75
+                  value-format="yyyy-MM-dd"
76
+                ></el-date-picker>
77
+              </td>
78
+              <td>
79
+                <el-input-number
80
+                  v-model="progress.percentage"
81
+                  :controls="false"
82
+                  style="width: 120px"
83
+                ></el-input-number
84
+                >%
85
+              </td>
86
+              <td>
87
+                <el-input v-model="progress.situation" type="textarea"></el-input>
88
+              </td>
89
+              <td>
90
+                <el-button
91
+                  type="danger"
92
+                  icon="el-icon-minus"
93
+                  size="mini"
94
+                  circle
95
+                  @click="deleProgressItem(index)"
96
+                ></el-button>
97
+              </td>
98
+            </tr>
99
+          </table>
100
+          <el-button
101
+            icon="el-icon-plus"
102
+            size="mini"
103
+            @click="addProgressList()"
104
+            type="primary"
105
+            plain
106
+          ></el-button>
107
+        </el-form-item>
108
+      </el-form>
109
+      <div class="headers">
110
+        项目借款
111
+        <div class="line"></div>
112
+      </div>
23
 
113
 
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>
114
+      <div class="headers">
115
+        成果汇交
116
+        <div class="line"></div>
117
+      </div>
118
+      <div class="headers">
119
+        产值结算(内部)
120
+        <div class="line"></div>
121
+      </div>
122
+      <div slot="footer" class="dialog-footer" style="text-align: center">
123
+        <el-button @click="preserve()" :disabled="disabled" type="warning"
124
+          >保 存</el-button
125
+        >
126
+        <el-button type="primary" @click="submitNextFlow()" :disabled="disabled"
127
+          >提交下一个流程</el-button
128
+        >
129
+      </div>
89
     </div>
130
     </div>
90
   </div>
131
   </div>
91
 </template>
132
 </template>
92
 
133
 
93
 <script>
134
 <script>
94
-import { mapGetters } from 'vuex';
135
+import { mapGetters } from "vuex";
95
 import { parseTime } from "@/utils/ruoyi";
136
 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'
137
+import {
138
+  complete,
139
+  rejectTask,
140
+  returnList,
141
+  returnTask,
142
+  getNextFlowNode,
143
+  delegate,
144
+  flowTaskForm,
145
+} from "@/api/flowable/todo";
146
+import {
147
+  getProjectComment,
148
+  addProjectComment,
149
+  updateProjectComment,
150
+} from "@/api/oa/project/projectComment";
151
+import { getUsersDeptLeaderByDept } from "@/api/system/post";
152
+import {
153
+  getProjectProgress,
154
+  addProjectProgress,
155
+  delProjectProgress,
156
+} from "@/api/oa/project/projectProgress";
101
 import { listBudgetCar, getBudgetCar } from "@/api/oa/budget/budgetCar";
157
 import { listBudgetCar, getBudgetCar } from "@/api/oa/budget/budgetCar";
102
 import { listBudgetDevice, getBudgetDevice } from "@/api/oa/budget/budgetDevice";
158
 import { listBudgetDevice, getBudgetDevice } from "@/api/oa/budget/budgetDevice";
103
 import { listBudgetSettle, getBudgetSettle } from "@/api/oa/budget/budgetSettle";
159
 import { listBudgetSettle, getBudgetSettle } from "@/api/oa/budget/budgetSettle";
104
 import { listBudgetStaff, getBudgetStaff } from "@/api/oa/budget/budgetStaff";
160
 import { listBudgetStaff, getBudgetStaff } from "@/api/oa/budget/budgetStaff";
105
 import { listBudget } from "@/api/oa/budget/budget";
161
 import { listBudget } from "@/api/oa/budget/budget";
162
+import { getProject, updateProject } from "@/api/oa/project/project";
163
+import { getCar } from "@/api/oa/car/car";
106
 export default {
164
 export default {
107
   computed: {
165
   computed: {
108
-    ...mapGetters(['name', 'userId']),
166
+    ...mapGetters(["name", "userId"]),
109
   },
167
   },
110
   props: {
168
   props: {
111
     disabled: {
169
     disabled: {
123
   },
181
   },
124
   data() {
182
   data() {
125
     return {
183
     return {
184
+      loading: true,
126
       form: {
185
       form: {
127
-        manageApprover: '',
128
-        manageApproverName: '',
129
-        manageApprovalTime: ''
186
+        licensePlate: "",
187
+        driver: "",
188
+        staff: "",
189
+        entryTime: "",
190
+        exitTime: "",
130
       },
191
       },
131
       rules: {
192
       rules: {
132
-        manageComment: [{ required: true, message: "请输入审核意见", trigger: "blur" }]
193
+        manageComment: [{ required: true, message: "请输入审核意见", trigger: "blur" }],
133
       },
194
       },
134
-      progressList: [{
135
-        date: "",
136
-        percentage: "",
137
-        situation: "",
138
-      }]
139
-    }
195
+      progressList: [
196
+        {
197
+          date: "",
198
+          percentage: "",
199
+          situation: "",
200
+        },
201
+      ],
202
+      noBudget: true,
203
+      budgetId: "",
204
+    };
140
   },
205
   },
141
   watch: {
206
   watch: {
142
     taskName(newval, oldval) {
207
     taskName(newval, oldval) {
143
-      if (newval == '项目生产') {
144
-        this.doesItExistBudget(this.taskForm.formId)
208
+      if (newval == "项目生产") {
209
+        this.doesItExistBudget(this.taskForm.formId);
145
       }
210
       }
146
-    }
211
+    },
147
   },
212
   },
148
   created() {
213
   created() {
149
-    if (this.taskName == '项目生产') {
150
-      this.doesItExistBudget(this.taskForm.formId)
214
+    if (this.taskName == "项目生产") {
215
+      this.doesItExistBudget(this.taskForm.formId);
216
+      this.initProgress();
151
     }
217
     }
152
   },
218
   },
153
   methods: {
219
   methods: {
220
+    initProgress() {
221
+      getProject(this.taskForm.formId).then(res => {
222
+        if (res.data) {
223
+          this.form.entryTime = res.data.entryTime;
224
+          this.form.exitTime = res.data.exitTime;
225
+        }
226
+      });
227
+      getProjectProgress(this.taskForm.formId).then(res => {
228
+        if (res.data.length != 0) {
229
+          this.progressList = res.data;
230
+        }
231
+      });
232
+    },
233
+    // 查询是否有预算表
154
     doesItExistBudget(projectId) {
234
     doesItExistBudget(projectId) {
155
       listBudget({ projectId }).then(res => {
235
       listBudget({ projectId }).then(res => {
156
-        console.log(res);
157
-      })
236
+        this.loading = false;
237
+        if (res.total == 0) {
238
+        } else {
239
+          this.noBudget = false;
240
+          this.budgetId = res.rows[0].budgetId;
241
+          getBudgetCar(this.budgetId).then(res => {
242
+            let carArr = [];
243
+            let carDriverList = [];
244
+            for (let i of res.data) {
245
+              carArr.push(i.car.licensePlate);
246
+              getCar(i.carId).then(res => {
247
+                carDriverList.push(res.data.driverUser.nickName);
248
+                this.form.driver = carDriverList.join("、");
249
+              });
250
+            }
251
+            this.form.licensePlate = carArr.join("、");
252
+          });
253
+          getBudgetStaff(this.budgetId).then(res => {
254
+            let userArr = [];
255
+            for (let u of res.data) {
256
+              userArr.push(u.user.nickName);
257
+            }
258
+            this.form.staff = userArr.join("、");
259
+          });
260
+        }
261
+      });
158
     },
262
     },
159
     addProgressList() {
263
     addProgressList() {
160
       this.progressList.push({
264
       this.progressList.push({
173
       }
277
       }
174
     },
278
     },
175
     handleAddProgress(form) {
279
     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
-      }
280
+      addProjectProgress(form);
185
     },
281
     },
282
+    // 暂存数据
186
     preserve() {
283
     preserve() {
187
-
188
-    }
284
+      delProjectProgress([this.taskForm.formId]).then(res => {
285
+        for (let progress of this.progressList) {
286
+          progress.projectId = this.taskForm.formId;
287
+          addProjectProgress(progress);
288
+        }
289
+      });
290
+      updateProject({
291
+        projectId: this.taskForm.formId,
292
+        entryTime: this.form.entryTime,
293
+        exitTime: this.form.exitTime,
294
+      }).then(res => {
295
+        this.$message.success("保存成功");
296
+      });
297
+    },
298
+    submitNextFlow() {},
189
   },
299
   },
190
-}
300
+};
191
 </script>
301
 </script>
192
 
302
 
193
 <style lang="scss" scoped>
303
 <style lang="scss" scoped>
194
 .auditor {
304
 .auditor {
195
-  font-family: '华文行楷';
305
+  font-family: "华文行楷";
196
   font-size: 20px;
306
   font-size: 20px;
197
 }
307
 }
198
 
308
 
219
     width: 5px;
329
     width: 5px;
220
     height: 14px;
330
     height: 14px;
221
     border-radius: 10px;
331
     border-radius: 10px;
222
-    background-color: #2893E5;
332
+    background-color: #2893e5;
223
   }
333
   }
224
 }
334
 }
225
 
335
 
226
 ::v-deep .el-textarea.is-disabled .el-textarea__inner {
336
 ::v-deep .el-textarea.is-disabled .el-textarea__inner {
227
   color: #121212 !important;
337
   color: #121212 !important;
228
 }
338
 }
229
-</style>
339
+</style>

+ 2
- 3
oa-ui/src/views/flowable/form/projectProcess/scConfirm.vue View File

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-08 13:56:14
3
  * @Date: 2024-04-08 13:56:14
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-16 14:04:51
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-17 15:51:53
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
83
     initForm() {
83
     initForm() {
84
       getProjectComment(this.taskForm.formId).then(res => {
84
       getProjectComment(this.taskForm.formId).then(res => {
85
         if (res.data) {
85
         if (res.data) {
86
-          debugger
87
           this.form = res.data
86
           this.form = res.data
88
           this.form.scApprover = '';
87
           this.form.scApprover = '';
89
           if (res.data.scApproverName) {
88
           if (res.data.scApproverName) {

+ 61
- 184
oa-ui/src/views/oa/budget/addBudget.vue View File

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-25 15:05:59
3
  * @Date: 2024-03-25 15:05:59
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-16 17:25:30
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-17 15:00:41
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
21
       <div class="add-main">
21
       <div class="add-main">
22
         <el-steps :active="activeStep" align-center finish-status="success">
22
         <el-steps :active="activeStep" align-center finish-status="success">
23
           <el-step title="项目信息" description="需要预算的项目"></el-step>
23
           <el-step title="项目信息" description="需要预算的项目"></el-step>
24
-          <el-step
25
-            title="间接成本明细"
26
-            description="选择参与的人员、车辆和设备,得到间接成本"
27
-          ></el-step>
24
+          <el-step title="间接成本明细" description="选择参与的人员、车辆和设备,得到间接成本"></el-step>
28
           <!-- <el-step title="选择车辆和设备" description="选择,得到对应预算"></el-step> -->
25
           <!-- <el-step title="选择车辆和设备" description="选择,得到对应预算"></el-step> -->
29
           <el-step title="直接成本明细" description="包含绩效预算和其他预算"></el-step>
26
           <el-step title="直接成本明细" description="包含绩效预算和其他预算"></el-step>
30
           <el-step title="生成预算表" description="生成最终的项目预算表"></el-step>
27
           <el-step title="生成预算表" description="生成最终的项目预算表"></el-step>
31
         </el-steps>
28
         </el-steps>
32
         <!-- 选择项目 -->
29
         <!-- 选择项目 -->
33
         <div class="project" v-if="activeStep == 0">
30
         <div class="project" v-if="activeStep == 0">
34
-          <el-form
35
-            ref="form1"
36
-            :model="projectForm"
37
-            :rules="projectRule"
38
-            label-width="120px"
39
-          >
31
+          <el-form ref="form1" :model="projectForm" :rules="projectRule" label-width="120px">
40
             <el-form-item label="项目编号:" prop="projectNumber">
32
             <el-form-item label="项目编号:" prop="projectNumber">
41
               <div style="display: flex">
33
               <div style="display: flex">
42
-                <el-input
43
-                  v-model="projectForm.projectNumber"
44
-                  placeholder="请选择项目编号"
45
-                  disabled
46
-                  style="width: 300px"
47
-                />
34
+                <el-input v-model="projectForm.projectNumber" placeholder="请选择项目编号" disabled style="width: 300px" />
48
               </div>
35
               </div>
49
             </el-form-item>
36
             </el-form-item>
50
             <el-form-item label="项目名称:" prop="projectName">
37
             <el-form-item label="项目名称:" prop="projectName">
52
             </el-form-item>
39
             </el-form-item>
53
             <el-form-item label="项目负责人:" prop="projectLeader">
40
             <el-form-item label="项目负责人:" prop="projectLeader">
54
               {{
41
               {{
55
-                projectForm.projectLeaderUser
56
-                  ? projectForm.projectLeaderUser.nickName
57
-                  : ""
58
-              }}
42
+          projectForm.projectLeaderUser
43
+            ? projectForm.projectLeaderUser.nickName
44
+            : ""
45
+        }}
59
             </el-form-item>
46
             </el-form-item>
60
             <el-form-item label="项目类型:" prop="projectType">
47
             <el-form-item label="项目类型:" prop="projectType">
61
               {{ projectForm.projectType }}
48
               {{ projectForm.projectType }}
125
             <!-- 选择人员 -->
112
             <!-- 选择人员 -->
126
             <el-form-item label="选择人员:">
113
             <el-form-item label="选择人员:">
127
               <span v-if="chooseUser.length != 0">
114
               <span v-if="chooseUser.length != 0">
128
-                <el-tag
129
-                  effect="plain"
130
-                  type=""
131
-                  v-for="item in chooseUser"
132
-                  style="margin: 5px; font-size: 14px"
133
-                  :key="item.userId"
134
-                >
115
+                <el-tag effect="plain" type="" v-for="item in chooseUser" style="margin: 5px; font-size: 14px"
116
+                  :key="item.userId">
135
                   {{ item.nickName }}
117
                   {{ item.nickName }}
136
                 </el-tag>
118
                 </el-tag>
137
               </span>
119
               </span>
138
-              <el-button
139
-                type="primary"
140
-                plain
141
-                icon="el-icon-plus"
142
-                @click="openPeople = true"
143
-                size="mini"
144
-                >选择</el-button
145
-              >
120
+              <el-button type="primary" plain icon="el-icon-plus" @click="openPeople = true" size="mini">选择</el-button>
146
             </el-form-item>
121
             </el-form-item>
147
             <el-form-item label="人员预算:" v-if="chooseUser.length != 0">
122
             <el-form-item label="人员预算:" v-if="chooseUser.length != 0">
148
               <table border="1">
123
               <table border="1">
170
                     ></el-input>
145
                     ></el-input>
171
                   </td> -->
146
                   </td> -->
172
                   <td>
147
                   <td>
173
-                    <el-input
174
-                      v-model="user.days"
175
-                      placeholder="请输入天数"
176
-                      @change="calculateUserTotal(user)"
177
-                    ></el-input>
148
+                    <el-input v-model="user.days" placeholder="请输入天数" @change="calculateUserTotal(user)"></el-input>
178
                   </td>
149
                   </td>
179
                   <td class="staffCost">{{ user.staffCost }}</td>
150
                   <td class="staffCost">{{ user.staffCost }}</td>
180
                 </tr>
151
                 </tr>
181
                 <tr>
152
                 <tr>
182
-                  <td colspan="5">合计</td>
153
+                  <td colspan="6">合计</td>
183
                   <td>{{ budgetForm.staffCost }}</td>
154
                   <td>{{ budgetForm.staffCost }}</td>
184
                 </tr>
155
                 </tr>
185
               </table>
156
               </table>
186
             </el-form-item>
157
             </el-form-item>
187
-            
188
-        <div style="color:red">tips:人员成本=(基础工资+岗位工资)/21.75,固定工资中的年功工资暂忽略不计,绩效工资计入直接成本,津贴补贴、五险一金扣除暂未考虑</div>
158
+
159
+            <div style="color:red">tips:人员成本=(基础工资+岗位工资)/21.75,固定工资中的年功工资暂忽略不计,绩效工资计入直接成本,津贴补贴、五险一金扣除暂未考虑</div>
189
             <!-- 选择车辆 -->
160
             <!-- 选择车辆 -->
190
             <el-form-item label="选择车辆:">
161
             <el-form-item label="选择车辆:">
191
               <span v-if="chooseCar.length != 0">
162
               <span v-if="chooseCar.length != 0">
192
-                <el-tag
193
-                  effect="plain"
194
-                  type=""
195
-                  v-for="item in chooseCar"
196
-                  style="margin: 5px; font-size: 14px"
197
-                  :key="item.licensePlate"
198
-                >
163
+                <el-tag effect="plain" type="" v-for="item in chooseCar" style="margin: 5px; font-size: 14px"
164
+                  :key="item.licensePlate">
199
                   {{ item.licensePlate + item.brand }}
165
                   {{ item.licensePlate + item.brand }}
200
                 </el-tag>
166
                 </el-tag>
201
               </span>
167
               </span>
202
-              <el-button
203
-                type="primary"
204
-                plain
205
-                icon="el-icon-plus"
206
-                @click="openCar = true"
207
-                size="mini"
208
-                >选择</el-button
209
-              >
168
+              <el-button type="primary" plain icon="el-icon-plus" @click="openCar = true" size="mini">选择</el-button>
210
             </el-form-item>
169
             </el-form-item>
211
             <el-form-item label="车辆预算:" v-if="chooseCar.length != 0">
170
             <el-form-item label="车辆预算:" v-if="chooseCar.length != 0">
212
               <table border="1">
171
               <table border="1">
221
                 <tr v-for="car in chooseCar" :key="car.carId">
180
                 <tr v-for="car in chooseCar" :key="car.carId">
222
                   <td>{{ car.licensePlate }}</td>
181
                   <td>{{ car.licensePlate }}</td>
223
                   <td>
182
                   <td>
224
-                    <el-input
225
-                      v-model="car.mileage"
226
-                      placeholder="请输入油耗"
227
-                      @change="calculateCarTotal(car)"
228
-                    ></el-input>
183
+                    <el-input v-model="car.mileage" placeholder="请输入油耗" @change="calculateCarTotal(car)"></el-input>
229
                   </td>
184
                   </td>
230
                   <td>
185
                   <td>
231
-                    <el-input
232
-                      v-model="car.distance"
233
-                      placeholder="请输入总里程"
234
-                      @change="calculateCarTotal(car)"
235
-                    ></el-input>
186
+                    <el-input v-model="car.distance" placeholder="请输入总里程" @change="calculateCarTotal(car)"></el-input>
236
                   </td>
187
                   </td>
237
                   <td>
188
                   <td>
238
                     {{ car.dayCost }}
189
                     {{ car.dayCost }}
239
                   </td>
190
                   </td>
240
                   <td>
191
                   <td>
241
-                    <el-input
242
-                      v-model="car.days"
243
-                      placeholder="请输入天数"
244
-                      @change="calculateCarTotal(car)"
245
-                    ></el-input>
192
+                    <el-input v-model="car.days" placeholder="请输入天数" @change="calculateCarTotal(car)"></el-input>
246
                   </td>
193
                   </td>
247
                   <td class="carCost">{{ car.expense }}</td>
194
                   <td class="carCost">{{ car.expense }}</td>
248
                 </tr>
195
                 </tr>
255
             <!-- 选择设备 -->
202
             <!-- 选择设备 -->
256
             <el-form-item label="选择设备:">
203
             <el-form-item label="选择设备:">
257
               <span v-if="chooseDevice.length != 0">
204
               <span v-if="chooseDevice.length != 0">
258
-                <el-tag
259
-                  effect="plain"
260
-                  type=""
261
-                  v-for="item in chooseDevice"
262
-                  style="margin: 5px; font-size: 14px"
263
-                  :key="item.code"
264
-                >
205
+                <el-tag effect="plain" type="" v-for="item in chooseDevice" style="margin: 5px; font-size: 14px"
206
+                  :key="item.code">
265
                   {{ item.name + "-" + item.series + "-" + item.brand }}
207
                   {{ item.name + "-" + item.series + "-" + item.brand }}
266
                 </el-tag>
208
                 </el-tag>
267
               </span>
209
               </span>
268
-              <el-button
269
-                type="primary"
270
-                plain
271
-                icon="el-icon-plus"
272
-                @click="openDevice = true"
273
-                size="mini"
274
-                >选择</el-button
275
-              >
210
+              <el-button type="primary" plain icon="el-icon-plus" @click="openDevice = true" size="mini">选择</el-button>
276
             </el-form-item>
211
             </el-form-item>
277
             <el-form-item label="设备预算:" v-if="chooseDevice.length != 0">
212
             <el-form-item label="设备预算:" v-if="chooseDevice.length != 0">
278
               <table border="1">
213
               <table border="1">
292
                     {{ device.dayCost }}
227
                     {{ device.dayCost }}
293
                   </td>
228
                   </td>
294
                   <td>
229
                   <td>
295
-                    <el-input
296
-                      v-model="device.days"
297
-                      placeholder="请输入天数"
298
-                      @change="calculateDeviceTotal(device)"
299
-                    ></el-input>
230
+                    <el-input v-model="device.days" placeholder="请输入天数"
231
+                      @change="calculateDeviceTotal(device)"></el-input>
300
                   </td>
232
                   </td>
301
                   <td class="deviceCost">{{ device.depreciation }}</td>
233
                   <td class="deviceCost">{{ device.depreciation }}</td>
302
                 </tr>
234
                 </tr>
307
               </table>
239
               </table>
308
             </el-form-item>
240
             </el-form-item>
309
             <el-form-item label="间接成本小计:">
241
             <el-form-item label="间接成本小计:">
310
-              <el-tag type="danger" style="margin-right: 20px; font-size: 14px"
311
-                >¥ {{ budgetForm.fixCost }}</el-tag
312
-              >
242
+              <el-tag type="danger" style="margin-right: 20px; font-size: 14px">¥ {{ budgetForm.fixCost }}</el-tag>
313
             </el-form-item>
243
             </el-form-item>
314
           </el-form>
244
           </el-form>
315
         </div>
245
         </div>
326
             <el-breadcrumb-item>¥ {{ budgetForm.fixCost }}</el-breadcrumb-item>
256
             <el-breadcrumb-item>¥ {{ budgetForm.fixCost }}</el-breadcrumb-item>
327
           </el-breadcrumb>
257
           </el-breadcrumb>
328
           <el-form>
258
           <el-form>
329
-            <choose-money :workList="workList" @getSettle="getSettle"></choose-money>
259
+            <choose-money :workList="workList" :chooseUser="chooseUser" :budgetForm="budgetForm" @getSettle="getSettle"></choose-money>
330
             <el-form-item label="外协费用:">
260
             <el-form-item label="外协费用:">
331
-              <el-input
332
-                v-model="budgetForm.outExpense"
333
-                style="width: 400px"
334
-                @change="getDirectExpense(budgetForm)"
335
-              ></el-input>
261
+              <el-input v-model="budgetForm.outExpense" style="width: 400px"
262
+                @change="getDirectExpense(budgetForm)"></el-input>
336
             </el-form-item>
263
             </el-form-item>
337
             <el-form-item label="商务费用:">
264
             <el-form-item label="商务费用:">
338
-              <el-input
339
-                v-model="budgetForm.businessExpense"
340
-                style="width: 400px"
341
-                @change="getDirectExpense(budgetForm)"
342
-              ></el-input>
265
+              <el-input v-model="budgetForm.businessExpense" style="width: 400px"
266
+                @change="getDirectExpense(budgetForm)"></el-input>
343
             </el-form-item>
267
             </el-form-item>
344
             <el-form-item label="车船租赁:">
268
             <el-form-item label="车船租赁:">
345
-              <el-input
346
-                v-model="budgetForm.rentExpense"
347
-                style="width: 400px"
348
-                @change="getDirectExpense(budgetForm)"
349
-              ></el-input>
269
+              <el-input v-model="budgetForm.rentExpense" style="width: 400px"
270
+                @change="getDirectExpense(budgetForm)"></el-input>
350
             </el-form-item>
271
             </el-form-item>
351
             <el-form-item label="其他费用:">
272
             <el-form-item label="其他费用:">
352
-              <el-input
353
-                v-model="budgetForm.otherExpense"
354
-                style="width: 400px"
355
-                @change="getDirectExpense(budgetForm)"
356
-              ></el-input>
273
+              <el-input v-model="budgetForm.otherExpense" style="width: 400px"
274
+                @change="getDirectExpense(budgetForm)"></el-input>
357
             </el-form-item>
275
             </el-form-item>
358
             <el-form-item label="直接成本小计:">
276
             <el-form-item label="直接成本小计:">
359
               <el-tag type="danger" style="margin-right: 20px; font-size: 14px">
277
               <el-tag type="danger" style="margin-right: 20px; font-size: 14px">
379
             <el-breadcrumb-item>直接成本小计</el-breadcrumb-item>
297
             <el-breadcrumb-item>直接成本小计</el-breadcrumb-item>
380
             <el-breadcrumb-item>¥ {{ budgetForm.directExpense }}</el-breadcrumb-item>
298
             <el-breadcrumb-item>¥ {{ budgetForm.directExpense }}</el-breadcrumb-item>
381
           </el-breadcrumb>
299
           </el-breadcrumb>
382
-          <budget-table
383
-            :budgetForm="budgetForm"
384
-            :projectForm="projectForm"
385
-            @getTotal="getTotalBudget"
386
-          ></budget-table>
300
+          <budget-table :budgetForm="budgetForm" :projectForm="projectForm" @getTotal="getTotalBudget"></budget-table>
387
         </div>
301
         </div>
388
         <div class="finish" v-if="activeStep == 4">
302
         <div class="finish" v-if="activeStep == 4">
389
           <el-result icon="success" title="成功提示" subTitle="预算表生成完成">
303
           <el-result icon="success" title="成功提示" subTitle="预算表生成完成">
392
         </div>
306
         </div>
393
         <el-divider></el-divider>
307
         <el-divider></el-divider>
394
         <div class="btn">
308
         <div class="btn">
395
-          <el-button @click="activeStep -= 1" :disabled="activeStep == 0"
396
-            >上一步</el-button
397
-          >
398
-          <el-button @click="confirmStep" type="primary" v-if="activeStep < 4"
399
-            >下一步</el-button
400
-          >
401
-          <el-button @click="submitComplete" type="primary" v-if="activeStep == 4"
402
-            >完成</el-button
403
-          >
309
+          <el-button @click="activeStep -= 1" :disabled="activeStep == 0">上一步</el-button>
310
+          <el-button @click="confirmStep" type="primary" v-if="activeStep < 4">下一步</el-button>
311
+          <el-button @click="submitComplete" type="primary" v-if="activeStep == 4">完成</el-button>
404
         </div>
312
         </div>
405
       </div>
313
       </div>
406
 
314
 
407
       <!-- 项目选择对话框 -->
315
       <!-- 项目选择对话框 -->
408
-      <el-dialog
409
-        title="选择项目"
410
-        :visible.sync="openProject"
411
-        width="700px"
412
-        append-to-body
413
-      >
316
+      <el-dialog title="选择项目" :visible.sync="openProject" width="700px" append-to-body>
414
         <el-form :inline="true">
317
         <el-form :inline="true">
415
           <el-form-item label="项目编号" prop="projectNumber">
318
           <el-form-item label="项目编号" prop="projectNumber">
416
-            <el-input
417
-              v-model="queryParams.projectNumber"
418
-              placeholder="请输入项目编号"
419
-              clearable
420
-              @keyup.enter.native="getProjectList"
421
-            />
319
+            <el-input v-model="queryParams.projectNumber" placeholder="请输入项目编号" clearable
320
+              @keyup.enter.native="getProjectList" />
422
           </el-form-item>
321
           </el-form-item>
423
           <el-form-item style="margin-bottom: 0; display: none">
322
           <el-form-item style="margin-bottom: 0; display: none">
424
             <el-input></el-input>
323
             <el-input></el-input>
432
           <el-table-column type="index" width="50"> </el-table-column>
331
           <el-table-column type="index" width="50"> </el-table-column>
433
           <el-table-column prop="isFinshed" label="状态" width="90px">
332
           <el-table-column prop="isFinshed" label="状态" width="90px">
434
             <template slot-scope="scope">
333
             <template slot-scope="scope">
435
-              <el-tag
436
-                :type="scope.row.isFinished === '0' ? 'success' : 'warning'"
437
-                disable-transitions
438
-              >
334
+              <el-tag :type="scope.row.isFinished === '0' ? 'success' : 'warning'" disable-transitions>
439
                 {{ scope.row.isFinished == "0" ? "进行中" : "已结束" }}
335
                 {{ scope.row.isFinished == "0" ? "进行中" : "已结束" }}
440
               </el-tag>
336
               </el-tag>
441
             </template>
337
             </template>
442
           </el-table-column>
338
           </el-table-column>
443
-          <el-table-column
444
-            label="项目编号"
445
-            align="center"
446
-            key="projectNumber"
447
-            prop="projectNumber"
448
-          />
449
-          <el-table-column
450
-            label="项目名称"
451
-            align="center"
452
-            key="projectName"
453
-            prop="projectName"
454
-            width="200px"
455
-          />
456
-          <el-table-column
457
-            label="项目负责人"
458
-            align="center"
459
-            key="projectLeader"
460
-            prop="projectLeaderUser.nickName"
461
-          />
339
+          <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" />
340
+          <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" width="200px" />
341
+          <el-table-column label="项目负责人" align="center" key="projectLeader" prop="projectLeaderUser.nickName" />
462
           <el-table-column align="center">
342
           <el-table-column align="center">
463
             <template slot-scope="scope">
343
             <template slot-scope="scope">
464
-              <el-button size="mini" type="text" @click="chooseProject(scope.row)"
465
-                >选择</el-button
466
-              >
344
+              <el-button size="mini" type="text" @click="chooseProject(scope.row)">选择</el-button>
467
             </template>
345
             </template>
468
           </el-table-column>
346
           </el-table-column>
469
         </el-table>
347
         </el-table>
470
         <div style="text-align: right">
348
         <div style="text-align: right">
471
-          <el-pagination
472
-            @current-change="getProjectList"
473
-            :current-page.sync="queryParams.pageNum"
474
-            :page-size="queryParams.pageSize"
475
-            layout="total, prev, pager, next"
476
-            :total="projectTotal"
477
-          >
349
+          <el-pagination @current-change="getProjectList" :current-page.sync="queryParams.pageNum"
350
+            :page-size="queryParams.pageSize" layout="total, prev, pager, next" :total="projectTotal">
478
           </el-pagination>
351
           </el-pagination>
479
         </div>
352
         </div>
480
       </el-dialog>
353
       </el-dialog>
574
       },
447
       },
575
       projectTotal: 0,
448
       projectTotal: 0,
576
       projectForm: {
449
       projectForm: {
577
-        projectRegistrantUser:{
578
-          nickName:''
450
+        projectRegistrantUser: {
451
+          nickName: ''
579
         }
452
         }
580
       },
453
       },
581
       workList: [],
454
       workList: [],
605
     // 查询项目列表
478
     // 查询项目列表
606
     getProjectList() {
479
     getProjectList() {
607
       getProject(this.$route.query.formId).then(response => {
480
       getProject(this.$route.query.formId).then(response => {
608
-        // console.log(response.rows);
609
-        // this.projectList = response.rows;
610
-        // this.projectTotal = response.total;
611
         this.projectForm = response.data;
481
         this.projectForm = response.data;
612
       });
482
       });
613
     },
483
     },
638
         this.activeStep += 1;
508
         this.activeStep += 1;
639
         this.calculateThatCost();
509
         this.calculateThatCost();
640
       } else if (this.activeStep == 3) {
510
       } else if (this.activeStep == 3) {
511
+        console.log(this.budgetForm);
641
         this.addBudgetForm(this.budgetForm);
512
         this.addBudgetForm(this.budgetForm);
642
         this.activeStep += 1;
513
         this.activeStep += 1;
643
       } else {
514
       } else {
664
     getSettle(val) {
535
     getSettle(val) {
665
       this.budgetForm.settleExpense = val.settle;
536
       this.budgetForm.settleExpense = val.settle;
666
       this.budgetForm.workList = val.workList;
537
       this.budgetForm.workList = val.workList;
538
+      this.budgetForm.inOutPriceSum = val.inOutPriceSum
539
+      if (this.chooseUser.length != 0) {
540
+        for (let s of this.chooseUser) {
541
+          s.inOutPrice = val.inOutPrice
542
+        }
543
+      }
667
       this.getDirectExpense(this.budgetForm);
544
       this.getDirectExpense(this.budgetForm);
668
     },
545
     },
669
     // 计算单个人员的成本
546
     // 计算单个人员的成本
670
     calculateUserTotal(user) {
547
     calculateUserTotal(user) {
671
-      let total =parseFloat((user.salary.salary + 1780) / 21.75).toFixed(2) * Number(user.days);
548
+      let total = parseFloat((user.salary.salary + 1780) / 21.75).toFixed(2) * Number(user.days);
672
       this.$set(user, "staffCost", total.toFixed(2));
549
       this.$set(user, "staffCost", total.toFixed(2));
673
       this.getCost("staffCost", "staffCost", this.chooseUser);
550
       this.getCost("staffCost", "staffCost", this.chooseUser);
674
       this.getFixCost();
551
       this.getFixCost();

+ 10
- 7
oa-ui/src/views/oa/budget/components/budgetTable.vue View File

82
         <td>{{ work.coefficient }}</td>
82
         <td>{{ work.coefficient }}</td>
83
         <td>{{ work.settle }}</td>
83
         <td>{{ work.settle }}</td>
84
       </tr>
84
       </tr>
85
+      <tr>
86
+        <td colspan="5" class="head">进出场津贴</td>
87
+        <td>{{ budgetForm.inOutPriceSum }}</td>
88
+      </tr>
85
       <tr>
89
       <tr>
86
         <td colspan="5" class="head">外协费用</td>
90
         <td colspan="5" class="head">外协费用</td>
87
         <td>{{ budgetForm.outExpense }}</td>
91
         <td>{{ budgetForm.outExpense }}</td>
106
         <td colspan="6" class="head">总成本=(间接成本+直接成本)*120%</td>
110
         <td colspan="6" class="head">总成本=(间接成本+直接成本)*120%</td>
107
         <td>{{ totalBudget }}</td>
111
         <td>{{ totalBudget }}</td>
108
       </tr>
112
       </tr>
109
-      <!-- <tr>
110
-        <td class="head">编制人</td>
111
-        <td colspan="2">{{  }}</td>
112
-        <td class="head">审核人</td>
113
-        <td colspan="3"></td>
114
-      </tr> -->
115
     </table>
113
     </table>
116
   </div>
114
   </div>
117
 </template>
115
 </template>
142
     this.userLen = this.budgetForm.chooseUser.length + 1;
140
     this.userLen = this.budgetForm.chooseUser.length + 1;
143
     this.carLen = this.budgetForm.chooseCar.length + 1;
141
     this.carLen = this.budgetForm.chooseCar.length + 1;
144
     this.deviceLen = this.budgetForm.chooseDevice.length + 1;
142
     this.deviceLen = this.budgetForm.chooseDevice.length + 1;
145
-    this.workLen = this.budgetForm.workList.length + 5;
143
+    this.workLen = this.budgetForm.workList.length + 6;
146
     this.totalBudget = ((Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost)) * 1.2).toFixed(2);
144
     this.totalBudget = ((Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost)) * 1.2).toFixed(2);
145
+    let sum = 0
146
+    for(let s of this.budgetForm.chooseUser){
147
+      sum = sum + (Number(s.inOutPrice) * Number(s.days))
148
+    }
149
+    this.budgetForm.inOutPriceSum = sum.toFixed(2)
147
     this.$emit('getTotal',this.totalBudget)
150
     this.$emit('getTotal',this.totalBudget)
148
   },
151
   },
149
   methods: {
152
   methods: {

+ 30
- 10
oa-ui/src/views/oa/budget/components/chooseMoney.vue View File

91
               {{ work.workload }}
91
               {{ work.workload }}
92
             </td>
92
             </td>
93
             <td>
93
             <td>
94
-              <el-input-number v-model="work.coefficient"  
95
-              :controls="false" :precision="2" :step="0.01" :max="10" @blur="getTotal(work)"
96
-              style="width:60px;">
94
+              <el-input-number v-model="work.coefficient" :controls="false" :precision="2" :step="0.01" :max="10"
95
+                @blur="getTotal(work)" style="width:60px;">
97
               </el-input-number>
96
               </el-input-number>
98
               <!-- <el-input v-model="work.coefficient" placeholder="请输入系数" @blur="getTotal(work)"></el-input> -->
97
               <!-- <el-input v-model="work.coefficient" placeholder="请输入系数" @blur="getTotal(work)"></el-input> -->
99
             </td>
98
             </td>
103
           </tr>
102
           </tr>
104
           <tr>
103
           <tr>
105
             <td colspan="8">合计</td>
104
             <td colspan="8">合计</td>
106
-            <td>{{ Number(settle) - Number(inOutPriceSum) }}</td>
105
+            <td>{{ (Number(settle) - Number(inOutPriceSum)).toFixed(2) }}</td>
107
           </tr>
106
           </tr>
108
         </table>
107
         </table>
109
         <div style="color:red">tips:预结算表中的系数为:困难系统和调整系数相乘的值(1分制)。例如:困难系数1,调整系数0.8,最终系数为0.8</div>
108
         <div style="color:red">tips:预结算表中的系数为:困难系统和调整系数相乘的值(1分制)。例如:困难系数1,调整系数0.8,最终系数为0.8</div>
110
       </el-form-item>
109
       </el-form-item>
111
       <el-form-item label="进出场费用:">
110
       <el-form-item label="进出场费用:">
112
         <el-input v-numeric v-model="inOutPrice" style="width:200px;" @change="getInoutpriceSum">
111
         <el-input v-numeric v-model="inOutPrice" style="width:200px;" @change="getInoutpriceSum">
113
-          <template slot="append">单价</template>
112
+          <template slot="prepend">单价</template>
114
         </el-input>
113
         </el-input>
115
         ×
114
         ×
116
         <el-input v-numeric v-model="peopleNumber" style="width:200px;" @change="getInoutpriceSum">
115
         <el-input v-numeric v-model="peopleNumber" style="width:200px;" @change="getInoutpriceSum">
117
-          <template slot="append">人天</template>
116
+          <template slot="prepend">人天</template>
118
         </el-input>
117
         </el-input>
119
         = {{ inOutPriceSum }}
118
         = {{ inOutPriceSum }}
120
       </el-form-item>
119
       </el-form-item>
134
     workList: {
133
     workList: {
135
       type: Array,
134
       type: Array,
136
       require: true
135
       require: true
136
+    },
137
+    chooseUser: {
138
+      type: Array,
139
+      require: true
140
+    },
141
+    budgetForm: {
142
+      type: Object,
143
+      require: true
137
     }
144
     }
138
   },
145
   },
139
   data() {
146
   data() {
156
         scaleGradeLoading: true,
163
         scaleGradeLoading: true,
157
       },
164
       },
158
       settle: 0,
165
       settle: 0,
159
-      inOutPrice:0,
160
-      peopleNumber:0,
161
-      inOutPriceSum:0
166
+      inOutPrice: 0,
167
+      peopleNumber: 0,
168
+      inOutPriceSum: 0
162
     }
169
     }
163
   },
170
   },
164
   created() {
171
   created() {
169
   },
176
   },
170
   mounted() {
177
   mounted() {
171
     this.getSettleSum();
178
     this.getSettleSum();
179
+    console.log(this.budgetForm)
180
+
172
   },
181
   },
173
   methods: {
182
   methods: {
174
     /* 获取工作类别 */
183
     /* 获取工作类别 */
271
       }
280
       }
272
       sum = sum + this.inOutPriceSum;
281
       sum = sum + this.inOutPriceSum;
273
       this.settle = sum.toFixed(2);
282
       this.settle = sum.toFixed(2);
283
+      let days = 0
284
+      for (let user of this.chooseUser) {
285
+        days = days + Number(user.days)
286
+      }
287
+      this.peopleNumber = days
288
+      if (this.budgetForm.inOutPriceSum && this.budgetForm.inOutPriceSum !=0 ) {
289
+        this.settle = Number(this.settle) + Number(this.budgetForm.inOutPriceSum)
290
+        this.inOutPrice = Number(this.budgetForm.inOutPriceSum) / this.peopleNumber
291
+        this.inOutPriceSum = this.budgetForm.inOutPriceSum
292
+      }
274
       let obj = {}
293
       let obj = {}
275
       obj.workList = this.workList;
294
       obj.workList = this.workList;
276
       obj.settle = this.settle;
295
       obj.settle = this.settle;
277
       obj.inOutPrice = this.inOutPrice;
296
       obj.inOutPrice = this.inOutPrice;
278
       obj.peopleNumber = this.peopleNumber;
297
       obj.peopleNumber = this.peopleNumber;
298
+      obj.inOutPriceSum = this.inOutPriceSum;
279
       this.$emit('getSettle', obj);
299
       this.$emit('getSettle', obj);
280
     },
300
     },
281
-    getInoutpriceSum(){
301
+    getInoutpriceSum() {
282
       this.inOutPriceSum = Number(this.inOutPrice) * Number(this.peopleNumber);
302
       this.inOutPriceSum = Number(this.inOutPrice) * Number(this.peopleNumber);
283
       this.getSettleSum()
303
       this.getSettleSum()
284
     },
304
     },

Loading…
Cancel
Save