Browse Source

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dev

ysy 1 năm trước cách đây
mục cha
commit
8d0dd3a474
26 tập tin đã thay đổi với 501 bổ sung234 xóa
  1. 8 0
      src/api/regionalManage/index.js
  2. 3 3
      src/api/system/organization/index.js
  3. 4 2
      src/router/index.js
  4. 2 2
      src/views/enterpriseModel/dept/index.vue
  5. 40 0
      src/views/enterpriseModel/regionalManage/components/area-cascader.vue
  6. 35 30
      src/views/enterpriseModel/regionalManage/components/area-edit.vue
  7. 1 0
      src/views/enterpriseModel/regionalManage/components/area-select.vue
  8. 12 6
      src/views/enterpriseModel/regionalManage/index.vue
  9. 5 4
      src/views/factoryModel/factoryManagement/components/edit.vue
  10. 37 5
      src/views/factoryModel/factoryManagement/components/search.vue
  11. 1 1
      src/views/factoryModel/factoryManagement/index.vue
  12. 38 26
      src/views/factoryModel/plant/components/edit.vue
  13. 35 2
      src/views/factoryModel/plant/components/search.vue
  14. 1 1
      src/views/factoryModel/plant/index.vue
  15. 6 4
      src/views/factoryModel/productionLine/components/edit.vue
  16. 33 1
      src/views/factoryModel/productionLine/components/search.vue
  17. 1 1
      src/views/factoryModel/productionLine/index.vue
  18. 18 18
      src/views/factoryModel/station/components/edit.vue
  19. 32 5
      src/views/factoryModel/station/components/search.vue
  20. 1 1
      src/views/factoryModel/station/index.vue
  21. 6 4
      src/views/factoryModel/workshop/components/edit.vue
  22. 33 1
      src/views/factoryModel/workshop/components/search.vue
  23. 1 1
      src/views/factoryModel/workshop/index.vue
  24. 40 20
      src/views/system/organization/components/org-user-edit.vue
  25. 3 1
      src/views/system/organization/components/org-user-list.vue
  26. 105 95
      src/views/system/organization/index.vue

+ 8 - 0
src/api/regionalManage/index.js

@@ -23,3 +23,11 @@ export async function basicAreaUpdateAPI(params) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+// 删除基本区域
+export async function basicAreaDeleteAPI(data) {
+  const res = await request.delete(`/main/basicarea/delete`, {data});
+  if (res.data.code == 0) {
+    return res.data.message;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 3 - 3
src/api/system/organization/index.js

@@ -62,10 +62,10 @@ export async function updateOrganization (data) {
 
 /**
  * 删除机构
- * @param params 机构id数组
+ * @param data
  */
-export async function removeOrganization (params) {
-  const res = await request.post('/main/group/delete', params);
+export async function removeOrganization (data) {
+  const res = await request.post('/main/group/delete', data);
   if (res.data.code == 0) {
     return res.data.message;
   }

+ 4 - 2
src/router/index.js

@@ -41,14 +41,15 @@ router.beforeEach((to, from, next) => {
         store.commit('user/setUserInfo', res);
       });
     }
+    console.log(!store.state.user.menus);
     // 还未注册动态路由则先获取
     if (!store.state.user.menus) {
       store
         .dispatch('user/fetchUserInfo')
         .then(({ menus, homePath, authoritiesRouter }) => {
-          console.log();
           menus.forEach((item) => {
-            if (item.name == '流程管理') {
+            //匹配第一层路由名称
+            if (item.name == '配置管理') {
               item.children.push(
                 {
                   path: '/bpm/definition',
@@ -77,6 +78,7 @@ router.beforeEach((to, from, next) => {
             );
             next({ ...to, replace: true });
           }
+          console.log(router);
         })
         .catch((e) => {
           console.error(e);

+ 2 - 2
src/views/enterpriseModel/dept/index.vue

@@ -245,12 +245,12 @@ export default {
       this.showEdit = true;
     },
     /* 删除 */
-    remove() {
+    remove(row) {
       this.$confirm('确定要删除选中的机构吗?', '提示', {
         type: 'warning'
       }).then(() => {
           const loading = this.$loading({lock: true});
-          removeOrganization([this.current.id])
+          removeOrganization([row.id])
             .then((msg) => {
               loading.close();
               this.$message.success(msg);

+ 40 - 0
src/views/enterpriseModel/regionalManage/components/area-cascader.vue

@@ -0,0 +1,40 @@
+<!-- 机构选择下拉框 -->
+<template>
+  <el-cascader style="width: 100%" ref="tree"
+               :props="{value:'id',label:'name',checkStrictly:checkStrictly,emitPath:emitPath}" :value="value || ''"
+               @input="updateValue" filterable :options="data" clearable></el-cascader>
+</template>
+
+<script>
+export default {
+  props: {
+    // 选中的数据(v-model)
+    value: [Number, String],
+    // 提示信息
+    placeholder: {
+      type: String,
+      default: '请选择'
+    },
+    checkStrictly: {
+      type: Boolean,
+      default: true
+    },
+    emitPath: {
+      type: Boolean,
+      default: false
+    },
+    // 机构数据
+    data: Array
+  },
+  methods: {
+    /* 更新选中数据 */
+    updateValue(value, node) {
+      this.$emit('input', value);
+      let nodesInfo = []
+      nodesInfo = this.$refs['tree'].getCheckedNodes()
+      nodesInfo.push(value)
+      this.$emit('checkedKeys', nodesInfo)
+    },
+  }
+};
+</script>

+ 35 - 30
src/views/enterpriseModel/regionalManage/components/area-edit.vue

@@ -10,59 +10,49 @@
   >
     <el-form ref="form" :model="form" :rules="rules" label-width="140px">
       <el-row :gutter="15">
-        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-          <el-form-item label="父区域:">
-            <area-select
-              :disabled="dialogType=='view'"
-              v-model="form.parentId"
-              :data="organizationList"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-          <el-form-item label="区域等级:" prop="areaLevel">
-            <DictSelection dictName="区域等级" v-model="form.areaLevel" :disabled="dialogType=='view'"></DictSelection>
-          </el-form-item>
-        </el-col>
         <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
           <el-form-item label="区域类型:" prop="areaLevel">
             <DictSelection dictName="区域类型" v-model="form.areaType" :disabled="dialogType=='view'"></DictSelection>
           </el-form-item>
         </el-col>
         <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-          <el-form-item label="区域名称:" prop="name">
+          <el-form-item label="区域编码:" prop="areaCode">
             <el-input
-
               clearable
               :maxlength="50"
-              v-model="form.name"
-              placeholder="请输入区域名称"
+              v-model="form.areaCode"
+              placeholder="请输入区域编码"
               :disabled="dialogType=='view'"
             />
           </el-form-item>
         </el-col>
         <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-          <el-form-item label="区域编码:" prop="areaCode">
+          <el-form-item label="区域名称:" prop="name">
             <el-input
+
               clearable
               :maxlength="50"
-              v-model="form.areaCode"
-              placeholder="请输入区域编码"
+              v-model="form.name"
+              placeholder="请输入区域名称"
               :disabled="dialogType=='view'"
             />
           </el-form-item>
         </el-col>
         <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-          <el-form-item label="排序:">
-            <el-input-number
-              style="width: 100%"
-              v-model="form.areaSort"
-              placeholder="请选择"
-              controls-position="right"
-              :min="1"
-            ></el-input-number>
+          <el-form-item label="区域等级:" prop="areaLevel">
+            <DictSelection dictName="区域等级" v-model="form.areaLevel" :disabled="dialogType=='view'"></DictSelection>
+          </el-form-item>
+        </el-col>
+        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
+          <el-form-item label="父区域:">
+            <area-select
+              :disabled="dialogType=='view'"
+              v-model="form.parentId"
+              :data="organizationList"
+            />
           </el-form-item>
         </el-col>
+
         <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
           <el-form-item label="备注:">
             <el-input
@@ -72,7 +62,6 @@
             ></el-input>
           </el-form-item>
         </el-col>
-
         <el-col :span="12">
           <el-form-item label="附件:">
             <fileUpload
@@ -86,6 +75,21 @@
 
         </el-col>
 
+        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
+          <el-form-item label="排序:">
+            <el-input-number
+              style="width: 100%"
+              v-model="form.areaSort"
+              placeholder="请选择"
+              controls-position="right"
+              :min="1"
+            ></el-input-number>
+          </el-form-item>
+        </el-col>
+
+
+
+
       </el-row>
     </el-form>
 
@@ -158,6 +162,7 @@ export default {
       },
       // 提交状态
       loading: false,
+      dialogType: false,
       title: '',
       // 是否是修改
       isUpdate: false

+ 1 - 0
src/views/enterpriseModel/regionalManage/components/area-select.vue

@@ -13,6 +13,7 @@
     v-bind="$attrs"
     v-on="$listeners"
   />
+
 </template>
 
 <script>

+ 12 - 6
src/views/enterpriseModel/regionalManage/index.vue

@@ -69,7 +69,7 @@
       ref="areaEditRef"
       :data="editData"
       :parent-id="parentId"
-      :organization-list="data"
+      :organization-list="dataTree"
       @done="reload"
     />
   </div>
@@ -82,7 +82,7 @@ import {
   listOrganizations,
   removeOrganization
 } from '@/api/system/organization';
-import {basicAreaPageAPI} from "@/api/regionalManage";
+import {basicAreaDeleteAPI, basicAreaPageAPI} from "@/api/regionalManage";
 import {getByCode} from "@/api/system/dictionary-data";
 import {getFile} from "@/api/system/file";
 
@@ -95,6 +95,7 @@ export default {
       loading: false,
       // 列表数据
       data: [],
+      dataTree: [],
       // 选中数据
       current: null,
       // 是否显示表单弹窗
@@ -217,6 +218,11 @@ export default {
         idField: 'id',
         parentIdField: 'parentId'
       });
+      this.dataTree = [{
+        name:'顶级区域',
+        id: '0',
+        children:  this.data,
+      }]
       return this.data
 
     },
@@ -240,12 +246,12 @@ export default {
       });
     },
     /* 删除 */
-    remove() {
-      this.$confirm('确定要删除选中的机构吗?', '提示', {
+    remove(row) {
+      this.$confirm('确定要删除选中的区域吗?', '提示', {
         type: 'warning'
       }).then(() => {
-          const loading = this.$loading({lock: true});
-          removeOrganization([this.current.id])
+           const loading = this.$loading({lock: true});
+        basicAreaDeleteAPI([row.id])
             .then((msg) => {
               loading.close();
               this.$message.success(msg);

+ 5 - 4
src/views/factoryModel/factoryManagement/components/edit.vue

@@ -96,7 +96,7 @@
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="区域:" prop="location_city">
+          <el-form-item label="所属区域:" prop="location_city">
             <area-select
               v-model="form.areaId"
               @checkedKeys="getAreaInfo"
@@ -140,7 +140,7 @@ import { cityDataLabel } from 'ele-admin/packages/utils/regions';
 import { listOrganizations } from '@/api/system/organization';
 import { saveOrUpdate } from '@/api/factoryModel';
 import { getUserPage } from '@/api/system/organization';
-import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-select.vue";
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
 import {basicAreaPageAPI} from "@/api/regionalManage";
 export default {
   components: {AreaSelect},
@@ -171,6 +171,7 @@ export default {
           location: [],
           locationDetail: ''
         },
+        areaIdList:[],
         enabled: 1,
         parentId: 0,
         leaderId: '',
@@ -309,8 +310,8 @@ export default {
       });
 
     },
-    getAreaInfo(val) {
-      this.form.areaName = this.areaList.find((item) => item.id == val[0]).name;
+    getAreaInfo(nodeInfo) {
+       this.form.areaName = nodeInfo[0].pathLabels.join('/')
     },
     // 获取公司数据
     getGs() {

+ 37 - 5
src/views/factoryModel/factoryManagement/components/search.vue

@@ -9,12 +9,19 @@
     <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.code" placeholder="请输入" />
+          <el-input clearable v-model="where.code" placeholder="请输入"/>
+        </el-form-item>
+        <el-form-item label="所属区域:" prop="location_city">
+          <area-select
+            v-model="where.areaId"
+            :data="areaTreeList"
+            ref="tree"
+          />
         </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.name" placeholder="请输入" />
+          <el-input clearable v-model="where.name" placeholder="请输入"/>
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
@@ -40,6 +47,8 @@
           <auth-selection v-model="where.deptIds" style="width: 100%"></auth-selection>
         </el-form-item>
       </el-col>
+
+
       <el-col v-bind="styleResponsive ? { lg: 6, md: 6 } : { span: 6 }">
         <div class="ele-form-actions">
           <el-button
@@ -58,7 +67,11 @@
 </template>
 
 <script>
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
+import {basicAreaPageAPI} from "@/api/regionalManage";
+
 export default {
+  components: {AreaSelect},
   data() {
     // 默认表单数据
     const defaultWhere = {
@@ -69,7 +82,7 @@ export default {
     return {
       defaultWhere,
       // 表单数据
-      where: { ...defaultWhere },
+      where: {...defaultWhere},
       options: {
         state: [
           {
@@ -81,9 +94,13 @@ export default {
             value: 0
           }
         ]
-      }
+      },
+      areaTreeList:[]
     };
   },
+  created() {
+    this.getBasicAreaList();
+  },
   computed: {
     // 是否开启响应式布局
     styleResponsive() {
@@ -91,6 +108,21 @@ export default {
     }
   },
   methods: {
+    /* 获取区域集合 */
+    async getBasicAreaList() {
+      this.areaList = await basicAreaPageAPI(
+        {
+          pageNum: 1,
+          size: 9999
+        }
+      )
+      this.areaTreeList = this.$util.toTreeData({
+        data: this.areaList,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+
+    },
     /* 搜索 */
     search() {
       this.$emit('search', this.where);
@@ -98,7 +130,7 @@ export default {
     /*  重置 */
     reset() {
       console.log(this.defaultWhere);
-      this.where = { ...this.defaultWhere };
+      this.where = {...this.defaultWhere};
       this.search();
     }
   }

+ 1 - 1
src/views/factoryModel/factoryManagement/index.vue

@@ -87,7 +87,7 @@
             slot: 'groupId'
           },
           {
-            label: '区域',
+            label: '所属区域',
             prop: 'areaName',
           },
           {

+ 38 - 26
src/views/factoryModel/plant/components/edit.vue

@@ -57,6 +57,8 @@
             </el-select>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="8" style="margin-bottom: 12px">
           <el-form-item label="所属工厂:" prop="parentId">
             <el-select
@@ -111,6 +113,8 @@
             </el-select>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="8" style="margin-bottom: 12px">
           <el-form-item label="联系方式:" prop="extInfo.phone">
             <el-input
@@ -134,38 +138,51 @@
           </el-form-item>
         </el-col>
         <el-col :span="8" style="margin-bottom: 12px">
-          <el-form-item prop="extInfo.campus" label="归属园院区">
-            <el-input
-              class="form-ipt"
-              size="small"
-              style="width: 100%"
-              placeholder="请输入"
-              v-model="form.extInfo.campus"
-            ></el-input>
+          <el-form-item label="所属区域:" prop="areaId">
+            <area-select
+              v-model="form.areaId"
+              @checkedKeys="getAreaInfo"
+              :data="areaTreeList"
+              ref="tree"
+            />
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="8" style="margin-bottom: 12px">
-          <el-form-item prop="extInfo.coveredArea" label="建筑面积">
+          <el-form-item prop="extInfo.level" label="楼层">
             <el-input
               class="form-ipt"
               size="small"
               style="width: 100%"
               placeholder="请输入"
-              v-model="form.extInfo.coveredArea"
+              v-model="form.extInfo.level"
             ></el-input>
           </el-form-item>
         </el-col>
+<!--        <el-col :span="8" style="margin-bottom: 12px">-->
+<!--          <el-form-item prop="extInfo.campus" label="归属园院区">-->
+<!--            <el-input-->
+<!--              class="form-ipt"-->
+<!--              size="small"-->
+<!--              style="width: 100%"-->
+<!--              placeholder="请输入"-->
+<!--              v-model="form.extInfo.campus"-->
+<!--            ></el-input>-->
+<!--          </el-form-item>-->
+<!--        </el-col>-->
         <el-col :span="8" style="margin-bottom: 12px">
-          <el-form-item prop="extInfo.level" label="楼层">
+          <el-form-item prop="extInfo.coveredArea" label="建筑面积">
             <el-input
               class="form-ipt"
               size="small"
               style="width: 100%"
               placeholder="请输入"
-              v-model="form.extInfo.level"
+              v-model="form.extInfo.coveredArea"
             ></el-input>
           </el-form-item>
         </el-col>
+
         <el-col :span="8" style="margin-bottom: 12px">
           <el-form-item prop="extInfo.moneyCeiling" label="已配金额上限">
             <el-input
@@ -177,6 +194,8 @@
             ></el-input>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="8" style="margin-bottom: 12px">
           <el-form-item prop="extInfo.useArea" label="使用面积">
             <el-input
@@ -188,17 +207,7 @@
             ></el-input>
           </el-form-item>
         </el-col>
-        <el-col :span="8">
-          <el-form-item label="区域:" prop="location_city">
-            <area-select
-              v-model="form.areaId"
-              @checkedKeys="getAreaInfo"
-              :data="areaTreeList"
-              ref="tree"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="24" style="margin-bottom: 12px">
+        <el-col :span="16" style="margin-bottom: 12px">
           <el-form-item label="地址:" prop="extInfo.location">
             <div class="location-warp">
               <el-cascader
@@ -217,6 +226,9 @@
             </div>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
+
         <el-col :span="24" style="margin-bottom: 12px">
           <el-form-item label="备注:" prop="remark">
             <el-input
@@ -243,7 +255,7 @@
 import { saveOrUpdate, listWorkshopByParentId } from '@/api/factoryModel';
 import { getUserPage } from '@/api/system/organization';
 import { cityDataLabel } from 'ele-admin/packages/utils/regions';
-import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-select.vue";
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
 import {basicAreaPageAPI} from "@/api/regionalManage";
 export default {
   components: {AreaSelect},
@@ -393,8 +405,8 @@ export default {
       });
 
     },
-    getAreaInfo(val) {
-      this.form.areaName = this.areaList.find((item) => item.id == val[0]).name;
+    getAreaInfo(nodeInfo) {
+      this.form.areaName = nodeInfo[0].pathLabels.join('/')
     },
     open(type, row) {
       this.type = type;

+ 35 - 2
src/views/factoryModel/plant/components/search.vue

@@ -11,6 +11,7 @@
         <el-form-item label="厂房编码:">
           <el-input clearable v-model="where.code" placeholder="请输入" />
         </el-form-item>
+
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="厂房名称:">
@@ -22,7 +23,16 @@
           <auth-selection v-model="where.deptIds" style="width: 100%"></auth-selection>
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 4}">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="所属区域:">
+          <area-select
+            v-model="where.areaId"
+            :data="areaTreeList"
+            ref="tree"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24}" style="float: right">
         <div class="ele-form-actions">
           <el-button
             type="primary"
@@ -40,7 +50,11 @@
 </template>
 
 <script>
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
+import {basicAreaPageAPI} from "@/api/regionalManage";
+
 export default {
+  components: {AreaSelect},
   props: {
     options_groupId: {
       type: Array,
@@ -72,7 +86,8 @@ export default {
       where: { ...defaultWhere },
       options: {
         groupId: []
-      }
+      },
+      areaTreeList:[]
     };
   },
   computed: {
@@ -81,11 +96,29 @@ export default {
       return this.$store.state.theme.styleResponsive;
     }
   },
+  created() {
+    this.getBasicAreaList();
+  },
   methods: {
     /* 搜索 */
     search() {
       this.$emit('search', this.where);
     },
+    /* 获取区域集合 */
+    async getBasicAreaList() {
+      const data= await basicAreaPageAPI(
+        {
+          pageNum: 1,
+          size: 9999
+        }
+      )
+      this.areaTreeList = this.$util.toTreeData({
+        data:data,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+
+    },
     /*  重置 */
     reset() {
       console.log(this.defaultWhere);

+ 1 - 1
src/views/factoryModel/plant/index.vue

@@ -119,7 +119,7 @@
             slot: 'factory'
           },
           {
-            label: '区域',
+            label: '所属区域',
             prop: 'areaName',
           },
           {

+ 6 - 4
src/views/factoryModel/productionLine/components/edit.vue

@@ -166,7 +166,7 @@
              </el-form-item>
            </el-col>
            <el-col :span="8">
-             <el-form-item label="区域:" prop="location_city">
+             <el-form-item label="区域名称:" prop="location_city">
                <area-select
                  v-model="form.areaId"
                  @checkedKeys="getAreaInfo"
@@ -298,7 +298,7 @@ import { getUserPage } from '@/api/system/organization';
 import { deepClone } from '@/components/FormGenerator/utils';
 import { cityDataLabel } from 'ele-admin/packages/utils/regions';
 import {basicAreaPageAPI} from "@/api/regionalManage";
-import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-select.vue";
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
 export default {
   components: {AreaSelect},
   props: {
@@ -329,6 +329,8 @@ export default {
       code: '',
       name: '',
       leaderId:'',
+      areaId: '',
+      areaName: '',
       extInfo: {
         factoryId: '',
         // principal: '', // 负责人
@@ -491,8 +493,8 @@ export default {
       });
 
     },
-    getAreaInfo(val) {
-      this.form.areaName = this.areaList.find((item) => item.id == val[0]).name;
+    getAreaInfo(nodeInfo) {
+      this.form.areaName = nodeInfo[0].pathLabels.join('/')
     },
     /* 保存编辑 */
     save() {

+ 33 - 1
src/views/factoryModel/productionLine/components/search.vue

@@ -17,6 +17,15 @@
           <el-input clearable v-model="where.name" placeholder="请输入" />
         </el-form-item>
       </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
+        <el-form-item label="所属区域:" prop="location_city">
+          <area-select
+            v-model="where.areaId"
+            :data="areaTreeList"
+            ref="tree"
+          />
+        </el-form-item>
+      </el-col>
       <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
         <el-form-item label="组织机构:">
           <auth-selection v-model="where.deptIds" style="width: 100%"></auth-selection>
@@ -40,7 +49,11 @@
 </template>
 
 <script>
+import {basicAreaPageAPI} from "@/api/regionalManage";
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
+
 export default {
+  components: {AreaSelect},
   props: {
     options_groupId: {
       type: Array,
@@ -72,7 +85,8 @@ export default {
       where: { ...defaultWhere },
       options: {
         groupId: []
-      }
+      },
+      areaTreeList:[]
     };
   },
   computed: {
@@ -81,7 +95,25 @@ export default {
       return this.$store.state.theme.styleResponsive;
     }
   },
+  created() {
+    this.getBasicAreaList();
+  },
   methods: {
+    /* 获取区域集合 */
+    async getBasicAreaList() {
+      this.areaList = await basicAreaPageAPI(
+        {
+          pageNum: 1,
+          size: 9999
+        }
+      )
+      this.areaTreeList = this.$util.toTreeData({
+        data: this.areaList,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+
+    },
     /* 搜索 */
     search() {
       this.$emit('search', this.where);

+ 1 - 1
src/views/factoryModel/productionLine/index.vue

@@ -79,7 +79,7 @@ export default {
           slot: 'parent'
         },
         {
-          label: '区域',
+          label: '所属区域',
           prop: 'areaName',
         },
         {

+ 18 - 18
src/views/factoryModel/station/components/edit.vue

@@ -25,16 +25,7 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
-            <el-form-item label="区域:" prop="location_city">
-              <area-select
-                v-model="form.areaId"
-                @checkedKeys="getAreaInfo"
-                :data="areaTreeList"
-                ref="tree"
-              />
-            </el-form-item>
-          </el-col>
+
           <el-col :span="8">
             <el-form-item label="设备编码:" prop="extInfo.assetCode" v-if="form.extInfo.type == 1">
               <el-input v-model="form.extInfo.assetCode" readonly @click.native="chooseAsset" />
@@ -56,7 +47,16 @@
               </DictSelection>
             </el-form-item>
           </el-col>
-
+          <el-col :span="8">
+            <el-form-item label="所属区域:" prop="location_city">
+              <area-select
+                v-model="form.areaId"
+                @checkedKeys="getAreaInfo"
+                :data="areaTreeList"
+                ref="tree"
+              />
+            </el-form-item>
+          </el-col>
           <el-col :span="8">
             <el-form-item label="所属厂房:" prop="extInfo.factoryId">
               <el-select v-model="form.extInfo.factoryId" placeholder="请选择" @change="change_factoryId"
@@ -186,7 +186,7 @@ import producetask from '@/api/technology/production';
 import work from '@/api/technology/work';
 import ProduceDialog from './ProduceDialog'
 import CodeDialog from './codeDialog.vue'
-import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-select.vue";
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
 import {basicAreaPageAPI} from "@/api/regionalManage";
 export default {
   components: {
@@ -210,9 +210,6 @@ export default {
       this.toTreeData(nval);
     }
   },
-  created() {
-    this.getBasicAreaList();
-  },
   data() {
     const defaultForm = function () {
       return {
@@ -240,6 +237,7 @@ export default {
         taskIds: [],
         taskNames: [],
         workstationSubstanceList: [],
+        areaTreeList: [],
 
 
 
@@ -335,7 +333,6 @@ export default {
         ],
         productionLineId: [],
         areaList: [],
-        areaTreeList: [],
       }
     };
   },
@@ -351,6 +348,9 @@ export default {
       }
     }
   },
+  created() {
+    this.getBasicAreaList()
+  },
   methods: {
     chooseAsset() {
       this.$refs.productRefs.open(this.form.extInfo, '选择设备', '4')
@@ -432,8 +432,8 @@ export default {
       });
 
     },
-    getAreaInfo(val) {
-      this.form.areaName = this.areaList.find((item) => item.id == val[0]).name;
+    getAreaInfo(nodeInfo) {
+      this.form.areaName = nodeInfo[0].pathLabels.join('/')
     },
     /* 保存编辑 */
     save() {

+ 32 - 5
src/views/factoryModel/station/components/search.vue

@@ -7,17 +7,24 @@
     @submit.native.prevent
   >
     <el-row :gutter="15">
-      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
+      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 6 }">
         <el-form-item label="工位编码:">
           <el-input clearable v-model="where.code" placeholder="请输入" />
         </el-form-item>
+        <el-form-item label="所属区域:">
+          <area-select
+            v-model="where.areaId"
+            :data="areaTreeList"
+            ref="tree"
+          />
+        </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
+      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 6 }">
         <el-form-item label="工位名称:">
           <el-input clearable v-model="where.name" placeholder="请输入" />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
+      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 6 }">
         <el-form-item label="负责人:">
           <el-select
             v-model="where.leaderId"
@@ -35,7 +42,7 @@
           </el-select>
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
+      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 6 }">
         <el-form-item label="组织机构:">
           <auth-selection v-model="where.deptIds" style="width: 100%"></auth-selection>
         </el-form-item>
@@ -59,7 +66,10 @@
 
 <script>
 import { getUserPage } from '@/api/system/organization';
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
+import {basicAreaPageAPI} from "@/api/regionalManage";
 export default {
+  components: {AreaSelect},
   props: {
     options_groupId: {
       type: Array,
@@ -93,7 +103,8 @@ export default {
       options: {
         groupId: [],
         leaderId: []
-      }
+      },
+      areaTreeList:[]
     };
   },
   computed: {
@@ -104,8 +115,24 @@ export default {
   },
   created() {
     this.getUserPage();
+    this.getBasicAreaList();
   },
   methods: {
+    /* 获取区域集合 */
+    async getBasicAreaList() {
+      this.areaList = await basicAreaPageAPI(
+        {
+          pageNum: 1,
+          size: 9999
+        }
+      )
+      this.areaTreeList = this.$util.toTreeData({
+        data: this.areaList,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+
+    },
     /* 搜索 */
     search() {
       this.$emit('search', this.where);

+ 1 - 1
src/views/factoryModel/station/index.vue

@@ -109,7 +109,7 @@
             slot: 'factory'
           },
           {
-            label: '区域',
+            label: '所属区域',
             prop: 'areaName',
           },
           {

+ 6 - 4
src/views/factoryModel/workshop/components/edit.vue

@@ -100,7 +100,7 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="区域:" prop="location_city">
+          <el-form-item label="所属区域:">
             <area-select
               v-model="form.areaId"
               @checkedKeys="getAreaInfo"
@@ -137,7 +137,7 @@ import { saveOrUpdate } from '@/api/factoryModel';
 import { getUserPage } from '@/api/system/organization';
 import deptSelect from '@/components/CommomSelect/dept-select.vue';
 import personSelect from '@/components/CommomSelect/person-select.vue';
-import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-select.vue";
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
 import {basicAreaPageAPI} from "@/api/regionalManage";
 export default {
   props: {
@@ -173,6 +173,8 @@ export default {
         id: '',
         code: '',
         name: '',
+        areaId: '',
+        areaName: '',
         extInfo: {
           location: '',
           principalDep: '' // 负责人部门
@@ -265,8 +267,8 @@ export default {
       });
 
     },
-    getAreaInfo(val) {
-      this.form.areaName = this.areaList.find((item) => item.id == val[0]).name;
+    getAreaInfo(nodeInfo) {
+      this.form.areaName = nodeInfo[0].pathLabels.join('/')
     },
     /* 保存编辑 */
     save() {

+ 33 - 1
src/views/factoryModel/workshop/components/search.vue

@@ -11,11 +11,20 @@
         <el-form-item label="车间编码:">
           <el-input clearable v-model="where.code" placeholder="请输入" />
         </el-form-item>
+        <el-form-item label="所属区域:">
+          <area-select
+            v-model="where.areaId"
+            :data="areaTreeList"
+            ref="tree"
+          />
+        </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.name" placeholder="请输入" />
         </el-form-item>
+
+
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="所属公司:">
@@ -71,7 +80,11 @@
 </template>
 
 <script>
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
+import {basicAreaPageAPI} from "@/api/regionalManage";
+
 export default {
+  components: {AreaSelect},
   props: {
     options_groupId: {
       type: Array,
@@ -105,7 +118,8 @@ export default {
       where: { ...defaultWhere },
       options: {
         groupId: []
-      }
+      },
+      areaTreeList:[]
     };
   },
   computed: {
@@ -114,11 +128,29 @@ export default {
       return this.$store.state.theme.styleResponsive;
     }
   },
+  created() {
+    this.getBasicAreaList();
+  },
   methods: {
     /* 搜索 */
     search() {
       this.$emit('search', this.where);
     },
+    /* 获取区域集合 */
+    async getBasicAreaList() {
+      const data= await basicAreaPageAPI(
+        {
+          pageNum: 1,
+          size: 9999
+        }
+      )
+      this.areaTreeList = this.$util.toTreeData({
+        data:data,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+
+    },
     /*  重置 */
     reset() {
       console.log(this.defaultWhere);

+ 1 - 1
src/views/factoryModel/workshop/index.vue

@@ -114,7 +114,7 @@
             slot: 'factory'
           },
           {
-            label: '区域',
+            label: '所属区域',
             prop: 'areaName',
           },
           {

+ 40 - 20
src/views/system/organization/components/org-user-edit.vue

@@ -6,16 +6,17 @@
       <el-row :gutter="15">
         <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
           <el-form-item label="所属机构:">
-            <org-select :data="organizationList" placeholder="请选择所属机构" v-model="form.groupId"
+            <org-select :data="institutionList" placeholder="请选择所属机构" v-model="form.groupId"
                         @checkedKeys="checkedKeys"/>
           </el-form-item>
 
           <el-form-item label="负责部门:">
-
-
             <el-cascader class="ele-block" :options="organizationList" placeholder="请选择负责部门"
                          :props="defaultProps"
-                         collapse-tags v-model="deptTree" clearable></el-cascader>
+                         ref="deptRef"
+                         :show-all-levels="false"
+                         @change="handleChange"
+                         collapse-tags v-model="form.deptIds" clearable></el-cascader>
 
           </el-form-item>
 
@@ -134,6 +135,8 @@ export default {
     data: Object,
     // 全部机构
     organizationList: Array,
+    //
+    institutionList: Array,
     // 机构id
     organizationId: [Number, String]
   },
@@ -141,8 +144,10 @@ export default {
     const defaultForm = {
       id: null,
       deptIds: [],
+      deptName:'' ,
 
       groupId: null,
+      groupName: null,
       name: '',
       sex: null,
       email: '',
@@ -211,6 +216,7 @@ export default {
       defaultProps: {
         multiple: true,
         checkStrictly: true,
+        emitPath: false,
         children: 'children',
         value: 'id',
         label: 'name'
@@ -225,6 +231,7 @@ export default {
   },
   created() {
     this.getFactoryList()
+    console.log(this.institutionList, '========');
   },
   methods: {
     getAccountList() {
@@ -249,13 +256,13 @@ export default {
         this.loading = true;
         this.form.addressId = this.city ? this.city[this.city.length - 1] : '';
 
-        if (this.deptTree.length > 0) {
-          this.deptTree.forEach(i => {
-            this.form.deptIds.push(i[i.length - 1])
-          })
-
-          this.form['deptTree'] = JSON.stringify(this.deptTree)
-        }
+        // if (this.deptTree.length > 0) {
+        //   this.deptTree.forEach(i => {
+        //     this.form.deptIds.push(i[i.length - 1])
+        //   })
+        //
+        //   this.form['deptTree'] = JSON.stringify(this.deptTree)
+        // }
 
 
         const data = {
@@ -285,12 +292,25 @@ export default {
     updateVisible(value) {
       this.$emit('update:visible', value);
     },
-
+    handleChange(){
+      let arr = Array.from(this.$refs.deptRef.getCheckedNodes())
+      this.form.deptName = arr.map(i => i.label).join('/')
+    },
     checkedKeys(value) {
-      this.deptTree = []
-      this.deptTree.push(value)
-
+      this.getLabelName(this.institutionList, i => {
+        if (i.id == this.form.groupId) {
+          return this.form.groupName = i.name
+        }
+      })
     },
+    getLabelName(data, callback) {
+      data.some((i) => {
+        callback(i)
+        if (i.children) {
+          this.getLabelName(i.children, callback)
+        }
+      })
+    }
 
   },
   watch: {
@@ -301,11 +321,11 @@ export default {
           getUserDetail(this.data.id).then((res) => {
             this.form = {...res};
 
-            this.deptTree = []
-            this.form.deptIds = []
-            if (this.form.deptTree) {
-              this.deptTree = JSON.parse(this.form.deptTree)
-            }
+            // this.deptTree = []
+            // this.form.deptIds = []
+            // if (this.form.deptTree) {
+            //   this.deptTree = JSON.parse(this.form.deptTree)
+            // }
 
 
             this.city = res.addressId ? res.addressId.toString() : null;

+ 3 - 1
src/views/system/organization/components/org-user-list.vue

@@ -82,6 +82,7 @@
       :data="current"
       :visible.sync="showEdit"
       :organization-list="organizationList"
+      :institutionList="institutionList"
       :organization-id="organizationId"
       @done="reload"
     />
@@ -103,7 +104,8 @@
       // 机构id
       organizationId: [Number, String],
       // 全部机构
-      organizationList: Array
+      organizationList: Array,
+      institutionList: Array,
     },
     data() {
       return {

+ 105 - 95
src/views/system/organization/index.vue

@@ -59,6 +59,7 @@
             v-if="current"
             :organization-list="data"
             :organization-id="current.id"
+            :institutionList="institutionList"
           />
         </template>
       </ele-split-layout>
@@ -75,111 +76,120 @@
 </template>
 
 <script>
-  import OrgUserList from './components/org-user-list.vue';
-  import OrgEdit from './components/org-edit.vue';
-  import {
-    listOrganizations,
-    removeOrganization
-  } from '@/api/system/organization';
+import OrgUserList from './components/org-user-list.vue';
+import OrgEdit from './components/org-edit.vue';
+import {
+  listOrganizations,
+  removeOrganization
+} from '@/api/system/organization';
 
-  export default {
-    name: 'SystemOrganization',
-    components: { OrgUserList, OrgEdit },
-    data() {
-      return {
-        // 加载状态
-        loading: true,
-        // 列表数据
-        data: [],
-        // 选中数据
-        current: null,
-        // 是否显示表单弹窗
-        showEdit: false,
-        // 编辑回显数据
-        editData: null,
-        // 上级id
-        parentId: null
-      };
+export default {
+  name: 'SystemOrganization',
+  components: {OrgUserList, OrgEdit},
+  data() {
+    return {
+      // 加载状态
+      loading: true,
+      // 列表数据
+      data: [],
+      institutionList: [],
+      // 选中数据
+      current: null,
+      // 是否显示表单弹窗
+      showEdit: false,
+      // 编辑回显数据
+      editData: null,
+      // 上级id
+      parentId: null
+    };
+  },
+  created() {
+    this.query();
+  },
+  methods: {
+    /* 查询 */
+    query() {
+      this.loading = true;
+      listOrganizations()
+        .then((list) => {
+          let _list = list.filter((i) => i.name != '超级管理员')
+          let _institutionList = _list.filter((i) => [10, 20].includes(i.type));
+          console.log(this.institutionList);
+          this.loading = false;
+          this.data = this.$util.toTreeData({
+            data: _list,
+            idField: 'id',
+            parentIdField: 'parentId'
+          });
+          this.institutionList = this.$util.toTreeData({
+            data: _institutionList,
+            idField: 'id',
+            parentIdField: 'parentId'
+          });
+          this.$nextTick(() => {
+            this.onNodeClick(this.data[0]);
+          });
+        })
+        .catch((e) => {
+          this.loading = false;
+          // this.$message.error(e.message);
+        });
     },
-    created() {
-      this.query();
+    /* 选择数据 */
+    onNodeClick(row) {
+      if (row) {
+        this.current = row;
+        this.parentId = row.id;
+        this.$refs.tree.setCurrentKey(row.id);
+      } else {
+        this.current = null;
+        this.parentId = null;
+      }
     },
-    methods: {
-      /* 查询 */
-      query() {
-        this.loading = true;
-        listOrganizations()
-          .then((list) => {
-           let _list = list.filter((i) => i.name != '超级管理员')
-            this.loading = false;
-            this.data = this.$util.toTreeData({
-              data: _list,
-              idField: 'id',
-              parentIdField: 'parentId'
-            });
-            this.$nextTick(() => {
-              this.onNodeClick(this.data[0]);
+    /* 显示编辑 */
+    openEdit(item) {
+      this.editData = item;
+      this.showEdit = true;
+    },
+    /* 删除 */
+    remove() {
+      this.$confirm('确定要删除选中的机构吗?', '提示', {
+        type: 'warning'
+      })
+        .then(() => {
+          const loading = this.$loading({lock: true});
+          removeOrganization([this.current.id])
+            .then((msg) => {
+              loading.close();
+              this.$message.success(msg);
+              this.query();
+            })
+            .catch((e) => {
+              loading.close();
+              // this.$message.error(e.message);
             });
-          })
-          .catch((e) => {
-            this.loading = false;
-            // this.$message.error(e.message);
-          });
-      },
-      /* 选择数据 */
-      onNodeClick(row) {
-        if (row) {
-          this.current = row;
-          this.parentId = row.id;
-          this.$refs.tree.setCurrentKey(row.id);
-        } else {
-          this.current = null;
-          this.parentId = null;
-        }
-      },
-      /* 显示编辑 */
-      openEdit(item) {
-        this.editData = item;
-        this.showEdit = true;
-      },
-      /* 删除 */
-      remove() {
-        this.$confirm('确定要删除选中的机构吗?', '提示', {
-          type: 'warning'
         })
-          .then(() => {
-            const loading = this.$loading({ lock: true });
-            removeOrganization([this.current.id])
-              .then((msg) => {
-                loading.close();
-                this.$message.success(msg);
-                this.query();
-              })
-              .catch((e) => {
-                loading.close();
-                // this.$message.error(e.message);
-              });
-          })
-          .catch(() => {});
-      }
+        .catch(() => {
+        });
     }
-  };
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-  .sys-organization-list {
-    height: calc(100vh - 264px);
-    box-sizing: border-box;
-    border-width: 1px;
-    border-style: solid;
-    overflow: auto;
-  }
+.sys-organization-list {
+  height: calc(100vh - 264px);
+  box-sizing: border-box;
+  border-width: 1px;
+  border-style: solid;
+  overflow: auto;
+}
 
-  .sys-organization-list :deep(.el-tree-node__content) {
-    height: 40px;
+.sys-organization-list :deep(.el-tree-node__content) {
+  height: 40px;
 
-    & > .el-tree-node__expand-icon {
-      margin-left: 10px;
-    }
+  & > .el-tree-node__expand-icon {
+    margin-left: 10px;
   }
+}
 </style>