Browse Source

修改一些前端小问题

余思翰 11 months ago
parent
commit
42a5bc7628

+ 1
- 1
oa-ui/public/index.html View File

118
       top: 0;
118
       top: 0;
119
       width: 51%;
119
       width: 51%;
120
       height: 100%;
120
       height: 100%;
121
-      background: #7171C6;
121
+      background: #324865;
122
       z-index: 1000;
122
       z-index: 1000;
123
       -webkit-transform: translateX(0);
123
       -webkit-transform: translateX(0);
124
       -ms-transform: translateX(0);
124
       -ms-transform: translateX(0);

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

4
  * @LastEditors: wrh
4
  * @LastEditors: wrh
5
  * @LastEditTime: 2024-04-16 16:05:21
5
  * @LastEditTime: 2024-04-16 16:05:21
6
  */
6
  */
7
-/*
8
- * @Author: wrh
9
- * @Date: 2024-01-30 16:37:46
10
- * @LastEditors: Please set LastEditors
11
- * @LastEditTime: 2024-02-28 16:53:30
12
- */
13
 import request from '@/utils/request'
7
 import request from '@/utils/request'
14
 
8
 
15
 // 查询cmc项目列表
9
 // 查询cmc项目列表

+ 35
- 8
oa-ui/src/views/flowable/form/budget/components/choosePeople.vue View File

14
         <el-button @click="getList" type="primary">搜索</el-button>
14
         <el-button @click="getList" type="primary">搜索</el-button>
15
       </el-form-item>
15
       </el-form-item>
16
     </el-form>
16
     </el-form>
17
-    <el-table ref="chooseUser" :data="userList" @selection-change="handleSelectionChange" :row-key="getRowKeys">
18
-      <el-table-column type="selection" width="50" align="center" :reserve-selection="true" />
17
+    <el-table ref="chooseUser" :data="userList" @selection-change="handleSelectionChange" :row-key="getRowKeys"
18
+      @current-change="handleCurrentChange" @row-dblclick="confirmChooseBySingle" :highlight-current-row="!multiple">
19
+      <el-table-column type="selection" width="50" align="center" :reserve-selection="true" v-if="multiple" />
19
       <!-- <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> -->
20
       <!-- <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> -->
20
       <el-table-column label="姓名" align="center" key="nickName" prop="nickName" :show-overflow-tooltip="true" />
21
       <el-table-column label="姓名" align="center" key="nickName" prop="nickName" :show-overflow-tooltip="true" />
21
       <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" :show-overflow-tooltip="true" />
22
       <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" :show-overflow-tooltip="true" />
32
       <el-table-column label="岗级" align="center" key="postLevel" :show-overflow-tooltip="true">
33
       <el-table-column label="岗级" align="center" key="postLevel" :show-overflow-tooltip="true">
33
         <template slot-scope="scope">
34
         <template slot-scope="scope">
34
           {{ formatLevel(scope.row.postLevel, scope.row.salaryLevel,
35
           {{ formatLevel(scope.row.postLevel, scope.row.salaryLevel,
35
-      dict.type.sys_user_postlevel, dict.type.sys_user_salarylevel) }}
36
+            dict.type.sys_user_postlevel, dict.type.sys_user_salarylevel) }}
36
         </template>
37
         </template>
37
       </el-table-column>
38
       </el-table-column>
38
     </el-table>
39
     </el-table>
39
     <div style="text-align: right;">
40
     <div style="text-align: right;">
40
-      <el-pagination @current-change="getList" :current-page.sync="queryParams.pageNum"
41
-        :page-size="queryParams.pageSize" layout="total, prev, pager, next" :total="total">
41
+      <el-pagination @current-change="getList" :current-page.sync="queryParams.pageNum" :page-size="queryParams.pageSize"
42
+        layout="total, prev, pager, next" :total="total">
42
       </el-pagination>
43
       </el-pagination>
43
     </div>
44
     </div>
44
-    <div>
45
+    <div v-if="multiple">
45
       已选人员:<el-tag v-for="item in chooseUser" style="margin: 5px;" :key="item.userId">{{ item.nickName }}</el-tag>
46
       已选人员:<el-tag v-for="item in chooseUser" style="margin: 5px;" :key="item.userId">{{ item.nickName }}</el-tag>
46
     </div>
47
     </div>
48
+    <div v-if="!multiple">
49
+      已选人员:<el-tag style="margin: 5px;">{{ chooseUser.nickName }}</el-tag>
50
+    </div>
47
     <div style="text-align: center;margin-top: 20px;">
51
     <div style="text-align: center;margin-top: 20px;">
48
       <el-button type="primary" @click="confirmChoose">确认选择</el-button>
52
       <el-button type="primary" @click="confirmChoose">确认选择</el-button>
49
       <el-button @click="clearChoose">清空选择</el-button>
53
       <el-button @click="clearChoose">清空选择</el-button>
59
   props: {
63
   props: {
60
     deptId: {
64
     deptId: {
61
       type: Number
65
       type: Number
66
+    },
67
+    multiple: {
68
+      type: Boolean,
69
+      default: true
62
     }
70
     }
63
   },
71
   },
64
   data() {
72
   data() {
112
     handleSelectionChange(val) {
120
     handleSelectionChange(val) {
113
       this.chooseUser = val
121
       this.chooseUser = val
114
     },
122
     },
123
+    handleCurrentChange(val) {
124
+      console.log(val);
125
+      if (!this.multiple) {
126
+        this.chooseUser = val
127
+      }
128
+    },
115
     getRowKeys(row) {
129
     getRowKeys(row) {
116
       return row.userId;
130
       return row.userId;
117
     },
131
     },
118
     confirmChoose() {
132
     confirmChoose() {
119
-      this.$emit('chooseUser', this.chooseUser)
133
+      debugger
134
+      if (this.chooseUser)
135
+        this.$emit('chooseUser', this.chooseUser)
136
+    },
137
+    confirmChooseBySingle() {
138
+      debugger
139
+      if (!this.multiple) {
140
+        if (this.chooseUser)
141
+          this.$emit('chooseUser', this.chooseUser)
142
+      }
120
     },
143
     },
121
     clearChoose() {
144
     clearChoose() {
122
-      this.$refs.chooseUser.clearSelection();
145
+      if (this.multiple)
146
+        this.$refs.chooseUser.clearSelection();
147
+      else {
148
+        this.chooseUser = {}
149
+      }
123
     },
150
     },
124
     getAgeByIdCard(idCard) {
151
     getAgeByIdCard(idCard) {
125
       const sexAndAge = {}
152
       const sexAndAge = {}

+ 1
- 2
oa-ui/src/views/flowable/form/business/contractForm.vue View File

68
 
68
 
69
           </el-row>
69
           </el-row>
70
           <el-form-item label="合同文件" prop="contractDocument">
70
           <el-form-item label="合同文件" prop="contractDocument">
71
-            <FileUpload :disabled="taskName != '合同拟稿'"
72
-              v-if="form.contractDocument == '' || form.contractDocument == null" ref="contractFile" :limit="1"
71
+            <FileUpload v-if="taskName == '合同拟稿'" :disabled="taskName != '合同拟稿'" ref="contractFile" :limit="1"
73
               :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getContractPath">
72
               :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getContractPath">
74
             </FileUpload>
73
             </FileUpload>
75
             <div v-if="form.contractDocument && taskName != '合同拟稿'">
74
             <div v-if="form.contractDocument && taskName != '合同拟稿'">

+ 14
- 7
oa-ui/src/views/flowable/form/projectProcess/addproject.vue View File

36
       <el-form-item label="合同编号:">
36
       <el-form-item label="合同编号:">
37
         <el-input v-model="chooseContractInfo.contractNumber" disabled></el-input>
37
         <el-input v-model="chooseContractInfo.contractNumber" disabled></el-input>
38
       </el-form-item>
38
       </el-form-item>
39
-      <el-form-item label="甲方单位:" prop="partyA">
39
+      <el-form-item label="甲方单位:" prop="partyAId">
40
         <el-select allow-create v-model="addForm.partyAId" filterable placeholder="请选择" style="width: 100%;" clearable>
40
         <el-select allow-create v-model="addForm.partyAId" filterable placeholder="请选择" style="width: 100%;" clearable>
41
           <el-option v-for="item in partyAList" :key="item.value" :label="item.partyAName" :value="item.partyAId">
41
           <el-option v-for="item in partyAList" :key="item.value" :label="item.partyAName" :value="item.partyAId">
42
           </el-option>
42
           </el-option>
71
             </td>
71
             </td>
72
             <td>
72
             <td>
73
               <el-select v-model="work.unit" placeholder="请选择" clearable>
73
               <el-select v-model="work.unit" placeholder="请选择" clearable>
74
-                <el-option v-for="dict in dict.type.cmc_unit" :key="dict.value" :label="dict.label"
75
-                  :value="dict.label" />
74
+                <el-option v-for="dict in dict.type.cmc_unit" :key="dict.value" :label="dict.label" :value="dict.label" />
76
               </el-select>
75
               </el-select>
77
             </td>
76
             </td>
78
             <td>
77
             <td>
116
         <el-col :span="6" :xs="24" :offset="12">
115
         <el-col :span="6" :xs="24" :offset="12">
117
           <el-form-item label="项目登记人:" prop="registrantUser">
116
           <el-form-item label="项目登记人:" prop="registrantUser">
118
             <span class="auditor"> {{ addForm.projectRegistrantUser ? addForm.projectRegistrantUser.nickName :
117
             <span class="auditor"> {{ addForm.projectRegistrantUser ? addForm.projectRegistrantUser.nickName :
119
-      registrantUser }} </span>
118
+              registrantUser }} </span>
120
           </el-form-item>
119
           </el-form-item>
121
         </el-col>
120
         </el-col>
122
         <el-col :span="6">
121
         <el-col :span="6">
189
         projectSource: "0",
188
         projectSource: "0",
190
         projectLevel: "0"
189
         projectLevel: "0"
191
       },
190
       },
192
-      chooseContractInfo: {},
191
+      chooseContractInfo: {
192
+        contractCode: '',
193
+        contractNumber: ''
194
+      },
193
       contractCode: "",
195
       contractCode: "",
194
       contractNumber: "",
196
       contractNumber: "",
195
       rules: {
197
       rules: {
314
     // 查询业主单位列表
316
     // 查询业主单位列表
315
     getPartyAList() {
317
     getPartyAList() {
316
       this.loading = true
318
       this.loading = true
319
+      let partyAName = ''
320
+      if (this.taskName == '项目登记') {
321
+        partyAName = '中国电建集团成都勘测设计研究院有限公司'
322
+      }
317
       listPartyA({
323
       listPartyA({
318
         pageNum: 1,
324
         pageNum: 1,
319
-        pageSize: 99999999,
320
-        partyAName: '中国电建集团成都勘测设计研究院有限公司'
325
+        pageSize: 999999,
326
+        partyAName: partyAName
321
       }).then(response => {
327
       }).then(response => {
322
         this.partyAList = response.rows;
328
         this.partyAList = response.rows;
329
+        console.log(this.addForm, this.partyAList);
323
       })
330
       })
324
     },
331
     },
325
     cancel() {
332
     cancel() {

+ 3
- 3
oa-ui/src/views/login.vue View File

71
     return {
71
     return {
72
       codeUrl: "",
72
       codeUrl: "",
73
       loginForm: {
73
       loginForm: {
74
-        username: "admin",
75
-        password: "admin123",
74
+        username: "",
75
+        password: "",
76
         rememberMe: false,
76
         rememberMe: false,
77
         code: "",
77
         code: "",
78
         uuid: ""
78
         uuid: ""
164
     flex: 1.8;
164
     flex: 1.8;
165
     min-width: 0%;
165
     min-width: 0%;
166
     background: url('../assets/images/login.jpg') no-repeat;
166
     background: url('../assets/images/login.jpg') no-repeat;
167
-    background-size: 100% 100%;
167
+    background-size: 100% 110%;
168
     position: relative;
168
     position: relative;
169
   }
169
   }
170
 
170
 

+ 3
- 0
oa-ui/src/views/oa/project/index.vue View File

311
               } else {
311
               } else {
312
                 this.$set(project, 'percentage', 0)
312
                 this.$set(project, 'percentage', 0)
313
               }
313
               }
314
+              if(project.isFinished == '1'){
315
+                this.$set(project, 'percentage', 100)
316
+              }
314
             }
317
             }
315
           })
318
           })
316
         }
319
         }

+ 45
- 15
oa-ui/src/views/oa/project/info.vue View File

56
                 <svg-icon slot="prefix" icon-class="school" />
56
                 <svg-icon slot="prefix" icon-class="school" />
57
                 甲方单位
57
                 甲方单位
58
               </template>
58
               </template>
59
-              {{ project.partyA.partyAName }}
59
+              {{ project.partyA ? project.partyA.partyAName : '' }}
60
             </el-descriptions-item>
60
             </el-descriptions-item>
61
             <el-descriptions-item>
61
             <el-descriptions-item>
62
               <template slot="label">
62
               <template slot="label">
174
                 <svg-icon slot="prefix" icon-class="user" />
174
                 <svg-icon slot="prefix" icon-class="user" />
175
                 项目负责人
175
                 项目负责人
176
               </template>
176
               </template>
177
-              {{ project.projectLeaderUser ? project.projectLeaderUser.nickName : "" }}
177
+              <div style="display: flex;justify-content:space-between;">
178
+                <div>{{ project.projectLeaderUser ? project.projectLeaderUser.nickName : "" }}</div>
179
+                <div>
180
+                  <el-button class="ml20" type="warning" plain size="mini" icon="el-icon-plus"
181
+                    @click="prLeaderOpen = true" v-hasPermi="['oa:project:edit']">
182
+                    更换项目负责人
183
+                  </el-button>
184
+                </div>
185
+              </div>
178
             </el-descriptions-item>
186
             </el-descriptions-item>
179
             <el-descriptions-item>
187
             <el-descriptions-item>
180
               <template slot="label">
188
               <template slot="label">
232
                 <el-input disabled type="textarea" v-model="projectComment.jyComment"></el-input>
240
                 <el-input disabled type="textarea" v-model="projectComment.jyComment"></el-input>
233
                 <div class="sign mt10">
241
                 <div class="sign mt10">
234
                   <div class="mr20">签名:<span class="auditor">{{ projectComment.jyUser ? projectComment.jyUser.nickName :
242
                   <div class="mr20">签名:<span class="auditor">{{ projectComment.jyUser ? projectComment.jyUser.nickName :
235
-        ''
236
-                      }}</span>
243
+                    ''
244
+                  }}</span>
237
                   </div>
245
                   </div>
238
                   <div class="ml20"><span>审核时间:{{ projectComment.jyApprovalTime }}</span></div>
246
                   <div class="ml20"><span>审核时间:{{ projectComment.jyApprovalTime }}</span></div>
239
                 </div>
247
                 </div>
248
                 <el-input disabled type="textarea" v-model="projectComment.manageComment"></el-input>
256
                 <el-input disabled type="textarea" v-model="projectComment.manageComment"></el-input>
249
                 <div class="sign mt10">
257
                 <div class="sign mt10">
250
                   <div class="mr20">签名:<span class="auditor">{{ projectComment.managerUser ?
258
                   <div class="mr20">签名:<span class="auditor">{{ projectComment.managerUser ?
251
-        projectComment.managerUser.nickName : '' }}</span>
259
+                    projectComment.managerUser.nickName : '' }}</span>
252
                   </div>
260
                   </div>
253
                   <div class="ml20"><span>审核时间:{{ projectComment.manageApprovalTime }}</span></div>
261
                   <div class="ml20"><span>审核时间:{{ projectComment.manageApprovalTime }}</span></div>
254
                 </div>
262
                 </div>
299
               </template>
307
               </template>
300
               <el-select v-model="devices" multiple disabled style="width:100%">
308
               <el-select v-model="devices" multiple disabled style="width:100%">
301
                 <el-option v-for="item in deviceList" :key="item.deviceId" :label="item.name + '【' + (item.brand != null ? item.brand : '') + (item.series != null ? '-' + item.series + '】' : '')
309
                 <el-option v-for="item in deviceList" :key="item.deviceId" :label="item.name + '【' + (item.brand != null ? item.brand : '') + (item.series != null ? '-' + item.series + '】' : '')
302
-        + (item.code != null ? '(设备编号:' + item.code + ')' : '') + '📍' + item.place" :value="item.deviceId">
310
+                  + (item.code != null ? '(设备编号:' + item.code + ')' : '') + '📍' + item.place" :value="item.deviceId">
303
                 </el-option>
311
                 </el-option>
304
               </el-select>
312
               </el-select>
305
             </el-descriptions-item>
313
             </el-descriptions-item>
396
     <el-dialog title="技术交底记录表" :visible.sync="openTech" width="1000px" append-to-body>
404
     <el-dialog title="技术交底记录表" :visible.sync="openTech" width="1000px" append-to-body>
397
       <technical-tab :taskForm="taskForm"></technical-tab>
405
       <technical-tab :taskForm="taskForm"></technical-tab>
398
     </el-dialog>
406
     </el-dialog>
407
+    <el-dialog title="更换项目负责人" :visible.sync="prLeaderOpen" width="1000px" append-to-body>
408
+      <choose-people :multiple="false" @chooseUser="changeProjectLeader"></choose-people>
409
+    </el-dialog>
399
   </div>
410
   </div>
400
 </template>
411
 </template>
401
 
412
 
403
 import { getDept } from "@/api/system/dept";
414
 import { getDept } from "@/api/system/dept";
404
 import { getUsersDeptLeaderByDept } from '@/api/system/post'
415
 import { getUsersDeptLeaderByDept } from '@/api/system/post'
405
 import { listUser, getUser } from "@/api/system/user";
416
 import { listUser, getUser } from "@/api/system/user";
406
-import { getProject } from "@/api/oa/project/project";
417
+import { getProject, updateProject } from "@/api/oa/project/project";
407
 import { listProjectWork, addProjectWork } from "@/api/oa/project/projectWork";
418
 import { listProjectWork, addProjectWork } from "@/api/oa/project/projectWork";
408
 import { listProjectComment, getProjectComment } from "@/api/oa/project/projectComment";
419
 import { listProjectComment, getProjectComment } from "@/api/oa/project/projectComment";
409
 import { listProjectProgress, getProjectProgress } from "@/api/oa/project/projectProgress";
420
 import { listProjectProgress, getProjectProgress } from "@/api/oa/project/projectProgress";
411
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
422
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
412
 import { listDevice } from "@/api/oa/device/device";
423
 import { listDevice } from "@/api/oa/device/device";
413
 import { listCar } from '@/api/oa/car/car';
424
 import { listCar } from '@/api/oa/car/car';
414
-import budgetInfo from '../../flowable/form/budget/budgetInfo.vue';
415
-import SafeTab from '../../flowable/form/projectProcess/safeTab.vue';
416
-import TechnicalTab from '../../flowable/form/projectProcess/technicalTab.vue';
417
-import SettleData from '../../flowable/form/inProgress/settleData.vue';
418
-import BorrowData from '../../flowable/form/inProgress/borrowData.vue';
419
-import BudgetTab from '../../flowable/form/projectProcess/budgetTab.vue';
420
-import achiData from "../../flowable/form/inProgress/achiData.vue";
425
+import budgetInfo from '@/views/flowable/form/budget/budgetInfo.vue';
426
+import SafeTab from '@/views/flowable/form/projectProcess/safeTab.vue';
427
+import TechnicalTab from '@/views/flowable/form/projectProcess/technicalTab.vue';
428
+import SettleData from '@/views/flowable/form/inProgress/settleData.vue';
429
+import BorrowData from '@/views/flowable/form/inProgress/borrowData.vue';
430
+import BudgetTab from '@/views/flowable/form/projectProcess/budgetTab.vue';
431
+import achiData from "@/views/flowable/form/inProgress/achiData.vue";
432
+import choosePeople from '@/views/flowable/form/budget/components/choosePeople.vue'
421
 export default {
433
 export default {
422
-  components: { budgetInfo, SafeTab, TechnicalTab, SettleData, BorrowData, BudgetTab, achiData },
434
+  components: { budgetInfo, SafeTab, TechnicalTab, SettleData, BorrowData, BudgetTab, achiData, choosePeople },
423
   created() {
435
   created() {
424
     this.getUserList();
436
     this.getUserList();
425
     this.getDeviceList();
437
     this.getDeviceList();
451
       openBudget: false,
463
       openBudget: false,
452
       openSafe: false,
464
       openSafe: false,
453
       openTech: false,
465
       openTech: false,
466
+      prLeaderOpen: false,
454
       taskForm: {
467
       taskForm: {
455
         formId: ''
468
         formId: ''
456
       },
469
       },
590
           url: url
603
           url: url
591
         }
604
         }
592
       })
605
       })
606
+    },
607
+    changeProjectLeader(val) {
608
+      let preLeader = this.getUserName(this.project.projectLeader);
609
+      let curLeader = val.nickName;
610
+      this.$confirm('项目负责人将由' + preLeader + '变更为' + curLeader + ',是否确认', '提示', {
611
+        confirmButtonText: '确定',
612
+        cancelButtonText: '取消',
613
+        type: 'warning'
614
+      }).then(() => {
615
+        updateProject(
616
+          { projectId: this.project.projectId, projectLeader: val.userId }
617
+        ).then(res => {
618
+          this.$message.success('项目负责人修改成功');
619
+          this.prLeaderOpen = false;
620
+          this.$router.go(0);
621
+        })
622
+      }).catch(() => { });
593
     }
623
     }
594
   },
624
   },
595
 }
625
 }

+ 4
- 1
oa-ui/src/views/oa/staff/index.vue View File

78
           <!-- <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> -->
78
           <!-- <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> -->
79
           <el-table-column label="姓名" align="center" key="nickName" prop="nickName" v-if="columns[0].visible"
79
           <el-table-column label="姓名" align="center" key="nickName" prop="nickName" v-if="columns[0].visible"
80
             :show-overflow-tooltip="true" />
80
             :show-overflow-tooltip="true" />
81
-          <el-table-column label="年龄" align="center" key="age" prop="age" v-if="columns[1].visible" sortable>
81
+          <el-table-column label="年龄" align="center" key="age" prop="age" v-if="columns[1].visible" sortable :sort-method="sortAge">
82
             <template slot-scope="scope">
82
             <template slot-scope="scope">
83
               {{ getAgeByIdCard(scope.row.idCard) }}
83
               {{ getAgeByIdCard(scope.row.idCard) }}
84
             </template>
84
             </template>
756
         newStr = str.join(splitStr)
756
         newStr = str.join(splitStr)
757
       }
757
       }
758
       return newStr
758
       return newStr
759
+    },
760
+    sortAge(a, b) {
761
+      return this.getAgeByIdCard(a.idCard) - this.getAgeByIdCard(b.idCard);
759
     }
762
     }
760
   }
763
   }
761
 };
764
 };

Loading…
Cancel
Save