Bladeren bron

新增组织机构查询

Z 1 jaar geleden
bovenliggende
commit
e26bddb1fe

+ 3 - 0
qiankun_config/store.js

@@ -18,4 +18,7 @@ export default function (state) {
   if (state.user?.info) {
     store.commit('user/setUserInfo', state.user.info);
   }
+  if (state.user?.authorityDept) {
+    store.dispatch('user/getCurrentUserAuthorityDept');
+  }
 }

+ 11 - 0
src/api/login/index.js

@@ -33,3 +33,14 @@ export async function getCaptcha () {
   }
   return Promise.reject(new Error(res.data.message));
 }
+/**
+ * 获取当前登陆用户数据权限部门数据
+ * @param
+ */
+export async function getCurrentUserAuthorityDeptAPI () {
+  const res = await request.post('/main/user/getCurrentUserAuthorityDepts');
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 75 - 0
src/components/authSelection/index.vue

@@ -0,0 +1,75 @@
+<template>
+  <div>
+    <ele-tree-select
+      clearable
+      :data="deptTreeList"
+      v-model="selectVal"
+      valueKey="id"
+      labelKey="name"
+      :show-checkbox="true"
+      :check-strictly="true"
+      multiple
+      collapseTags
+      filterable
+      placeholder="请选择"
+      default-expand-all
+    />
+  </div>
+</template>
+<script>
+  import { mapGetters } from 'vuex';
+
+  export default {
+    name: 'index',
+    model: {
+      prop: 'value',
+      event: 'updateVal'
+    },
+    props: {
+      value: {
+        type: [String, Array],
+        default: ''
+      },
+      dataType: {
+        type: String,
+        default: 'String'
+      }
+    },
+    data() {
+      return {
+        deptTreeList: []
+      };
+    },
+    computed: {
+      ...mapGetters(['user']),
+      selectVal: {
+        set(val) {
+          switch (this.dataType) {
+            case 'Array':
+              this.$emit('updateVal', val);
+              break;
+            default:
+              this.$emit('updateVal', val.join(','));
+          }
+        },
+        get() {
+          switch (this.dataType) {
+            case 'Array':
+              return this.value || [];
+            default:
+              return this.value ? this.value.split(',') : [];
+          }
+        }
+      }
+    },
+    mounted() {
+      this.deptTreeList = this.$util.toTreeData({
+        data: this.user?.authorityDept?.groupList || [],
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+    }
+  };
+</script>
+
+<style scoped lang="scss"></style>

+ 2 - 0
src/main.js

@@ -12,6 +12,8 @@ import i18n from './i18n';
 import './styles/index.scss';
 import DictSelection from '@/components/Dict/DictSelection';
 import HeaderTitle from '@/components/header-title';
+import authSelection from '@/components/authSelection';
+Vue.component('authSelection', authSelection);
 Vue.component('HeaderTitle', HeaderTitle);
 
 // bpmnProcessDesigner 需要引入

+ 12 - 1
src/store/modules/user.js

@@ -4,6 +4,7 @@
 import { formatMenus, toTreeData, formatTreeData } from 'ele-admin';
 import { USER_MENUS } from '@/config/setting';
 import { getResourcesTree } from '@/api/layout';
+import {getCurrentUserAuthorityDeptAPI} from "@/api/login";
 
 const formatRouter = (list) => {
   let menuList = []; // menuType
@@ -46,7 +47,9 @@ export default {
     authoritiesRouter: [],
     // 当前登录用户的角色
     roles: [],
-    taskObj: {} //工序对象
+    taskObj: {}, //工序对象
+    // 当前登录用户的数据权限部门数据
+    authorityDept: {}
   },
   mutations: {
     // 设置登录用户的信息
@@ -71,9 +74,17 @@ export default {
     },
     setTaskObj(state, taskObj) {
       state.taskObj = taskObj;
+    },
+    // 当前登录用户的数据权限部门数据
+    setAuthorityDept(state, info) {
+      state.authorityDept = info;
     }
   },
   actions: {
+    async getCurrentUserAuthorityDept({ commit }) {
+      const info = await getCurrentUserAuthorityDeptAPI();
+      commit('setAuthorityDept', info);
+    },
     /**
      * 请求用户信息、权限、角色、菜单
      */

+ 7 - 3
src/views/InTheSystem/components/search.vue

@@ -17,7 +17,7 @@
 
           <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
               <el-form-item label="类型:">
-                  <el-select v-model="where.feedStatus">
+                  <el-select v-model="where.feedStatus" style="width: 100%">
                       <el-option label="已投料" :value="1" />
                       <el-option label="未投料" :value="0" />
                   </el-select>
@@ -42,12 +42,16 @@
 
           <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
               <el-form-item label="工序:">
-                  <el-select v-model="where.taskId">
+                  <el-select v-model="where.taskId" style="width: 100%">
                       <el-option v-for="(item,index) in produceTaskList" :key="index" :label="item.name" :value="item.id"></el-option>
                   </el-select>
               </el-form-item>
           </el-col>
-
+        <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+          <el-form-item label="组织机构:">
+            <auth-selection data-type="Array" v-model="where.deptIds" style="width: 100%"></auth-selection>
+          </el-form-item>
+        </el-col>
 
 
 

+ 9 - 4
src/views/hangingWorkOrder/components/order-search.vue

@@ -2,20 +2,25 @@
 <template>
   <el-form label-width="90px" class="ele-form-search" @keyup.enter.native="search" @submit.native.prevent>
     <el-row :gutter="15">
- 
+
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="产品名称:">
           <el-input clearable v-model="where.productName" placeholder="请输入" />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 9, md: 12 } : { span: 9 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="创建时间:">
-          <el-date-picker class="w100" v-model="where.createTime" type="daterange" range-separator="至"
+          <el-date-picker class="w100" style="width: 100%" v-model="where.createTime" type="daterange" range-separator="至"
             start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss"
             :default-time="['00:00:00', '23:59:59']">
           </el-date-picker>
         </el-form-item>
       </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="组织机构:">
+          <auth-selection data-type="Array" v-model="where.deptIds" style="width: 100%"></auth-selection>
+        </el-form-item>
+      </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label-width="0px">
           <el-button type="primary" icon="el-icon-search" class="ele-btn-icon" @click="search">
@@ -53,7 +58,7 @@ export default {
   },
   watch: {},
   created() {
-   
+
    },
   methods: {
     /* 搜索 */

+ 1 - 0
src/views/login/index.vue

@@ -179,6 +179,7 @@
               this.$store.commit('user/setUserInfo', res.data);
               this.loading = false;
               this.$message.success(res.message);
+              this.$store.dispatch('user/getCurrentUserAuthorityDept');
               this.goHome();
             })
             .catch((e) => {

+ 7 - 4
src/views/outsourcing/components/search.vue

@@ -20,10 +20,14 @@
                 </el-form-item>
             </el-col>
 
+          <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+            <el-form-item label="组织机构:">
+              <auth-selection v-model="where.deptIds" style="width: 100%"></auth-selection>
+            </el-form-item>
+          </el-col>
 
 
-
-            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+            <el-col style="display: flex;justify-content: flex-end" v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
                 <el-form-item label-width="0px">
                     <el-button type="primary" icon="el-icon-search" class="ele-btn-icon" @click="search">
                         查询
@@ -34,7 +38,7 @@
         </el-row>
     </el-form>
 </template>
-  
+
 <script>
 
 export default {
@@ -86,4 +90,3 @@ export default {
     justify-content: flex-end;
 }
 </style>
-  

+ 7 - 1
src/views/produceOrder/components/produceOrder-search.vue

@@ -104,6 +104,7 @@
         <el-form-item label="创建时间:">
           <el-date-picker
             class="w100"
+            style="width: 100%"
             v-model="where.createTime"
             type="daterange"
             range-separator="至"
@@ -116,6 +117,11 @@
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="组织机构:">
+          <auth-selection data-type="Array" v-model="where.deptIds" style="width: 100%"></auth-selection>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
         <div class="ele-form-actions">
           <el-button
             type="primary"
@@ -206,7 +212,7 @@ import { getteampage } from  '@/api/produceWord/index.js';
         this.search();
       },
 
-      
+
       getteampage() {
       getteampage().then((res) => {
         this.teamList = res.list;

+ 8 - 2
src/views/produceWord/components/order-search.vue

@@ -60,7 +60,7 @@
         </el-form-item>
       </el-col>
 
-      
+
 
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="班组:">
@@ -72,10 +72,11 @@
       </el-col>
 
 
-      <el-col v-bind="styleResponsive ? { lg: 9, md: 12 } : { span: 9 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="创建时间:">
           <el-date-picker
             class="w100"
+            style="width: 100%;"
             v-model="where.createTime"
             type="daterange"
             range-separator="至"
@@ -87,6 +88,11 @@
           </el-date-picker>
         </el-form-item>
       </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="组织机构:">
+          <auth-selection data-type="Array" v-model="where.deptIds" style="width: 100%"></auth-selection>
+        </el-form-item>
+      </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label-width="0px">
           <el-button

+ 17 - 10
src/views/unacceptedProduct/components/order-search.vue

@@ -7,7 +7,7 @@
     @submit.native.prevent
   >
     <el-row :gutter="15">
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="工单号:">
           <el-input
             clearable
@@ -16,7 +16,7 @@
           />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="编码:">
           <el-input
             clearable
@@ -25,7 +25,7 @@
           />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="创建人:">
           <el-input
             clearable
@@ -38,6 +38,7 @@
         <el-form-item label="创建时间:">
           <el-date-picker
             class="w100"
+            style="width: 100%"
             v-model="where.createTime"
             type="daterange"
             range-separator="至"
@@ -49,7 +50,7 @@
           </el-date-picker>
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="工序:">
           <el-input
             clearable
@@ -57,23 +58,29 @@
             placeholder="请输入"
           />
         </el-form-item> </el-col
-      ><el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      >
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="状态:">
-         
+
           <el-select v-model="where.status" style="width:100%">
             <el-option
               v-for="item in statusList"
               :key="item.code"
               :value="item.code"
               :label="item.name"
-             
+
             ></el-option>
           </el-select>
         </el-form-item>
-        
+
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="组织机构:">
+          <auth-selection data-type="Array" v-model="where.deptIds" style="width: 100%"></auth-selection>
+        </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
-        <el-form-item label-width="0px">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item>
           <el-button
             type="primary"
             icon="el-icon-search"

+ 15 - 10
src/views/unacceptedProduct/components/probationalGoods-search.vue

@@ -7,7 +7,7 @@
     @submit.native.prevent
   >
     <el-row :gutter="15">
-      <!-- <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="编码:">
           <el-input
             clearable
@@ -16,7 +16,7 @@
           />
         </el-form-item>
       </el-col> -->
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4}">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6}">
         <el-form-item label="批号:">
           <el-input
             clearable
@@ -25,7 +25,7 @@
           />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="产品名称:">
           <el-input
             clearable
@@ -34,7 +34,7 @@
           />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="产品编码:">
           <el-input
             clearable
@@ -43,7 +43,7 @@
           />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="产品规格:">
           <el-input
             clearable
@@ -52,22 +52,27 @@
           />
         </el-form-item>
       </el-col>
-    
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="状态:">
-          
+
           <el-select v-model="where.status" style="width:100%">
             <el-option
               v-for="item in statusList"
               :key="item.code"
               :value="item.code"
               :label="item.name"
-             
+
             ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="组织机构:">
+          <auth-selection data-type="Array" v-model="where.deptIds" style="width: 100%"></auth-selection>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label-width="0px">
           <el-button
             type="primary"

+ 7 - 2
src/views/unacceptedProduct/components/rework-search.vue

@@ -81,18 +81,23 @@
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
         <el-form-item label="状态:">
-          
+
           <el-select v-model="where.status" style="width:100%">
             <el-option
               v-for="item in statusList"
               :key="item.code"
               :value="item.code"
               :label="item.name"
-             
+
             ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+        <el-form-item label="组织机构:">
+          <auth-selection data-type="Array" v-model="where.deptIds" style="width: 100%"></auth-selection>
+        </el-form-item>
+      </el-col>
       <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
         <el-form-item label-width="0px">
           <el-button

+ 69 - 67
src/views/warehousing/components/search.vue

@@ -1,91 +1,93 @@
 <!-- 搜索表单 -->
 <template>
-    <el-form label-width="90px" class="ele-form-search" @keyup.enter.native="search" @submit.native.prevent>
-        <el-row :gutter="15">
-            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-                <el-form-item label="工单编码:">
-                    <el-input clearable v-model="where.workOrderCode" placeholder="请输入" />
-                </el-form-item>
-            </el-col>
+  <el-form label-width="90px" class="ele-form-search" @keyup.enter.native="search" @submit.native.prevent>
+    <el-row :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="工单编码:">
+          <el-input clearable v-model="where.workOrderCode" placeholder="请输入"/>
+        </el-form-item>
+      </el-col>
 
-            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-                <el-form-item label="仓库名称:">
-                    <el-input clearable v-model="where.warehouseName" placeholder="请输入" />
-                </el-form-item>
-            </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="仓库名称:">
+          <el-input clearable v-model="where.warehouseName" placeholder="请输入"/>
+        </el-form-item>
+      </el-col>
 
-            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-                <el-form-item label="物品名称:">
-                    <el-input clearable v-model="where.categoryName" placeholder="请输入" />
-                </el-form-item>
-            </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="物品名称:">
+          <el-input clearable v-model="where.categoryName" placeholder="请输入"/>
+        </el-form-item>
+      </el-col>
 
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="组织机构:">
+          <auth-selection v-model="where.deptIds" style="width: 100%"></auth-selection>
+        </el-form-item>
+      </el-col>
 
 
-
-
-
-            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-                <el-form-item label-width="0px">
-                    <el-button type="primary" icon="el-icon-search" class="ele-btn-icon" @click="search">
-                        查询
-                    </el-button>
-                    <el-button @click="reset" icon="el-icon-refresh-left" type="primary">重置</el-button>
-                </el-form-item>
-            </el-col>
-        </el-row>
-    </el-form>
+      <el-col style="display: flex;justify-content: flex-end"
+              v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
+        <el-form-item label-width="0px">
+          <el-button type="primary" icon="el-icon-search" class="ele-btn-icon" @click="search">
+            查询
+          </el-button>
+          <el-button @click="reset" icon="el-icon-refresh-left" type="primary">重置</el-button>
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
 </template>
-  
+
 <script>
 
 export default {
-    props: [],
-    data() {
-        // 默认表单数据
-        const defaultWhere = {
-            workOrderCode: '',
-            warehouseName: '',
-            categoryName: ''
+  props: [],
+  data() {
+    // 默认表单数据
+    const defaultWhere = {
+      workOrderCode: '',
+      warehouseName: '',
+      categoryName: ''
 
 
-        };
-        return {
-            // 表单数据
-            where: { ...defaultWhere },
+    };
+    return {
+      // 表单数据
+      where: {...defaultWhere},
 
-        };
-    },
-    computed: {
-        // 是否开启响应式布局
-        styleResponsive() {
-            return this.$store.state.theme.styleResponsive;
-        }
-    },
-    watch: {},
-    created() {
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  watch: {},
+  created() {
 
+  },
+  methods: {
+    /* 搜索 */
+    search() {
+      this.$emit('search', this.where);
+    },
+    /*  重置 */
+    reset() {
+      this.where = {...this.defaultWhere};
+      this.search();
     },
-    methods: {
-        /* 搜索 */
-        search() {
-            this.$emit('search', this.where);
-        },
-        /*  重置 */
-        reset() {
-            this.where = { ...this.defaultWhere };
-            this.search();
-        },
 
 
-    }
+  }
 };
 </script>
 <style lang="scss" scoped>
 .ele-form-actions {
-    display: flex;
-    align-items: center;
-    justify-content: flex-end;
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
 }
 </style>
-