Quellcode durchsuchen

修改项目信息

余思翰 vor 1 Jahr
Ursprung
Commit
da6fee9b31
1 geänderte Dateien mit 200 neuen und 17 gelöschten Zeilen
  1. 200
    17
      oa-ui/src/views/oa/project/index.vue

+ 200
- 17
oa-ui/src/views/oa/project/index.vue Datei anzeigen

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-02-27 17:12:57
5
+ * @LastEditTime: 2024-02-28 17:02:43
6 6
 -->
7 7
 <template>
8 8
   <div class="project-wrapper">
@@ -26,7 +26,7 @@
26 26
       </el-form>
27 27
     </el-row>
28 28
     <!-- 项目统计 -->
29
-    <el-row>
29
+    <!-- <el-row>
30 30
       <el-col>
31 31
         <el-row :gutter="10">
32 32
           <el-col :span="8">
@@ -58,7 +58,7 @@
58 58
           </el-col>
59 59
         </el-row>
60 60
       </el-col>
61
-    </el-row>
61
+    </el-row> -->
62 62
     <!-- 项目列表 -->
63 63
     <el-card style="margin-top: 20px;">
64 64
       <div slot="header" class="card-header">
@@ -68,7 +68,7 @@
68 68
             @click="handleAdd">新增项目</el-button>
69 69
         </div>
70 70
       </div>
71
-      <el-table v-loading="loading" :data="projectList" style="margin-top: 30px;" header-row-class-name="table-header">
71
+      <el-table v-loading="loading" :data="projectList" style="margin-top: 30px;">
72 72
         <el-table-column type="index" width="50">
73 73
         </el-table-column>
74 74
         <el-table-column prop="isFinshed" label="状态" width="90px">
@@ -94,29 +94,121 @@
94 94
         @pagination="getList" />
95 95
     </el-card>
96 96
     <!-- 新建项目 -->
97
-    <el-dialog :title="title" :visible.sync="addOpen" :rules="rules" append-to-body>
98
-      <el-form :model="addForm" label-width="100px">
97
+    <el-dialog :title="title" :visible.sync="addOpen" append-to-body>
98
+      <el-form :model="addForm" :rules="rules" label-width="100px">
99 99
         <el-form-item label="项目编号:" prop="projectNumber">
100 100
           <el-input v-model="addForm.projectNumber"></el-input>
101 101
         </el-form-item>
102 102
         <el-form-item label="项目名称:" prop="projectName">
103 103
           <el-input v-model="addForm.projectName"></el-input>
104 104
         </el-form-item>
105
-        <el-form-item label="项目负责人:" prop="projectNumber">
106
-          <el-button type="primary" plain icon="el-icon-plus" size="mini">选择</el-button>
105
+        <el-form-item label="项目负责人:" prop="projectLeader">
106
+          <el-tag effect="plain" type="warning" style="margin-right: 10px;"
107
+            v-if="addForm.projectLeaderName != undefined">{{ addForm.projectLeaderName }}</el-tag>
108
+          <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="choosePeople">选择</el-button>
109
+        </el-form-item>
110
+        <el-form-item label="项目类型:" prop="projectType">
111
+          <el-input v-model="addForm.projectType"></el-input>
112
+        </el-form-item>
113
+        <el-form-item label="项目级别:" prop="projectLevel">
114
+          <el-radio v-model="addForm.projectLevel" label="0">一般项目</el-radio>
115
+          <el-radio v-model="addForm.projectLevel" label="1">重大项目</el-radio>
116
+        </el-form-item>
117
+        <el-form-item label="项目来源:" prop="projectSource">
118
+          <el-radio v-model="addForm.projectSource" label="0">院内</el-radio>
119
+          <el-radio v-model="addForm.projectSource" label="1">院外</el-radio>
107 120
         </el-form-item>
121
+        <el-form-item label="甲方单位:" prop="partyA">
122
+          <el-input v-model="addForm.partyA"></el-input>
123
+        </el-form-item>
124
+        <el-form-item label="联系人:" prop="contactPerson">
125
+          <el-input v-model="addForm.contactPerson"></el-input>
126
+        </el-form-item>
127
+        <el-form-item label="联系电话:" prop="telephone">
128
+          <el-input v-model="addForm.telephone"></el-input>
129
+        </el-form-item>
130
+        <el-form-item label="项目概况:" prop="projectRegistrant">
131
+          <table border="1">
132
+            <tr>
133
+              <td style="width:250px;">工作内容</td>
134
+              <td>等级或比例尺</td>
135
+              <td>单位</td>
136
+              <td>工作量</td>
137
+              <td style="width:100px;">要求完成时间</td>
138
+              <td>备注</td>
139
+            </tr>
140
+            <tr v-for="(work, index) in workList" :key="index">
141
+              <td>
142
+                <el-input v-model="work.name" type="textarea" autosize clearable></el-input>
143
+              </td>
144
+              <td>
145
+                <el-input v-model="work.scale" clearable></el-input>
146
+              </td>
147
+              <td>
148
+                <el-input v-model="work.unit" clearable></el-input>
149
+              </td>
150
+              <td>
151
+                <el-input v-model="work.workload" clearable></el-input>
152
+              </td>
153
+              <td>
154
+                <!-- <el-input v-model="work.deadline" clearable></el-input> -->
155
+                <el-date-picker style="width:140px;" v-model="work.deadline" type="date" placeholder="选择日期">
156
+                </el-date-picker>
157
+              </td>
158
+              <td>
159
+                <el-input v-model="work.remark" type="textarea" autosize clearable></el-input>
160
+              </td>
161
+              <td>
162
+                <el-button type="danger" icon="el-icon-minus" size="mini" circle
163
+                  @click="deletWorkItem(index)"></el-button>
164
+              </td>
165
+            </tr>
166
+          </table>
167
+
168
+          <el-button icon="el-icon-plus" size="mini" @click="addWorkList"></el-button>
169
+        </el-form-item>
170
+
171
+        <el-form-item label="项目登记人:" prop="projectRegistrant">
172
+          <el-input v-model="addForm.projectRegistrant"></el-input>
173
+        </el-form-item>
174
+
175
+
108 176
       </el-form>
109 177
       <div slot="footer" class="dialog-footer" style="text-align: center;">
110 178
         <el-button type="primary" @click="confirmAddForm">确 定</el-button>
111
-        <el-button @click="addOpen = false">取 消</el-button>
179
+        <el-button @click="cancel">取 消</el-button>
112 180
       </div>
181
+      <!-- 人员选择对话框 -->
182
+      <el-dialog width="30%" title="选择项目负责人" :visible.sync="peopleVisible" append-to-body>
183
+        <el-form>
184
+          <el-form-item label="部门:">
185
+            <el-select v-model="peopleForm.deptId" @change="handleChangeDept">
186
+              <el-option v-for="item in peopleForm.deptList" :key="item.deptId" :label="item.deptName"
187
+                :value="item.deptId" v-if="item.deptName != '四川中水成勘院测绘工程有限责任公司'">
188
+              </el-option>
189
+            </el-select>
190
+          </el-form-item>
191
+          <el-form-item label="人员:">
192
+            <el-select v-model="peopleForm.userId">
193
+              <el-option v-for="item in peopleForm.userList" :key="item.userId" :label="item.nickName"
194
+                :value="item.userId">
195
+              </el-option>
196
+            </el-select>
197
+          </el-form-item>
198
+          <el-form-item>
199
+            <el-button @click="confirmPeople" type="primary">确定</el-button>
200
+            <el-button>取消</el-button>
201
+          </el-form-item>
202
+        </el-form>
203
+      </el-dialog>
113 204
     </el-dialog>
114 205
   </div>
115 206
 </template>
116 207
 
117 208
 <script>
118 209
 import { listProject } from "@/api/oa/project/project";
119
-
210
+import { listDept } from '@/api/system/dept'
211
+import { listUser } from '@/api/system/user'
120 212
 export default {
121 213
   data() {
122 214
     return {
@@ -124,9 +216,10 @@ export default {
124 216
       queryParams: {
125 217
         pageNum: 1,
126 218
         pageSize: 10,
127
-        projectNumber: undefined,
128
-        projectLeader: undefined,
129
-        projectName: undefined,
219
+        projectNumber: '',
220
+        projectLeader: '',
221
+        projectLeaderName: undefined,
222
+        projectName: '',
130 223
       },
131 224
       projectList: [],
132 225
       total: 0,
@@ -135,23 +228,48 @@ export default {
135 228
       title: '',
136 229
       addForm: {},
137 230
       rules: {
138
-        projectNumber: [{ required: true, message: '请输入项目编号', trigger: 'blur' }]
139
-      }
231
+        projectNumber: [{ required: true, message: '请输入项目编号', trigger: 'blur' }],
232
+        projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }]
233
+      },
234
+      peopleVisible: false,
235
+      peopleForm: {
236
+        deptId: '',
237
+        deptList: [],
238
+        userId: '',
239
+        userList: []
240
+      },
241
+      workList: [{
242
+        name: '',
243
+        scale: '',
244
+        unit: '',
245
+        workload: '',
246
+        deadline: '',
247
+        remark: ''
248
+      }]
140 249
     }
141 250
   },
142 251
   created() {
143 252
     this.getList();
253
+    this.getDeptList();
144 254
   },
145 255
   methods: {
146 256
     // 查询项目列表
147 257
     getList() {
148 258
       this.loading = true
149
-      listProject(this.queryForm).then(response => {
259
+      listProject(this.queryParams).then(response => {
150 260
         this.projectList = response.rows;
151 261
         this.total = response.total;
152 262
         this.loading = false;
153 263
       })
154 264
     },
265
+    getDeptList() {
266
+      listDept({
267
+        deptName: undefined,
268
+        status: undefined
269
+      }).then(res => {
270
+        this.peopleForm.deptList = res.data
271
+      })
272
+    },
155 273
     handleQuery() {
156 274
       this.queryParams.pageNum = 1;
157 275
       this.getList();
@@ -166,8 +284,62 @@ export default {
166 284
     handleDelete(row) {
167 285
 
168 286
     },
169
-    confirmAddForm(){
287
+    confirmAddForm() {
170 288
 
289
+    },
290
+    // 人员选择
291
+    choosePeople() {
292
+      this.peopleVisible = true;
293
+    },
294
+    // 改变部门选择
295
+    handleChangeDept(deptId) {
296
+      this.peopleForm.userId = '';
297
+      listUser({ pageSize: 999999, deptId }).then(res => {
298
+        console.log(res);
299
+        this.peopleForm.userList = res.rows
300
+      })
301
+    },
302
+    // 确定项目负责人
303
+    confirmPeople() {
304
+      this.addForm.projectLeader = this.peopleForm.userId;
305
+      this.addForm.projectLeaderName = this.tagLeader()
306
+      this.peopleVisible = false
307
+    },
308
+    tagLeader() {
309
+      if (this.addForm.projectLeader == '' || this.addForm.projectLeader == undefined || this.addForm.projectLeader == null) {
310
+        return undefined
311
+      } else {
312
+        for (let user of this.peopleForm.userList) {
313
+          if (this.addForm.projectLeader == user.userId) {
314
+            return user.nickName
315
+          }
316
+        }
317
+      }
318
+    },
319
+    cancel() {
320
+      this.peopleForm.deptId = '';
321
+      this.peopleForm.userId = '';
322
+      this.addOpen = false;
323
+      this.addForm = {}
324
+    },
325
+    addWorkList() {
326
+      this.workList.push({
327
+        name: '',
328
+        scale: '',
329
+        unit: '',
330
+        workload: '',
331
+        deadline: '',
332
+        remark: ''
333
+      });
334
+    },
335
+    deletWorkItem(index) {
336
+      let arr = this.workList
337
+      if (arr.length == 1) {
338
+        return
339
+      }
340
+      if (index >= 0 && index < arr.length) {
341
+        arr.splice(index, 1);
342
+      }
171 343
     }
172 344
   },
173 345
 }
@@ -187,4 +359,15 @@ export default {
187 359
   justify-content: space-between;
188 360
   padding: 0 10px;
189 361
 }
362
+
363
+table {
364
+  /*居中*/
365
+  margin: 0 auto;
366
+  /*边框*/
367
+  /* border: 1px solid black; */
368
+  text-align: center;
369
+  border-collapse: collapse;
370
+  /*设置背景颜色*/
371
+  /* background-color: #bfa; */
372
+}
190 373
 </style>

Laden…
Abbrechen
Speichern