Преглед на файлове

项目管理页面修改

ysc преди 2 години
родител
ревизия
359d1b9e1a
променени са 3 файла, в които са добавени 95 реда и са изтрити 60 реда
  1. 5 2
      src/components/DeptUserTree/index.vue
  2. 38 6
      src/views/task/components/project.vue
  3. 52 52
      src/views/task/task.vue

+ 5 - 2
src/components/DeptUserTree/index.vue

@@ -13,9 +13,12 @@
         :data="userList"
         node-key="id"
         show-checkbox
-        :props="{label:'name'}"
-        :default-expand-all="true"
+        default-expand-all
         :filter-node-method="filterNode">
+        <span class="custom-tree-node" slot-scope="{ node, data }">
+          <span>{{ data.name }}</span>
+          <span v-if="data.type==='d'" style="font-size: 12px;color: #1c84c6">(部门)</span>
+        </span>
       </el-tree>
       <div slot="footer" class="dialog-footer">
         <el-button size="mini" @click="closeUserDialog">取消</el-button>

+ 38 - 6
src/views/task/components/project.vue

@@ -2,7 +2,7 @@
   <div>
     <div class="head-container">
       <el-button size="mini" type="primary" plain icon="el-icon-plus" @click="handleAdd"
-                 v-hasPermi="['task:project:add']">新增结构
+                 v-hasPermi="['task:project:add']">新增项目
       </el-button>
 
       <el-input
@@ -25,7 +25,8 @@
         highlight-current
         @node-click="handleNodeClick">
             <span class="custom-tree-node" slot-scope="{ node, data }">
-              <span>{{ node.label }}</span>
+              <div>{{ node.label }}</div>
+              <div style="font-size: 12px;color: #1c84c6">({{ data.type }})</div>
               <el-popover
                 placement="right"
                 trigger="hover">
@@ -47,10 +48,11 @@
           <el-input v-model="form.projectName" placeholder="请输入名称"/>
         </el-form-item>
         <el-form-item label="上级结构" prop="parentId">
-          <treeselect v-model="form.parentId" :options="projectOptions" :normalizer="normalizer" placeholder="请选择"/>
+          <treeselect v-model="form.parentId" :options="projectOptions" :normalizer="normalizer"
+                      @select="treeSelectChange" placeholder="请选择"/>
         </el-form-item>
         <el-form-item label="类型" prop="type">
-          <el-radio-group v-model="form.type">
+          <el-radio-group v-model="form.type" :disabled="typeDisable">
             <el-radio label="1">分类</el-radio>
             <el-radio label="2">项目</el-radio>
             <el-radio label="3">模块</el-radio>
@@ -112,7 +114,7 @@ export default {
       },
       // 表单参数
       form: {},
-
+      typeDisable: false,
       // 表单校验
       rules: {
         projectName: [
@@ -167,6 +169,7 @@ export default {
         description: undefined,
         status: "0",
       };
+      this.typeDisable = false
       this.resetForm("form");
     },
     /** 转换项目数据结构 */
@@ -180,12 +183,29 @@ export default {
         children: node.children
       };
     },
+    treeSelectChange(val) {
+      console.log(val);
+      if (val.type === '1') {
+        this.form.type = '2'
+      } else {
+        this.form.type = '3'
+      }
+    },
     /** 新增按钮操作 */
     handleAdd(row) {
       this.reset();
-      if (row != undefined) {
+      if (row.id != undefined) {
         this.form.parentId = row.id;
+        if (row.type === '分类') {
+          this.form.type = '2'
+        } else {
+          this.form.type = '3'
+        }
+      } else {
+        this.form.type = '1'
       }
+      this.typeDisable = true
+
       this.open = true;
       this.title = "添加项目";
       listProject().then(response => {
@@ -201,10 +221,14 @@ export default {
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
+      listProject().then(response => {
+        this.projectOptions = this.handleTree(response.data, "id");
+      });
       getProject(row.id).then(res => {
         this.form = res.data;
         this.open = true;
         this.title = "修改项目";
+        this.typeDisable = true
       });
     },
 
@@ -254,4 +278,12 @@ export default {
   margin-bottom: 20px;
   justify-content: space-between;
 }
+
+.custom-tree-node {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  font-size: 14px;
+  padding-right: 8px;
+}
 </style>

+ 52 - 52
src/views/task/task.vue

@@ -25,7 +25,7 @@
             <el-select
               v-model="queryParams.status"
               placeholder="项目状态"
-              style="width: 200px">
+              style="width: 100px">
               <el-option label="全部" value="0"/>
               <el-option label="未开始" value="1"/>
               <el-option label="进行中" value="2"/>
@@ -59,18 +59,8 @@
                   size="mini">
           <el-table-column label="任务编号" prop="id" width="80"/>
           <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
-          <!--          <el-table-column label="任务类型" prop="taskType" width="80">-->
-          <!--            <template slot-scope="scope">-->
-          <!--              <span v-if="scope.row.taskType==1">软件开发</span>-->
-          <!--              <span v-if="scope.row.taskType==2">硬件开发</span>-->
-          <!--              <span v-if="scope.row.taskType==3">测试</span>-->
-          <!--              <span v-if="scope.row.taskType==4">实施</span>-->
-          <!--              <span v-if="scope.row.taskType==5">日常事务</span>-->
-          <!--            </template>-->
-          <!--          </el-table-column>-->
-          <!--          <el-table-column label="所属项目" prop="projectName" :show-overflow-tooltip="true"/>-->
           <el-table-column label="执行人" prop="executorName"/>
-          <el-table-column label="进度" prop="progressValue">
+          <el-table-column label="进度" prop="progressValue" width="80">
             <template slot-scope="scope">
               <span>{{ (scope.row.progressValue ? scope.row.progressValue : 0) + '%' }}</span>
             </template>
@@ -89,46 +79,39 @@
             </template>
           </el-table-column>
 
-          <el-table-column label="创建时间" prop="createTime" width="120">
-            <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.createTime) }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="操作" width="210">
+          <!--          <el-table-column label="创建时间" prop="createTime" width="120">-->
+          <!--            <template slot-scope="scope">-->
+          <!--              <span>{{ parseTime(scope.row.createTime) }}</span>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <el-table-column label="操作" width="120">
             <template slot-scope="scope">
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-edit"
-                @click="handleAudit(scope.row)"
-                :disabled="scope.row.progressValue!=100||(scope.row.status!='2'&&scope.row.status!='3')"
-                v-hasPermi="['task:task:audit']"
+              <el-button size="mini"
+                         type="text"
+                         icon="el-icon-edit"
+                         @click="handleAudit(scope.row)"
+                         :disabled="scope.row.progressValue!=100||(scope.row.status!='2'&&scope.row.status!='3')"
+                         v-hasPermi="['task:task:audit']"
               >审核
               </el-button>
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-edit"
-                @click="handleSplit(scope.row)"
-                v-hasPermi="['task:task:split']"
-              >分解
-              </el-button>
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-edit"
-                @click="handleUpdate(scope.row)"
-                v-hasPermi="['task:task:edit']"
-              >终止
-              </el-button>
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-delete"
-                @click="handleDelete(scope.row)"
-                v-hasPermi="['task:task:delete']"
-              >删除
-              </el-button>
+              <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
+                           v-hasPermi="['task:task:edit','task:task:split', 'task:task:delete']">
+                <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item command="handleSplit" icon="el-icon-edit"
+                                    v-hasPermi="['task:task:split']"
+                  >分解
+                  </el-dropdown-item>
+                  <el-dropdown-item command="handleUpdate" icon="el-icon-edit"
+                                    v-hasPermi="['task:task:edit']"
+                  >终止
+                  </el-dropdown-item>
+                  <el-dropdown-item command="handleDelete" icon="el-icon-delete"
+                                    v-hasPermi="['task:task:delete']"
+                  >删除
+                  </el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
             </template>
           </el-table-column>
         </el-table>
@@ -151,7 +134,7 @@
 
     <!-- 添加或修改任务配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="490px" append-to-body :close-on-click-modal="false">
-      <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="100px">
+      <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="110px">
         <el-form-item label="任务名称" prop="taskName">
           <el-input v-model="form.taskName" placeholder="请输入任务名称"/>
         </el-form-item>
@@ -166,10 +149,11 @@
             value-format="yyyy-MM-dd"
             range-separator="至"
             start-placeholder="开始日期"
-            end-placeholder="结束日期">
+            end-placeholder="结束日期"
+            style="width: 340px">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="执行人" prop="executor">
+        <el-form-item label="执行(负责)人" prop="executor">
           <el-cascader
             v-model="form.executor"
             :options="userList"
@@ -476,6 +460,22 @@ export default {
     removeFile(val) {
       this.form.files.splice(val)
     },
+    /** 更多操作触发 */
+    handleCommand(command, row) {
+      switch (command) {
+        case 'handleSplit':
+          this.handleSplit(row)
+          break
+        case 'handleUpdate':
+          this.handleUpdate(row)
+          break
+        case 'handleDelete':
+          this.handleDelete(row)
+          break
+        default:
+          break
+      }
+    },
     /** 审核按钮操作 */
     handleAudit(row) {
       getTask(row.id).then(res => {