Kaynağa Gözat

新增技术交底、技术方案打印;

新增项目负责人可以查看项目预算;
修改项目预算生成预算表时的表格样式;
修改项目变更表单。
余思翰 10 ay önce
ebeveyn
işleme
1b929aed58

+ 3
- 1
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcPriceController.java Dosyayı Görüntüle

@@ -83,7 +83,9 @@ public class CmcPriceController extends BaseController
83 83
     {
84 84
         CmcPriceRemark cmcPriceRemark = new CmcPriceRemark();
85 85
         cmcPriceRemark.setWorkType(workType);
86
-        CmcPriceRemark priceRemark = cmcPriceRemarkService.selectCmcPriceRemarkList(cmcPriceRemark).get(0);
86
+        CmcPriceRemark priceRemark = new CmcPriceRemark();
87
+        if(cmcPriceRemarkService.selectCmcPriceRemarkList(cmcPriceRemark).size()>0)
88
+            priceRemark= cmcPriceRemarkService.selectCmcPriceRemarkList(cmcPriceRemark).get(0);
87 89
         return success(priceRemark.getRemark());
88 90
     }
89 91
 

+ 7
- 1
oa-ui/src/utils/deleteResource.js Dosyayı Görüntüle

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-06-13 17:07:59
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-09 17:09:23
5
+ * @LastEditTime: 2024-08-02 17:02:24
6 6
  */
7 7
 import request from '@/utils/request'
8 8
 
@@ -62,6 +62,12 @@ const apiEndpoints = [
62 62
       '/oa/borrow/:id',
63 63
       '/oa/borrowDetail/:id',
64 64
     ]
65
+  },
66
+  {
67
+    procDefName: '项目变更',
68
+    apiUrl: [
69
+      '/oa/projectChange/:id',
70
+    ]
65 71
   }
66 72
 ]
67 73
 

+ 1
- 1
oa-ui/src/views/flowable/form/budget/budgetInfo.vue Dosyayı Görüntüle

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-03 16:28:09
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-01 10:11:59
5
+ * @LastEditTime: 2024-08-02 15:23:33
6 6
 -->
7 7
 <template>
8 8
   <div class="main">

+ 188
- 151
oa-ui/src/views/flowable/form/budget/components/budgetTable.vue Dosyayı Görüntüle

@@ -1,148 +1,178 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-05-10 15:50:41
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-06-20 14:54:00
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-08-02 15:01:28
6 6
 -->
7 7
 <template>
8 8
   <div>
9 9
     <h2 style="text-align:center;">项目直接生产成本预算表</h2>
10
-    <table border="1" class="table">
11
-      <tr>
12
-        <td style="width: 100px;">项目名称</td>
13
-        <td colspan="6">{{ projectForm.projectName }}</td>
14
-        <td>项目编号</td>
15
-        <td colspan="1">{{ projectForm.projectNumber }}</td>
16
-      </tr>
17
-      <tr>
18
-        <td :rowspan="workLen+2">直接成本</td>
19
-        <td>工作简述</td>
20
-        <td>工作内容</td>
21
-        <td>数量</td>
22
-        <td>单价</td>
23
-        <td>单位</td>
24
-        <td>系数</td>
25
-        <td>金额</td>
26
-        <td style="width: 250px;">备注</td>
27
-      </tr>
28
-      <tr v-for="work in budgetForm.contentList">
29
-        <td>{{ work.content }}</td>
30
-        <td>{{ work.workItem }}</td>
31
-        <td>{{ work.workload }}</td>
32
-        <td>{{ work.price }}</td>
33
-        <td>{{ work.unit }}</td>
34
-        <td>{{ work.coefficient }}</td>
35
-        <td>{{ work.settle }}</td>
36
-        <td>{{ work.remark ? work.remark : '' }}</td>
37
-      </tr>
38
-      <tr>
39
-        <td :colspan="6" class="head">直接成本合计</td>
40
-        <td :colspan="1" class="head">{{ budgetForm.settleExpense }}</td>
41
-        <td></td>
42
-      </tr>
43
-      <tr>
44
-        <td :rowspan="userLen + carLen + deviceLen + 2">间接成本</td>
45
-      </tr>
46
-      <tr v-if="userLen != 1">
47
-        <td :rowspan="userLen">人员</td>
48
-        <td>姓名</td>
49
-        <td>基本工资</td>
50
-        <td>岗位工资</td>
51
-        <td>人员成本(天)</td>
52
-        <!-- <td>进出场单价</td> -->
53
-        <td>预算天数</td>
54
-        <td>金额</td>
55
-        <td></td>
56
-      </tr>
57
-      <tr v-for="user in budgetForm.chooseUser" :key="'user' + user.userId">
58
-        <td>{{ user.nickName }}</td>
59
-        <td>1780</td>
60
-        <td>{{ user.salary.salary }}</td>
61
-        <td>{{ parseFloat((user.salary.salary + 1780) / 21.75).toFixed(2) }}</td>
62
-        <!-- <td>{{ user.inOutPrice }}</td> -->
63
-        <td>{{ user.days }}</td>
64
-        <td>{{ user.staffCost }}</td>
65
-        <td></td>
66
-      </tr>
67
-      <tr v-if="carLen != 1">
68
-        <td :rowspan="carLen">车辆</td>
69
-        <td>车牌号</td>
70
-        <td>油耗</td>
71
-        <td>总里程</td>
72
-        <td>折旧成本(天)</td>
73
-        <td>预算天数</td>
74
-        <td>金额</td>
75
-        <!-- <td></td> -->
76
-      </tr>
77
-      <tr v-for="car in budgetForm.chooseCar" :key="'car' + car.carId">
78
-        <td>{{ car.licensePlate }}</td>
79
-        <td>{{ car.mileage }}</td>
80
-        <td>{{ car.distance }}</td>
81
-        <td>{{ car.dayCost }}</td>
82
-        <td>{{ car.days }}</td>
83
-        <td>{{ car.expense }}</td>
84
-        <td></td>
85
-      </tr>
86
-      <tr v-if="deviceLen != 1">
87
-        <td :rowspan="deviceLen">设备</td>
88
-        <td>设备名称</td>
89
-        <td>规格型号</td>
90
-        <td>品牌</td>
91
-        <td>折旧成本(天)</td>
92
-        <td>预算天数</td>
93
-        <td>金额</td>
94
-        <!-- <td>备注</td> -->
95
-      </tr>
96
-      <tr v-for="device in budgetForm.chooseDevice" :key="'device' + device.deviceId">
97
-        <td>{{ device.name }}</td>
98
-        <td>{{ device.series }}</td>
99
-        <td>{{ device.brand }}</td>
100
-        <td>{{ device.dayCost }}</td>
101
-        <td>{{ device.days }}</td>
102
-        <td>{{ device.depreciation }}</td>
103
-        <td></td>
104
-      </tr>
105
-      <tr>
106
-        <td :colspan="6" class="head">间接成本合计</td>
107
-        <td :colspan="1" class="head">{{ budgetForm.fixCost }}</td>
108
-        <td></td>
109
-      </tr>
110
-      <tr class="head">
111
-        <td :colspan="3">外协费用</td>
112
-        <td :colspan="5">{{ budgetForm.outExpense }}</td>
113
-        <td>{{ budgetForm.outRemark }}</td>
114
-      </tr>
115
-      <tr class="head">
116
-        <td colspan="3">车船租赁</td>
117
-        <td :colspan="5">{{ budgetForm.rentExpense }}</td>
118
-        <td>{{ budgetForm.rentRemark }}</td>
119
-      </tr>
120
-      <tr class="head">
121
-        <td colspan="3">其他费用</td>
122
-        <td :colspan="5">{{ budgetForm.otherExpense }}</td>
123
-        <td>{{ budgetForm.otherRemark }}</td>
124
-      </tr>
125
-      <tr class="head">
126
-        <td colspan="3">税费成本</td>
127
-        <td :colspan="5">{{ budgetForm.taxExpense }}</td>
128
-        <td>{{ budgetForm.taxRemark }}</td>
129
-      </tr>
130
-      <tr class="head">
131
-        <td colspan="3">经营管理费用</td>
132
-        <td :colspan="5">{{ budgetForm.businessExpense }}</td>
133
-        <td>{{ budgetForm.businessRemark }}</td>
134
-      </tr>
135
-      <tr>
136
-        <td colspan="3" class="head">成本合计</td>
137
-        <td colspan="5" class="head">{{ costSum }}</td>
138
-      </tr>
139
-      <tr v-if="budgetForm.contract">
140
-        <td colspan="3" class="head">利润</td>
141
-        <td colspan="2" class="head">{{ profit }}</td>
142
-        <td colspan="3" class="head">合同总价约</td>
143
-        <td colspan="1" class="head">{{ budgetForm.contract ? budgetForm.contract.amount : '' }}</td>
144
-      </tr>
145
-    </table>
10
+    <el-descriptions :column="3" border class="descriptions">
11
+      <el-descriptions-item label="项目编号">
12
+        {{ projectForm.projectNumber }}
13
+      </el-descriptions-item>
14
+      <el-descriptions-item label="项目名称">
15
+        {{ projectForm.projectName }}
16
+      </el-descriptions-item>
17
+      <el-descriptions-item label="项目负责人">
18
+        {{ getUserName(projectForm.projectLeader) }}
19
+      </el-descriptions-item>
20
+      <el-descriptions-item label="承担部门">
21
+        {{ getDeptNames(projectForm.undertakingDept) }}
22
+      </el-descriptions-item>
23
+      <el-descriptions-item label="项目备注" :span="3">
24
+        {{ projectForm.remark }}
25
+      </el-descriptions-item>
26
+      <el-descriptions-item label="直接成本" :span="3">
27
+        <div>
28
+          <table border="1" style="width: 100%;">
29
+            <tr style="background-color:#f8f8f9">
30
+              <td style="width: 250px">工作简述</td>
31
+              <td style="width: 200px">工作内容</td>
32
+              <td style="width: 80px">数量</td>
33
+              <td style="width: 80px">单价</td>
34
+              <td style="width: 100px">单位</td>
35
+              <td style="width: 70px">系数</td>
36
+              <td style="width: 100px">金额</td>
37
+              <td style="width: 250px;">备注</td>
38
+            </tr>
39
+            <tr v-for="work in budgetForm.contentList">
40
+              <td>{{ work.content }}</td>
41
+              <td>{{ work.workItem }}</td>
42
+              <td>{{ work.workload }}</td>
43
+              <td>{{ work.price }}</td>
44
+              <td>{{ work.unit }}</td>
45
+              <td>{{ work.coefficient }}</td>
46
+              <td>{{ work.settle }}</td>
47
+              <td>{{ work.remark ? work.remark : '' }}</td>
48
+            </tr>
49
+            <tr>
50
+              <td :colspan="6" class="head">直接成本合计</td>
51
+              <td :colspan="1" class="head">{{ budgetForm.settleExpense }}</td>
52
+              <td></td>
53
+            </tr>
54
+          </table>
55
+        </div>
56
+      </el-descriptions-item>
57
+      <el-descriptions-item label="间接成本" :span="3">
58
+        <div>
59
+          <table border="1" style="width: 100%;">
60
+            <tr v-if="userLen != 1" style="background-color:#f8f8f9">
61
+              <td :rowspan="userLen" style="background-color:#f8f8f9">人员</td>
62
+              <td>姓名</td>
63
+              <td>基本工资</td>
64
+              <td>岗位工资</td>
65
+              <td>人员成本(天)</td>
66
+              <td>预算天数</td>
67
+              <td>金额</td>
68
+              <td>备注</td>
69
+            </tr>
70
+            <tr v-for="user in budgetForm.chooseUser" :key="'user' + user.userId">
71
+              <td>{{ user.nickName }}</td>
72
+              <td>1780</td>
73
+              <td>{{ user.salary.salary }}</td>
74
+              <td>{{ parseFloat((user.salary.salary + 1780) / 21.75).toFixed(2) }}</td>
75
+              <!-- <td>{{ user.inOutPrice }}</td> -->
76
+              <td>{{ user.days }}</td>
77
+              <td>{{ user.staffCost }}</td>
78
+              <td></td>
79
+            </tr>
80
+            <tr v-if="carLen != 1" style="background-color:#f8f8f9">
81
+              <td :rowspan="carLen" style="background-color:#f8f8f9">车辆</td>
82
+              <td>车牌号</td>
83
+              <td>油耗</td>
84
+              <td>总里程</td>
85
+              <td>折旧成本(天)</td>
86
+              <td>预算天数</td>
87
+              <td>金额</td>
88
+              <td>备注</td>
89
+            </tr>
90
+            <tr v-for="car in budgetForm.chooseCar" :key="'car' + car.carId">
91
+              <td>{{ car.licensePlate }}</td>
92
+              <td>{{ car.mileage }}</td>
93
+              <td>{{ car.distance }}</td>
94
+              <td>{{ car.dayCost }}</td>
95
+              <td>{{ car.days }}</td>
96
+              <td>{{ car.expense }}</td>
97
+              <td></td>
98
+            </tr>
99
+            <tr v-if="deviceLen != 1" style="background-color:#f8f8f9">
100
+              <td :rowspan="deviceLen" style="background-color:#f8f8f9">设备</td>
101
+              <td>设备名称</td>
102
+              <td>规格型号</td>
103
+              <td>品牌</td>
104
+              <td>折旧成本(天)</td>
105
+              <td>预算天数</td>
106
+              <td>金额</td>
107
+              <td>备注</td>
108
+            </tr>
109
+            <tr v-for="device in budgetForm.chooseDevice" :key="'device' + device.deviceId">
110
+              <td>{{ device.name }}</td>
111
+              <td>{{ device.series }}</td>
112
+              <td>{{ device.brand }}</td>
113
+              <td>{{ device.dayCost }}</td>
114
+              <td>{{ device.days }}</td>
115
+              <td>{{ device.depreciation }}</td>
116
+              <td></td>
117
+            </tr>
118
+            <tr>
119
+              <td :colspan="6" class="head">间接成本合计</td>
120
+              <td :colspan="1" class="head">{{ budgetForm.fixCost }}</td>
121
+              <td></td>
122
+            </tr>
123
+          </table>
124
+        </div>
125
+      </el-descriptions-item>
126
+      <el-descriptions-item label="外协费用" :span="1">
127
+        <div class="text-center">
128
+          {{ budgetForm.outExpense }}
129
+        </div>
130
+      </el-descriptions-item>
131
+      <el-descriptions-item label="备注" :span="2">
132
+        {{ budgetForm.outRemark }}
133
+      </el-descriptions-item>
134
+      <el-descriptions-item label="车船租赁" :span="1">
135
+        <div class="text-center">
136
+          {{ budgetForm.rentExpense }}
137
+        </div>
138
+      </el-descriptions-item>
139
+      <el-descriptions-item label="备注" :span="2">
140
+        {{ budgetForm.rentRemark }}
141
+      </el-descriptions-item>
142
+      <el-descriptions-item label="其他费用" :span="1">
143
+        <div class="text-center">
144
+          {{ budgetForm.otherExpense }}
145
+        </div>
146
+      </el-descriptions-item>
147
+      <el-descriptions-item label="备注" :span="2">
148
+        {{ budgetForm.otherRemark }}
149
+      </el-descriptions-item>
150
+      <el-descriptions-item label="税费成本" :span="1">
151
+        <div class="text-center">
152
+          {{ budgetForm.taxExpense }}
153
+        </div>
154
+      </el-descriptions-item>
155
+      <el-descriptions-item label="备注" :span="2">
156
+        {{ budgetForm.taxRemark }}
157
+      </el-descriptions-item>
158
+      <el-descriptions-item label="经营管理费用" :span="1">
159
+        <div class="text-center">
160
+          {{ budgetForm.businessExpense }}
161
+        </div>
162
+      </el-descriptions-item>
163
+      <el-descriptions-item label="备注" :span="2">
164
+        {{ budgetForm.businessRemark }}
165
+      </el-descriptions-item>
166
+      <el-descriptions-item label="预算成本合计" :span="3">
167
+        <div class="text-center head">¥ {{ costSum }}</div>
168
+      </el-descriptions-item>
169
+      <el-descriptions-item label="合同总价约" :span="2" v-if="budgetForm.contract">
170
+        {{ budgetForm.contract ? budgetForm.contract.amount : '' }}
171
+      </el-descriptions-item>
172
+      <el-descriptions-item label="利润" :span="1" v-if="budgetForm.contract">
173
+        {{ profit }}
174
+      </el-descriptions-item>
175
+    </el-descriptions>
146 176
   </div>
147 177
 </template>
148 178
 
@@ -160,13 +190,13 @@ export default {
160 190
   },
161 191
   data() {
162 192
     return {
163
-      userLen: 1,
164
-      carLen: 1,
165
-      deviceLen: 1,
193
+      userLen: 0,
194
+      carLen: 0,
195
+      deviceLen: 0,
166 196
       workLen: 1,
167 197
       costSum: 0,
168 198
       inOutPrice: '',
169
-      profit:''
199
+      profit: ''
170 200
     }
171 201
   },
172 202
   created() {
@@ -174,9 +204,9 @@ export default {
174 204
     this.carLen = this.budgetForm.chooseCar.length + 1;
175 205
     this.deviceLen = this.budgetForm.chooseDevice.length + 1;
176 206
     this.workLen = this.budgetForm.contentList.length;
177
-    this.costSum = (Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost) ).toFixed(2);
178
-    if(this.budgetForm.contract){
179
-      this.profit = (Number(this.budgetForm.contract.amount) - Number(this.costSum) ).toFixed(2)
207
+    this.costSum = (Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost)).toFixed(2);
208
+    if (this.budgetForm.contract) {
209
+      this.profit = (Number(this.budgetForm.contract.amount) - Number(this.costSum)).toFixed(2)
180 210
     }
181 211
     this.$emit('getTotal', this.costSum);
182 212
   },
@@ -184,11 +214,7 @@ export default {
184 214
 </script>
185 215
 
186 216
 <style lang="scss" scoped>
187
-.table {
188
-  /*居中*/
189
-  // margin: 0 auto;
190
-  /*边框*/
191
-  /* border: 1px solid black; */
217
+table {
192 218
   text-align: center;
193 219
   border-collapse: collapse;
194 220
   margin: 0 auto;
@@ -197,7 +223,6 @@ export default {
197 223
   /* background-color: #bfa; */
198 224
   td {
199 225
     padding: 5px;
200
-    height: 40px;
201 226
   }
202 227
 }
203 228
 
@@ -207,4 +232,16 @@ export default {
207 232
   // color: #fff;
208 233
   font-weight: bold;
209 234
 }
235
+
236
+::v-deep .el-descriptions-item__label.is-bordered-label {
237
+  color: #5a5757;
238
+  background: rgba($color: #a9adb3, $alpha: 0.1);
239
+  width: 120px;
240
+  text-align: center;
241
+  min-width: 120px;
242
+}
243
+
244
+::v-deep .el-descriptions .is-bordered .el-descriptions-item__cell {
245
+  border: 1px solid #cdd0d3;
246
+}
210 247
 </style>

+ 33
- 79
oa-ui/src/views/flowable/form/changeForm.vue Dosyayı Görüntüle

@@ -7,23 +7,23 @@
7 7
             <el-button type="primary" size="mini" @click="openProject = true" v-if="taskName == '变更登记'">选择项目</el-button>
8 8
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2" direction="vertical">
9 9
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
10
-              }}</el-descriptions-item>
10
+                }}</el-descriptions-item>
11 11
               <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
12
-              }}</el-descriptions-item>
13
-              <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA.partyName
14
-              }}</el-descriptions-item>
12
+                }}</el-descriptions-item>
13
+              <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA.partyAName
14
+                }}</el-descriptions-item>
15 15
               <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
16
-              }}</el-descriptions-item>
16
+                }}</el-descriptions-item>
17 17
               <el-descriptions-item label="承担部门" label-class-name="my-label">{{
18
-                chooseProject.undertakingDeptName
19
-              }}</el-descriptions-item>
18
+      chooseProject.undertakingDeptName
19
+    }}</el-descriptions-item>
20 20
               <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser
21
-                ? chooseProject.projectLeaderUser.nickName : ''
22
-              }}</el-descriptions-item>=
21
+      ? chooseProject.projectLeaderUser.nickName : ''
22
+                }}</el-descriptions-item>=
23 23
             </el-descriptions>
24 24
           </el-form-item>
25
-          <el-form-item label="变更内容">
26
-            <el-input type="textarea" :rows="10" v-model="form.content" :disabled="taskName != '项目登记'" />
25
+          <el-form-item label="变更内容" prop="content">
26
+            <el-input type="textarea" :rows="10" v-model="form.content" :disabled="taskName != '变更登记'" />
27 27
           </el-form-item>
28 28
           <el-row>
29 29
             <el-col :span="6" :xs="24" :offset="12">
@@ -39,9 +39,11 @@
39 39
             </el-col>
40 40
           </el-row>
41 41
         </el-form>
42
-        <div style="text-align: center;">
43
-          <el-button type="primary" @click="submitForm">确 定</el-button>
44
-          <el-button @click="cancel">取 消</el-button>
42
+        <div style="text-align: center;" v-if="taskName && taskName == '变更登记'">
43
+          <el-button type="primary" @click="submitForm">提交申请</el-button>
44
+        </div>
45
+        <div style="text-align: center;" v-if="taskName && taskName == '变更确认'">
46
+          <el-button type="primary" @click="submitForm">确认变更</el-button>
45 47
         </div>
46 48
       </el-col>
47 49
       <el-col :span="6" :xs="24" v-if="isFlow">
@@ -131,6 +133,12 @@ export default {
131 133
       registrantName: '',
132 134
       // 表单校验
133 135
       rules: {
136
+        projectId: [
137
+          { required: true, message: '请选择项目编号', trigger: 'blur' }
138
+        ],
139
+        content: [
140
+          { required: true, message: '请输入变更内容', trigger: 'blur' }
141
+        ]
134 142
       }
135 143
     };
136 144
   },
@@ -140,7 +148,7 @@ export default {
140 148
     if (this.$route.query.projectId) {
141 149
       getProject(this.$route.query.projectId).then(res => {
142 150
         if (res.data) {
143
-          this.$set(this.form, 'projectId', res.data.projectId)
151
+          this.$set(this.form, 'projectId', res.data.projectId);
144 152
           this.handleSelectProject(res.data.projectId)
145 153
         }
146 154
       })
@@ -164,6 +172,7 @@ export default {
164 172
         else {
165 173
           this.formTotal = 1;
166 174
           this.form = res.data;
175
+          this.registrantName = res.data.registrantUser.nickName
167 176
           if (res.data.projectId) {
168 177
             getProject(res.data.projectId).then(response => {
169 178
               this.chooseProject = response.data;
@@ -213,6 +222,12 @@ export default {
213 222
         this.chooseProject = val[0]
214 223
         this.isSelect = true
215 224
         this.form.projectId = val[0].projectId
225
+        this.$refs.form.validateField('projectId');
226
+        if (this.chooseProject.projectLeader)
227
+          this.leaderList.push(this.chooseProject.projectLeader);
228
+        getUsersDeptLeaderByDept({ deptId: 109 }).then(res => {
229
+          this.leaderList.push(res.data.userId);
230
+        })
216 231
         if (this.chooseProject.undertakingDept) {
217 232
           let arr = this.chooseProject.undertakingDept.split(',')
218 233
           this.getLeader(arr);
@@ -230,54 +245,6 @@ export default {
230 245
         })
231 246
       }
232 247
     },
233
-    // 取消按钮
234
-    cancel() {
235
-      this.open = false;
236
-      this.reset();
237
-    },
238
-    // 表单重置
239
-    reset() {
240
-      this.form = {
241
-        changeId: null,
242
-        projectId: null,
243
-        content: null,
244
-        registrant: null,
245
-        registerTime: null
246
-      };
247
-      this.resetForm("form");
248
-    },
249
-    /** 搜索按钮操作 */
250
-    handleQuery() {
251
-      this.queryParams.pageNum = 1;
252
-      this.getList();
253
-    },
254
-    /** 重置按钮操作 */
255
-    resetQuery() {
256
-      this.resetForm("queryForm");
257
-      this.handleQuery();
258
-    },
259
-    // 多选框选中数据
260
-    handleSelectionChange(selection) {
261
-      this.ids = selection.map(item => item.changeId)
262
-      this.single = selection.length !== 1
263
-      this.multiple = !selection.length
264
-    },
265
-    /** 新增按钮操作 */
266
-    handleAdd() {
267
-      this.reset();
268
-      this.open = true;
269
-      this.title = "添加cmc项目变更";
270
-    },
271
-    /** 修改按钮操作 */
272
-    handleUpdate(row) {
273
-      this.reset();
274
-      const changeId = row.changeId || this.ids
275
-      getProjectChange(changeId).then(response => {
276
-        this.form = response.data;
277
-        this.open = true;
278
-        this.title = "修改cmc项目变更";
279
-      });
280
-    },
281 248
     /** 提交按钮 */
282 249
     submitForm() {
283 250
       this.$refs["form"].validate(valid => {
@@ -317,22 +284,9 @@ export default {
317 284
         }
318 285
       });
319 286
     },
320
-    /** 删除按钮操作 */
321
-    handleDelete(row) {
322
-      const changeIds = row.changeId || this.ids;
323
-      this.$modal.confirm('是否确认删除cmc项目变更编号为"' + changeIds + '"的数据项?').then(function () {
324
-        return delProjectChange(changeIds);
325
-      }).then(() => {
326
-        this.getList();
327
-        this.$modal.msgSuccess("删除成功");
328
-      }).catch(() => { });
329
-    },
330
-    /** 导出按钮操作 */
331
-    handleExport() {
332
-      this.download('oa/projectChange/export', {
333
-        ...this.queryParams
334
-      }, `projectChange_${new Date().getTime()}.xlsx`)
335
-    }
336 287
   }
337 288
 };
338 289
 </script>
290
+<style lang="scss" scoped>
291
+@import "@/assets/styles/element-reset.scss";
292
+</style>

+ 6
- 3
oa-ui/src/views/flowable/form/components/conditionDisplay.vue Dosyayı Görüntüle

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-23 17:08:16
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-07-04 12:58:36
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-08-02 16:39:46
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -30,6 +30,7 @@
30 30
     <brand-form :key="'brand'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '品牌项目支付'"></brand-form>
31 31
     <deposit-form :key="'deposit'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '保证金审批'"></deposit-form>
32 32
     <device-form :key="'device'+taskForm.taskId" :taskForm="taskForm" :taskName="''" :formDisabled="true" v-else-if="taskForm.procDefName == '设备审批'"></device-form>
33
+    <change-form :key="'change'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '项目变更'"></change-form>
33 34
   </div>
34 35
 </template>
35 36
 
@@ -55,6 +56,7 @@ import BudgetTab from '../projectProcess/budgetTab.vue';
55 56
 import BrandForm from '../business/brandForm.vue';
56 57
 import DepositForm from '../finance/depositForm.vue';
57 58
 import DeviceForm from '../oa/deviceForm.vue';
59
+import changeForm from "../changeForm.vue";
58 60
 export default {
59 61
   props: {
60 62
     passingParam: {
@@ -87,7 +89,8 @@ export default {
87 89
     BudgetTab,
88 90
     BrandForm,
89 91
     DepositForm,
90
-    DeviceForm
92
+    DeviceForm,
93
+    changeForm
91 94
   },
92 95
   data() {
93 96
     return {

+ 176
- 0
oa-ui/src/views/flowable/form/components/planPrint.vue Dosyayı Görüntüle

@@ -0,0 +1,176 @@
1
+<template>
2
+  <div>
3
+    <div id="printPlan">
4
+      <h2 class="text-center title">技术交底记录表</h2>
5
+      <table border="1">
6
+        <tr>
7
+          <td :colspan="1" class="fontbold">项目名称</td>
8
+          <td :colspan="4">{{ form.projectName }}</td>
9
+          <td :colspan="2" class="fontbold">项目编号</td>
10
+          <td :colspan="2">{{ form.projectNumber }}</td>
11
+        </tr>
12
+        <tr>
13
+          <td :colspan="1" class="fontbold">承担部门</td>
14
+          <td :colspan="4">{{ getDeptNames(form.undertakingDept) }}</td>
15
+          <td :colspan="2" class="fontbold">项目负责人</td>
16
+          <td :colspan="2">{{ getUserName(form.projectLeader) }}</td>
17
+        </tr>
18
+        <tr>
19
+          <td :colspan="1" class="fontbold">技术负责人</td>
20
+          <td :colspan="4">{{ getUserName(form.technicalDirector) }}</td>
21
+          <td :colspan="1" class="fontbold">技术设计人</td>
22
+          <td :colspan="4" style="white-space: pre-wrap;">{{ getUserName(form.technicalDesigner) }}</td>
23
+        </tr>
24
+        <tr>
25
+          
26
+        </tr>
27
+        <tr>
28
+          <td :colspan="1" class="fontbold">质量检查员</td>
29
+          <td :colspan="8" style="white-space: pre-wrap;">{{ formartVal(form.qualityInspector) }}</td>
30
+        </tr>
31
+        <tr>
32
+          <td :colspan="1" class="fontbold">技术安排意见</td>
33
+          <td :colspan="4">{{ form.planComment }}</td>
34
+          <td :colspan="2" style="text-align:left;min-width:120px;">签名:<span class="auditor">{{
35
+            getUserName(form.technicalPlanner) }}</span></td>
36
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.technicalTime }}</td>
37
+        </tr>
38
+        <tr>
39
+          <td :colspan="1" class="fontbold">方案说明</td>
40
+          <td :colspan="4">{{ form.designDescription }}</td>
41
+          <td :colspan="2" style="text-align:left;min-width:120px;">
42
+            签名:<span class="auditor">{{ getUserName(form.technicalDesigner) }}</span>
43
+          </td>
44
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.technicalUploadTime }}</td>
45
+        </tr>
46
+        <tr>
47
+          <td :colspan="1" class="fontbold">技术方案审核意见</td>
48
+          <td :colspan="4">{{ form.technicalComment }}</td>
49
+          <td :colspan="2" style="text-align:left;min-width:120px;">
50
+            签名:<span class="auditor">{{ getUserName(form.technicalAuditor) }}</span>
51
+          </td>
52
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.techApprovalTime }}</td>
53
+        </tr>
54
+        <tr>
55
+          <td :colspan="1" class="fontbold">总工程师审核意见</td>
56
+          <td :colspan="4">{{ form.manageComment }}</td>
57
+          <td :colspan="2" style="text-align:left;min-width:120px;">
58
+            签名:<span class="auditor">{{ getUserName(form.managerUserId) }}</span>
59
+          </td>
60
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.manageApprovalTime }}</td>
61
+        </tr>
62
+      </table>
63
+    </div>
64
+    <div class="text-center mt20">
65
+      <el-button type="primary" v-print="print">确认打印</el-button>
66
+      <el-button @click="$emit('cancel')">取消</el-button>
67
+    </div>
68
+  </div>
69
+</template>
70
+
71
+<script>
72
+export default {
73
+  props: {
74
+    form: {
75
+      type: Object
76
+    }
77
+  },
78
+  data() {
79
+    return {
80
+      settleSum: {},
81
+      deptSettleList: [],
82
+      deductionsList: [],
83
+      actualSumSettle: '',
84
+      undertakingDept: [],
85
+      print: {
86
+        id: 'printPlan',
87
+        popTitle: '技术方案表', // 打印配置页上方标题
88
+        extraHead: '', //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
89
+        preview: false, // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
90
+        previewTitle: '', // 打印预览的标题(开启预览模式后出现),
91
+        previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
92
+        zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
93
+        previewBeforeOpenCallback() { }, //预览窗口打开之前的callback(开启预览模式调用)
94
+        previewOpenCallback() { }, // 预览窗口打开之后的callback(开启预览模式调用)
95
+        beforeOpenCallback() { }, // 开启打印前的回调事件
96
+        openCallback() { }, // 调用打印之后的回调事件
97
+        closeCallback() { }, //关闭打印的回调事件(无法确定点击的是确认还是取消)
98
+        url: '',
99
+        standard: '',
100
+        extraCss: ''
101
+      }
102
+    }
103
+  },
104
+  methods:{
105
+    formartVal(val){
106
+      if (Array.isArray(val)) {
107
+        let newval = val.join(',');
108
+        let res = this.getUserNames(newval);
109
+        return res
110
+      }
111
+    }
112
+  }
113
+}
114
+</script>
115
+
116
+<style lang="scss" scoped>
117
+table {
118
+  /*边框*/
119
+  /* border: 1px solid black; */
120
+  width: 90%;
121
+  // text-align: center;
122
+  border-collapse: collapse;
123
+  margin: 0 auto;
124
+
125
+  /*设置背景颜色*/
126
+  /* background-color: #bfa; */
127
+  td {
128
+    padding: 5px;
129
+    // line-height: 30px;
130
+  }
131
+}
132
+
133
+.header {
134
+  font-family: '黑体';
135
+  font-size: 16px;
136
+  font-weight: bold;
137
+  line-height: 30px;
138
+}
139
+
140
+.bg {
141
+  background-color: #eee;
142
+  -webkit-print-color-adjust: exact;
143
+}
144
+
145
+.title {
146
+  font-family: '黑体';
147
+  font-size: 20px;
148
+  font-weight: bold;
149
+  line-height: 30px;
150
+}
151
+
152
+.fontbold {
153
+  font-weight: bold;
154
+  min-width: 150px;
155
+  text-align: center;
156
+}
157
+
158
+.conment-width {
159
+  // max-width: 200px;
160
+}
161
+
162
+
163
+@page {
164
+  size: auto;
165
+  /* 去除页脚 */
166
+  margin-bottom: 0;
167
+  // 横向A4
168
+  // size:A4 landscape;
169
+}
170
+
171
+@media print {
172
+  #print table {
173
+    width: 100%;
174
+  }
175
+}
176
+</style>

+ 2
- 2
oa-ui/src/views/flowable/form/components/safePrint.vue Dosyayı Görüntüle

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-07-30 16:56:08
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-31 17:39:52
5
+ * @LastEditTime: 2024-08-02 09:26:11
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -17,7 +17,7 @@
17 17
         </tr>
18 18
         <tr>
19 19
           <td :colspan="1" class="fontbold">承担部门</td>
20
-          <td :colspan="4">{{ getDeptName(form.undertakingDept) }}</td>
20
+          <td :colspan="4">{{ getDeptNames(form.undertakingDept) }}</td>
21 21
           <td :colspan="2" class="fontbold">项目负责人</td>
22 22
           <td :colspan="2">{{ getUserName(form.projectLeader) }}</td>
23 23
         </tr>

+ 146
- 0
oa-ui/src/views/flowable/form/components/technicalPrint.vue Dosyayı Görüntüle

@@ -0,0 +1,146 @@
1
+<template>
2
+  <div>
3
+    <div id="printTechnical">
4
+      <h2 class="text-center title">技术交底记录表</h2>
5
+      <table border="1">
6
+        <tr>
7
+          <td :colspan="1" class="fontbold">项目名称</td>
8
+          <td :colspan="4">{{ form.projectName }}</td>
9
+          <td :colspan="2" class="fontbold">项目编号</td>
10
+          <td :colspan="2">{{ form.projectNumber }}</td>
11
+        </tr>
12
+        <tr>
13
+          <td :colspan="1" class="fontbold">承担部门</td>
14
+          <td :colspan="4">{{ getDeptNames(form.undertakingDept) }}</td>
15
+          <td :colspan="2" class="fontbold">项目负责人</td>
16
+          <td :colspan="2">{{ getUserName(form.projectLeader) }}</td>
17
+        </tr>
18
+        <tr>
19
+          <td :colspan="1" class="fontbold">接受交底人</td>
20
+          <td :colspan="8">{{ getUserName(form.disclosureAccepter) }}</td>
21
+        </tr>
22
+        <tr>
23
+          <td :colspan="1" class="fontbold">技术交底内容</td>
24
+          <td :colspan="8" style="white-space: pre-wrap;">{{ form.content }}</td>
25
+        </tr>
26
+        <tr>
27
+          <td :colspan="1" class="fontbold">技术交底意见</td>
28
+          <td :colspan="4">{{ form.disclosureComment }}</td>
29
+          <td :colspan="2" style="text-align:left;min-width:120px;">签名:<span class="auditor">{{
30
+            getUserName(form.disclosurer) }}</span></td>
31
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.disclosureTime }}</td>
32
+        </tr>
33
+        <tr>
34
+          <td :colspan="1" class="fontbold">接受交底意见</td>
35
+          <td :colspan="4">{{ form.acceptComment }}</td>
36
+          <td :colspan="2" style="text-align:left;min-width:120px;">
37
+            签名:<span class="auditor">{{ getUserName(form.disclosureAccepter) }}</span>
38
+          </td>
39
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.acceptTime }}</td>
40
+        </tr>
41
+      </table>
42
+    </div>
43
+    <div class="text-center mt20">
44
+      <el-button type="primary" v-print="print">确认打印</el-button>
45
+      <el-button @click="$emit('cancel')">取消</el-button>
46
+    </div>
47
+  </div>
48
+</template>
49
+
50
+<script>
51
+export default {
52
+  props: {
53
+    form: {
54
+      type: Object
55
+    }
56
+  },
57
+  data() {
58
+    return {
59
+      settleSum: {},
60
+      deptSettleList: [],
61
+      deductionsList: [],
62
+      actualSumSettle: '',
63
+      undertakingDept: [],
64
+      print: {
65
+        id: 'printTechnical',
66
+        popTitle: '技术交底记录表', // 打印配置页上方标题
67
+        extraHead: '', //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
68
+        preview: false, // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
69
+        previewTitle: '', // 打印预览的标题(开启预览模式后出现),
70
+        previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
71
+        zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
72
+        previewBeforeOpenCallback() { }, //预览窗口打开之前的callback(开启预览模式调用)
73
+        previewOpenCallback() { }, // 预览窗口打开之后的callback(开启预览模式调用)
74
+        beforeOpenCallback() { }, // 开启打印前的回调事件
75
+        openCallback() { }, // 调用打印之后的回调事件
76
+        closeCallback() { }, //关闭打印的回调事件(无法确定点击的是确认还是取消)
77
+        url: '',
78
+        standard: '',
79
+        extraCss: ''
80
+      }
81
+    }
82
+  },
83
+}
84
+</script>
85
+
86
+<style lang="scss" scoped>
87
+table {
88
+  /*边框*/
89
+  /* border: 1px solid black; */
90
+  width: 90%;
91
+  // text-align: center;
92
+  border-collapse: collapse;
93
+  margin: 0 auto;
94
+
95
+  /*设置背景颜色*/
96
+  /* background-color: #bfa; */
97
+  td {
98
+    padding: 5px;
99
+    // line-height: 30px;
100
+  }
101
+}
102
+
103
+.header {
104
+  font-family: '黑体';
105
+  font-size: 16px;
106
+  font-weight: bold;
107
+  line-height: 30px;
108
+}
109
+
110
+.bg {
111
+  background-color: #eee;
112
+  -webkit-print-color-adjust: exact;
113
+}
114
+
115
+.title {
116
+  font-family: '黑体';
117
+  font-size: 20px;
118
+  font-weight: bold;
119
+  line-height: 30px;
120
+}
121
+
122
+.fontbold {
123
+  font-weight: bold;
124
+  min-width: 150px;
125
+  text-align: center;
126
+}
127
+
128
+.conment-width {
129
+  // max-width: 200px;
130
+}
131
+
132
+
133
+@page {
134
+  size: auto;
135
+  /* 去除页脚 */
136
+  margin-bottom: 0;
137
+  // 横向A4
138
+  // size:A4 landscape;
139
+}
140
+
141
+@media print {
142
+  #print table {
143
+    width: 100%;
144
+  }
145
+}
146
+</style>

+ 15
- 17
oa-ui/src/views/flowable/form/finance/borrowForm.vue Dosyayı Görüntüle

@@ -133,7 +133,7 @@
133 133
               <el-form-item label="核准金额" prop="managerAmount">
134 134
                 <el-input v-model="form.managerAmount" placeholder="请输入核准金额"
135 135
                   :disabled="taskName != '分管审核' && taskName != '党工团审核'" />
136
-                <span style="color:#E74C3C" v-if="form.managerAmount && form.borrowUsage == 0">超过预算金额:{{
136
+                <span style="color:#E74C3C" v-if="exceed && form.managerAmount && form.borrowUsage == 0">超过预算金额:{{
137 137
     getMoreAmount('1') }}</span>
138 138
               </el-form-item>
139 139
             </el-col>
@@ -279,7 +279,7 @@
279 279
             </el-col>
280 280
           </el-row>
281 281
         </el-form>
282
-        <div style="text-align: center;" v-if="taskName !=''">
282
+        <div style="text-align: center;" v-if="taskName != ''">
283 283
           <el-button type="primary" @click="submitForm">提 交</el-button>
284 284
         </div>
285 285
       </el-col>
@@ -454,12 +454,6 @@ export default {
454 454
             { required: true, message: '请输入部门负责人意见', trigger: 'blur' },
455 455
           ],
456 456
         }
457
-        // } else if (this.taskName == '项目部审核') {
458
-        //   this.rules = {
459
-        //     xmComment: [
460
-        //       { required: true, message: '请输入项目部校核意见', trigger: 'blur' }
461
-        //     ]
462
-        //   }
463 457
       } else if (this.taskName == '分管审核') {
464 458
         this.rules = {
465 459
           managerComment: [
@@ -506,15 +500,7 @@ export default {
506 500
         else {
507 501
           this.formTotal = 1;
508 502
           this.form = res.data;
509
-          if (this.form.borrowUsage == '0') {
510
-            if ((this.totalBudget - this.form.applyAmount) < 0) {
511
-              this.exceed = true;
512
-            } else {
513
-              this.exceed = false;
514
-            }
515
-          } else {
516
-            this.exceed = false;
517
-          }
503
+
518 504
           this.hanldeChangeType();
519 505
           this.handleSelectProject(res.data.projectId)
520 506
           this.getBudgetSettle()
@@ -529,6 +515,18 @@ export default {
529 515
         let budget = budgetData.rows[0];
530 516
         this.totalBudget = budget.totalBudget
531 517
       }
518
+      if (budgetData.total == 0) {
519
+        this.totalBudget = 0
520
+      }
521
+      if (this.form.borrowUsage == '0') {
522
+        if ((this.totalBudget - this.form.applyAmount) < 0) {
523
+          this.exceed = true;
524
+        } else {
525
+          this.exceed = false;
526
+        }
527
+      } else {
528
+        this.exceed = false;
529
+      }
532 530
       let borrow = await listBorrow({ projectId: this.form.projectId })
533 531
       if (borrow.total != 0) {
534 532
         let borrowList = borrow.rows;

+ 15
- 6
oa-ui/src/views/flowable/form/projectProcess/planTab.vue Dosyayı Görüntüle

@@ -1,13 +1,14 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-19 15:32:00
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-07-08 18:00:55
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-08-02 10:43:19
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
9 9
     <el-empty description="技术方案未编制" v-if="!haveTechnicalPlan"></el-empty>
10 10
     <div v-if="haveTechnicalPlan">
11
+      <el-button type="success" @click="openPrint = true">打印</el-button>
11 12
       <h3 class="text-center"><b>{{ form.projectNumber + '-' + form.projectName + ' 技术方案' }}</b></h3>
12 13
       <el-form ref="technicalPlan" :model="form" :rules="rules" label-width="125px" disabled>
13 14
         <el-form-item label="项目编号:" prop="projectNumber">
@@ -132,6 +133,9 @@
132 133
         </el-row>
133 134
       </el-form>
134 135
     </div>
136
+    <el-dialog title="技术方案表格预览" :visible.sync="openPrint" width="65%" append-to-body>
137
+      <plan-print :form="form" @cancel="openPrint = false"></plan-print>
138
+    </el-dialog>
135 139
   </div>
136 140
 </template>
137 141
 
@@ -146,8 +150,9 @@ import {
146 150
   addTechnicalPlan,
147 151
   updateTechnicalPlan,
148 152
 } from "@/api/oa/technical/technicalPlan";
153
+import PlanPrint from '../components/planPrint.vue';
149 154
 export default {
150
-  components: { technicalPlan },
155
+  components: { technicalPlan, PlanPrint },
151 156
   props: {
152 157
     taskForm: {
153 158
       type: Object,
@@ -181,6 +186,7 @@ export default {
181 186
       form: {},
182 187
       rules: {},
183 188
       userList: [],
189
+      openPrint:false,
184 190
     };
185 191
   },
186 192
   mounted() {
@@ -206,6 +212,8 @@ export default {
206 212
             if (projectRes.data) {
207 213
               this.$set(this.form, "projectNumber", projectRes.data.projectNumber);
208 214
               this.$set(this.form, "projectName", projectRes.data.projectName);
215
+              this.$set(this.form, "projectLeader", projectRes.data.projectLeader);
216
+              this.$set(this.form, "undertakingDept", projectRes.data.undertakingDept);
209 217
             }
210 218
           }
211 219
         }
@@ -221,10 +229,10 @@ export default {
221 229
         // 如果是一个字符串,则按逗号分割并转换为整数数组
222 230
         const qualityInspectorArr = form.qualityInspector.split(',').map(inspector => parseInt(inspector, 10));
223 231
         return qualityInspectorArr
224
-       } else if (form.qualityInspector === null || form.qualityInspector === undefined || form.qualityInspector === '') {
225
-         // 如果为空、null或undefined,则设置为空数组
232
+      } else if (form.qualityInspector === null || form.qualityInspector === undefined || form.qualityInspector === '') {
233
+        // 如果为空、null或undefined,则设置为空数组
226 234
         return []
227
-       }
235
+      }
228 236
     },
229 237
     // 查询用户列表
230 238
     getUserList() {
@@ -244,6 +252,7 @@ export default {
244 252
 
245 253
 <style lang="scss" scoped>
246 254
 @import "@/assets/styles/element-reset.scss";
255
+
247 256
 ::v-deep .el-input.is-disabled .el-input__inner {
248 257
   color: #686a6e;
249 258
 }

+ 6
- 5
oa-ui/src/views/flowable/form/projectProcess/safeTab.vue Dosyayı Görüntüle

@@ -29,7 +29,8 @@
29 29
           <el-input v-model="form.insideComment" placeholder="请输入信息安全管理要求" type="textarea" :autosize="{ minRows: 8 }" />
30 30
         </el-form-item>
31 31
         <el-form-item label="安全交底意见" prop="disclosureComment">
32
-          <el-input v-model="form.disclosureComment" placeholder="请输入安全交底意见" type="textarea" :autosize="{ minRows: 4 }" />
32
+          <el-input v-model="form.disclosureComment" placeholder="请输入安全交底意见" type="textarea"
33
+            :autosize="{ minRows: 4 }" />
33 34
         </el-form-item>
34 35
         <el-row>
35 36
           <el-col :span="6" :xs="24" :offset="12">
@@ -62,7 +63,7 @@
62 63
       </el-form>
63 64
     </div>
64 65
     <el-dialog title="安全交底表格预览" :visible.sync="openPrint" width="65%" append-to-body>
65
-      <safe-print :form="form"></safe-print>
66
+      <safe-print :form="form" @cancel="openPrint = false"></safe-print>
66 67
     </el-dialog>
67 68
   </div>
68 69
 </template>
@@ -95,7 +96,7 @@ export default {
95 96
     projectName(newval) {
96 97
       this.$set(this.form, "projectName", newval);
97 98
     },
98
-    'taskForm.formId'(){
99
+    'taskForm.formId'() {
99 100
       this.loading = true;
100 101
       this.initForm();
101 102
     }
@@ -107,8 +108,8 @@ export default {
107 108
       form: {},
108 109
       rules: {},
109 110
       userList: [],
110
-      loading:false,
111
-      openPrint:false,
111
+      loading: false,
112
+      openPrint: false,
112 113
     }
113 114
   },
114 115
   mounted() {

+ 15
- 0
oa-ui/src/views/flowable/form/projectProcess/technicalTab.vue Dosyayı Görüntüle

@@ -1,7 +1,14 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-07-04 17:37:29
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-08-02 09:46:48
6
+-->
1 7
 <template>
2 8
   <div class="app-container" v-loading="loading">
3 9
     <el-empty description="未进行技术交底" v-if="isEmpty"></el-empty>
4 10
     <div v-if="!isEmpty">
11
+      <el-button type="success" @click="openPrint = true">打印</el-button>
5 12
       <h3 class="text-center"><b>{{ form.projectNumber + '-' + form.projectName + ' 技术交底' }}</b></h3>
6 13
       <el-form ref="technicalForm" :model="form" :rules="rules" label-width="125px" disabled>
7 14
         <el-form-item label="项目编号:" prop="projectNumber">
@@ -64,6 +71,9 @@
64 71
         </el-row>
65 72
       </el-form>
66 73
     </div>
74
+    <el-dialog title="技术交底表格预览" :visible.sync="openPrint" width="65%" append-to-body>
75
+      <technical-print :form="form" @cancel="openPrint = false"></technical-print>
76
+    </el-dialog>
67 77
   </div>
68 78
 </template>
69 79
 
@@ -71,7 +81,9 @@
71 81
 import { listTechnical, getTechnical, delTechnical, addTechnical, updateTechnical } from "@/api/oa/technical/technical";
72 82
 import { listUser } from '@/api/system/user';
73 83
 import { getProject } from "@/api/oa/project/project";
84
+import technicalPrint from '../components/technicalPrint.vue';
74 85
 export default {
86
+  components: { technicalPrint },
75 87
   props: {
76 88
     taskForm: {
77 89
       type: Object,
@@ -106,6 +118,7 @@ export default {
106 118
       rules: {},
107 119
       userList: [],
108 120
       loading: false,
121
+      openPrint:false,
109 122
     }
110 123
   },
111 124
   mounted() {
@@ -127,6 +140,8 @@ export default {
127 140
               if (res.data) {
128 141
                 this.$set(this.form, "projectNumber", res.data.projectNumber);
129 142
                 this.$set(this.form, "projectName", res.data.projectName);
143
+                this.$set(this.form, "projectLeader", res.data.projectLeader);
144
+                this.$set(this.form, "undertakingDept", res.data.undertakingDept);
130 145
                 this.loading = false;
131 146
               }
132 147
             })

+ 4
- 3
oa-ui/src/views/flowable/task/todo/detail/index.vue Dosyayı Görüntüle

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-01-03 09:23:11
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-07-04 13:07:30
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-08-02 16:18:05
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -480,7 +480,8 @@ export default {
480 480
       if (this.taskName == '员工填报' || this.taskForm.procDefName == '用车审批' || this.taskForm.procDefName == '设备审批' || this.taskForm.procDefName == '项目流转'
481 481
         || (this.taskForm.procDefName == '项目预算' && this.taskName != '预算审核') || this.taskForm.procDefName == '借款审批' || this.taskForm.procDefName == '安全交底' ||
482 482
         this.taskForm.procDefName == '技术交底' || this.taskForm.procDefName == '技术方案' || this.taskForm.procDefName == '承接合同评审' || this.taskForm.procDefName == '分包合同评审'
483
-        || this.taskForm.procDefName == '品牌项目支付' || this.taskForm.procDefName == '保证金审批' || this.taskForm.procDefName == '成果归档' || this.taskForm.procDefName == '项目结算') {
483
+        || this.taskForm.procDefName == '品牌项目支付' || this.taskForm.procDefName == '保证金审批' || this.taskForm.procDefName == '成果归档' || this.taskForm.procDefName == '项目结算'
484
+        || this.taskForm.procDefName == '项目变更') {
484 485
         return false
485 486
       } else {
486 487
         return true

+ 1
- 1
oa-ui/src/views/oa/material/index.vue Dosyayı Görüntüle

@@ -105,7 +105,7 @@
105 105
       <el-table-column type="selection" width="55" align="center" />
106 106
       <el-table-column label="耗材id" align="center" prop="materialId" />
107 107
       <el-table-column label="耗材名称" align="center" prop="name" />
108
-      <el-table-column label="耗材类别" align="center" prop="type" />
108
+      <!-- <el-table-column label="耗材类别" align="center" prop="type" /> -->
109 109
       <el-table-column label="规格型号" align="center" prop="series" />
110 110
       <el-table-column label="耗材品牌" align="center" prop="brand" />
111 111
       <el-table-column label="存放地点" align="center" prop="place" />

+ 17
- 11
oa-ui/src/views/oa/project/info.vue Dosyayı Görüntüle

@@ -207,8 +207,10 @@
207 207
                 <svg-icon slot="prefix" icon-class="form" />
208 208
                 项目预算编制
209 209
               </template>
210
-              <!-- v-hasPermi="['oa:project:edit']" -->
211
-              <el-link type="primary" @click="openBudget = true"  v-hasPermi="['oa:allproject:query']">项目预算表</el-link>
210
+              <el-link type="primary" @click="openBudget = true" v-if="isProjectLeader">项目预算表</el-link>
211
+              <div v-else>
212
+                <el-link type="primary" @click="openBudget = true" v-hasPermi="['oa:allproject:query']">项目预算表</el-link>
213
+              </div>
212 214
             </el-descriptions-item>
213 215
           </el-descriptions>
214 216
         </div>
@@ -437,11 +439,11 @@
437 439
               <div>
438 440
                 <el-table :data="projectChangeList">
439 441
                   <el-table-column type="index" label="序号" width="55" align="center" />
440
-                  <el-table-column label="项目编号" align="center" width="80" prop="project.projectNumber" />
441
-                  <el-table-column label="项目名称" align="center" prop="project.projectName" />
442
-                  <el-table-column label="承担部门" align="center" prop="undertakingDeptName" />
443
-                  <el-table-column label="项目负责人" align="center" width="90" prop="leaderUser.nickName" />
444
-                  <el-table-column label="变更内容" align="center" width="600" prop="content" />
442
+                  <!-- <el-table-column label="项目编号" align="center" width="80" prop="project.projectNumber" />
443
+                  <el-table-column label="项目名称" align="center" prop="project.projectName" /> -->
444
+                  <!-- <el-table-column label="承担部门" align="center" prop="undertakingDeptName" />
445
+                  <el-table-column label="项目负责人" align="center" width="90" prop="leaderUser.nickName" /> -->
446
+                  <el-table-column label="变更内容" align="center" prop="content" />
445 447
                   <el-table-column label="登记人" align="center" width="80" prop="registrantUser.nickName" />
446 448
                   <el-table-column label="登记时间" align="center" prop="registerTime" width="100">
447 449
                     <template slot-scope="scope">
@@ -455,7 +457,7 @@
455 457
         </div>
456 458
       </div>
457 459
     </div>
458
-    <el-dialog title="项目预算" :visible.sync="openBudget" width="1000px" append-to-body>
460
+    <el-dialog title="项目预算" :visible.sync="openBudget" width="70%" append-to-body>
459 461
       <budget-tab :taskForm="taskForm"></budget-tab>
460 462
     </el-dialog>
461 463
     <el-dialog title="技术方案审批表" :visible.sync="openPlan" width="1000px" append-to-body>
@@ -580,9 +582,10 @@ export default {
580 582
       flowData: {},
581 583
       recordOpen: false,
582 584
       clickRow: {
583
-        procInsId:'',
584
-        deployId:''
585
-      }
585
+        procInsId: '',
586
+        deployId: ''
587
+      },
588
+      isProjectLeader: false
586 589
     }
587 590
   },
588 591
   methods: {
@@ -590,6 +593,9 @@ export default {
590 593
       getProject(projectId).then(res => {
591 594
         if (res.data) {
592 595
           this.project = res.data;
596
+          if (this.project.projectLeader == this.$store.state.user.id) {
597
+            this.isProjectLeader = true;
598
+          }
593 599
           let deptArr = this.project.undertakingDept.split(',');
594 600
           let undertakingDept = []
595 601
           for (let dept of deptArr) {

Loading…
İptal
Kaydet