소스 검색

工厂管理

jabin 3 년 전
부모
커밋
efe7ebf872

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 15400 - 1
package-lock.json


+ 0 - 1
package.json

@@ -29,7 +29,6 @@
     "echarts": "^5.3.3",
     "echarts-wordcloud": "^2.0.0",
     "ele-admin": "^1.11.2",
-    "element-china-area-data": "^6.0.2",
     "element-ui": "2.15.7",
     "github-markdown-css": "^5.1.0",
     "jsbarcode": "^3.11.5",

+ 32 - 0
src/api/factoryModel/factoryManagement/index.js

@@ -0,0 +1,32 @@
+import request from '@/utils/request';
+export async function saveOrUpdate(params) {
+    const res = await request.post(
+        `/main/factoryarea/saveOrUpdate`,
+        params
+    );
+    if (res.data.code == 0) {
+        return res.data.message;
+    }
+    return Promise.reject(new Error(res.data.message));
+}
+export async function getFactoryarea(params) {
+    const res = await request.get(
+        `/main/factoryarea/page`,
+        {
+            params
+        }
+    );
+    if (res.data.code == 0) {
+        return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+}
+export async function deletefactoryarea(params) {
+    const res = await request.get(
+        `/main/factoryarea/delete/${params}`,
+    );
+    if (res.data.code == 0) {
+        return res.data.message;
+    }
+    return Promise.reject(new Error(res.data.message));
+}

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

@@ -98,8 +98,7 @@ export default {
     // },
     //动态路由
     async fetchUserInfo({ commit }) {
-      const result = await getResourcesTree().catch(() => {});
-      console.log('result--', result);
+      const result = await getResourcesTree().catch(() => { });
       if (!result) {
         return {};
       }
@@ -119,20 +118,20 @@ export default {
       // 用户菜单, 过滤掉按钮类型并转为 children 形式
       const { menus, homePath } = formatMenus(
         USER_MENUS ??
-          toTreeData({
-            data: menuList,
-            idField: 'id',
-            parentIdField: 'parentId'
-          })
+        toTreeData({
+          data: menuList,
+          idField: 'id',
+          parentIdField: 'parentId'
+        })
       );
       // 用户路由按钮
       const { menus: authoritiesRouter } = formatMenus(
         USER_MENUS ??
-          toTreeData({
-            data: authorities.filter((i) => i.path),
-            idField: 'id',
-            parentIdField: 'parentId'
-          })
+        toTreeData({
+          data: authorities.filter((i) => i.path),
+          idField: 'id',
+          parentIdField: 'parentId'
+        })
       );
       console.log('menus--', menus);
       commit('setMenus', menus);

+ 101 - 101
src/views/codeManagement/components/code-list.vue

@@ -53,111 +53,111 @@
 </template>
 
 <script>
-  import CodeSearch from './code-search.vue';
-  import addDialog from './addDialog.vue';
-  import { getCodeList, removeCodeInfo } from '@/api/codeManagement/index';
+import CodeSearch from './code-search.vue';
+import addDialog from './addDialog.vue';
+import { getCodeList, removeCodeInfo } from '@/api/codeManagement/index';
 
-  export default {
-    components: { CodeSearch, addDialog },
-    props: {
-      // 机构id
-      organizationId: [Number, String],
-      // 全部机构
-      organizationList: Array
+export default {
+  components: { CodeSearch, addDialog },
+  props: {
+    // 机构id
+    organizationId: [Number, String],
+    // 全部机构
+    organizationList: Array
+  },
+  data() {
+    return {
+      // 表格列配置
+      columns: [
+        {
+          columnKey: 'index',
+          type: 'index',
+          width: 45,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left'
+        },
+        {
+          prop: 'code',
+          label: '编码',
+          // sortable: 'custom',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'name',
+          label: '名称',
+          // sortable: 'custom',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'remark',
+          label: '描述',
+          align: 'left',
+          // sortable: 'custom',
+          minWidth: 200,
+          showOverflowTooltip: true
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 130,
+          align: 'center',
+          resizable: false,
+          slot: 'action',
+          showOverflowTooltip: true
+        }
+      ],
+      // 当前编辑数据
+      current: null,
+      // 是否显示编辑弹窗
+      showEdit: false
+    };
+  },
+  methods: {
+    /* 表格数据源 */
+    datasource({ page, limit, where, order }) {
+      return getCodeList({
+        ...where,
+        ...order,
+        pageNum: page,
+        size: limit
+        // groupId: 1
+      });
     },
-    data() {
-      return {
-        // 表格列配置
-        columns: [
-          {
-            columnKey: 'index',
-            type: 'index',
-            width: 45,
-            align: 'center',
-            showOverflowTooltip: true,
-            fixed: 'left'
-          },
-          {
-            prop: 'code',
-            label: '编码',
-            // sortable: 'custom',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'name',
-            label: '名称',
-            // sortable: 'custom',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'remark',
-            label: '描述',
-            align: 'left',
-            // sortable: 'custom',
-            minWidth: 200,
-            showOverflowTooltip: true
-          },
-          {
-            columnKey: 'action',
-            label: '操作',
-            width: 130,
-            align: 'center',
-            resizable: false,
-            slot: 'action',
-            showOverflowTooltip: true
-          }
-        ],
-        // 当前编辑数据
-        current: null,
-        // 是否显示编辑弹窗
-        showEdit: false
-      };
+    /* 刷新表格 */
+    reload(where) {
+      this.$refs.table.reload({ pageNum: 1, where: where });
     },
-    methods: {
-      /* 表格数据源 */
-      datasource({ page, limit, where, order }) {
-        return getCodeList({
-          ...where,
-          ...order,
-          pageNum: page,
-          size: limit
-          // groupId: 1
-        });
-      },
-      /* 刷新表格 */
-      reload(where) {
-        this.$refs.table.reload({ pageNum: 1, where: where });
-      },
-      /* 显示编辑 */
-      openEdit(row) {
-        if (row) {
-          this.$refs.addDialog.open('edit', row);
-        } else {
-          this.$refs.addDialog.open('add');
-        }
-      },
-      /* 删除 */
-      remove(row) {
-        const loading = this.$loading({ lock: true });
-        removeCodeInfo([row.id])
-          .then((msg) => {
-            loading.close();
-            this.$message.success(msg);
-            this.reload();
-          })
-          .catch((e) => {
-            loading.close();
-            // this.$message.error(e.message);
-          });
+    /* 显示编辑 */
+    openEdit(row) {
+      if (row) {
+        this.$refs.addDialog.open('edit', row);
+      } else {
+        this.$refs.addDialog.open('add');
       }
     },
-    watch: {
-      // 监听机构id变化
-      // organizationId() {
-      //   this.reload();
-      // }
+    /* 删除 */
+    remove(row) {
+      const loading = this.$loading({ lock: true });
+      removeCodeInfo([row.id])
+        .then((msg) => {
+          loading.close();
+          this.$message.success(msg);
+          this.reload();
+        })
+        .catch((e) => {
+          loading.close();
+          // this.$message.error(e.message);
+        });
     }
-  };
+  },
+  watch: {
+    // 监听机构id变化
+    // organizationId() {
+    //   this.reload();
+    // }
+  }
+};
 </script>

+ 0 - 212
src/views/factoryModel/companyManagement/components/edit.vue

@@ -1,212 +0,0 @@
-<!-- 用户编辑弹窗 -->
-<template>
-  <el-dialog
-    class="ele-dialog-form"
-    :title="title"
-    :visible.sync="visible"
-    :before-close="handleClose"
-    :close-on-click-modal="false"
-    :close-on-press-escape="false"
-    width="1000px"
-  >
-    <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-      <el-row>
-        <el-col :span="8">
-          <el-form-item
-            label="工厂编码:"
-            prop="loginName"
-            style="margin-bottom: 22px"
-          >
-            <el-input
-              clearable
-              :maxlength="20"
-              v-model="form.loginName"
-              placeholder="请输入用户账号"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item
-            label="工厂名称:"
-            prop="loginName"
-            style="margin-bottom: 22px"
-          >
-            <el-input
-              clearable
-              :maxlength="20"
-              v-model="form.loginName"
-              placeholder="请输入用户账号"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item
-            label="所属公司:"
-            prop="loginName"
-            style="margin-bottom: 22px"
-          >
-            <el-input
-              clearable
-              :maxlength="20"
-              v-model="form.loginName"
-              placeholder="请输入用户账号"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="16" style="margin-bottom: 22px">
-          <el-form-item label="地址:" prop="loginName">
-            <div class="location-warp">
-              <el-cascader
-                v-model="form.value"
-                :options="cityData"
-              ></el-cascader>
-              <el-input
-                class="detail"
-                clearable
-                :maxlength="20"
-                v-model="form.location"
-                placeholder="请输入详细地址"
-              />
-            </div>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8" style="margin-bottom: 22px">
-          <el-form-item label="状态:" prop="loginName">
-            <div class="location-warp">
-              <el-select v-model="form.location" v placeholder="请选择">
-                <el-option
-                  v-for="item in options.zt"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                >
-                </el-option>
-              </el-select>
-            </div>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-    <template v-slot:footer>
-      <el-button @click="handleClose">取消</el-button>
-      <el-button type="primary" :loading="loading" @click="save">
-        保存
-      </el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script>
-import { regionData } from 'element-china-area-data';
-export default {
-  data() {
-    const defaultForm = {
-      id: null,
-      loginName: '',
-      roleId: [],
-      loginPwd: '',
-      enable: 1,
-      location: ''
-    };
-    return {
-      defaultForm,
-      // 表单数据
-      form: { ...defaultForm },
-      // 表单验证规则
-      rules: {
-        loginName: [
-          { required: true, message: '请输入用户账号', trigger: 'blur' }
-        ],
-        roleId: [{ required: true, message: '请选择角色', trigger: 'blur' }],
-        loginPwd: [
-          {
-            required: true,
-            pattern: /^[\S]{5,18}$/,
-            message: '密码必须为5-18位非空白字符',
-            trigger: 'blur'
-          }
-        ]
-      },
-      visible: false,
-      type: '', // add/edit
-      loading: false,
-      options: {
-        zt: []
-      }
-    };
-  },
-  computed: {
-    title() {
-      switch (this.type) {
-        case 'add':
-          return '新增工厂';
-          break;
-        case 'edit':
-          return '编辑工厂';
-          break;
-        default:
-          break;
-      }
-    },
-    cityData() {
-      let result = regionData.find((n) => {
-        return n.label == '湖南省';
-      });
-      if (result) {
-        return result.children;
-      } else {
-        return [];
-      }
-    }
-  },
-  methods: {
-    open(type, row) {
-      this.type = type;
-      this.visible = true;
-    },
-    /* 保存编辑 */
-    save() {
-      this.$refs.form.validate((valid) => {
-        if (!valid) {
-          return false;
-        }
-        this.loading = true;
-        if (!this.isUpdate) {
-          delete this.form.id;
-        }
-        const data = {
-          ...this.form
-        };
-        const saveOrUpdate = this.isUpdate ? putUsers : addUsers;
-        saveOrUpdate(data)
-          .then((msg) => {
-            this.loading = false;
-            this.$message.success(msg);
-            this.updateVisible(false);
-            this.$emit('done');
-          })
-          .catch((e) => {
-            this.loading = false;
-            this.$message.error(e.message);
-          });
-      });
-    },
-    restForm() {
-      this.$refs.form.clearValidate();
-      this.form = { ...this.defaultForm };
-    },
-    handleClose() {
-      this.restForm();
-      this.visible = false;
-    }
-  }
-};
-</script>
-<style lang="scss" scoped>
-.location-warp {
-  display: flex;
-  .detail {
-    margin-left: 10px;
-  }
-}
-</style>

+ 0 - 100
src/views/factoryModel/companyManagement/components/search.vue

@@ -1,100 +0,0 @@
-<!-- 搜索表单 -->
-<template>
-  <el-form
-    label-width="77px"
-    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.name" 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.url" placeholder="请输入" />
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="状态:">
-          <el-select
-            v-model="where.state"
-            class="m-2"
-            placeholder="请选择"
-            size="large"
-          >
-            <el-option
-              v-for="item in options.state"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            />
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <div class="ele-form-actions">
-          <el-button
-            type="primary"
-            icon="el-icon-search"
-            class="ele-btn-icon"
-            @click="search"
-          >
-            查询
-          </el-button>
-          <el-button @click="reset">重置</el-button>
-        </div>
-      </el-col>
-    </el-row>
-  </el-form>
-</template>
-
-<script>
-export default {
-  data() {
-    // 默认表单数据
-    const defaultWhere = {
-      name: '',
-      url: '',
-      state: ''
-    };
-    return {
-      defaultWhere,
-      // 表单数据
-      where: { ...defaultWhere },
-      options: {
-        state: [
-          {
-            label: '生效',
-            value: 1
-          },
-          {
-            label: '失效',
-            value: 2
-          }
-        ]
-      }
-    };
-  },
-  computed: {
-    // 是否开启响应式布局
-    styleResponsive() {
-      return this.$store.state.theme.styleResponsive;
-    }
-  },
-  methods: {
-    /* 搜索 */
-    search() {
-      this.$emit('search', this.where);
-    },
-    /*  重置 */
-    reset() {
-      console.log(this.defaultWhere);
-      this.where = { ...this.defaultWhere };
-      this.search();
-    }
-  }
-};
-</script>

+ 0 - 126
src/views/factoryModel/companyManagement/index.vue

@@ -1,126 +0,0 @@
-<template>
-  <div class="ele-body">
-    <el-card shadow="never">
-      <search @search="search"></search>
-      <ele-pro-table
-        ref="table"
-        :columns="columns"
-        :datasource="datasource"
-        cache-key="systemRoleTable"
-      >
-        <!-- 表头工具栏 -->
-        <template v-slot:toolbar>
-          <el-button
-            size="small"
-            type="primary"
-            icon="el-icon-plus"
-            class="ele-btn-icon"
-            @click="openEdit('add')"
-          >
-            添加
-          </el-button>
-        </template>
-        <template v-slot:enable="{ row }">
-          <el-switch
-            v-model="row.enable"
-            active-color="#13ce66"
-            inactive-color="#ff4949"
-            :active-value="1"
-            :inactive-value="0"
-            @change="changeEnable(row)"
-          >
-          </el-switch>
-        </template>
-        <!-- 操作列 -->
-        <template v-slot:action="{ row }">
-          <el-link
-            type="primary"
-            :underline="false"
-            icon="el-icon-edit"
-            @click="openEdit('edit', row)"
-          >
-            修改
-          </el-link>
-          <el-popconfirm
-            class="ele-action"
-            title="确定要删除此角色吗?"
-            @confirm="remove(row)"
-          >
-            <template v-slot:reference>
-              <el-link type="danger" :underline="false" icon="el-icon-delete">
-                删除
-              </el-link>
-            </template>
-          </el-popconfirm>
-        </template>
-      </ele-pro-table>
-    </el-card>
-    <edit ref="edit"></edit>
-  </div>
-</template>
-<script>
-import search from './components/search.vue';
-import edit from './components/edit.vue';
-export default {
-  components: {
-    search,
-    edit
-  },
-  data() {
-    return {
-      columns: [
-        {
-          width: 45,
-          type: 'index',
-          columnKey: 'index',
-          align: 'center'
-        },
-        {
-          prop: 'username',
-          label: '用户账号'
-        },
-        {
-          label: '用户名',
-          prop: 'nickname'
-        },
-        {
-          label: '手机号',
-          prop: 'phone'
-        },
-        {
-          label: '创建时间',
-          prop: 'createTime'
-        },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 220,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true
-        }
-      ]
-    };
-  },
-  methods: {
-    datasource(par) {
-      console.log(par);
-      return [
-        {
-          username: 'asdad'
-        }
-      ];
-    },
-    search(where) {
-      this.$refs.table.reload({
-        where: where,
-        page: 1
-      });
-    },
-    openEdit(type, row) {
-      this.$refs.edit.open(type, row);
-    }
-  }
-};
-</script>

+ 98 - 53
src/views/factoryModel/factoryManagement/components/edit.vue

@@ -14,66 +14,76 @@
         <el-col :span="8">
           <el-form-item
             label="工厂编码:"
-            prop="loginName"
+            prop="code"
             style="margin-bottom: 22px"
           >
             <el-input
               clearable
               :maxlength="20"
-              v-model="form.loginName"
-              placeholder="请输入用户账号"
+              v-model="form.code"
+              placeholder="请输入"
             />
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item
             label="工厂名称:"
-            prop="loginName"
+            prop="name"
             style="margin-bottom: 22px"
           >
             <el-input
               clearable
               :maxlength="20"
-              v-model="form.loginName"
-              placeholder="请输入用户账号"
+              v-model="form.name"
+              placeholder="请输入"
             />
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item
             label="所属公司:"
-            prop="loginName"
+            prop="groupId"
             style="margin-bottom: 22px"
           >
-            <el-input
+            <ele-tree-select
               clearable
-              :maxlength="20"
-              v-model="form.loginName"
-              placeholder="请输入用户账号"
+              :data="options.groupId"
+              v-model="form.groupId"
+              valueKey="id"
+              labelKey="name"
+              placeholder="请选择"
+              default-expand-all
             />
           </el-form-item>
         </el-col>
         <el-col :span="16" style="margin-bottom: 22px">
-          <el-form-item label="地址:" prop="loginName">
+          <el-form-item label="地址:" prop="location_city">
             <div class="location-warp">
               <el-cascader
-                v-model="form.value"
-                :options="cityData"
+                clearable
+                style="width: 385px"
+                v-model="form.location"
+                :options="options.cityDataLabel"
               ></el-cascader>
               <el-input
                 class="detail"
                 clearable
                 :maxlength="20"
-                v-model="form.location"
+                v-model="form.locationDetail"
                 placeholder="请输入详细地址"
               />
             </div>
           </el-form-item>
         </el-col>
         <el-col :span="8" style="margin-bottom: 22px">
-          <el-form-item label="状态:" prop="loginName">
+          <el-form-item label="状态:" prop="enabled">
             <div class="location-warp">
-              <el-select v-model="form.location" v placeholder="请选择">
+              <el-select
+                v-model="form.enabled"
+                v
+                placeholder="请选择"
+                style="width: 100%"
+              >
                 <el-option
                   v-for="item in options.zt"
                   :key="item.value"
@@ -97,16 +107,21 @@
 </template>
 
 <script>
-import { regionData } from 'element-china-area-data';
+import { cityDataLabel } from 'ele-admin/packages/utils/regions';
+import { listOrganizations } from '@/api/system/organization';
+import { saveOrUpdate } from '@/api/factoryModel/factoryManagement';
 export default {
   data() {
     const defaultForm = {
-      id: null,
-      loginName: '',
-      roleId: [],
-      loginPwd: '',
-      enable: 1,
-      location: ''
+      id: '',
+      code: '',
+      name: '',
+      groupId: '',
+      locationDetail: '',
+      location: [],
+      enabled: 1,
+      parentId: '',
+      type: 1 //  FACTORY(1, "工厂"), WORKSHOP_PLAN(2, "厂房"), WORKSHOP(3, "车间"), LINE(4, "厂线");
     };
     return {
       defaultForm,
@@ -114,24 +129,26 @@ export default {
       form: { ...defaultForm },
       // 表单验证规则
       rules: {
-        loginName: [
-          { required: true, message: '请输入用户账号', trigger: 'blur' }
-        ],
-        roleId: [{ required: true, message: '请选择角色', trigger: 'blur' }],
-        loginPwd: [
-          {
-            required: true,
-            pattern: /^[\S]{5,18}$/,
-            message: '密码必须为5-18位非空白字符',
-            trigger: 'blur'
-          }
-        ]
+        code: [{ required: true, message: '请输入', trigger: 'blur' }],
+        name: [{ required: true, message: '请输入', trigger: 'blur' }],
+        groupId: [{ required: true, message: '请输入', trigger: 'blur' }]
       },
       visible: false,
       type: '', // add/edit
       loading: false,
       options: {
-        zt: []
+        zt: [
+          {
+            label: '生效',
+            value: 1
+          },
+          {
+            label: '未生效',
+            value: 0
+          }
+        ],
+        groupId: [],
+        cityDataLabel
       }
     };
   },
@@ -147,22 +164,26 @@ export default {
         default:
           break;
       }
-    },
-    cityData() {
-      let result = regionData.find((n) => {
-        return n.label == '湖南省';
-      });
-      if (result) {
-        return result.children;
-      } else {
-        return [];
-      }
     }
   },
+  created() {
+    this.getGs();
+  },
   methods: {
     open(type, row) {
       this.type = type;
       this.visible = true;
+      if (type == 'edit') {
+        this.form.id = row.id;
+        this.form.code = row.code;
+        this.form.name = row.name;
+        this.form.groupId = row.groupId;
+        this.form.enabled = row.enabled;
+        this.form.parentId = row.parentId;
+        this.form.type = row.type;
+        this.form.location = row.extInfo.location.split('/');
+        this.form.locationDetail = row.extInfo.locationDetail;
+      }
     },
     /* 保存编辑 */
     save() {
@@ -171,18 +192,25 @@ export default {
           return false;
         }
         this.loading = true;
-        if (!this.isUpdate) {
-          delete this.form.id;
-        }
+
         const data = {
-          ...this.form
+          code: this.form.code,
+          name: this.form.name,
+          groupId: this.form.groupId,
+          enabled: this.form.enabled,
+          parentId: this.form.groupId,
+          type: this.form.type,
+          extInfo: this.setLocation()
         };
-        const saveOrUpdate = this.isUpdate ? putUsers : addUsers;
+        if (this.type == 'edit') {
+          data.id = this.form.id;
+        }
+        console.log(data);
         saveOrUpdate(data)
           .then((msg) => {
             this.loading = false;
             this.$message.success(msg);
-            this.updateVisible(false);
+            this.handleClose();
             this.$emit('done');
           })
           .catch((e) => {
@@ -198,6 +226,23 @@ export default {
     handleClose() {
       this.restForm();
       this.visible = false;
+    },
+    // 获取公司数据
+    getGs() {
+      listOrganizations().then((list) => {
+        console.log(list);
+        this.options.groupId = this.$util.toTreeData({
+          data: list,
+          idField: 'id',
+          parentIdField: 'parentId'
+        });
+      });
+    },
+    setLocation() {
+      return {
+        location: this.form.location.join('/'),
+        locationDetail: this.form.locationDetail
+      };
     }
   }
 };

+ 6 - 6
src/views/factoryModel/factoryManagement/components/search.vue

@@ -9,18 +9,18 @@
     <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.name" placeholder="请输入" />
+          <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="工厂名称:">
-          <el-input clearable v-model="where.url" 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 }">
         <el-form-item label="状态:">
           <el-select
-            v-model="where.state"
+            v-model="where.enable"
             class="m-2"
             placeholder="请选择"
             size="large"
@@ -56,9 +56,9 @@ export default {
   data() {
     // 默认表单数据
     const defaultWhere = {
+      code: '',
       name: '',
-      url: '',
-      state: ''
+      enable: ''
     };
     return {
       defaultWhere,
@@ -72,7 +72,7 @@ export default {
           },
           {
             label: '失效',
-            value: 2
+            value: 0
           }
         ]
       }

+ 77 - 28
src/views/factoryModel/factoryManagement/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="ele-body">
     <el-card shadow="never">
-      <search @search="search"></search>
+      <search ref="search" @search="search"></search>
       <ele-pro-table
         ref="table"
         :columns="columns"
@@ -20,16 +20,11 @@
             添加
           </el-button>
         </template>
-        <template v-slot:enable="{ row }">
-          <el-switch
-            v-model="row.enable"
-            active-color="#13ce66"
-            inactive-color="#ff4949"
-            :active-value="1"
-            :inactive-value="0"
-            @change="changeEnable(row)"
-          >
-          </el-switch>
+        <template v-slot:enabled="{ row }">
+          {{ dict.enabled[row.enabled] }}
+        </template>
+        <template v-slot:groupId="{ row }">
+          {{ showgroupName(row.groupId) }}
         </template>
         <!-- 操作列 -->
         <template v-slot:action="{ row }">
@@ -55,12 +50,17 @@
         </template>
       </ele-pro-table>
     </el-card>
-    <edit ref="edit"></edit>
+    <edit ref="edit" @done="done"></edit>
   </div>
 </template>
 <script>
 import search from './components/search.vue';
 import edit from './components/edit.vue';
+import {
+  getFactoryarea,
+  deletefactoryarea
+} from '@/api/factoryModel/factoryManagement';
+import { listOrganizations } from '@/api/system/organization';
 export default {
   components: {
     search,
@@ -76,20 +76,30 @@ export default {
           align: 'center'
         },
         {
-          prop: 'username',
-          label: '用户账号'
+          prop: 'code',
+          label: '工厂编码'
+        },
+        {
+          label: '工厂名称',
+          prop: 'name'
         },
         {
-          label: '用户名',
-          prop: 'nickname'
+          label: '所属公司',
+          prop: 'groupId',
+          slot: 'groupId'
         },
         {
-          label: '手机号',
-          prop: 'phone'
+          label: '省/市/区',
+          prop: 'extInfo.location'
         },
         {
-          label: '创建时间',
-          prop: 'createTime'
+          label: '详细地址',
+          prop: 'extInfo.locationDetail'
+        },
+        {
+          label: '状态',
+          prop: 'enabled',
+          slot: 'enabled'
         },
         {
           columnKey: 'action',
@@ -100,17 +110,27 @@ export default {
           slot: 'action',
           showOverflowTooltip: true
         }
-      ]
+      ],
+      dict: {
+        enabled: {
+          1: '生效',
+          0: '未生效'
+        },
+        groupId: []
+      }
     };
   },
+  created() {
+    this.getGs();
+  },
   methods: {
-    datasource(par) {
-      console.log(par);
-      return [
-        {
-          username: 'asdad'
-        }
-      ];
+    datasource({ page, where, limit }) {
+      return getFactoryarea({
+        ...where,
+        pageNum: page,
+        size: limit,
+        type: 1
+      });
     },
     search(where) {
       this.$refs.table.reload({
@@ -120,6 +140,35 @@ export default {
     },
     openEdit(type, row) {
       this.$refs.edit.open(type, row);
+    },
+    // 获取公司数据
+    getGs() {
+      listOrganizations().then((list) => {
+        console.log(list);
+        this.dict.groupId = list;
+      });
+    },
+    // 回显公司名称
+    showgroupName(id) {
+      let result = this.dict.groupId.find((n) => n.id == id);
+      if (result) {
+        return result.name;
+      } else {
+        return '';
+      }
+    },
+    remove(row) {
+      deletefactoryarea(row.id)
+        .then((message) => {
+          this.$message.success(message);
+          this.done();
+        })
+        .catch((e) => {
+          this.$message.error(e.message);
+        });
+    },
+    done() {
+      this.$refs.search.search();
     }
   }
 };

+ 144 - 144
src/views/system/menu/index.vue

@@ -101,153 +101,153 @@
 </template>
 
 <script>
-  import MenuSearch from './components/menu-search.vue';
-  import MenuEdit from './components/menu-edit.vue';
-  import { listMenus, deleteMenu } from '@/api/system/menu';
+import MenuSearch from './components/menu-search.vue';
+import MenuEdit from './components/menu-edit.vue';
+import { listMenus, deleteMenu } from '@/api/system/menu';
 
-  export default {
-    name: 'SystemMenu',
-    components: { MenuSearch, MenuEdit },
-    data() {
-      return {
-        // 表格列配置
-        columns: [
-          {
-            columnKey: 'index',
-            type: 'index',
-            width: 45,
-            align: 'center',
-            showOverflowTooltip: true,
-            fixed: 'left'
-          },
-          {
-            prop: 'name',
-            label: '菜单名称',
-            showOverflowTooltip: true,
-            minWidth: 110,
-            slot: 'name'
-          },
-          {
-            prop: 'url',
-            label: '路由地址',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'sort',
-            label: '排序',
-            align: 'center',
-            showOverflowTooltip: true,
-            width: 60
-          },
-          {
-            prop: 'type',
-            label: '类型',
-            align: 'center',
-            showOverflowTooltip: true,
-            width: 60,
-            slot: 'type'
-          },
-          {
-            prop: 'createTime',
-            label: '创建时间',
-            showOverflowTooltip: true,
-            minWidth: 110,
-            formatter: (_row, _column, cellValue) => {
-              return this.$util.toDateString(cellValue);
-            }
-          },
-          {
-            columnKey: 'action',
-            label: '操作',
-            width: 190,
-            align: 'center',
-            resizable: false,
-            slot: 'action',
-            showOverflowTooltip: true
+export default {
+  name: 'SystemMenu',
+  components: { MenuSearch, MenuEdit },
+  data() {
+    return {
+      // 表格列配置
+      columns: [
+        {
+          columnKey: 'index',
+          type: 'index',
+          width: 45,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left'
+        },
+        {
+          prop: 'name',
+          label: '菜单名称',
+          showOverflowTooltip: true,
+          minWidth: 110,
+          slot: 'name'
+        },
+        {
+          prop: 'url',
+          label: '路由地址',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'sort',
+          label: '排序',
+          align: 'center',
+          showOverflowTooltip: true,
+          width: 60
+        },
+        {
+          prop: 'type',
+          label: '类型',
+          align: 'center',
+          showOverflowTooltip: true,
+          width: 60,
+          slot: 'type'
+        },
+        {
+          prop: 'createTime',
+          label: '创建时间',
+          showOverflowTooltip: true,
+          minWidth: 110,
+          formatter: (_row, _column, cellValue) => {
+            return this.$util.toDateString(cellValue);
           }
-        ],
-        // 当前编辑数据
-        current: null,
-        // 是否显示编辑弹窗
-        showEdit: false,
-        // 全部菜单数据
-        menuList: [],
-        // 上级菜单id
-        parentId: null
-      };
-    },
-    methods: {
-      /* 表格数据源 */
-      datasource({ where }) {
-        return listMenus({ ...where });
-      },
-      /* 数据转为树形结构 */
-      parseData(data) {
-        // data.map(item=>{
-        //    item.id = parseInt(item.id)
-        // })
-        return this.$util.toTreeData({
-          data: data,
-          idField: 'id',
-          parentIdField: 'parentId'
-        });
-      },
-      /* 表格渲染完成回调 */
-      onDone({ data }) {
-        //if (!this.menuList.length) {
-        this.menuList = data;
-        //}
-      },
-      /* 刷新表格 */
-      reload(where) {
-        this.$refs.table.reload({ where: where });
-      },
-      /* 显示编辑 */
-      openEdit(row, parentId) {
-        this.current = row;
-        this.parentId = parentId;
-        this.showEdit = true;
-      },
-      /* 删除 */
-      remove(row) {
-        if (row.children?.length) {
-          this.$message.error('请先删除子节点');
-          return;
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 190,
+          align: 'center',
+          resizable: false,
+          slot: 'action',
+          showOverflowTooltip: true
         }
-        const loading = this.$loading({ lock: true });
-        deleteMenu([row.id])
-          .then((res) => {
-            loading.close();
-            this.$message.success('菜单删除成功');
-            this.reload();
-          })
-          .catch((e) => {
-            loading.close();
-            // this.$message.error(e.message);
-          });
-      },
-      /* 展开全部 */
-      expandAll() {
-        this.$refs.table.toggleRowExpansionAll(true);
-      },
-      /* 折叠全部 */
-      foldAll() {
-        this.$refs.table.toggleRowExpansionAll(false);
-      },
-      /* 判断是否是外链 */
-      isUrl(url) {
-        return !!(
-          url &&
-          (url.startsWith('http://') ||
-            url.startsWith('https://') ||
-            url.startsWith('//'))
-        );
-      },
-      /* 判断是否是目录 */
-      isDirectory(d) {
-        return !!d.children?.length && !d.component;
+      ],
+      // 当前编辑数据
+      current: null,
+      // 是否显示编辑弹窗
+      showEdit: false,
+      // 全部菜单数据
+      menuList: [],
+      // 上级菜单id
+      parentId: null
+    };
+  },
+  methods: {
+    /* 表格数据源 */
+    datasource({ where }) {
+      return listMenus({ ...where });
+    },
+    /* 数据转为树形结构 */
+    parseData(data) {
+      // data.map(item=>{
+      //    item.id = parseInt(item.id)
+      // })
+      return this.$util.toTreeData({
+        data: data,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+    },
+    /* 表格渲染完成回调 */
+    onDone({ data }) {
+      //if (!this.menuList.length) {
+      this.menuList = data;
+      //}
+    },
+    /* 刷新表格 */
+    reload(where) {
+      this.$refs.table.reload({ where: where });
+    },
+    /* 显示编辑 */
+    openEdit(row, parentId) {
+      this.current = row;
+      this.parentId = parentId;
+      this.showEdit = true;
+    },
+    /* 删除 */
+    remove(row) {
+      if (row.children?.length) {
+        this.$message.error('请先删除子节点');
+        return;
       }
+      const loading = this.$loading({ lock: true });
+      deleteMenu([row.id])
+        .then((res) => {
+          loading.close();
+          this.$message.success('菜单删除成功');
+          this.reload();
+        })
+        .catch((e) => {
+          loading.close();
+          // this.$message.error(e.message);
+        });
+    },
+    /* 展开全部 */
+    expandAll() {
+      this.$refs.table.toggleRowExpansionAll(true);
+    },
+    /* 折叠全部 */
+    foldAll() {
+      this.$refs.table.toggleRowExpansionAll(false);
+    },
+    /* 判断是否是外链 */
+    isUrl(url) {
+      return !!(
+        url &&
+        (url.startsWith('http://') ||
+          url.startsWith('https://') ||
+          url.startsWith('//'))
+      );
+    },
+    /* 判断是否是目录 */
+    isDirectory(d) {
+      return !!d.children?.length && !d.component;
     }
-  };
+  }
+};
 </script>

+ 156 - 157
src/views/system/role/index.vue

@@ -83,173 +83,172 @@
 </template>
 
 <script>
-  import RoleSearch from './components/role-search.vue';
-  import RoleEdit from './components/role-edit.vue';
-  import RoleAuth from './components/role-auth.vue';
-  import {
-    pageRoles,
-    removeRole,
-    removeRoles,
-    putRoles
-  } from '@/api/system/role';
+import RoleSearch from './components/role-search.vue';
+import RoleEdit from './components/role-edit.vue';
+import RoleAuth from './components/role-auth.vue';
+import {
+  pageRoles,
+  removeRole,
+  removeRoles,
+  putRoles
+} from '@/api/system/role';
 
-  export default {
-    name: 'SystemRole',
-    components: {
-      RoleSearch,
-      RoleEdit,
-      RoleAuth
-    },
-    data() {
-      return {
-        // 表格列配置
-        columns: [
-          {
-            columnKey: 'selection',
-            type: 'selection',
-            width: 45,
-            align: 'center',
-            fixed: 'left'
-          },
-          {
-            columnKey: 'index',
-            label: '序号',
-            type: 'index',
-            width: 55,
-            align: 'center',
-            showOverflowTooltip: true,
-            fixed: 'left'
-          },
-          {
-            prop: 'name',
-            label: '角色名称',
-            align: 'center',
+export default {
+  name: 'SystemRole',
+  components: {
+    RoleSearch,
+    RoleEdit,
+    RoleAuth
+  },
+  data() {
+    return {
+      // 表格列配置
+      columns: [
+        {
+          columnKey: 'selection',
+          type: 'selection',
+          width: 45,
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          columnKey: 'index',
+          label: '序号',
+          type: 'index',
+          width: 55,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left'
+        },
+        {
+          prop: 'name',
+          label: '角色名称',
+          align: 'center',
 
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'groupId',
-            label: '组织ID',
-            align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'groupId',
+          label: '组织ID',
+          align: 'center',
 
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'enable',
-            label: '启用状态',
-            align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'enable',
+          label: '启用状态',
+          align: 'center',
 
-            showOverflowTooltip: true,
-            slot: 'enable',
+          showOverflowTooltip: true,
+          slot: 'enable',
 
-            minWidth: 110
-          },
-          {
-            prop: 'createTime',
-            label: '创建时间',
-            align: 'center',
+          minWidth: 110
+        },
+        {
+          prop: 'createTime',
+          label: '创建时间',
+          align: 'center',
 
-            showOverflowTooltip: true,
-            minWidth: 110,
-            formatter: (_row, _column, cellValue) => {
-              return this.$util.toDateString(cellValue);
-            }
-          },
-          {
-            columnKey: 'action',
-            label: '操作',
-            width: 230,
-            align: 'center',
-            resizable: false,
-            slot: 'action',
-            showOverflowTooltip: true
+          showOverflowTooltip: true,
+          minWidth: 110,
+          formatter: (_row, _column, cellValue) => {
+            return this.$util.toDateString(cellValue);
           }
-        ],
-        // 表格选中数据
-        selection: [],
-        // 当前编辑数据
-        current: null,
-        // 是否显示编辑弹窗
-        showEdit: false,
-        // 是否显示导入弹窗
-        showAuth: false
-      };
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 230,
+          align: 'center',
+          resizable: false,
+          slot: 'action',
+          showOverflowTooltip: true
+        }
+      ],
+      // 表格选中数据
+      selection: [],
+      // 当前编辑数据
+      current: null,
+      // 是否显示编辑弹窗
+      showEdit: false,
+      // 是否显示导入弹窗
+      showAuth: false
+    };
+  },
+  created() {},
+  methods: {
+    /* 表格数据源 */
+    datasource({ page, limit, where, order }) {
+      return pageRoles({ pageNum: page, size: limit, ...where });
+    },
+    async changeEnable(row) {
+      const res = await putRoles(row);
+      if (res.code == 0) {
+        this.$message({
+          type: 'success',
+          message: '修改成功',
+          customClass: 'ele-message-border'
+        });
+        this.reload();
+      }
+    },
+    /* 刷新表格 */
+    reload(where) {
+      this.$refs.table.reload({ page: 1, where });
+    },
+    /* 显示编辑 */
+    openEdit(row) {
+      this.current = row;
+      this.showEdit = true;
     },
-    created() {},
-    methods: {
-      /* 表格数据源 */
-      datasource({ page, limit, where, order }) {
-        console.log(where);
-        return pageRoles({ pageNum: page, size: limit, ...where });
-      },
-      async changeEnable(row) {
-        const res = await putRoles(row);
-        if (res.code == 0) {
-          this.$message({
-            type: 'success',
-            message: '修改成功',
-            customClass: 'ele-message-border'
-          });
+    /* 显示分配权限 */
+    openAuth(row) {
+      this.current = row;
+      this.showAuth = true;
+    },
+    /* 删除 */
+    remove(row) {
+      const loading = this.$loading({ lock: true });
+      removeRole(row.id)
+        .then((msg) => {
+          loading.close();
+          this.$message.success(msg);
           this.reload();
-        }
-      },
-      /* 刷新表格 */
-      reload(where) {
-        this.$refs.table.reload({ page: 1, where });
-      },
-      /* 显示编辑 */
-      openEdit(row) {
-        this.current = row;
-        this.showEdit = true;
-      },
-      /* 显示分配权限 */
-      openAuth(row) {
-        this.current = row;
-        this.showAuth = true;
-      },
-      /* 删除 */
-      remove(row) {
-        const loading = this.$loading({ lock: true });
-        removeRole(row.id)
-          .then((msg) => {
-            loading.close();
-            this.$message.success(msg);
-            this.reload();
-          })
-          .catch((e) => {
-            loading.close();
-            this.$message.error(e.message);
-          });
-      },
-      /* 批量删除 */
-      removeBatch() {
-        if (!this.selection.length) {
-          this.$message.error('请至少选择一条数据');
-          return;
-        }
-        this.$confirm('确定要删除选中的角色吗?', '提示', {
-          type: 'warning'
         })
-          .then(() => {
-            const loading = this.$loading({ lock: true });
-            removeRole(
-              this.selection.map((d) => d.id),
-              true
-            )
-              .then((msg) => {
-                loading.close();
-                this.$message.success(msg);
-                this.reload();
-              })
-              .catch((e) => {
-                loading.close();
-                this.$message.error(e.message);
-              });
-          })
-          .catch(() => {});
+        .catch((e) => {
+          loading.close();
+          this.$message.error(e.message);
+        });
+    },
+    /* 批量删除 */
+    removeBatch() {
+      if (!this.selection.length) {
+        this.$message.error('请至少选择一条数据');
+        return;
       }
+      this.$confirm('确定要删除选中的角色吗?', '提示', {
+        type: 'warning'
+      })
+        .then(() => {
+          const loading = this.$loading({ lock: true });
+          removeRole(
+            this.selection.map((d) => d.id),
+            true
+          )
+            .then((msg) => {
+              loading.close();
+              this.$message.success(msg);
+              this.reload();
+            })
+            .catch((e) => {
+              loading.close();
+              this.$message.error(e.message);
+            });
+        })
+        .catch(() => {});
     }
-  };
+  }
+};
 </script>

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.