Z пре 1 година
родитељ
комит
761272cfe2

+ 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;
   }

+ 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>

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

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

+ 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',
           },
           {

+ 4 - 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: {
@@ -493,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',
         },
         {

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

@@ -48,7 +48,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"
@@ -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: {
@@ -237,6 +237,7 @@ export default {
         taskIds: [],
         taskNames: [],
         workstationSubstanceList: [],
+        areaTreeList: [],
 
 
 
@@ -332,7 +333,6 @@ export default {
         ],
         productionLineId: [],
         areaList: [],
-        areaTreeList: [],
       }
     };
   },
@@ -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',
           },
           {

+ 4 - 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: {
@@ -267,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>