wenhongquan 3 years ago
parent
commit
8e1a257f22

+ 123 - 68
src/components/Task/Add/index.vue

@@ -4,7 +4,28 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="工单号:">
-             <el-input v-model="taskinfo.taskCode" />
+            <el-input v-model="taskinfo.taskCode" />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="行政区:">
+            <el-select
+              v-model="taskinfo.taskArea"
+              class="m-1"
+              placeholder="请选择"
+            >
+              <el-option
+                v-for="item in sys_area"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="其他工单号">
+            <el-input v-model="taskinfo.taskOtherId" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -17,12 +38,22 @@
               <el-option
                 v-for="item in task_type"
                 :label="item.label"
-                :value=" parseInt(item.value)"
+                :value="parseInt(item.value)"
               ></el-option>
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="12">
+          <el-form-item label="道路名">
+            <el-input v-model="taskinfo.taskAddrRoad" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="投诉人电话">
+            <el-input v-model="taskinfo.taskComplainConnect" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
           <el-form-item label="班组区域:">
             <el-tree-select
               v-model="taskinfo.taskDeptRange"
@@ -30,10 +61,6 @@
               :data="treedept"
               check-strictly="true"
             />
-
-            <!-- <el-select v-model="taskinfo.taskDeptRange" class="m-1" placeholder="请选择">
-                                <el-option v-for="item in alldept" :label="item.deptName" :value="item.deptId"></el-option>
-                            </el-select> -->
           </el-form-item>
         </el-col>
 
@@ -95,55 +122,48 @@
           </el-form-item>
         </el-col>
 
-        <el-col :span="12">
+        <!-- <el-col :span="12">
           <el-form-item label="设施编号:">
             <el-input v-model="taskinfo.taskFacilitieCode" />
           </el-form-item>
-        </el-col>
-
-        <el-col :span="12">
-          <el-form-item label="来件备注:">
-            <el-input v-model="taskinfo.taskFromRemark" />
-          </el-form-item>
-        </el-col>
-
-        <el-col :span="12">
-          <el-form-item label="投诉人电话">
-            <el-input v-model="taskinfo.taskComplainConnect" />
-          </el-form-item>
-        </el-col>
+        </el-col> -->
 
         <el-col :span="12">
-          <el-form-item label="道路名">
-            <el-input v-model="taskinfo.taskAddrRoad" />
+          <el-form-item label="是否需要确认:">
+            <el-select
+              v-model="taskinfo.remark"
+              class="m-1"
+              placeholder="请选择"
+            >
+              <el-option label="是" value="1"></el-option>
+              <el-option label="否" value="0"></el-option>
+            </el-select>
           </el-form-item>
         </el-col>
 
         <el-col :span="12">
-          <el-form-item label="其他工单号">
-            <el-input v-model="taskinfo.taskOtherId" />
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="行政区属:">
+          <el-form-item label="接单人员">
             <el-select
-              v-model="taskinfo.taskArea"
-              class="m-1"
-              placeholder="请选择"
+              v-model="taskinfo.taskReporter"
+              placeholder="请选择人员"
+              style="width: 100%"
+              filterable
+              allow-create
             >
               <el-option
-                v-for="item in sys_area"
-                :label="item.label"
-                :value="item.value"
-              ></el-option>
+                v-for="item in allusers"
+                :label="item.nickName"
+                :value="item.userId"
+              />
             </el-select>
           </el-form-item>
         </el-col>
-        <!-- <el-col :span="24">
-          <el-form-item label="备注">
-            <el-input type="textarea" v-model="taskinfo.remark" />
+
+        <el-col :span="24">
+          <el-form-item label="来件备注:">
+            <el-input v-model="taskinfo.taskFromRemark" />
           </el-form-item>
-        </el-col> -->
+        </el-col>
 
         <el-col :span="12">
           <el-form-item label="事件地址">
@@ -162,7 +182,7 @@
         </el-col>
 
         <el-col :span="12">
-          <el-form-item label="照片附件"> </el-form-item>
+          <el-form-item label="照片附件(4张)"> </el-form-item>
         </el-col>
 
         <el-col :span="12">
@@ -183,9 +203,16 @@
 
 <script>
 import { ref, watch, defineComponent, onMounted } from "vue";
+import { listTask } from "@/api/system/task";
 import {
-  listTask,
-} from "@/api/system/task";
+  changeUserStatus,
+  listUser,
+  resetUserPwd,
+  delUser,
+  getUser,
+  updateUser,
+  addUser,
+} from "@/api/system/user";
 import { useDict } from "@/utils/dict";
 import { cloneDeep } from "lodash";
 import { listDept, getDept } from "@/api/system/dept";
@@ -217,11 +244,12 @@ export default defineComponent({
       "task_event_type",
       "task_event_category",
       "sys_area"
-      );
+    );
     const taskinfo = ref({});
-    listTask({ taskCode: moment().year() + "" }).then(res => {
-       taskinfo.value.taskCode = moment().year()+(Array(3).join(0) + (res.total+1)).slice(-3)
-    })
+    listTask({ taskCode: moment().year() + "" }).then((res) => {
+      taskinfo.value.taskCode =
+        moment().year() + (Array(3).join(0) + (res.total + 1)).slice(-3);
+    });
 
     watch(
       () => formlocation.value.addr,
@@ -234,19 +262,25 @@ export default defineComponent({
       () => {
         taskinfo.value.taskLocation = formlocation.value.locations;
         if (formlocation.value.locations != "") {
-          mapSelect.value.getlocationaddr(formlocation.value.locations, (data) => {
-            var qu = data.regeocode.addressComponent.district;
-            if (qu) {
-              for (var i in sys_area.value) {
-                if (sys_area.value[i].label == qu) {
-                  taskinfo.value.taskArea = sys_area.value[i].value
+          mapSelect.value.getlocationaddr(
+            formlocation.value.locations,
+            (data) => {
+              var qu = data.regeocode.addressComponent.district;
+              if (qu) {
+                for (var i in sys_area.value) {
+                  if (sys_area.value[i].label == qu) {
+                    taskinfo.value.taskArea = sys_area.value[i].value;
+                  }
                 }
               }
             }
-      })
-    }
+          );
+        }
       }
     );
+    const store = useStore();
+    const getters = computed(() => store.getters);
+
 
     const searchaddr = () => {
       if (taskinfo.value.taskAddr) {
@@ -259,32 +293,54 @@ export default defineComponent({
     listDept().then((response) => {
       alldept.value = cloneDeep(response.data);
     });
-
+    const allusers = ref([]);
+    listUser({ pageSize: 1000 }).then((res) => {
+      allusers.value = res.rows;
+    });
     const doinit = (data) => {
-
-
+      // console.log(getters.value)
       taskinfo.value = data;
 
       if (data.taskId == null) {
         fileList.value = "";
         formlocation.value = { addr: "", locations: "" };
+        taskinfo.value.taskReporter = getters.value.userId;
+
       } else {
-        if (taskinfo.value.taskDeptRange!=null && taskinfo.value.taskDeptRange!="" && taskinfo.value.taskDeptRange!=undefined && !Array.isArray(taskinfo.value.taskDeptRange)) {
-          taskinfo.value.taskDeptRange = taskinfo.value.taskDeptRange.split(",").map(i => parseInt(i));
+        if (
+          taskinfo.value.taskDeptRange != null &&
+          taskinfo.value.taskDeptRange != "" &&
+          taskinfo.value.taskDeptRange != undefined &&
+          !Array.isArray(taskinfo.value.taskDeptRange)
+        ) {
+          taskinfo.value.taskDeptRange = taskinfo.value.taskDeptRange
+            .split(",")
+            .map((i) => parseInt(i));
+        }
+        if (taskinfo.value.taskReporter == null ||
+          taskinfo.value.taskReporter == "" ||
+          taskinfo.value.taskReporter == undefined) {
+           taskinfo.value.taskReporter = getters.value.userId;
         }
-        if (taskinfo.value.taskPics!=null && taskinfo.value.taskPics!="" && taskinfo.value.taskPics!=undefined) {
+        if (
+          taskinfo.value.taskPics != null &&
+          taskinfo.value.taskPics != "" &&
+          taskinfo.value.taskPics != undefined
+        ) {
           fileList.value = taskinfo.value.taskPics;
         }
-        if (taskinfo.value.taskAddr != null && taskinfo.value.taskAddr != "" && taskinfo.value.taskAddr != undefined) {
+        if (
+          taskinfo.value.taskAddr != null &&
+          taskinfo.value.taskAddr != "" &&
+          taskinfo.value.taskAddr != undefined
+        ) {
           formlocation.value.addr = taskinfo.value.taskAddr;
           formlocation.value.locations = taskinfo.value.taskLocation;
         }
       }
-
-
     };
     onMounted(() => {
-       doinit(props.taskinfo);
+      doinit(props.taskinfo);
     });
 
     const fileList = ref([]);
@@ -295,8 +351,8 @@ export default defineComponent({
       }
     );
     const updateallvalue = () => {
-       context.emit("update:taskinfo", taskinfo.value);
-    }
+      context.emit("update:taskinfo", taskinfo.value);
+    };
 
     function setdatakey(dept) {
       if (dept.children) {
@@ -322,8 +378,6 @@ export default defineComponent({
       treedept.value = [setdatakey(res.data[0])];
     });
 
-
-
     return {
       mapSelect,
       MapSelect,
@@ -331,6 +385,7 @@ export default defineComponent({
       taskinfo,
       searchaddr,
       alldept,
+      allusers,
       treedept,
       task_status,
       task_type,

+ 18 - 17
src/store/getters.js

@@ -1,18 +1,19 @@
-const getters = {
-  sidebar: state => state.app.sidebar,
-  size: state => state.app.size,
-  device: state => state.app.device,
-  visitedViews: state => state.tagsView.visitedViews,
-  cachedViews: state => state.tagsView.cachedViews,
-  token: state => state.user.token,
-  avatar: state => state.user.avatar,
-  name: state => state.user.name,
-  introduction: state => state.user.introduction,
-  roles: state => state.user.roles,
-  permissions: state => state.user.permissions,
-  permission_routes: state => state.permission.routes,
-  topbarRouters:state => state.permission.topbarRouters,
-  defaultRoutes:state => state.permission.defaultRoutes,
-  sidebarRouters:state => state.permission.sidebarRouters,
-}
+const getters = {
+    sidebar: (state) => state.app.sidebar,
+    size: (state) => state.app.size,
+    device: (state) => state.app.device,
+    visitedViews: (state) => state.tagsView.visitedViews,
+    cachedViews: (state) => state.tagsView.cachedViews,
+    token: (state) => state.user.token,
+    avatar: (state) => state.user.avatar,
+    name: (state) => state.user.name,
+    userId: (state) => state.user.userId,
+    introduction: (state) => state.user.introduction,
+    roles: (state) => state.user.roles,
+    permissions: (state) => state.user.permissions,
+    permission_routes: (state) => state.permission.routes,
+    topbarRouters: (state) => state.permission.topbarRouters,
+    defaultRoutes: (state) => state.permission.defaultRoutes,
+    sidebarRouters: (state) => state.permission.sidebarRouters,
+};
 export default getters

+ 104 - 98
src/store/modules/user.js

@@ -1,98 +1,104 @@
-import { login, logout, getInfo } from '@/api/login'
-import { getToken, setToken, removeToken } from '@/utils/auth'
-import defAva from '@/assets/images/profile.jpg'
-
-const user = {
-  state: {
-    token: getToken(),
-    name: '',
-    avatar: '',
-    roles: [],
-    permissions: []
-  },
-
-  mutations: {
-    SET_TOKEN: (state, token) => {
-      state.token = token
-    },
-    SET_NAME: (state, name) => {
-      state.name = name
-    },
-    SET_AVATAR: (state, avatar) => {
-      state.avatar = avatar
-    },
-    SET_ROLES: (state, roles) => {
-      state.roles = roles
-    },
-    SET_PERMISSIONS: (state, permissions) => {
-      state.permissions = permissions
-    }
-  },
-
-  actions: {
-    // 登录
-    Login({ commit }, userInfo) {
-      const username = userInfo.username.trim()
-      const password = userInfo.password
-      const code = userInfo.code
-      const uuid = userInfo.uuid
-      return new Promise((resolve, reject) => {
-        login(username, password, code, uuid).then(res => {
-          setToken(res.token)
-          commit('SET_TOKEN', res.token)
-          resolve()
-        }).catch(error => {
-          reject(error)
-        })
-      })
-    },
-
-    // 获取用户信息
-    GetInfo({ commit, state }) {
-      return new Promise((resolve, reject) => {
-        getInfo().then(res => {
-          const user = res.user
-          const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
-
-          if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
-            commit('SET_ROLES', res.roles)
-            commit('SET_PERMISSIONS', res.permissions)
-          } else {
-            commit('SET_ROLES', ['ROLE_DEFAULT'])
-          }
-          commit('SET_NAME', user.userName)
-          commit('SET_AVATAR', avatar)
-          resolve(res)
-        }).catch(error => {
-          reject(error)
-        })
-      })
-    },
-
-    // 退出系统
-    LogOut({ commit, state }) {
-      return new Promise((resolve, reject) => {
-        logout(state.token).then(() => {
-          commit('SET_TOKEN', '')
-          commit('SET_ROLES', [])
-          commit('SET_PERMISSIONS', [])
-          removeToken()
-          resolve()
-        }).catch(error => {
-          reject(error)
-        })
-      })
-    },
-
-    // 前端 登出
-    FedLogOut({ commit }) {
-      return new Promise(resolve => {
-        commit('SET_TOKEN', '')
-        removeToken()
-        resolve()
-      })
-    }
-  }
-}
-
-export default user
+import { login, logout, getInfo } from '@/api/login'
+import { getToken, setToken, removeToken } from '@/utils/auth'
+import defAva from '@/assets/images/profile.jpg'
+
+const user = {
+    state: {
+        token: getToken(),
+        name: '',
+        avatar: '',
+        roles: [],
+        userId: 0,
+        permissions: []
+    },
+
+    mutations: {
+        SET_TOKEN: (state, token) => {
+            state.token = token
+        },
+        SET_NAME: (state, name) => {
+            state.name = name
+        },
+        SET_AVATAR: (state, avatar) => {
+            state.avatar = avatar
+        },
+        SET_ROLES: (state, roles) => {
+            state.roles = roles
+        },
+        SET_PERMISSIONS: (state, permissions) => {
+            state.permissions = permissions
+        },
+        SET_USERID: (state, userId) => {
+            state.userId = userId
+        }
+    },
+
+    actions: {
+        // 登录
+        Login({ commit }, userInfo) {
+            const username = userInfo.username.trim()
+            const password = userInfo.password
+            const code = userInfo.code
+            const uuid = userInfo.uuid
+            return new Promise((resolve, reject) => {
+                login(username, password, code, uuid).then(res => {
+                    setToken(res.token)
+                    commit('SET_TOKEN', res.token)
+                    resolve()
+                }).catch(error => {
+                    reject(error)
+                })
+            })
+        },
+
+        // 获取用户信息
+        GetInfo({ commit, state }) {
+            return new Promise((resolve, reject) => {
+                getInfo().then(res => {
+                    const user = res.user
+                    const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
+
+                    if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
+                        commit('SET_ROLES', res.roles)
+                        commit('SET_PERMISSIONS', res.permissions)
+                    } else {
+                        commit('SET_ROLES', ['ROLE_DEFAULT'])
+                    }
+                    commit('SET_NAME', user.userName)
+                    commit('SET_AVATAR', avatar)
+                    commit("SET_USERID", user.userId);
+                    resolve(res)
+                }).catch(error => {
+                    reject(error)
+                })
+            })
+        },
+
+        // 退出系统
+        LogOut({ commit, state }) {
+            return new Promise((resolve, reject) => {
+                logout(state.token).then(() => {
+                    commit('SET_TOKEN', '')
+                    commit('SET_ROLES', [])
+                    commit('SET_PERMISSIONS', [])
+                    commit("SET_USERID", 0);
+                    removeToken()
+                    resolve()
+                }).catch(error => {
+                    reject(error)
+                })
+            })
+        },
+
+        // 前端 登出
+        FedLogOut({ commit }) {
+            return new Promise(resolve => {
+                commit('SET_TOKEN', '')
+                removeToken()
+                resolve()
+            })
+        }
+    }
+}
+
+export default user

+ 2 - 2
src/views/mb/home/index.vue

@@ -44,9 +44,9 @@ body{
     width: 100vw;
     height: 40vh;
     background: url('@/assets/images/bg.png');
-    background-size: cover;
+    background-size: contain;
     // background-position-x: -74vw;
-    background-position-y: -11vw;
+    // background-position-y: -11vw;
     background-repeat: no-repeat;
   }
   .body{

+ 1 - 0
src/views/mb/task/detail/index.vue

@@ -61,6 +61,7 @@
             >
           </van-row>
           <van-row>
+             <van-col :span="12">是否需要确认:{{ taskinfo.remark==="1"?'是':'否' }}</van-col>
             <van-col :span="12">来件备注:{{ taskinfo.taskFromRemark }}</van-col>
             <van-col :span="12"
               >投诉人电话:{{ taskinfo.taskComplainConnect }}</van-col

+ 9 - 3
src/views/task/detail/index.vue

@@ -78,9 +78,14 @@
               }}</el-col
             >
             <el-col :span="6">来件时间:{{ taskinfo.taskTime }}</el-col>
-            <el-col :span="6"
+            <!-- <el-col :span="6"
               >设施编号:{{ taskinfo.taskFacilitieCode }}</el-col
-            >
+            > -->
+             <el-col :span="6">接单人:{{ allusers.filter(
+                  (i) =>
+                    ([taskinfo.taskReporter+""]
+                      ).indexOf(i.userId+"") != -1
+                ).map((i) => i.nickName).join(",") }}</el-col>
           </el-row>
           <el-row>
             <el-col :span="6"
@@ -105,11 +110,12 @@
             >
           </el-row>
           <el-row>
+            <el-col :span="6">是否需要确认:{{ taskinfo.remark==="1"?'是':'否' }}</el-col>
             <el-col :span="6">来件备注:{{ taskinfo.taskFromRemark }}</el-col>
             <el-col :span="6"
               >投诉人电话:{{ taskinfo.taskComplainConnect }}</el-col
             >
-            <el-col :span="6">上报人:{{ taskinfo.taskReporter }}</el-col>
+
           </el-row>
           <el-row>
             <el-col :span="24">详细地址:{{ taskinfo.taskAddr }}</el-col>

+ 1 - 1
src/views/task/list/index.vue

@@ -307,7 +307,7 @@ const addtask = () => {
 };
 
 const tblrowclick = (row) => {
-  // console.log(row)
+
   router.push(`/task/detail/${row.taskId}`);
 };
 const ontaskadd = async () => {