Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

humingbo vor 2 Jahren
Ursprung
Commit
68ff160366

+ 25 - 4
src/components/DeptUserTree/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="dut">
     <el-input v-model="userNames" size="mini" disabled>
       <el-button @click="openUserDialog" icon="el-icon-search" slot="append"></el-button>
     </el-input>
@@ -12,15 +12,18 @@
         ref="dut"
         :data="userList"
         node-key="id"
-        show-checkbox
+        :show-checkbox="multiple"
         default-expand-all
+        @check-change="checkChange"
+        @node-click="checkChange"
         :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">
+
+      <div v-if="multiple" slot="footer" class="dialog-footer">
         <el-button size="mini" @click="closeUserDialog">取消</el-button>
         <el-button size="mini" type="primary" class="title" @click="submitUserForm">确定</el-button>
       </div>
@@ -36,6 +39,10 @@ export default {
     userList: {
       type: Array,
       default: []
+    },
+    multiple: {
+      type: Boolean,
+      default: false
     }
   },
   watch: {
@@ -55,6 +62,14 @@ export default {
       if (!value) return true;
       return data.name.indexOf(value) !== -1;
     },
+    checkChange(data) {
+      if (this.multiple) {
+        return
+      }
+      this.$emit('selected', data.id)
+      this.userNames = data.name
+      this.usersVisible = false
+    },
     submitUserForm() {
       let checkedNodes = this.$refs.dut.getCheckedNodes(true, false);
       let val = checkedNodes.map(node => node.id);
@@ -77,6 +92,12 @@ export default {
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
+//dut {
+
+.el-input.is-disabled .el-input__inner {
+  background-color: #ffffff;
+}
 
+//}
 </style>

+ 4 - 0
src/utils/request.js

@@ -49,6 +49,10 @@ service.interceptors.response.use(
 
     // if the custom code is not 20000, it is judged as an error.
     if (res.code !== '2000') {
+
+      if (res.code === 'S.F-2001') {
+        return res
+      }
       if (res.code === 'S-F-5000') {
         store.dispatch('Logout').then(() => {
           location.href = process.env.VUE_APP_CONTEXT_PATH + "dashboard";

+ 13 - 11
src/views/material/asset.vue

@@ -285,7 +285,7 @@
               </el-tooltip>
             </el-form-item>
             <el-form-item label="选择配件" prop="accessoriesId">
-              <el-select v-model="transferForm.accessoriesId" multiple>
+              <el-select v-model="transferForm.accessoriesId" multiple style="width: 200px">
                 <el-option v-for="(item,index) in accessoryList" :label="item.accessoryName" :key="index"
                            :value="item.id">
                   <span style="float: left">{{ item.accessoryName }}</span>
@@ -294,15 +294,11 @@
               </el-select>
             </el-form-item>
             <el-form-item label="接收人" prop="receiveUserId">
-              <el-cascader
-                v-model="transferForm.receiveUserId"
-                :options="userList"
-                @change="(val)=>selectExecutor(val,'form')"
-                :props="{ expandTrigger: 'hover',value:'id',label:'name' }"
-                :show-all-levels="false"></el-cascader>
+              <dept-user-tree ref="dut" :userList="userList" style="width: 200px"
+                              @selected="(val)=>transferForm.receiveUserId = val"></dept-user-tree>
             </el-form-item>
             <el-form-item label="流转类型" prop="transferType">
-              <el-select v-model="transferForm.transferType">
+              <el-select v-model="transferForm.transferType" style="width: 200px">
                 <el-option
                   v-for="dict in dict.type.transfer_type"
                   :key="dict.value"
@@ -310,7 +306,7 @@
                   :value="dict.value"/>
               </el-select>
             </el-form-item>
-            <el-form-item label="流转备注" prop="remark">
+            <el-form-item label="流转备注" prop="transferRemark">
               <el-input v-model="transferForm.transferRemark" type="textarea"></el-input>
             </el-form-item>
           </el-form>
@@ -408,6 +404,9 @@ export default {
         assetType: [
           {required: true, message: "资产类型不能为空", trigger: "change"}
         ],
+        source: [
+          {required: true, message: "入库来源不能为空", trigger: "change"}
+        ],
         location: [
           {required: true, message: "定位位置不能为空", trigger: "blur"}
         ]
@@ -419,10 +418,13 @@ export default {
       userList: [],
       transferRules: {
         receiveUserId: [
-          {required: true, message: "接收人不能为空", trigger: "change"}
+          {required: true, message: "接收人不能为空", trigger: "blur"}
         ],
         transferType: [
           {required: true, message: "流转类型不能为空", trigger: "change"}
+        ],
+        transferRemark: [
+          {required: true, message: "流转备注不能为空", trigger: "blur"}
         ]
       },
       detailOpen: false
@@ -603,6 +605,7 @@ export default {
       })
       return typeLabel
     },
+
     submitTransferForm() {
       this.$refs["transferForm"].validate(valid => {
         if (valid) {
@@ -610,7 +613,6 @@ export default {
           if (this.transferForm.accessoriesId) {
             this.transferForm.accessoriesId = this.transferForm.accessoriesId.join()
           }
-          this.transferForm.receiveUserId = this.transferForm.receiveUserId[this.transferForm.receiveUserId.length - 1]
           addTransfer(this.transferForm).then(res => {
             this.$message.success("流转成功");
             this.transferOpen = false;

+ 5 - 8
src/views/material/myReceive.vue

@@ -1,12 +1,6 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true">
-      <el-form-item label="是否配件" prop="accessoryFlag">
-        <el-switch v-model="queryParams.accessoryFlag"
-                   active-value="1"
-                   inactive-value="0">
-        </el-switch>
-      </el-form-item>
       <el-form-item label="资产类型" prop="assetType">
         <el-select
           v-model="queryParams.assetType"
@@ -25,7 +19,10 @@
 
     <el-table :data="assetList"
               @row-click="rowClick"
-              size="mini">
+              size="mini"
+              row-key="id"
+              :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
+
       <el-table-column label="资产编号" prop="assetNumber" :show-overflow-tooltip="true"/>
       <el-table-column label="物品名称" prop="assetName" min-width="100" :show-overflow-tooltip="true"/>
       <el-table-column label="部门编号" prop="deptAssetNumber" :show-overflow-tooltip="true"/>
@@ -46,7 +43,7 @@
             plain
             icon="el-icon-coordinate"
             size="mini"
-            v-if="scope.row.receiveConfirm!='1'"
+            v-if="scope.row.receiveConfirm==='0'"
             @click="handleConfirm(scope.row)"
           >领用确认
           </el-button>

+ 12 - 10
src/views/task/components/project.vue

@@ -26,7 +26,7 @@
         @node-click="handleNodeClick">
             <span class="custom-tree-node" slot-scope="{ node, data }">
               <div>{{ node.label }}</div>
-              <div style="font-size: 12px;color: #1c84c6">({{ data.type }})</div>
+              <div v-if="data.type!='模块'" style="font-size: 12px;color: #1c84c6">({{ data.type }})</div>
               <el-popover
                 placement="right"
                 trigger="hover">
@@ -53,13 +53,13 @@
           <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" :disabled="typeDisable">
-            <el-radio label="1">分类</el-radio>
-            <el-radio label="2">项目</el-radio>
-            <el-radio label="3">模块</el-radio>
-          </el-radio-group>
-        </el-form-item>
+        <!--        <el-form-item label="类型" prop="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>-->
+        <!--          </el-radio-group>-->
+        <!--        </el-form-item>-->
         <el-form-item label="状态" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio label="0">正常</el-radio>
@@ -69,8 +69,8 @@
         <el-form-item label="描述" prop="description">
           <el-input v-model="form.description" type="textarea" placeholder="请输入内容"></el-input>
         </el-form-item>
-        <el-form-item label="可查看人员">
-          <dept-user-tree :userList="userList" @selected="selectCoExecutor"/>
+        <el-form-item label="可查看人员" prop="viewable">
+          <dept-user-tree ref="dut" :userList="userList" :multiple="true" @selected="selectCoExecutor"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -160,6 +160,7 @@ export default {
     // 取消按钮
     cancel() {
       this.open = false;
+      this.$refs.dut.clearText()
       this.reset();
     },
     // 表单重置
@@ -170,6 +171,7 @@ export default {
         categoryId: undefined,
         description: undefined,
         status: "0",
+        viewable: undefined
       };
       this.typeDisable = false
       this.resetForm("form");

+ 96 - 28
src/views/task/task.vue

@@ -7,7 +7,7 @@
       <el-col :span="19" :xs="24">
         <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true">
           <el-form-item label="执行(负责)人" prop="executors">
-            <dept-user-tree ref="dut" :userList="userList"
+            <dept-user-tree ref="dut" :userList="userList" :multiple="true"
                             @selected="(val)=>queryParams.executors=val"></dept-user-tree>
           </el-form-item>
           <el-form-item label="月份选择" prop="month">
@@ -159,15 +159,11 @@
           </el-date-picker>
         </el-form-item>
         <el-form-item label="执行(负责)人" prop="executor">
-          <el-cascader
-            v-model="form.executor"
-            :options="userList"
-            @change="(val)=>selectExecutor(val,'form')"
-            :props="{ expandTrigger: 'hover',value:'id',label:'name' }"
-            :show-all-levels="false"></el-cascader>
+          <dept-user-tree ref="dut2" :userList="userList"
+                          @selected="(val)=>selectExecutor(val,'form')"/>
         </el-form-item>
         <el-form-item label="共同执行人" prop="coExecutor">
-          <dept-user-tree :userList="userList" @selected="selectCoExecutor"/>
+          <dept-user-tree ref="dut3" :userList="userList" :multiple="true" @selected="selectCoExecutor"/>
         </el-form-item>
         <el-form-item label="任务附件">
           <file-upload @getFileUrl="getFileUrl" @removeFile="removeFile"></file-upload>
@@ -229,13 +225,8 @@
               <el-input v-model="child.taskName" style="width: 350px"/>
             </el-form-item>
             <el-form-item label="执行人" prop="executor">
-              <el-cascader
-                v-model="child.executor"
-                :options="userList"
-                filterable
-                @change="(val)=>selectExecutor(val,'splitForm',index)"
-                :props="{ expandTrigger: 'hover',value:'id',label:'name' }"
-                :show-all-levels="false"></el-cascader>
+              <dept-user-tree ref="dutSplit" :userList="userList" style="width: 350px"
+                              @selected="(val)=>selectExecutor(val,'splitForm',index)"/>
             </el-form-item>
             <el-form-item label="起止时间" prop="rangeDate">
               <el-date-picker
@@ -256,6 +247,22 @@
       </div>
     </el-dialog>
 
+    <el-dialog title="该时间段内有人员安排冲突,是否继续保存?" :visible.sync="confirmOpen" append-to-body :close-on-click-modal="false">
+      <el-table :data="conflictTasks" size="mini">
+        <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
+        <el-table-column label="执行(负责)人" prop="executorName"/>
+        <el-table-column label="任务起止时间" width="170">
+          <template slot-scope="scope">
+            <span>{{ scope.row.beginDate + ' 至 ' + scope.row.endDate }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="mini" @click="submitConfirm">确 定</el-button>
+        <el-button size="mini" @click="cancelConfirm">取 消</el-button>
+      </div>
+    </el-dialog>
+
   </div>
 </template>
 
@@ -327,14 +334,14 @@ export default {
         taskName: [
           {required: true, message: "任务名称不能为空", trigger: "blur"}
         ],
-        taskType: [
-          {required: true, message: "任务类型不能为空", trigger: "change"}
+        projectId: [
+          {required: true, message: "所属项目不能为空", trigger: "blur"}
         ],
         rangeDate: [
           {required: true, message: "起止时间不能为空", trigger: "change"}
         ],
         executor: [
-          {required: true, message: "执行人不能为空", trigger: "change"}
+          {required: true, message: "执行人不能为空", trigger: "blur"}
         ]
       },
       auditRules: {
@@ -342,6 +349,8 @@ export default {
           {required: true, message: "审核意见不能为空", trigger: "change"}
         ]
       },
+      confirmOpen: false,
+      conflictTasks: []
     };
   },
   created() {
@@ -458,10 +467,10 @@ export default {
     selectExecutor(val, form, index) {
       if (form === 'splitForm') {
         let child = this.splitForm.children[index];
-        child.executor = val[val.length - 1]
+        child.executor = val
       }
       if (form === 'form') {
-        this.form.executor = val[val.length - 1]
+        this.form.executor = val
       }
     },
     selectCoExecutor(val) {
@@ -521,15 +530,55 @@ export default {
           this.form.beginDate = this.form.rangeDate[0]
           this.form.endDate = this.form.rangeDate[1]
           this.form.fileUrl = JSON.stringify(this.form.files)
+          this.form.checkTaskConflict = true;
           addTask(this.form).then(res => {
-            this.$message.success("新增成功");
-            this.open = false;
-            this.reset();
-            this.getList();
+            if (res.code === 'S.F-2001') {
+              this.conflictTasks = res.data
+              this.confirmOpen = true
+            } else {
+              this.$message.success("新增成功");
+              this.open = false;
+              this.reset();
+              this.getList();
+            }
           });
         }
       });
     },
+    submitConfirm() {
+      if (this.open) {
+        this.form.checkTaskConflict = false;
+        addTask(this.form).then(res => {
+          this.$message.success("新增成功");
+          this.open = false;
+          this.confirmOpen = false;
+          this.reset();
+          this.getList();
+        });
+      }
+      if (this.splitOpen) {
+        this.splitForm.checkTaskConflict = true;
+        splitTask(this.splitForm).then(res => {
+          this.resetForm("splitForm");
+          this.getList()
+          this.splitOpen = false
+          this.confirmOpen = false;
+          this.$message.success("操作成功");
+        })
+      }
+    },
+    cancelConfirm() {
+      this.open = false;
+      this.splitOpen = false;
+      this.confirmOpen = false;
+      this.$refs.dut2.clearText()
+      this.$refs.dut3.clearText()
+      let dutSplit = this.$refs.dutSplit || [];
+      for (let key in dutSplit) {
+        dutSplit[key].clearText()
+      }
+      this.resetForm("splitForm");
+    },
 
     /** 审核提交按钮 */
     submitAudit() {
@@ -546,12 +595,31 @@ export default {
     },
     /** 分解任务提交按钮 */
     submitSplit() {
+      let validResult = true
+      let splitChild = this.$refs.splitChild;
+      for (let key in splitChild) {
+        splitChild[key].validate(valid => {
+          if (!valid) {
+            validResult = valid
+          }
+        })
+      }
+      if (!validResult) {
+        return
+      }
+      this.splitForm.checkTaskConflict = true;
       splitTask(this.splitForm).then(res => {
-        this.resetForm("splitForm");
-        this.getList()
-        this.splitOpen = false
-        this.$message.success("操作成功");
+        if (res.code === 'S.F-2001') {
+          this.conflictTasks = res.data
+          this.confirmOpen = true
+        } else {
+          this.resetForm("splitForm");
+          this.getList()
+          this.splitOpen = false
+          this.$message.success("操作成功");
+        }
       })
+
     },
 
     /** 终止按钮操作 */