Browse Source

字典管理bug修改,任务视图增加评论提示及确认

ysc 1 year ago
parent
commit
db99245877

+ 1 - 1
src/api/system/dict.js

@@ -39,7 +39,7 @@ export function updateDict(data) {
 // 删除字典
 export function delDict(dictId) {
   return request({
-    url: '/system/dict/type' + dictId,
+    url: '/system/dict/type/' + dictId,
     method: 'delete'
   })
 }

+ 9 - 0
src/api/task/task.js

@@ -88,3 +88,12 @@ export function splitTask(data) {
     data: data
   })
 }
+
+//确认评论
+export function confirmComment(parmas) {
+  return request({
+    url: '/task/task/confirmComment',
+    method: 'get',
+    params: parmas
+  })
+}

+ 4 - 3
src/store/getters.js

@@ -3,11 +3,12 @@ const getters = {
   device: state => state.app.device,
   token: state => state.user.token,
   avatar: state => state.user.avatar,
+  userId: state => state.user.id,
   name: state => state.user.name,
   roles: state => state.user.roles,
   permissions: state => state.user.permissions,
-  topbarRouters:state => state.permission.topbarRouters,
-  defaultRoutes:state => state.permission.defaultRoutes,
-  sidebarRouters:state => state.permission.sidebarRouters,
+  topbarRouters: state => state.permission.topbarRouters,
+  defaultRoutes: state => state.permission.defaultRoutes,
+  sidebarRouters: state => state.permission.sidebarRouters,
 }
 export default getters

+ 13 - 8
src/store/modules/user.js

@@ -1,5 +1,5 @@
-import { login, logout, getInfo } from '@/api/login'
-import { getToken, setToken, removeToken } from '@/utils/auth'
+import {login, logout, getInfo} from '@/api/login'
+import {getToken, setToken, removeToken} from '@/utils/auth'
 // import { resetRouter } from '@/router'
 
 const user = {
@@ -8,6 +8,7 @@ const user = {
     id: '',
     name: '',
     avatar: '',
+    deptId: '',
     roles: [],
     permissions: []
   },
@@ -25,6 +26,9 @@ const user = {
     SET_AVATAR: (state, avatar) => {
       state.avatar = avatar
     },
+    SET_DEPT_ID: (state, deptId) => {
+      state.deptId = deptId
+    },
     SET_ROLES: (state, roles) => {
       state.roles = roles
     },
@@ -35,11 +39,11 @@ const user = {
 
   actions: {
     // 登录
-    Login({ commit }, userInfo) {
+    Login({commit}, userInfo) {
       const username = userInfo.username.trim()
       const password = userInfo.password
       return new Promise((resolve, reject) => {
-        login({ account: username.trim(), password: password }).then(res => {
+        login({account: username.trim(), password: password}).then(res => {
           setToken(res.data)
           commit('SET_TOKEN', res.data)
           resolve()
@@ -50,7 +54,7 @@ const user = {
     },
 
     // 获取用户信息
-    GetInfo({ commit, state }) {
+    GetInfo({commit, state}) {
       return new Promise((resolve, reject) => {
         getInfo().then(res => {
           const user = res.data.user
@@ -61,9 +65,10 @@ const user = {
           } else {
             commit('SET_ROLES', ['ROLE_DEFAULT'])
           }
-          commit('SET_ID', user.userId)
+          commit('SET_ID', user.id)
           commit('SET_NAME', user.userName)
           commit('SET_AVATAR', avatar)
+          commit('SET_DEPT_ID', user.deptId)
           resolve(res)
         }).catch(error => {
           reject(error)
@@ -72,7 +77,7 @@ const user = {
     },
 
     // 退出系统
-    Logout({ commit, state }) {
+    Logout({commit, state}) {
       return new Promise((resolve, reject) => {
         logout(state.token).then(() => {
           commit('SET_TOKEN', '')
@@ -87,7 +92,7 @@ const user = {
     },
 
     // 前端 登出
-    FedLogOut({ commit }) {
+    FedLogOut({commit}) {
       return new Promise(resolve => {
         commit('SET_TOKEN', '')
         removeToken()

+ 29 - 27
src/views/material/asset.vue

@@ -20,8 +20,11 @@
               v-model="queryParams.assetType"
               placeholder="资产类型"
               style="width: 100px">
-              <el-option label="固定资产" value="0"/>
-              <el-option label="耗材" value="1"/>
+              <el-option
+                v-for="dict in dict.type.asset_type"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"/>
             </el-select>
           </el-form-item>
           <el-form-item label="资产状态" prop="status">
@@ -29,10 +32,11 @@
               v-model="queryParams.status"
               placeholder="资产状态"
               style="width: 120px">
-              <el-option label="在库" value="1"/>
-              <el-option label="出库" value="2"/>
-              <el-option label="出库(不回库)" value="3"/>
-              <el-option label="报失" value="4"/>
+              <el-option
+                v-for="dict in dict.type.asset_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"/>
             </el-select>
           </el-form-item>
           <el-form-item>
@@ -158,8 +162,11 @@
             </el-form-item>
             <el-form-item label="资产类型" prop="assetType">
               <el-radio-group v-model="form.assetType">
-                <el-radio label="0">固定资产</el-radio>
-                <el-radio label="1">耗材</el-radio>
+                <el-radio
+                  v-for="dict in dict.type.asset_type"
+                  :key="dict.value"
+                  :label="dict.value">{{ dict.label }}
+                </el-radio>
               </el-radio-group>
             </el-form-item>
             <el-form-item label="数量" prop="num" v-if="form.assetType==='1'">
@@ -182,10 +189,11 @@
             </el-form-item>
             <el-form-item label="入库来源" prop="source">
               <el-select v-model="form.source">
-                <el-option label="采购" value="1"></el-option>
-                <el-option label="租赁" value="2"></el-option>
-                <el-option label="借用" value="3"></el-option>
-                <el-option label="赠送" value="4"></el-option>
+                <el-option
+                  v-for="dict in dict.type.s_source"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"/>
               </el-select>
             </el-form-item>
             <el-form-item label="购入日期" prop="buyDate">
@@ -292,8 +300,11 @@
             </el-form-item>
             <el-form-item label="流转类型" prop="transferType">
               <el-select v-model="transferForm.transferType">
-                <el-option v-for="item in transferTypeList" :label="item.dictLabel" :key="item.dictValue"
-                           :value="item.dictValue"></el-option>
+                <el-option
+                  v-for="dict in dict.type.transfer_type"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"/>
               </el-select>
             </el-form-item>
             <el-form-item label="流转备注" prop="remark">
@@ -364,6 +375,7 @@ import {addTransfer, getTransferList} from "@/api/material/transfer";
 export default {
   name: "asset",
   components: {Category, DeptUserTree, AssetDetail, Treeselect},
+  dicts: ['asset_type', 'asset_status', 's_source','transfer_type'],
   data() {
     return {
       queryParams: {
@@ -396,7 +408,6 @@ export default {
       transferForm: {},
       assetTransferList: [],
       userList: [],
-      transferTypeList: [],
       transferRules: {
         receiveUserId: [
           {required: true, message: "接收人不能为空", trigger: "change"}
@@ -564,9 +575,6 @@ export default {
       getDeptUserTree('').then(res => {
         this.userList = res.data
       })
-      getDictData('transfer_type').then(res => {
-        this.transferTypeList = res.data
-      })
       getTransferList(row.id).then(res => {
         this.assetTransferList = res.data
       })
@@ -578,15 +586,10 @@ export default {
       })
     },
     getTransferTypeLabel(transferType) {
-      if (this.transferTypeList.length === 0) {
-        getDictData('transfer_type').then(res => {
-          this.transferTypeList = res.data
-        })
-      }
       let typeLabel = ''
-      this.transferTypeList.forEach(item => {
-        if (item.dictValue == transferType) {
-          typeLabel = item.dictLabel
+      this.dict.type.transfer_type.forEach(item => {
+        if (item.value === transferType) {
+          typeLabel = item.label
         }
       })
       return typeLabel
@@ -605,7 +608,6 @@ export default {
             this.getList();
           });
         }
-
       });
     },
     cancelTransferForm() {

+ 3 - 5
src/views/system/dict.vue

@@ -352,8 +352,7 @@ export default {
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getDict(id).then(response => {
+      getDict(row.id).then(response => {
         this.form = response.data;
         this.open = true;
         this.title = "修改字典";
@@ -395,9 +394,8 @@ export default {
 
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$confirm('是否确认删除字典编号为"' + ids + '"的数据项?').then(() => {
-        return delDict(ids);
+      this.$confirm('是否确认删除字典编号为"' + row.id + '"的数据项?').then(() => {
+        return delDict(row.id);
       }).then(() => {
         this.getList();
         this.$message.success("删除成功");

+ 0 - 3
src/views/task/task.vue

@@ -349,9 +349,6 @@ export default {
       getDeptUserTree('').then(res => {
         this.userList = res.data
       })
-      getDictData('task_status').then(res => {
-
-      })
     },
     /** 查询项目列表 */
     getList() {

+ 53 - 22
src/views/task/view.vue

@@ -25,12 +25,12 @@
       </el-form-item>
       <el-form-item prop="status">
         <el-radio-group v-model="queryParams.status" size="mini" @change="getList">
-          <el-radio-button label="0">全部</el-radio-button>
-          <el-radio-button label="1">未开始</el-radio-button>
-          <el-radio-button label="2">进行中</el-radio-button>
-          <el-radio-button label="3">延期</el-radio-button>
-          <el-radio-button label="4">完成</el-radio-button>
-          <el-radio-button label="5">终止</el-radio-button>
+          <el-radio-button
+            v-for="dict in dict.type.task_status"
+            :key="dict.value"
+            :label="dict.value"
+          >{{ dict.label }}
+          </el-radio-button>
         </el-radio-group>
       </el-form-item>
     </el-form>
@@ -71,6 +71,7 @@
           <div v-else style="width: 24px;font-size: 12px">{{ item.week }}</div>
         </template>
         <template slot-scope="scope">
+          <span v-if="scope.row[item.day].comment" class="comment-badge"></span>
           <el-popover
             v-if="scope.row[item.day].value!=''"
             placement="top"
@@ -96,12 +97,18 @@
               <el-table-column label="反馈备注">
                 <template slot-scope="scope">
                   <div>
-                    <div>{{ scope.row.description }}</div>
+                    <span>{{ scope.row.description }}</span>
                     <span v-for="(file,index) in scope.row.fileList">
                                 <a :href="file.url" style="color: darkgreen">
                                   <span v-html="file.fileName"></span>
                                 </a>
                               </span>
+                    <span
+                      v-if="scope.row.feedbackType === '4'&&scope.row.executor===userId&&scope.row.commentConfirm!='1'"
+                      style="position: absolute;right: 2px">
+                    <el-button type="text" icon="el-icon-circle-check" size="mini"
+                               @click="confirmComment(scope.row)">确认</el-button>
+                    </span>
                   </div>
                 </template>
               </el-table-column>
@@ -125,10 +132,13 @@
         </el-form-item>
         <el-form-item label="反馈类型" prop="feedbackType">
           <el-radio-group v-model="form.feedbackType" @input="feedbackTypeChange">
-            <el-radio label="1">进度反馈</el-radio>
-            <el-radio label="2">完成</el-radio>
-            <el-radio label="3">终止</el-radio>
-            <el-radio label="4">评论</el-radio>
+            <el-radio
+              v-for="dict in dict.type.feedback_type"
+              :key="dict.value"
+              :label="dict.value"
+              v-if="dict.value<5"
+            >{{ dict.label }}
+            </el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="工时" prop="hours">
@@ -159,12 +169,14 @@
 </template>
 
 <script>
-import {getTask, listView, addTaskFeedback, getFeedbackList} from "@/api/task/task";
+import {getTask, listView, addTaskFeedback, getFeedbackList, confirmComment} from "@/api/task/task";
 import {getProjectList, getProjectTree} from "@/api/task/project";
 import DateUtil from "@/utils/date"
 import TaskDetail from "./components/taskDetail"
 import FileUpload from "@/components/FileUpload"
 
+import {mapGetters} from 'vuex'
+
 const statusMap = {
   '0': {name: '待查看', type: 'info'},
   '1': {name: '未开始', type: 'info'},
@@ -176,6 +188,10 @@ const statusMap = {
 
 export default {
   components: {TaskDetail, FileUpload},
+  dicts: ['task_status', 'feedback_type'],
+  computed: {
+    ...mapGetters(['userId'])
+  },
   data() {
     let validateValue = (rule, value, callback) => {
       if (this.form.feedbackType != '1' && this.form.feedbackType != '2') {
@@ -276,16 +292,10 @@ export default {
       if (row[column.property]) {
         style.background = this.cellColorMap[row[column.property].color]
       }
-      // if (columnIndex === 1) {
-      //   style.color = '#306FB1'
-      // }
       return style
     },
 
     cellClick(row, column, cell, event) {
-      // if (!row[column.property].color || row[column.property].color === '1') {
-      //   return
-      // }
       if (!row[column.property].value || row[column.property].value === '') {
         return;
       }
@@ -294,13 +304,13 @@ export default {
         return;
       }
       getFeedbackList(row.id, date).then(res => {
-        this.feedbacks = res.data
+        this.feedbacks = res.data.map(item => {
+          item['executor'] = row.executor
+          return item
+        })
       })
     },
     cellDbClick(row, column, cell, event) {
-      // if (!row[column.property].color || row[column.property].color === '1') {
-      //   return
-      // }
       let feedbackDate = DateUtil.getFeedBackDate(this.queryParams.month, column.property)
       if (DateUtil.unix(feedbackDate) > DateUtil.unix()) {
         this.$message.warning("反馈时间不能超过:" + DateUtil.day())
@@ -391,6 +401,14 @@ export default {
         return '评论'
       }
       return '审批'
+    },
+    /** 确认收到评论 */
+    confirmComment(row) {
+      confirmComment({feedbackId: row.id}).then(res => {
+        if (res.code === '2000') {
+          this.getList()
+        }
+      })
     }
   }
 }
@@ -411,4 +429,17 @@ export default {
   margin-bottom: 10px;
 }
 
+.comment-badge {
+  height: 10px;
+  width: 10px;
+  border-radius: 5px;
+  background-color: #409eff;
+  position: absolute;
+  top: 1px;
+  right: 1px;
+  font-size: 8px;
+  color: white;
+  vertical-align: text-top;
+}
+
 </style>