ysy il y a 2 ans
Parent
commit
ae96b64f5a

+ 52 - 0
src/api/classifyManage/index.js

@@ -0,0 +1,52 @@
+import request from '@/utils/request';
+
+export async function getSubPage (data) {
+  const res = await request.get('/main/categoryLevel/getSubPage', {
+    params: data
+  });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+export async function saveOrUpdate (data) {
+  const res = await request.post('/main/categoryLevel/saveOrUpdate', data);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 根据父级id查分类树
+export async function getTreeByPid (parentId) {
+  const res = await request.get(`/main/categoryLevel/getTreeByPid/${parentId}`);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+// 根据类型查分类树
+export async function getTreeByType (type) {
+  const res = await request.get(`/main/categoryLevel/getTreeByType/${type}`);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 删除分类
+export async function deleteCategory (id) {
+  const res = await request.get(`/main/categoryLevel/delete/${id}`);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+//根据ID查询分类详情系信息
+export async function getInfoById (id) {
+  const res = await request.get(`/main/categoryLevel/getById/${id}`);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 42 - 0
src/api/inspectionClassify/index.js

@@ -0,0 +1,42 @@
+import request from '@/utils/request';
+
+/*  干燥区台账  */
+
+
+// 列表 
+export async function getList (data) {
+    let par = new URLSearchParams(data);
+    const res = await request.get(`/main/aridregion/page?` + par, {});
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  }
+  
+
+  // 新增
+  export async function save (data) {
+    const res = await request.post(`/main/aridregion/save`, data);
+    if (res.data.code == 0) {
+      return res.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  }
+
+  // 编辑
+  export async function update (data) {
+    const res = await request.put(`/main/aridregion/update`, data);
+    if (res.data.code == 0) {
+      return res.data.message;
+    }
+    return Promise.reject(new Error(res.data.message));
+  }
+  
+// 删除
+export async function removeItem (data) {
+  const res = await request.delete('/main/aridregion/delete', { data });
+  if (res.data.code == 0) {
+    return res.data.message;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

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

@@ -32,3 +32,13 @@ export async function getCaptcha () {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+
+// 生成编码
+export async function getCode (code) {
+  const res = await request.get(`/main/codemanage/getCode/` + code, {});
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 188 - 0
src/views/inspectionClassify/components/user-edit.vue

@@ -0,0 +1,188 @@
+<!-- 用户编辑弹窗 -->
+<template>
+  <ele-modal width="60%" :visible="visible" :append-to-body="true" :close-on-click-modal="true"
+    custom-class="ele-dialog-form" :title="isUpdate ? '修改干燥区' : '新增干燥区'" @update:visible="updateVisible">
+    <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="干燥区编码:" prop="code">
+            <el-input clearable :disabled="true" v-model="form.code" placeholder="干燥区编码" />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="干燥区名称:" prop="name">
+            <el-input clearable v-model="form.name" placeholder="请输入干燥区名称" />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="分类:" prop="categoryLevelName">
+            <el-input v-model="form.categoryLevelName" @click.native="openCategory" readonly />
+          </el-form-item>
+        </el-col>
+
+
+
+
+        <el-col :span="12">
+          <el-form-item label="规格:" prop="specification">
+            <el-input clearable v-model="form.specification" placeholder="请输入规格" />
+          </el-form-item>
+        </el-col>
+
+
+        <el-col :span="24">
+          <el-form-item label="位置:" prop="region">
+            <el-input clearable v-model="form.region" placeholder="请输入位置" />
+          </el-form-item>
+        </el-col>
+
+      </el-row>
+    </el-form>
+    <template v-slot:footer>
+      <el-button @click="updateVisible(false)">取消</el-button>
+      <el-button type="primary" :loading="loading" @click="save">
+        保存
+      </el-button>
+    </template>
+
+
+    <CategoryDialog ref="categoryRefs" @chooseCategory="changeCategory"></CategoryDialog>
+  </ele-modal>
+</template>
+
+<script>
+
+
+
+
+
+import { save, update } from '@/api/inspectionClassify/index';
+
+export default {
+  components: {
+    
+  },
+  props: {
+    // 弹窗是否打开
+    visible: Boolean,
+    // 修改回显的数据
+    data: Object,
+    rootId: [Number, String],
+  },
+  data() {
+    const defaultForm = {
+      code: '',
+      name: '',
+      categoryLevelName: '',
+      categoryLevelId: '',
+      status: '',
+      region: '',
+      specification: ''
+    };
+    return {
+      defaultForm,
+      // 表单数据
+      form: { ...defaultForm },
+      // 表单验证规则
+      rules: {
+        name: [
+          { required: true, message: '请输入干燥区名称', trigger: 'blur' }
+        ],
+        categoryLevelName: [
+          { required: true, message: '请选择分类', trigger: 'change' }
+        ],
+
+        status: [
+          { required: true, message: '请选择状态', trigger: 'change' }
+        ],
+
+
+        region: [
+          { required: true, message: '请输入位置', trigger: 'blur' }
+        ],
+
+
+      },
+      // 提交状态
+      loading: false,
+      // 是否是修改
+      isUpdate: false
+    };
+  },
+
+
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  methods: {
+    /* 保存编辑 */
+    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 ? update : save;
+        saveOrUpdate(data)
+          .then((msg) => {
+            this.loading = false;
+            this.$message.success(msg);
+            this.updateVisible(false);
+            this.$emit('done');
+          })
+          .catch((e) => {
+            this.loading = false;
+         
+          });
+      });
+    },
+    /* 更新visible */
+    updateVisible(value) {
+      this.$emit('update:visible', value);
+    },
+
+    openCategory() {
+      this.$refs.categoryRefs.open(this.rootId, '选择分类')
+    },
+
+
+    changeCategory(row) {
+      this.$set(this.form, 'categoryLevelName', row.name)
+      this.$set(this.form, 'categoryLevelId', row.id)
+    },
+
+
+
+  },
+  watch: {
+    visible(visible) {
+      if (visible) {
+        if (this.data) {
+          this.$util.assignObject(this.form, {
+            ...this.data,
+          });
+          this.isUpdate = true;
+        } else {
+          this.isUpdate = false;
+        
+        }
+      } else {
+        this.$refs.form.clearValidate();
+        this.form = { ...this.defaultForm };
+      }
+    }
+  }
+};
+</script>

+ 174 - 0
src/views/inspectionClassify/components/user-list.vue

@@ -0,0 +1,174 @@
+<template>
+  <div>
+    <user-search @search="reload" ref="searchRef">
+    </user-search>
+    <!-- 数据表格 -->
+    <ele-pro-table ref="table" :columns="columns" :datasource="datasource" height="calc(100vh - 265px)"
+      full-height="calc(100vh - 116px)" tool-class="ele-toolbar-form" cache-key="systemOrgUserTable">
+      <!-- 表头工具栏 -->
+      <template v-slot:toolbar>
+        <el-button size="small" type="primary" icon="el-icon-plus" class="ele-btn-icon" @click="openEdit()">
+          新增
+        </el-button>
+      </template>
+      <!-- 编码列 -->
+      <template v-slot:status="{ row }">
+        <!-- 0空闲1占用 -->
+        {{ row.status == 0 ? '空闲' : row.status == 1 ? '占用' : '' }}
+      </template>
+
+
+      <template v-slot:action="{ row }">
+        <el-link type="primary" :underline="false" icon="el-icon-edit" @click="openEdit(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>
+
+    <user-edit :visible.sync="showEdit" :rootId="rootId" :data="current" @done="reload" ref="userEdit" />
+
+  </div>
+</template>
+
+<script>
+import userSearch from './user-search.vue';
+import { getList, removeItem } from '@/api/inspectionClassify/index';
+import dictMixins from '@/mixins/dictMixins';
+import UserEdit from './user-edit.vue';
+
+export default {
+  mixins: [dictMixins],
+  components: { userSearch, UserEdit },
+  props: {
+    // 类别id
+    categoryId: [Number, String],
+    rootId: [Number, String],
+  },
+  data() {
+    return {
+      // 当前编辑数据
+      current: null,
+      // 是否显示编辑弹窗
+      showEdit: false,
+
+
+      // 表格列配置
+      columns: [
+        {
+          columnKey: 'index',
+          type: 'index',
+          label: '序号',
+          width: 55,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left'
+        },
+        {
+          prop: 'code',
+          label: '干燥区编码',
+          showOverflowTooltip: true,
+          minWidth: 110,
+
+        },
+        {
+          prop: 'name',
+          label: '干燥区名称',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+
+        {
+          prop: 'specification',
+          label: '规格',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+
+
+        {
+          prop: 'region',
+          label: '位置',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'status',
+          label: '状态',
+          showOverflowTooltip: true,
+          minWidth: 110,
+          slot: 'status',
+        },
+
+        {
+          label: '操作',
+          prop: 'action',
+          slot: 'action',
+          action: 'action'
+        }
+
+
+
+      ]
+    };
+  },
+  created() {
+    this.requestDict('角度');
+  },
+  methods: {
+    /* 表格数据源 */
+    datasource({ page, limit, where }) {
+      return getList({
+        ...where,
+        pageNum: page,
+        size: limit,
+        categoryLevelId: this.categoryId,
+        rootCategoryLevelId: this.rootId
+      });
+    },
+    /* 刷新表格 */
+    reload(where) {
+      this.$refs.table.reload({ pageNum: 1, where: where });
+    },
+
+    /* 打开编辑弹窗 */
+    openEdit(row) {
+      this.current = row;
+      this.showEdit = true;
+      this.$refs.userEdit.$refs.form &&
+        this.$refs.userEdit.$refs.form.clearValidate();
+    },
+
+
+    /* 删除 */
+    remove(row) {
+      const loading = this.$loading({ lock: true });
+      removeItem([row.id])
+        .then((msg) => {
+          loading.close();
+          this.$message.success(msg);
+          this.reload();
+        })
+        .catch((e) => {
+          loading.close();
+        });
+    }
+
+
+  },
+  watch: {
+    // 监听类别id变化
+    categoryId() {
+      this.reload();
+    }
+  }
+};
+</script>

+ 81 - 0
src/views/inspectionClassify/components/user-search.vue

@@ -0,0 +1,81 @@
+<!-- 搜索表单 -->
+<template>
+  <el-form
+    label-width="50px"
+    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.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.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.specification" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label-width="50px">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+            size="small"
+          >
+            查询
+          </el-button>
+          <el-button @click="reset"
+            icon="el-icon-refresh-left"
+            size="small"
+            type="primary"
+          >重置</el-button>
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+  export default {
+    data() {
+      // 默认表单数据
+      const defaultWhere = {
+        name: '',
+        code: '',
+        specification:''
+      };
+      return {
+        // 表单数据
+        where: { ...defaultWhere }
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+    methods: {
+      /* 搜索 */
+      search() {
+        console.log(this.where);
+        this.$emit('search', this.where);
+      },
+      /*  重置 */
+      reset() {
+        this.where = { ...this.defaultWhere };
+        this.search();
+      }
+    }
+  };
+</script>

+ 69 - 0
src/views/inspectionClassify/index.vue

@@ -0,0 +1,69 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never" v-loading="loading">
+      <ele-split-layout width="266px" allow-collapse :right-style="{ overflow: 'hidden' }">
+        <div>
+          <div class="ele-border-lighter sys-organization-list">
+            <AssetTree @handleNodeClick="handleNodeClick" @setRootId="setRootId" :id="rootId" ref="treeList" />
+          </div>
+        </div>
+        <template v-slot:content>
+          <user-list v-if="current" :category-id="current.id" :root-id="rootId" />
+        </template>
+      </ele-split-layout>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import AssetTree from '@/components/AssetTree';
+import userList from './components/user-list.vue';
+
+export default {
+  components: {
+    AssetTree,
+    userList
+  },
+  data() {
+    return {
+      // 加载状态
+      loading: false,
+      // 表格选中数据
+      selection: [],
+      current: null,
+      rootId: 11
+    };
+  },
+  computed: {},
+  methods: {
+    handleNodeClick(info) {
+      this.current = info;
+    },
+    // 获取根节点id
+    setRootId(id) {
+      if (id) {
+        this.rootId = id;
+      }
+
+    }
+  }
+};
+</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 :deep(.el-tree-node__content) {
+  height: 40px;
+
+  &>.el-tree-node__expand-icon {
+    margin-left: 10px;
+  }
+}
+</style>