zhangjinxing 3 lat temu
rodzic
commit
d54d28f80d

+ 7 - 0
src/apis/components/goods-class.js

@@ -0,0 +1,7 @@
+import http from "@/apis/axios";
+const api = "admin/";
+export default {
+  // 列表
+  list: (data, params) => http(api + "catlist", data, "post", params),
+};
+   

+ 18 - 0
src/apis/service/purchaseIn/goodsClass/index.js

@@ -0,0 +1,18 @@
+// 物业管理员
+import http from "@/apis/axios";
+const api = "admin/";
+export default {
+  // 添加
+  add: (data, params) => http(api + "add", data, "post", params),
+  // 删除
+  delete: (data, params) => http(api + "delete", data, "post", params),
+  // 分页查询
+  list: (data, params) => http(api + "catlist", data, "post", params),
+  // 详情
+  detail: (data, params) => http(api + "detail", data, "post", params),
+  // 更新
+  update: (data, params) => http(api + "update", data, "post", params),
+  // 修改状态
+  status: (data, params) => http(api + "accountstatus", data, "post", params),
+};
+   

+ 5 - 0
src/assets/js/btnList.js

@@ -32,6 +32,11 @@ const btnList = [
   { code: "031", name: "入库审核" },
   { code: "032", name: "退货物流" },
   { code: "033", name: "采购反馈物流费" },
+
+  { code: "034", name: "售后业务审核" },
+  { code: "035", name: "供货商反馈" },
+  { code: "036", name: "采购审核" },
+
   
 ];
 export default btnList;

+ 2 - 0
src/components/globalComponents/goodsClass/index.js

@@ -0,0 +1,2 @@
+import Main from './main.vue'
+export default Main

+ 163 - 0
src/components/globalComponents/goodsClass/main.vue

@@ -0,0 +1,163 @@
+<template>
+  <div class="select-goodsClass">
+    <!-- <el-cascader
+      filterable
+      clearable
+      :props="props"
+      @getCheckedNodes="getCheckedNodes"
+    ></el-cascader> -->
+    <el-cascader
+      v-if="!loading"
+      style="width: 100%"
+      :disabled="disabled"
+      v-model="value"
+      :options="options"
+      :placeholder="placeholder || ''"
+      :size="size || 'medium'"
+      :props="props"
+      @change="handleChange"
+      @getCheckedNodes="getCheckedNodes"
+    ></el-cascader>
+    <div class="loading-input" :class="{ disabled: disabled }" v-else>
+      <i class="el-icon-loading"></i>
+      <span>{{ placeholder || "" }}</span>
+    </div>
+  </div>
+</template>
+
+<script>
+import asyncRequest from "@/apis/components/goods-class";
+import resToken from "@/mixins/resToken";
+export default {
+  name: "goodsClass",
+  mixins: [resToken],
+  props: ["size", "value", "placeholder", "isDetail", "disabled"],
+  /**
+   * 属性集合
+   * @param {String}        size             : 组件大小            非必填
+   * @param {Array}         value            : 选中值              必填
+   * @param {String}        placeholder      : 提示信息            非必填
+   * @param {Boolean}       isDetail         : 是否是详情逻辑       必填
+   * @param {Boolean}       disabled         : 是否禁用            必填
+   */
+  /**
+   * 事件集合
+   * @searchChange             : 选中值变化调用   抛出选中数据
+   */
+  data() {
+    return {
+      loading: false,
+      options: [],
+      selectLoading: false,
+      props: {
+        label: "cat_name",
+        value: "id",
+        children: "child",
+      },
+    };
+  },
+  watch: {
+    value: function (val, old) {
+      if (val) {
+        this.loading = true;
+        setTimeout(() => {
+          this.loading = false;
+        }, 10);
+      }
+    },
+  },
+  created() {
+    this.options = [];
+    this.getInfo();
+    this.selectLoading = false;
+  },
+  methods: {
+    getCheckedNodes(e) {
+      console.log(e);
+    },
+    handleChange(value) {
+      console.log(value);
+      this.$emit("selectChange", value);
+    },
+    async selectChange(e) {
+      if (e && e.length > 0) {
+        let index = this.options.findIndex((v) => v.code === e[0]);
+        if (index !== -1) {
+          let model = {
+            id: this.options[index].id,
+            code: this.options[index].code,
+            label: this.options[index].name,
+          };
+          this.$emit("searchChange", model);
+        } else {
+          this.$emit("searchChange", {});
+        }
+      } else {
+        this.$emit("searchChange", {});
+      }
+    },
+    delChild(item) {
+      if (item.child === []) {
+        delete item["child"];
+      } else {
+        item.child.map((sitem) => {
+          if (sitem.child === []) {
+            delete sitem["child"];
+          } else {
+            this.delChild(sitem);
+          }
+          return sitem;
+        });
+      }
+      return item;
+    },
+    async getInfo() {
+      this.selectLoading = true;
+      let res = await asyncRequest.list({});
+      if (res && res.code === 0 && res.data) {
+        let arr = res.data;
+        arr.map((v) => {
+          if (v.child === []) {
+            delete v["child"];
+          } else {
+            v = this.delChild(v);
+          }
+          return v;
+        });
+        // this.options = res.data;
+        console.log(arr);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(res.message);
+      }
+      this.selectLoading = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.select-goodsClass {
+  .loading-input {
+    background-color: transparent;
+    border: 1px solid #dfe4ed;
+    color: #c0c4cc;
+    width: 100%;
+    height: 36px;
+    line-height: 36px;
+    padding: 0 30px 0 12px;
+    border-radius: 4px;
+    &.disabled {
+      background-color: #f5f7fa;
+    }
+    span {
+      font-size: 16px;
+      height: 36px;
+      line-height: 36px;
+      padding: 0 0 0 3px;
+      vertical-align: top;
+    }
+  }
+}
+</style>

+ 0 - 0
src/components/globalComponents/goodsClass/商品分类


+ 238 - 0
src/views/purchaseIn/goodsClass/addEdit.vue

@@ -0,0 +1,238 @@
+<template>
+  <el-dialog
+    v-loading="loading"
+    :title="title"
+    :center="true"
+    align="left"
+    top="25vh"
+    width="600px"
+    :close-on-click-modal="false"
+    :visible.sync="showModelThis"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+    append-to-body
+    @close="closeModel"
+  >
+    <el-card style="margin-top: -20px">
+      <el-row>
+        <el-col :span="24">
+          <el-form
+            ref="ruleForm"
+            :model="ruleForm"
+            is_show-icon
+            :rules="rulesThis"
+            label-width="100px"
+            class="demo-ruleForm"
+          >
+            <el-form-item label="组织名称:" prop="name">
+              <el-input
+                v-model="ruleForm.name"
+                :disabled="isDetail"
+                placeholder="请输入组织名称"
+              />
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" style="text-align: right">
+          <el-button v-if="!isDetail" type="primary" @click="submitForm">
+            保 存
+          </el-button>
+          <el-button @click="showModelThis = false">{{
+            isDetail ? "关 闭" : "取 消"
+          }}</el-button>
+        </el-col>
+      </el-row>
+    </el-card>
+  </el-dialog>
+</template>
+
+<script>
+import asyncRequest from "@/apis/service/purchaseIn/goodsClass";
+import btnList from "@/assets/js/btnList";
+import resToken from "@/mixins/resToken";
+export default {
+  mixins: [resToken],
+  props: [
+    "showModel",
+    "id",
+    "isDetail",
+    "pid",
+    "level",
+    "isAdd",
+    "type",
+    "formData",
+  ],
+  data() {
+    return {
+      loading: false,
+      showIconModel: false,
+      title: "",
+      btnList,
+      showModelThis: this.showModel,
+      ruleForm: {},
+      rulesThis: this.rules,
+      rules: {
+        name: [
+          {
+            required: true,
+            message: "请输入组织名称",
+            trigger: "blur",
+          },
+          {
+            min: 1,
+            max: 50,
+            message: "长度在 1 到 50 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  watch: {
+    showModel: function (val) {
+      this.showModelThis = val;
+      if (val) {
+        this.initForm();
+      }
+    },
+    showModelThis(val) {
+      if (!val) {
+        this.$emit("cancel");
+      }
+    },
+  },
+  methods: {
+    closeModel() {
+      console.log("closeModel!!");
+    },
+    async initForm() {
+      if (this.isAdd) {
+        this.title = "添加组织";
+        this.loading = false;
+        this.rulesThis = this.rules;
+      } else {
+        if (this.isDetail) {
+          this.title = "组织详情";
+          this.rulesThis = {};
+        } else {
+          this.title = "修改组织";
+          this.rulesThis = this.rules;
+        }
+      }
+      await this.resetForm();
+    },
+
+    async resetForm() {
+      this.ruleForm = {
+        id: this.id,
+        pid: this.pid,
+        name: this.formData && this.formData.name ? this.formData.name : "", // 名称
+      };
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          // 去掉验证信息
+          this.$refs.ruleForm.clearValidate();
+        }
+      });
+    },
+    async submitForm() {
+      if (this.loading) {
+        return false;
+      }
+      this.loading = true;
+
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          let model = {};
+          let res = {};
+          const { name } = this.ruleForm;
+
+          model = {
+            id: this.id,
+            pid: this.pid,
+            name: name,
+          };
+
+          if (this.level === 1) {
+            // delete model["pid"];
+            // delete model["menuid"];
+            // delete model["url"];
+            // delete model["action_code"];
+            // delete model["status"];
+          } else if (this.level === 2) {
+            delete model["menuid"];
+            delete model["action_code"];
+            delete model["status"];
+          } else {
+            delete model["pid"];
+            delete model["img"];
+            delete model["is_show"];
+            delete model["weight"];
+            delete model["route"];
+            delete model["is_display"];
+            delete model["url"];
+          }
+          if (this.isAdd) {
+            delete model["id"];
+          }
+          if (this.isAdd) {
+            res = await asyncRequest.add(model);
+          } else {
+            res = await asyncRequest.update(model);
+            // if (this.isAdd) {
+            //   res = await asyncRequest.actionadd(model);
+            // } else {
+            //   res = await asyncRequest.actionedit(model);
+            // }
+          }
+          this.loading = false;
+          if (res && res.code === 0) {
+            this.ruleForm = {};
+            const title = this.isAdd ? "添加成功" : "修改成功";
+            this.$notify.success({
+              title,
+              message: "",
+            });
+            this.showModelThis = false;
+            // 刷新
+            let pids = this.pid;
+            if (this.id === 0) {
+              // 添加组织
+              pids = "0";
+            }
+            this.$emit("refresh", this.id, pids, this.level);
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        } else {
+          this.loading = false;
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.g-block {
+  display: inline-block;
+  padding: 10px 5px;
+  text-align: center;
+  border: 1px #ccc dashed;
+  margin: 1px;
+  font-size: 0px;
+  cursor: pointer;
+  i {
+    font-size: 30px;
+    line-height: 30px;
+    display: block;
+    margin: 0 auto;
+    width: 30px;
+  }
+}
+</style>

+ 469 - 0
src/views/purchaseIn/goodsClass/index.vue

@@ -0,0 +1,469 @@
+<template>
+  <div class="organize pagePadding">
+    <div
+      v-loading="loading"
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+    >
+      <el-row>
+        <el-col :span="24">
+          <el-col :span="24" style="padding: 12px 0 15px 0">
+            <div class="my-breadcrumb clear">
+              <div
+                class="my-breadcrumb-item"
+                v-for="(item, index) in titleList"
+                :key="item + index"
+                :class="{ chover: true }"
+                @click="changeBreadcrumb(index)"
+              >
+                <span class="label">{{ item.titleName }}</span
+                ><span class="separator" v-if="index + 1 !== titleList.length"
+                  >/</span
+                >
+              </div>
+            </div>
+          </el-col>
+          <el-col :span="24">
+            <el-row style="padding: 0 0 3px 0">
+              <el-col :span="8">
+                <goods-class
+                  :value="goods_className"
+                  :size="searchSize"
+                  :placeholder="'商品分类'"
+                  :disabled="false"
+                  @searchChange="supplierChange"
+                ></goods-class>
+              </el-col>
+
+              <el-col :span="3" style="width: 195px; float: right">
+                <el-button
+                  type="primary"
+                  :size="searchSize"
+                  style="float: right; margin-left: 5px"
+                  @click="searchList"
+                >
+                  刷新
+                </el-button>
+                <el-button
+                  v-if="powers.some((item) => item == '003')"
+                  type="success"
+                  :size="searchSize"
+                  style="float: right"
+                  @click="
+                    addEditFn(
+                      0,
+                      parmValue && parmValue.pid !== '' ? parmValue.pid : '0',
+                      1,
+                      false,
+                      true,
+                      {}
+                    )
+                  "
+                >
+                  添加
+                </el-button>
+              </el-col>
+            </el-row>
+          </el-col>
+        </el-col>
+      </el-row>
+
+      <el-row :gutter="10">
+        <el-col
+          :span="24"
+          v-if="
+            powers && powers.length > 0 && powers.some((item) => item == '001')
+          "
+        >
+          <organize-tree
+            style="margin-left: -5px"
+            :list="depart"
+            :level="1"
+            :pid="0"
+            @addEdit="addEditFn"
+            @openChildren="openChildren"
+            @status="setstatus"
+            @del="del"
+          />
+          <staff-tree
+            style="margin-left: -5px"
+            :list="item"
+            :level="1"
+            :pid="0"
+            @setUpEdit="setUpEdit"
+          />
+        </el-col>
+        <div
+          class="no-data"
+          v-if="item && item.length === 0 && depart && depart.length === 0"
+        >
+          暂无数据
+        </div>
+      </el-row>
+
+      <add-edit
+        :id="modelId"
+        :show-model="showModel"
+        :level="level"
+        :pid="parentIds"
+        :is-add="isAdd"
+        :form-data="formData"
+        :type="parmValue.type"
+        :is-detail="isDetail"
+        @refresh="searchList"
+        @cancel="showModel = false"
+      />
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+<script>
+import mixinPage from "@/mixins/elPaginationHandle";
+// import asyncRequest from "@/apis/service//interest/organize";
+
+import asyncRequest from "@/apis/service/purchaseIn/goodsClass";
+import addEdit from "./addEdit";
+import statusList from "@/assets/js/statusList";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+export default {
+  name: "organize",
+  components: {
+    addEdit,
+  },
+  mixins: [mixinPage, resToken],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "organize"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      goods_className: "", //分类名称
+      titleList: [],
+      sitem: null,
+      statusList: statusList,
+      loading: true,
+      showModel: false,
+      showInterface: false,
+      isDetail: false,
+      isAdd: true,
+      level: 1,
+      modelId: 0,
+      formData: {},
+      parentIds: "",
+      parmValue: {
+        pid: "", //父级部门ID
+        name: "", // 部门/公司名称
+        nickname: "", // 员工名称
+      },
+      depart: [],
+      item: [],
+      passwordModel: false,
+      passwordModelId: 0,
+      // 表格 - 数据
+      // depart: [],
+    };
+  },
+  mounted() {
+    this.searchList();
+  },
+  methods: {
+    restSearch() {
+      this.parmValue = {
+        pid: "", //父级部门ID
+        name: "", // 部门/公司名称
+        nickname: "", // 员工名称
+      };
+      this.searchList();
+    },
+
+    async changeBreadcrumb(index) {
+      if (index + 1 !== this.titleList.length) {
+        this.parmValue.pid = this.titleList[index].id;
+        this.titleList = this.titleList.slice(0, index + 1);
+      } else {
+        this.parmValue.pid = 0;
+        this.titleList = [];
+      }
+      await this.searchList();
+    },
+    async openChildren(item) {
+      console.log(item);
+      this.parmValue.pid = item.pid;
+      let model = {
+        id: item.id,
+        titleName: item.name,
+      };
+      this.titleList.push(model);
+      console.log(this.titleList);
+      await this.searchList();
+    },
+    openModal(id, isDetail, sitem) {
+      this.showModel = true;
+      this.modelId = id;
+      this.isDetail = isDetail;
+      this.sitem = sitem;
+    },
+    openPasswordModal(id, isDetail) {
+      this.passwordModel = true;
+      this.passwordModelId = id;
+      this.isPasswordDetail = isDetail;
+    },
+    async setUpEdit(id, position) {
+      if (position === "1") {
+        const model = {
+          id: id,
+          position: "2",
+        };
+        let res = await asyncRequest.userp(model);
+        if (res && res.code === 0) {
+          this.$notify.success({
+            title: "设置成功!",
+            message: "",
+          });
+          await this.searchList();
+        } else if (res && res.code >= 100 && res.code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(res.message);
+        }
+      } else {
+        this.$message.warning("该账户已是部门负责人!");
+      }
+    },
+    addEditFn(id, pid, level, isDetail, isAdd, formData) {
+      this.showModel = true;
+      this.modelId = id;
+      this.level = level;
+      this.parentIds = pid;
+      this.isDetail = isDetail;
+      this.isAdd = isAdd;
+      this.formData = formData;
+    },
+
+    async setstatus(id, parentIds, level, status) {
+      console.log(
+        `openChildren-id, parentIds, level:${id}-${parentIds}-${level}-${status}`
+      );
+      await this.$confirm(`确定要${status === "0" ? "启用" : "禁用"}?`, {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          const model = {
+            id: id,
+            status: status === "1" ? "0" : "1",
+          };
+          let res = await asyncRequest.status(model);
+
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "修改成功!",
+              message: "",
+            });
+            await this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+
+    async del(id, parentIds, level, status) {
+      console.log(
+        `openChildren-id, parentIds, level:${id}-${parentIds}-${level}-${status}`
+      );
+      await this.$confirm(`确定要删除?`, {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          const model = {
+            id: id,
+          };
+          let res = await asyncRequest.delete(model);
+
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "删除成功!",
+              message: "",
+            });
+            await this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+
+    async concatData(id, parentIds, level) {
+      console.log(id, parentIds, level);
+      this.loading = true;
+      const res = await asyncRequest.list({});
+      let depart = [];
+      if (res && res.code === 0 && res.data) {
+        depart = res.data;
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(res.message);
+      }
+      let arr = JSON.parse(JSON.stringify(this.depart));
+      // if (level === 1) {
+      arr = arr.map((val, index) => {
+        if (level === 1 ? id : parentIds === val.id) {
+          val.child = depart[index].child;
+        }
+        return val;
+      });
+
+      this.depart = arr;
+      this.loading = false;
+    },
+    async deleteById(id, status) {
+      await this.$confirm("确定要删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          const model = {
+            id: id,
+            status: status === "1" ? "0" : "1",
+          };
+          const res = await asyncRequest.status(model);
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "删除成功",
+              message: "",
+            });
+            this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    async searchList() {
+      this.loading = true;
+      // { id: "1" }this.parmValue
+      const res = await asyncRequest.list({});
+      if (res && res.code === 0 && res.data) {
+        // const { depart, item } = res.data;
+        // this.depart = depart;
+        // this.item = item;
+        // this.depart = res.data;
+        let obj = {};
+        res.data.forEach((element) => {
+          const { pid, cat_name, child } = element;
+          obj = {
+            name: cat_name,
+            pid: pid,
+            child,
+          };
+          this.depart.push(obj);
+        });
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.depart = [];
+        this.item = [];
+      }
+      this.loading = false;
+    },
+    async statusConfirm(id, status) {
+      await this.$confirm(`确定要改为${status === "1" ? "禁用" : "启用"}?`, {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          this.loading = true;
+          const model = {
+            id: id,
+            status: status === "1" ? "0" : "1",
+          };
+          const res = await asyncRequest.status(model);
+          if (res && res.code === 0) {
+            this.loading = false;
+            this.$notify.success({
+              title: "状态修改成功!",
+              message: "",
+            });
+            await this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+  },
+};
+</script>
+   <style lang="scss" scoped>
+.organize {
+  .no-data {
+    padding: 25px 0;
+    text-align: center;
+    color: #909399;
+    margin: 30px 10px 0 10px;
+    border-radius: 8px;
+    border: 1px solid #dfe6ec;
+    // border-right: 1px solid #dfe6ec;
+    // border-bottom: 1px solid #dfe6ec;
+  }
+  .my-breadcrumb {
+    .my-breadcrumb-item {
+      float: left;
+      span {
+        height: 21px;
+        line-height: 21px;
+      }
+      .label {
+        padding: 0 5px 0 0;
+        color: 010101;
+      }
+      .separator {
+        color: #787878;
+        font-size: 13px;
+        padding: 0 5px 0 0;
+      }
+      &:last-child {
+        .label {
+          color: #787878;
+        }
+      }
+      &.chover {
+        cursor: pointer;
+      }
+    }
+  }
+}
+</style>

+ 40 - 0
src/views/purchaseIn/goodsClass/tableData.js

@@ -0,0 +1,40 @@
+export default [
+    {
+        "id":1,
+        "cat_name":"五金用品",
+        "pid":0,
+        "level":1,
+        "tate":"0.0000",
+        "weight":0,
+        "status":1,
+        "addtime":"2021-11-11 10:27:01",
+        "updatetime":"2020-11-11 10:27:01",
+        "child":[
+            {
+            "id":27,
+            "cat_name":"存储包装",
+            "pid":1,
+            "level":2,
+            "tate":"0.0000",
+            "weight":0,
+            "status":1,
+            "addtime":"2021-10-11 10:27:01",
+            "updatetime":"2021-11-01 10:27:01",
+            "child":[
+                {
+                "id":307,
+                "cat_name":"包装保护材料",
+                "pid":27,
+                "level":3,
+                "tate":"0.0000",
+                "weight":0,
+                "status":1,
+                "addtime":"2021-01-11 10:27:01",
+                "updatetime":"2021-12-01 10:27:01",
+                "child":[],
+                }
+            ],
+            }
+        ]
+    }
+]

+ 0 - 0
src/views/purchaseIn/goodsClass/商品分类


+ 1 - 1
src/views/sellOut/goodsService/components/addEditForm.vue

@@ -9,7 +9,7 @@
     style="width: 100%"
     class="demo-ruleForm"
   >
-    {{ ruleForm }}
+    <!-- {{ ruleForm }} -->
     <el-row>
       <!-- <el-col :span="24">
         <el-form-item label="出库单编号">

+ 21 - 4
src/views/sellOut/goodsService/serviceDetail.vue

@@ -8,8 +8,13 @@
         <span class="title">售后申请详情</span>
         <add-edit-form :sitem="sitem"></add-edit-form>
       </div>
+      powers:{{ powers }}status{{ status }}
       <el-collapse v-model="activeNames">
-        <el-collapse-item title="业务审核" name="1">
+        <el-collapse-item
+          title="业务审核"
+          name="1"
+          v-if="powers.some((item) => item == '034')"
+        >
           <exam-form
             :statusList="statusList"
             :newTime="newTime"
@@ -18,13 +23,25 @@
             @searchChange="examForm"
           />
         </el-collapse-item>
-        <el-collapse-item title="供应商反馈" name="2">
+        <el-collapse-item
+          title="供应商反馈"
+          name="2"
+          v-if="powers.some((item) => item == '035')"
+        >
           <supplier-feedback></supplier-feedback>
         </el-collapse-item>
-        <el-collapse-item title="采购审核" name="3">
+        <el-collapse-item
+          title="采购审核"
+          name="3"
+          v-if="powers.some((item) => item == '036')"
+        >
           <purchase-check></purchase-check>
         </el-collapse-item>
-        <el-collapse-item title="退货物流" name="4">
+        <el-collapse-item
+          title="退货物流"
+          name="4"
+          v-if="powers.some((item) => item == '032')"
+        >
           <return-express></return-express>
         </el-collapse-item>
       </el-collapse>