Bladeren bron

新建仓库

zhangjinxing 3 jaren geleden
bovenliggende
commit
16c2e6b407

+ 1 - 1
src/apis/axios.js

@@ -21,7 +21,7 @@ export default async (
   onUploadProgress
 ) => {
   type = type.toLowerCase()
-  console.log(headers)
+  // console.log(headers)
   const obj = {
     method: type,
     baseURL: '',

+ 18 - 0
src/apis/service/purchaseIn/addStock/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 + "list", 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),
+};
+   

+ 32 - 0
src/apis/service/purchaseIn/addStore/index.js

@@ -0,0 +1,32 @@
+// 物业管理员
+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 + "list", 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),
+  //省份列表
+  provinceList:(data, params) => http(api + "province", data, "post", params),
+  // 城市列表
+  cityList:(data, params) => http(api + "city", data, "post", params),
+  // 县级区级列表
+  areaList:(data, params) => http(api + "area", data, "post", params),
+  // 获取仓库负责人列表
+  getlist: (data, params) => http(api + 'userlist', data, 'post', params),
+  // 获取仓库归属公司列表
+  getCompany: (data, params) => http(api + 'supplierlist', data, 'post', params),
+  //新建仓库
+  addStock: (data, params) => http(api + 'WareHouse/add', data, 'post', params),
+  
+  
+};
+   

+ 18 - 0
src/apis/service/stock/my-test/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 + "list", 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),
+};
+   

+ 81 - 0
src/components/AreaSelect.vue

@@ -0,0 +1,81 @@
+<template>
+  <div class="area-select">
+    <!-- <h1>省/市/区选择组件</h1> -->
+    <div class="block">
+      <el-cascader
+        style="width: 100%"
+        filterable
+        clearable
+        v-model="ruleForm.storeToArea"
+        :size="searchSize"
+        :props="props"
+        @change="handleChange"
+      ></el-cascader>
+    </div>
+  </div>
+</template>
+
+<script>
+import asyncRequest from "@/apis/service/purchaseIn/addStore";
+import { mapGetters } from "vuex";
+
+export default {
+  computed: {
+    ...mapGetters(["searchSize", "size"]),
+  },
+  data() {
+    return {
+      isDetails: true,
+
+      props: {
+        lazy: true, //开启远程加载
+        async lazyLoad(node, resolve) {
+          const { level, value } = node;
+          let list = [];
+          let res = {};
+          if (level === 0) {
+            res = await asyncRequest.provinceList({});
+            console.log(value);
+            console.log(res.data);
+          } else if (level === 1) {
+            res = await asyncRequest.cityList({ code: value });
+          } else {
+            res = await asyncRequest.areaList({ code: value });
+          }
+
+          if (res && res.code === 0 && res.data) {
+            let { data } = res;
+            data.forEach((v1) => {
+              let province = {
+                value:
+                  level === 0
+                    ? v1.province_code
+                    : level === 1
+                    ? v1.city_code
+                    : v1.area_code,
+                label: v1.name,
+                leaf: level >= 2,
+              };
+              list.push(province);
+            });
+            resolve(list);
+          } else {
+            resolve([]);
+          }
+        },
+      },
+      ruleForm: { storeToArea: [] },
+    };
+  },
+  methods: {
+    handleChange(value) {
+      console.log("123");
+
+      this.$emit("areaSelect", value);
+    },
+  },
+};
+</script>
+
+<style>
+</style>

+ 3 - 2
src/views/interest/account/index.vue

@@ -280,12 +280,12 @@ export default {
         {
           prop: "nickname",
           label: "真实姓名",
-          width:'110px',
+          width: "110px",
         },
         {
           prop: "role_name",
           label: "角色名称",
-          width:'110px',
+          width: "110px",
         },
         {
           prop: "mobile",
@@ -381,6 +381,7 @@ export default {
     },
     async searchList() {
       this.loading = true;
+      console.log(this.parmValue);
       const res = await asyncRequest.list(this.parmValue);
       if (res && res.code === 0 && res.data) {
         this.tableData = res.data.list;

+ 363 - 0
src/views/purchaseIn/addStore/addEdit.vue

@@ -0,0 +1,363 @@
+<template>
+  <el-dialog
+    :title="title"
+    :center="true"
+    align="left"
+    top="5vh"
+    width="1040px"
+    @close="closeModel"
+    :close-on-click-modal="false"
+    :visible.sync="showModelThis"
+    v-loading="loading"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+  >
+    <el-card>
+      <el-row :gutter="10">
+        <el-col :span="24">
+          <el-form
+            :model="ruleForm"
+            status-icon
+            :rules="rulesThis"
+            ref="ruleForm"
+            label-width="110px"
+            class="demo-ruleForm"
+          >
+            <el-form-item
+              label="登录名"
+              prop="loginName"
+              v-if="id === 'add' || isDetail"
+            >
+              <el-input
+                v-model="ruleForm.loginName"
+                :disabled="isDetail"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="姓名" prop="fullName">
+              <el-input
+                v-model="ruleForm.fullName"
+                :disabled="isDetail"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="手机号" prop="tel">
+              <el-input v-model="ruleForm.tel" :disabled="isDetail"></el-input>
+            </el-form-item>
+            <el-form-item label="密码" prop="password" v-if="id === 'add'">
+              <el-input
+                type="password"
+                placeholder="密码"
+                :maxlength="20"
+                v-model="ruleForm.password"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="确认密码" prop="password2" v-if="id === 'add'">
+              <el-input
+                type="password"
+                placeholder="再次输入密码"
+                :maxlength="20"
+                v-model="ruleForm.password2"
+              ></el-input>
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" style="text-align: right">
+          <el-button type="primary" @click="submitForm" v-if="!isDetail"
+            >保 存
+          </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/addStore";
+import resToken from "@/mixins/resToken";
+import {
+  isnumber,
+  isMobile,
+  validEmail,
+  isAlphanumeric,
+  isChinese,
+  isEmoticon,
+  validAlphabets,
+} from "@/utils/validate";
+export default {
+  name: "addStore",
+  props: ["showModel", "id", "isDetail", "sitem"],
+  mixins: [resToken],
+  data() {
+    const validateusername = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("账号不能为空!"));
+      } else {
+        if (value.length < 6 || value.length > 18) {
+          callback(new Error("账号规则为6~18位数字与字母组合!"));
+        } else {
+          if (isnumber(value)) {
+            callback(new Error("账号规则为6~18位数字与字母组合!"));
+          } else if (validAlphabets(value)) {
+            callback(new Error("账号规则为6~18位数字与字母组合!"));
+          } else if (!isAlphanumeric(value)) {
+            callback(new Error("账号规则为6~18位数字与字母组合!"));
+          } else {
+            callback();
+          }
+        }
+      }
+    };
+    const validatename = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("真实姓名不能为空!"));
+      } else {
+        if (value.length < 2 || value.length > 12) {
+          callback(new Error("真实姓名规则为2~12位汉字!"));
+        } else {
+          if (!isChinese(value)) {
+            console.log(9999);
+            callback(new Error("真实姓名规则为2~12位汉字!"));
+          } else if (isEmoticon(value)) {
+            console.log(2345);
+            callback(new Error("真实姓名规则为2~12位汉字!"));
+          } else {
+            callback();
+          }
+        }
+      }
+    };
+    const validatemobile = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("手机号不能为空!"));
+      } else {
+        if (!isMobile(value)) {
+          callback(new Error("手机号格式不正确!"));
+        } else {
+          callback();
+        }
+      }
+    };
+
+    const validateEmail = (rule, value, callback) => {
+      if (value === "") {
+        callback();
+      } else {
+        if (!validEmail(value)) {
+          callback(new Error("邮箱格式不正确!"));
+        } else {
+          callback();
+        }
+      }
+    };
+    return {
+      loading: false,
+      title: "添加账号",
+      showModelThis: this.showModel,
+      ruleForm: {
+        username: "", // 账号
+        name: "", // 真实姓名
+        mobile: "",
+        email: "",
+        role_id: "",
+        status: "1",
+        item: [],
+      },
+      rulesThis: this.rules,
+      rules: {
+        name: [
+          {
+            required: true,
+            validator: validatename,
+            trigger: "blur",
+          },
+        ],
+        username: [
+          {
+            required: true,
+            validator: validateusername,
+            trigger: "blur",
+          },
+        ],
+        mobile: [
+          {
+            required: true,
+            validator: validatemobile,
+            trigger: "blur",
+          },
+        ],
+        email: [
+          {
+            required: false,
+            validator: validateEmail,
+            trigger: "blur",
+          },
+        ],
+        role_id: [
+          {
+            required: true,
+            message: "请选择角色",
+            trigger: "change",
+          },
+        ],
+        item: [
+          {
+            type: "array",
+            required: true,
+            message: "请选择所在部门",
+            trigger: "change",
+          },
+        ],
+        status: [
+          {
+            required: true,
+            message: "请选择状态",
+            trigger: "change",
+          },
+        ],
+      },
+    };
+  },
+  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() {
+      this.loading = true;
+      // await this.getRole();
+      if (this.id === "add") {
+        this.title = "添加账号";
+        this.rulesThis = this.rules;
+        await this.resetForm();
+      } else {
+        if (this.isDetail) {
+          this.title = "账号详情";
+          this.rulesThis = {};
+        } else {
+          this.title = "修改账号";
+          this.rulesThis = this.rules;
+        }
+        await this.resetForm(this.sitem);
+        // await this.initData()
+      }
+      this.loading = false;
+    },
+    // async getRole() {
+    //   const model = {
+    //     status: "", // 状态
+    //     level: "", // 姓名
+    //     role_name: "",
+    //   };
+    //   const res = await asyncRequest.getRole(model);
+    //   if (res && res.code === 0 && res.data) {
+    //     this.roleList = res.data;
+    //     this.roleList.map((v1) => {
+    //       v1.id += "";
+    //       v1.status += "";
+    //       return v1;
+    //     });
+    //   }
+    // },
+    async initData() {
+      const res = await asyncRequest.detail({ id: this.id });
+      if (res && res.code === 0 && res.data) {
+        this.ruleForm = res.data;
+        this.ruleForm.role_id = this.ruleForm.role;
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(res.message);
+      }
+    },
+    async resetForm(sitem) {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+          const { username, nickname, mobile, email, roleid, status, item } =
+            sitem;
+          this.ruleForm = {
+            username: username || "", // 账号
+            name: nickname || "", // 真实姓名
+            mobile: mobile || "",
+            email: email || "",
+            role_id: roleid || "",
+            status: status || "",
+            item: item || [],
+          };
+          if (this.id === "add" || this.isDetail) {
+            this.rules.username[0].required = false;
+          }
+        }
+      });
+    },
+
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          this.loading = true;
+          const { username, name, mobile, email, role_id, status } = JSON.parse(
+            JSON.stringify(this.ruleForm)
+          );
+          const model = {
+            id: this.id,
+            username: username || "", // 账号
+            nickname: name || "", // 真实姓名
+            mobile: mobile || "",
+            email: email || "",
+            role: role_id || "",
+            status: status || "",
+          };
+          let res = {};
+          if (this.id === "add") {
+            delete model["id"];
+            res = await asyncRequest.add(model);
+          } else {
+            res = await asyncRequest.update(model);
+          }
+          this.loading = false;
+          if (res && res.code === 0) {
+            const title = this.id === "add" ? "添加成功" : "修改成功";
+            this.$notify.success({
+              title,
+              message: "",
+            });
+            this.showModelThis = false;
+            // 刷新
+            this.$emit("refresh");
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+
+   <style lang="scss" scoped>
+.addStore {
+}
+</style>
+   

+ 369 - 0
src/views/purchaseIn/addStore/index copy.vue

@@ -0,0 +1,369 @@
+<template>
+  <div class="addStore pagePadding">
+    <div
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+    >
+      {{ title }}
+      <el-form
+        :model="ruleForm"
+        :rules="rules"
+        ref="ruleForm"
+        label-width="150px"
+      >
+        <el-form-item label="仓库所在公司" prop="storeToCompany">
+          <el-cascader
+            placeholder="请选择出库仓库"
+            filterable
+            clearable
+            :size="searchSize"
+            v-model="ruleForm.selectStock_go"
+            :options="ruleForm.selectStock_go_options"
+            style="width: 30%"
+            @change="stockName(true)"
+          ></el-cascader>
+        </el-form-item>
+        <el-form-item label="请输入仓库名称" prop="stockName">
+          <el-input
+            placeholder="请输入仓库名称"
+            filterable
+            clearable
+            :size="searchSize"
+            v-model="ruleForm.stockName"
+          >
+          </el-input>
+        </el-form-item>
+        <el-form-item label="仓库负责人" prop="stockCharge">
+          <el-cascader
+            placeholder="请选择仓库负责人"
+            filterable
+            clearable
+            :size="searchSize"
+            v-model="ruleForm.stockDutyer"
+            :options="ruleForm.stockDutyer_options"
+            style="width: 30%"
+            @change="stockName()"
+          ></el-cascader>
+        </el-form-item>
+        <!-- 省/市/区选择组件 -->
+        <el-form-item label="仓库所在省/市/区" prop="stockToArea">
+          <AreaSelect @areaSelect="areaSelect"></AreaSelect>
+        </el-form-item>
+        <!-- 仓库详细地址 -->
+        <el-form-item label="仓库所在详细地址" prop="stockDetail">
+          <el-input
+            :size="searchSize"
+            placeholder="请输入内容"
+            v-model="input"
+            clearable
+          >
+          </el-input>
+        </el-form-item>
+        <!-- 保 存 并 发 起 流 程 -->
+        <el-form-item label="" prop="stock_go_product">
+          <el-col :span="24" style="text-align: right; margin-top: 10px">
+            <el-button type="primary" @click="save">保 存 </el-button>
+            <el-button type="warning" @click="submitForm"
+              >保 存 并 发 起 流 程
+            </el-button>
+          </el-col>
+        </el-form-item>
+      </el-form>
+
+      <add-edit
+        :id="modelId"
+        :sitem="sitem"
+        :show-model="showModel"
+        :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 resToken from "@/mixins/resToken";
+import ExTable from "@/components/ExTableNew.vue";
+import statusList from "@/assets/js/statusList";
+import asyncRequest from "@/apis/service/purchaseIn/addStore";
+import addEdit from "./addEdit";
+import { mapGetters } from "vuex";
+import AreaSelect from "@/components/AreaSelect.vue"; //省/市/区选择组件
+
+// let id = 10;
+export default {
+  name: "addStore",
+  mixins: [mixinPage, resToken],
+  components: {
+    addEdit,
+    ExTable,
+    AreaSelect, //省/市/区选择组件
+  },
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "addStore"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      title: "",
+      ruleForm: {
+        selectStock_go: "", //出库仓库
+        selectStock_go_options: [], //出库仓库列表
+        stockName: "", //仓库名称
+        stockDutyer: "", //仓库负责人
+        stockDutyer_options: [], //仓库负责人列表
+      },
+      //省市区接口入参
+      addr_code: {
+        provice_code: "",
+        city_code: "",
+        area_code: "",
+      },
+      rules: {
+        storeToCompany: [
+          {
+            required: true,
+            message: "请选择仓库所在公司",
+            trigger: "blur",
+          },
+        ],
+        stockName: [
+          {
+            required: true,
+            message: "请输入仓库名称",
+            trigger: "blur",
+          },
+        ],
+        stockCharge: [
+          {
+            required: true,
+            message: "请选择仓库负责人",
+            trigger: "blur",
+          },
+        ],
+        stockToArea: [
+          {
+            required: true,
+            message: "请选择仓库所在地址",
+            trigger: "blur",
+          },
+        ],
+        stockDetail: [
+          {
+            required: true,
+            message: "请选择仓库所在地址",
+            trigger: "blur",
+          },
+        ],
+      },
+      sitem: null,
+      // 状态
+      // statusOptions: [
+      //   { id: "0", label: "禁用" },
+      //   { id: "1", label: "启用" },
+      // ],
+      // statusList: statusList,
+      loading: true,
+      showModel: false,
+      isDetail: false,
+      modelId: 0,
+      tableData: [],
+      // passwordModel: false,
+      // passwordModelId: 0,
+      // isPasswordDetail: false,
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: [
+        {
+          prop: "nickname",
+          label: "真实姓名",
+        },
+        {
+          prop: "role_name",
+          label: "角色名称",
+        },
+        {
+          prop: "mobile",
+          label: "联系电话",
+        },
+        {
+          prop: "email",
+          label: "邮箱",
+        },
+        {
+          prop: "status",
+          label: "状态",
+          _slot_: "status",
+          width: "80px",
+        },
+        {
+          prop: "addtime",
+          label: "创建时间",
+          sortable: true,
+        },
+        {
+          prop: "",
+          label: "操作",
+          fixed: "right",
+          _noset_: true,
+          _slot_: "operation",
+        },
+      ],
+    };
+  },
+  mounted() {},
+
+  methods: {
+    async initForm() {
+      console.log(this.id);
+      this.loading = true;
+      // await this.getClist();
+      // await this.getRole();
+      if (this.id === "add") {
+        this.title = "添加账号";
+        this.rulesThis = this.rules;
+        await this.resetForm();
+      } else {
+        if (this.isDetail) {
+          this.title = "账号详情";
+          this.rulesThis = {};
+        } else {
+          this.title = "修改账号";
+          this.rulesThis = this.rules;
+        }
+        await this.resetForm(this.sitem);
+        // await this.initData()
+      }
+      this.loading = false;
+    },
+
+    // 省市区组件抛出的执行事件
+    areaSelect(val) {
+      this.addr_code.provice_code = val[0];
+      this.addr_code.city_code = val[1];
+      this.addr_code.area_code = val[1];
+      console.log(this.addr_code);
+    },
+    submitForm(formName) {
+      console.log("submitForm");
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          alert("submit!");
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    openModal(id, isDetail, sitem) {
+      this.showModel = true;
+      this.modelId = id;
+      this.isDetail = isDetail;
+      this.sitem = sitem;
+    },
+    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;
+      // const res = await asyncRequest.list(this.parmValue);
+      // if (res && res.code === 0 && res.data) {
+      //   this.tableData = res.data.list;
+      //   this.pageInfo.total = Number(res.data.count);
+      // } else if (res && res.code >= 100 && res.code <= 104) {
+      //   await this.logout();
+      // } else {
+      //   this.tableData = [];
+      //   this.pageInfo.total = 0;
+      // }
+      // this.loading = false;
+    },
+
+    async statusConfirm(id, status) {
+      // let str = status === "1" ? "禁用" : "启用";
+      // await this.$confirm("确定要改为" + str + "?", {
+      //   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>
+</style>
+   

+ 584 - 0
src/views/purchaseIn/addStore/index.vue

@@ -0,0 +1,584 @@
+<template>
+  <div class="addStore pagePadding">
+    <div
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+    >
+      <el-col :span="24">
+        <el-form
+          ref="ruleForm"
+          :model="ruleForm"
+          status-icon
+          :rules="rulesThis"
+          label-width="100px"
+          class="demo-ruleForm"
+        >
+          <el-divider content-position="center">仓库信息:</el-divider>
+          <el-row>
+            <el-col :span="12"
+              ><el-form-item label="所属公司" prop="storeToCompany">
+                <el-cascader
+                  placeholder="请选择所属公司"
+                  filterable
+                  clearable
+                  style="width: 100%"
+                  :size="searchSize"
+                  v-model="ruleForm.storeToCompany"
+                  :options="ruleForm.selectStock_go_options"
+                  @change="getValue"
+                ></el-cascader>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="仓库名称" prop="stockName">
+                <el-input
+                  placeholder="请输入仓库名称"
+                  filterable
+                  clearable
+                  :size="searchSize"
+                  v-model="ruleForm.stockName"
+                  @change="getValue1"
+                >
+                </el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <!-- 省/市/区选择组件 -->
+              <el-form-item label="省/市/区" prop="stockToArea">
+                <AreaSelect @areaSelect="areaSelect"></AreaSelect>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12"
+              ><!-- 仓库详细地址 -->
+              <el-form-item label="详细地址" prop="stockDetail">
+                <el-input
+                  :size="searchSize"
+                  placeholder="请输入内容"
+                  v-model="ruleForm.stockDetail"
+                  clearable
+                  @change="stockDetail"
+                >
+                </el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-form-item label="负责人" prop="stockCharge" style="width: 50%">
+            <el-select
+              :size="searchSize"
+              @change="getValue2"
+              style="width: 100%"
+              v-model="ruleForm.stockCharge"
+              placeholder="请选择仓库负责人"
+            >
+              <el-option
+                v-for="item in ruleForm.stockDutyer_options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+                <span style="float: left">{{ item.label }}</span>
+                <span style="float: right; color: #8492a6; font-size: 13px">{{
+                  item.value
+                }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-divider content-position="center">收发货信息:</el-divider>
+          <!-- 收发货联系信息 -->
+
+          <el-row>
+            <el-col :span="12"
+              ><!-- 收发货联系人 -->
+              <el-form-item label="联系人" prop="linker">
+                <el-input
+                  :size="searchSize"
+                  placeholder="请填写联系人"
+                  v-model="ruleForm.linker"
+                  clearable
+                  @change="linker"
+                >
+                </el-input> </el-form-item
+            ></el-col>
+            <el-col :span="12">
+              <!-- 联系人电话 -->
+              <el-form-item label="电话" prop="linker_mobile">
+                <el-input
+                  type="number"
+                  :size="searchSize"
+                  placeholder="请输入联系人电话"
+                  v-model="ruleForm.linker_mobile"
+                  clearable
+                  @change="linkerMobile"
+                >
+                </el-input> </el-form-item
+            ></el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="12">
+              <!-- 收发货地址 -->
+              <el-form-item label="省/市/区" prop="linker_addr">
+                <AreaSelect
+                  @areaSelect="selectArea"
+                ></AreaSelect> </el-form-item
+            ></el-col>
+            <el-col :span="12">
+              <!-- 收发货详细地址 -->
+              <el-form-item label="详细地址" prop="linker_detail">
+                <el-input
+                  :size="searchSize"
+                  placeholder="请输入详细地址"
+                  v-model="ruleForm.linker_detail"
+                  clearable
+                  @change="linkerDetail"
+                >
+                </el-input> </el-form-item
+            ></el-col>
+          </el-row>
+        </el-form>
+      </el-col>
+      <el-col :span="24" style="text-align: right">
+        <el-button
+          v-if="!isDetail"
+          type="primary"
+          @click="submitForm('ruleForm')"
+          >保 存
+        </el-button>
+        <el-button @click="showModelThis = false">{{
+          isDetail ? "关 闭" : "取 消"
+        }}</el-button>
+      </el-col>
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+<script>
+import asyncRequest from "@/apis/service/purchaseIn/addStore";
+// import resToken from "@/mixins/resToken";
+import mixinPage from "@/mixins/elPaginationHandle";
+import resToken from "@/mixins/resToken";
+import ExTable from "@/components/ExTableNew.vue";
+// import statusList from "@/assets/js/statusList";
+import addEdit from "./addEdit";
+import { mapGetters } from "vuex";
+import AreaSelect from "@/components/AreaSelect.vue"; //省/市/区选择组件
+
+import { isMobile } from "@/utils/validate";
+export default {
+  name: "addStore",
+  // props: ["showModel", "id", "isDetail", "sitem"],
+  // mixins: [resToken],
+  mixins: [mixinPage, resToken],
+  components: {
+    addEdit,
+    ExTable,
+    AreaSelect, //省/市/区选择组件
+  },
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "addStore"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    const validatemobile = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("手机号不能为空!"));
+      } else {
+        if (!isMobile(value)) {
+          callback(new Error("手机号格式不正确!"));
+        } else {
+          callback();
+        }
+      }
+    };
+    return {
+      addId: "",
+      roleList: [],
+      loading: false,
+      title: "添加账号",
+      organizeList: [],
+      showModelThis: this.showModel,
+      //省市区接口入参
+      addr_code: {
+        provice_code: "",
+        city_code: "",
+        area_code: "",
+      },
+      ruleForm: {
+        // storeToCompany: "",
+        // stockToArea: [],
+        // selectStock_go: "", //公司
+        // selectStock_go_options: [], //公司列表
+        // stockName: "", //仓库名称
+        // stockDutyer: "", //仓库负责人
+        // stockDutyer_options: [], //仓库负责人列表
+        // stockDetail: [], //仓库详细地址
+        // linker: "", //收发货联系人
+        // linker_mobile: "", //收发货人联系电话
+        // linker_addr: [], //收发货地址
+        // linker_detail: "",
+      }, //
+      rulesThis: this.rules,
+      rules: {
+        storeToCompany: [
+          {
+            type: "array",
+            required: true,
+            message: "请选择仓库所在公司",
+            trigger: "change",
+          },
+        ],
+        stockName: [
+          {
+            required: true,
+            message: "请输入仓库名称",
+            trigger: "blur",
+          },
+        ],
+        stockCharge: [
+          {
+            type: "array",
+            required: true,
+            message: "请选择仓库负责人",
+            trigger: "change",
+          },
+        ],
+        stockToArea: [
+          {
+            type: "array",
+            required: true,
+            message: "请选择仓库所在地址",
+            trigger: "change",
+          },
+        ],
+        stockDetail: [
+          {
+            required: true,
+            message: "请选择仓库详细地址",
+            trigger: "blur",
+          },
+        ],
+        linker: [
+          {
+            required: true,
+            message: "请填写收发货联系人",
+            trigger: "blur",
+          },
+        ],
+        linker_mobile: [
+          {
+            required: true,
+            trigger: "blur",
+            validator: validatemobile,
+          },
+        ],
+        linker_addr: [
+          {
+            type: "array",
+            required: true,
+            message: "请填写收发货联系人地址",
+            trigger: "change",
+          },
+        ],
+        linker_detail: [
+          {
+            required: true,
+            message: "请输入详细地址",
+            trigger: "blur",
+          },
+        ],
+      },
+      parmValue: {
+        //入参
+        name: "", //仓库名称
+        supplierNo: "", //供应商编码
+        wsmtype: 1, //仓库类型
+        addr: "", //仓库地址
+        contactor: "", //仓库联系人
+        mobile: "", //仓库联系方式
+        position: "", //联系人职位
+        wsm_name: "", //	收发货联系人
+        wsm_mobile: "", //收发货联系方式
+        addr_code: {
+          provice_code: "",
+          city_code: "",
+          area_code: "",
+        },
+        wsm_addr: "", //地址详细
+      },
+    };
+  },
+
+  mounted() {
+    this.addId = this.$route.query.id;
+    this.getCompany();
+    this.initForm();
+    // this.addStock();
+  },
+  methods: {
+    // 联系人电话
+    linkerMobile(val) {
+      this.parmValue.wsm_mobile = val;
+    },
+    // 联系人
+    linker(val) {
+      this.parmValue.wsm_name = val;
+    },
+    // 仓库详细地址
+    stockDetail(val) {
+      console.log(val);
+      this.parmValue.addr = val;
+    },
+    //仓库地址选择
+    areaSelect(val) {
+      console.log(val);
+      this.ruleForm.stockToArea = val;
+      this.parmValue.addr = val;
+    },
+    // 收发货地址选择
+    selectArea(val) {
+      this.parmValue.addr_code.provice_code = val[0];
+      this.parmValue.addr_code.city_code = val[1];
+      this.parmValue.addr_code.area_code = val[2];
+      this.ruleForm.linker_addr = val;
+    },
+    // 收发货详细地址
+    linkerDetail(val) {
+      this.parmValue.wsm_addr = val;
+    },
+    // 仓库所在公司
+    getValue(val) {
+      this.parmValue.supplierNo = val;
+    },
+    // 仓库名
+    getValue1(val) {
+      this.parmValue.name = val;
+    },
+    // 负责人
+    getValue2(val) {
+      this.parmValue.contactor = val;
+      this.ruleForm.stockDutyer = val;
+    },
+    closeModel() {
+      console.log("closeModel!!");
+    },
+    async initForm() {
+      this.loading = true;
+      // await this.getClist();
+      // await this.getRole();
+      this.ruleForm = {
+        stockName: "123", //仓库名称
+        stockDutyer: "", //仓库负责人
+        stockDutyer: "", //仓库负责人
+        linker: "", //收发货联系人
+        linker_mobile: "", //收发货人联系电话
+        linker_addr: [], //收发货地址
+      };
+      if (this.addId === "add") {
+        console.log("新建仓库节点");
+        console.log(this.ruleForm);
+        this.rulesThis = this.rules;
+        await this.resetForm();
+      } else {
+        if (this.isDetail) {
+          this.title = "账号详情";
+          this.rulesThis = {};
+        } else {
+          this.title = "修改账号";
+          this.rulesThis = this.rules;
+        }
+        await this.resetForm(this.sitem);
+        // await this.initData()
+      }
+      this.loading = false;
+    },
+
+    async getClist() {
+      this.organizeList = [];
+      const res = await asyncRequest.getClist({});
+      if (res && res.code === 0 && res.data) {
+        this.organizeList = res.data;
+        this.recursion(this.organizeList);
+      }
+    },
+    recursion(list) {
+      list.map((v) => {
+        if (v && Array.isArray(v.child)) {
+          v.value = v.id + "";
+          v.label = v.name;
+          if (v.child.length === 0) {
+            delete v["child"];
+          } else {
+            this.recursion(v.child);
+          }
+        }
+        return v;
+      });
+    },
+    async getRole() {
+      const model = {
+        status: "", // 状态
+        level: "", // 姓名
+        role_name: "",
+      };
+      const res = await asyncRequest.getRole(model);
+      if (res && res.code === 0 && res.data) {
+        this.roleList = res.data;
+        this.roleList.map((v1) => {
+          v1.id += "";
+          v1.status += "";
+          return v1;
+        });
+      }
+    },
+
+    async resetForm(sitem) {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+          this.ruleForm = {
+            stockDetail: "顺义区宏远888",
+            selectStock_go: "", //出库仓库
+            selectStock_go_options: [], //出库仓库列表
+            stockName: "my-STock", //仓库名称
+            linker: "张三",
+            linker_mobile: "13223289230",
+            linker_detail: "朝阳区太阳城666",
+            stockDutyer: "", //仓库负责人
+            stockDutyer_options: [], //仓库负责人列表
+          };
+          if (this.id === "add" || this.isDetail) {
+            this.rules.username[0].required = false;
+          }
+        }
+      });
+    },
+    async submitForm(formName) {
+      console.log(this.parmValue);
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          alert("submit!");
+          this.getList();
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    async getList() {
+      const res = await asyncRequest.addStock(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        console.log(res.data);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+      }
+      this.loading = false;
+    },
+    async getDutyer() {
+      this.loading = true;
+      const obj = {
+        name: "",
+        page: 1,
+        size: 15,
+        status: "",
+        username: "",
+      };
+      const res = await asyncRequest.getlist(obj);
+      if (res && res.code === 0 && res.data) {
+        // console.log(res.data.list);
+        res.data.list.forEach((element) => {
+          // console.log(element.nickname);
+          console.log();
+          let dutyer = {
+            label: element.nickname,
+            value: element.depart[0].name || "",
+          };
+          this.ruleForm.stockDutyer_options.push(dutyer);
+        });
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+    async getCompany() {
+      this.loading = true;
+      // console.log(this.parmValue);
+      const obj = {
+        page: 1,
+        size: 15,
+      };
+      const res = await asyncRequest.getCompany(obj);
+      if (res && res.code === 0 && res.data) {
+        // console.log(res.data.list);
+        res.data.list.forEach((element) => {
+          // console.log(element.nickname);
+          let company = {
+            label: element.name,
+            value: element.code,
+          };
+          this.ruleForm.selectStock_go_options.push(company);
+          // this.ruleForm.stockDutyer_options.push(dutyer);
+        });
+        // console.log(this.ruleForm.selectStock_go_options);
+        // this.tableData = res.data.list;
+        // this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.getDutyer();
+      this.loading = false;
+    },
+    async addStock() {
+      this.loading = true;
+      console.log(this.parmValue);
+      const res = await asyncRequest.addStock(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        console.log(res.data.list);
+        res.data.list.forEach((element) => {
+          // console.log(element.nickname);
+          let company = {
+            label: element.name,
+            value: element.code,
+          };
+          this.ruleForm.selectStock_go_options.push(company);
+          // this.ruleForm.stockDutyer_options.push(dutyer);
+        });
+        console.log(this.ruleForm.selectStock_go_options);
+        // this.tableData = res.data.list;
+        // this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        // this.tableData = [];
+        // this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+    async getStockArea() {},
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 380 - 393
src/views/purchaseIn/storeGoods/index.vue

@@ -1,418 +1,405 @@
 <template>
-    <div class="storeGoods pagePadding">
+  <div class="storeGoods pagePadding">
     <div
-    v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
-  >
-    <ex-table
-      v-loading="loading"
-      :table="table"
-      :data="tableData"
-      :columns="columns"
-      :page="pageInfo"
-      :size="size"
-      @page-curr-change="handlePageChange"
-      @page-size-change="handleSizeChange"
-      @screen-reset="
-        pageInfo.curr = 1;
-        parmValue.page = 1;
-        searchList();
-      "
-      @screen-submit="
-        pageInfo.curr = 1;
-        parmValue.page = 1;
-        searchList();
-      "
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
     >
-      <template #table-header="{}">
-        <div style="width: 100%">
-          <el-row style="padding: 0 0 0 80px">
-            <el-col :span="24">
-              <el-col :span="4" style="width: 120px">
-                <el-select
-                  :size="searchSize"
-                  v-model="parmValue.status"
-                  filterable
-                  clearable
-                  placeholder="账号状态"
-                  style="width: 100%"
-                  @change="
-                    pageInfo.curr = 1;
-                    parmValue.page = 1;
-                    searchList();
-                  "
-                >
-                  <el-option
-                    v-for="item in statusList"
-                    :key="'status' + item.code"
-                    :label="item.name"
-                    :value="item.code"
+      <ex-table
+        v-loading="false"
+        :table="table"
+        :data="tableData"
+        :columns="columns"
+        :page="pageInfo"
+        :size="size"
+        @page-curr-change="handlePageChange"
+        @page-size-change="handleSizeChange"
+        @screen-reset="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+        @screen-submit="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+      >
+        <template #table-header="{}">
+          <div style="width: 100%">
+            <el-row style="padding: 0 0 0 80px">
+              <el-col :span="24">
+                <el-col :span="4" style="width: 120px">
+                  <el-select
+                    :size="searchSize"
+                    v-model="parmValue.status"
+                    filterable
+                    clearable
+                    placeholder="账号状态"
+                    style="width: 100%"
+                    @change="
+                      pageInfo.curr = 1;
+                      parmValue.page = 1;
+                      searchList();
+                    "
+                  >
+                    <el-option
+                      v-for="item in statusList"
+                      :key="'status' + item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    />
+                  </el-select>
+                </el-col>
+                <el-col :span="4" style="width: 150px; padding: 0 0 0 10px">
+                  <el-input
+                    :size="searchSize"
+                    v-model="parmValue.name"
+                    :maxlength="40"
+                    placeholder="业务员姓名"
                   />
-                </el-select>
-              </el-col>
-              <el-col :span="4" style="width: 150px; padding: 0 0 0 10px">
-                <el-input
-                  :size="searchSize"
-                  v-model="parmValue.name"
-                  :maxlength="40"
-                  placeholder="业务员姓名"
-                />
-              </el-col>
-              <el-col :span="4" style="width: 160px; padding: 0 0 0 10px">
-                <el-input
-                  :size="searchSize"
-                  v-model="parmValue.username"
-                  :maxlength="40"
-                  placeholder="手机号"
-                />
-              </el-col>
-              <el-col :span="4" style="width: 54px">
-                <el-button
-                  :size="searchSize"
-                  type="primary"
-                  class="fr"
-                  icon="el-icon-search"
-                  @click="searchList"
-              /></el-col>
-              <el-col
-                :span="4"
-                style="width: 66px"
-              >
-                <el-button
-                  type="warning"
-                  class="fr"
-                  :size="searchSize"
-                  @click="restSearch"
-                >
-                  重置
-                </el-button>
-              </el-col>
-              <el-col
-                :span="3"
-                style="width: 66px; float: right"
-              >
-                <el-button
-                  :size="searchSize"
-                  type="primary"
-                  style="float: right; margin-left: 5px"
-                  @click="searchList"
-                >
-                  刷新
-                </el-button>
+                </el-col>
+                <el-col :span="4" style="width: 160px; padding: 0 0 0 10px">
+                  <el-input
+                    :size="searchSize"
+                    v-model="parmValue.username"
+                    :maxlength="40"
+                    placeholder="手机号"
+                  />
+                </el-col>
+                <el-col :span="4" style="width: 54px">
+                  <el-button
+                    :size="searchSize"
+                    type="primary"
+                    class="fr"
+                    icon="el-icon-search"
+                    @click="searchList"
+                /></el-col>
+                <el-col :span="4" style="width: 66px">
+                  <el-button
+                    type="warning"
+                    class="fr"
+                    :size="searchSize"
+                    @click="restSearch"
+                  >
+                    重置
+                  </el-button>
+                </el-col>
+                <el-col :span="3" style="width: 66px; float: right">
+                  <el-button
+                    :size="searchSize"
+                    type="primary"
+                    style="float: right; margin-left: 5px"
+                    @click="searchList"
+                  >
+                    刷新
+                  </el-button>
+                </el-col>
               </el-col>
-            </el-col>
-          </el-row>
-        </div>
-      </template>
-      <template #status="{ scope }">
-        <el-tag
-          :size="tablebtnSize"
-          :type="scope.row.status == '0' ? 'warning' : ''"
-          v-text="
-            (statusOptions.find((item) => item.id == scope.row.status) || {})
-              .label || '--'
-          "
-        ></el-tag>
-      </template>
-      <template #operation="{ scope }">
-        <el-tooltip
-          v-if="powers.some((item) => item == '002')"
-           
-          effect="dark"
-          content="重置密码"
-          placement="top"
-        >
-          <i
-            class="el-icon-refresh-left tb-icon"
-            @click="openPasswordModal(scope.row.id, false)"
-          ></i>
-        </el-tooltip>
+            </el-row>
+          </div>
+        </template>
+        <template #status="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.status == '0' ? 'warning' : ''"
+            v-text="
+              (statusOptions.find((item) => item.id == scope.row.status) || {})
+                .label || '--'
+            "
+          ></el-tag>
+        </template>
+        <template #operation="{ scope }">
+          <el-tooltip
+            v-if="powers.some((item) => item == '002')"
+            effect="dark"
+            content="重置密码"
+            placement="top"
+          >
+            <i
+              class="el-icon-refresh-left tb-icon"
+              @click="openPasswordModal(scope.row.id, false)"
+            ></i>
+          </el-tooltip>
 
-        <el-tooltip
-          v-if="powers.some((item) => item == '007')"
-           
-          effect="dark"
-          content="详情"
-          placement="top"
-        >
-          <i
-            class="el-icon-view tb-icon"
-            @click="openModal(scope.row.id, true, scope.row)"
-          ></i>
-        </el-tooltip>
-        <el-tooltip
-          v-if="powers.some((item) => item == '005')"
-           
-          effect="dark"
-          content="修改"
-          placement="top"
-        >
-          <i
-            class="el-icon-edit tb-icon"
-            @click="openModal(scope.row.id, false, scope.row)"
-          ></i>
-        </el-tooltip>
-        <el-tooltip
-          v-if="
-            powers.some((item) => item == '004') && scope.row.status === '1'
-          "
-           
-          effect="dark"
-          content="禁用"
-          placement="top"
-        >
-          <i
-            class="el-icon-video-pause tb-icon"
-            @click="statusConfirm(scope.row.id, scope.row.status)"
-          ></i>
-        </el-tooltip>
-        <el-tooltip
-          v-if="
-            powers.some((item) => item == '004') && scope.row.status === '0'
-          "
-           
-          effect="dark"
-          content="启用"
-          placement="top"
-        >
-          <i
-            class="el-icon-video-play tb-icon"
-            @click="statusConfirm(scope.row.id, scope.row.status)"
-          ></i>
-        </el-tooltip>
-      </template>
-    </ex-table>
-    <add-edit
-      :id="modelId"
-      :sitem="sitem"
-      :show-model="showModel"
-      :is-detail="isDetail"
-      @refresh="searchList"
-      @cancel="showModel = false"
-    />
-  </div>
-  <div v-else>
-    <no-auth></no-auth>
-  </div>
-       
-   
+          <el-tooltip
+            v-if="powers.some((item) => item == '007')"
+            effect="dark"
+            content="详情"
+            placement="top"
+          >
+            <i
+              class="el-icon-view tb-icon"
+              @click="openModal(scope.row.id, true, scope.row)"
+            ></i>
+          </el-tooltip>
+          <el-tooltip
+            v-if="powers.some((item) => item == '005')"
+            effect="dark"
+            content="修改"
+            placement="top"
+          >
+            <i
+              class="el-icon-edit tb-icon"
+              @click="openModal(scope.row.id, false, scope.row)"
+            ></i>
+          </el-tooltip>
+          <el-tooltip
+            v-if="
+              powers.some((item) => item == '004') && scope.row.status === '1'
+            "
+            effect="dark"
+            content="禁用"
+            placement="top"
+          >
+            <i
+              class="el-icon-video-pause tb-icon"
+              @click="statusConfirm(scope.row.id, scope.row.status)"
+            ></i>
+          </el-tooltip>
+          <el-tooltip
+            v-if="
+              powers.some((item) => item == '004') && scope.row.status === '0'
+            "
+            effect="dark"
+            content="启用"
+            placement="top"
+          >
+            <i
+              class="el-icon-video-play tb-icon"
+              @click="statusConfirm(scope.row.id, scope.row.status)"
+            ></i>
+          </el-tooltip>
+        </template>
+      </ex-table>
       <add-edit
-        :showModel="showModel"
         :id="modelId"
-        :isDetail="isDetail"
+        :sitem="sitem"
+        :show-model="showModel"
+        :is-detail="isDetail"
         @refresh="searchList"
         @cancel="showModel = false"
-      ></add-edit>
+      />
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
     </div>
-   </template>
+
+    <add-edit
+      :showModel="showModel"
+      :id="modelId"
+      :isDetail="isDetail"
+      @refresh="searchList"
+      @cancel="showModel = false"
+    ></add-edit>
+  </div>
+</template>
    <script>
-    import mixinPage from "@/mixins/elPaginationHandle";
-    import resToken from "@/mixins/resToken";
-    import ExTable from "@/components/ExTableNew.vue";
-    import statusList from "@/assets/js/statusList";
-    import asyncRequest from "@/apis/service/purchaseIn/storeGoods";
-    import addEdit from "./addEdit";
-    import { mapGetters } from "vuex";
-   
-   export default {
-    name: 'storeGoods',
-    mixins: [mixinPage, resToken],
-    components: {
-      addEdit,
-      ExTable,
+import mixinPage from "@/mixins/elPaginationHandle";
+import resToken from "@/mixins/resToken";
+import ExTable from "@/components/ExTableNew.vue";
+import statusList from "@/assets/js/statusList";
+import asyncRequest from "@/apis/service/purchaseIn/storeGoods";
+import addEdit from "./addEdit";
+import { mapGetters } from "vuex";
+
+export default {
+  name: "storeGoods",
+  mixins: [mixinPage, resToken],
+  components: {
+    addEdit,
+    ExTable,
+  },
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "storeGoods"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
     },
-    computed: {
-      ...mapGetters(["tablebtnSize", "searchSize", "size"]),
-      powers() {
-        let tran =
-          this.$store.getters.btnList.find(
-            (item) => item.menu_route == "storeGoods"
-          ) || {};
-        if (tran && tran.action && tran.action.length > 0) {
-          return tran.action;
-        } else {
-          return [];
-        }
+  },
+  data() {
+    return {
+      sitem: null,
+      // 状态
+      statusOptions: [
+        { id: "0", label: "禁用" },
+        { id: "1", label: "启用" },
+      ],
+      statusList: statusList,
+      loading: true,
+      showModel: false,
+      isDetail: false,
+      modelId: 0,
+      parmValue: {
+        name: "", // 业务员名字
+        username: "", // 账号
+        status: "", //
+        page: 1, // 页码
+        size: 15, // 每页显示条数
       },
-    },
-    data() {
-      return {
-        sitem: null,
-        // 状态
-        statusOptions: [
-          { id: "0", label: "禁用" },
-          { id: "1", label: "启用" },
-        ],
-        statusList: statusList,
-        loading: true,
-        showModel: false,
-        isDetail: false,
-        modelId: 0,
-        parmValue: {
-          name: "", // 业务员名字
-          username: "", // 账号
-          status: "", //
-          page: 1, // 页码
-          size: 15, // 每页显示条数
+      tableData: [],
+      passwordModel: false,
+      passwordModelId: 0,
+      isPasswordDetail: false,
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: [
+        {
+          prop: "nickname",
+          label: "真实姓名",
+        },
+        {
+          prop: "role_name",
+          label: "角色名称",
+        },
+        {
+          prop: "mobile",
+          label: "联系电话",
         },
-        tableData: [],
-        passwordModel: false,
-        passwordModelId: 0,
-        isPasswordDetail: false,
-        // 表格 - 数据
-        tableData: [],
-        // 表格 - 参数
-        table: {
-          stripe: true,
-          border: true,
-          _defaultHeader_: ["setcol"],
+        {
+          prop: "email",
+          label: "邮箱",
         },
-        // 表格 - 分页
-        pageInfo: {
-          size: 15,
-          curr: 1,
-          total: 0,
+        {
+          prop: "status",
+          label: "状态",
+          _slot_: "status",
+          width: "80px",
         },
-        // 表格 - 列参数
-        columns: [
-          {
-            prop: "nickname",
-            label: "真实姓名",
-          },
-          {
-            prop: "role_name",
-            label: "角色名称",
-          },
-          {
-            prop: "mobile",
-            label: "联系电话",
-          },
-          {
-            prop: "email",
-            label: "邮箱",
-          },
-          {
-            prop: "status",
-            label: "状态",
-            _slot_: "status",
-            width: "80px",
-          },
-          {
-            prop: "addtime",
-            label: "创建时间",
-            sortable: true,
-          },
-          {
-            prop: "",
-            label: "操作",
-            fixed: "right",
-            _noset_: true,
-            _slot_: "operation",
-          },
-        ],
+        {
+          prop: "addtime",
+          label: "创建时间",
+          sortable: true,
+        },
+        {
+          prop: "",
+          label: "操作",
+          fixed: "right",
+          _noset_: true,
+          _slot_: "operation",
+        },
+      ],
+    };
+  },
+  mounted() {
+    this.searchList();
+  },
+
+  methods: {
+    restSearch() {
+      this.parmValue = {
+        name: "", // 业务员名字
+        username: "", // 账号
+        status: "", //
+        page: 1, // 页码
+        size: 10, // 每页显示条数
       };
-    },
-    mounted() {
       this.searchList();
     },
-  
-    methods: {
-      restSearch() {
-        this.parmValue = {
-          name: "", // 业务员名字
-          username: "", // 账号
-          status: "", //
-          page: 1, // 页码
-          size: 10, // 每页显示条数
-        };
-        this.searchList();
-      },
-      
-      openModal(id, isDetail, sitem) {
-        this.showModel = true;
-        this.modelId = id;
-        this.isDetail = isDetail;
-        this.sitem = sitem;
-      },
-      async deleteById(id, status) {
-        await this.$confirm("确定要删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
+
+    openModal(id, isDetail, sitem) {
+      this.showModel = true;
+      this.modelId = id;
+      this.isDetail = isDetail;
+      this.sitem = sitem;
+    },
+    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);
+          }
         })
-          .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;
-        const res = await asyncRequest.list(this.parmValue);
-        if (res && res.code === 0 && res.data) {
-          this.tableData = res.data.list;
-          this.pageInfo.total = Number(res.data.count);
-        } else if (res && res.code >= 100 && res.code <= 104) {
-          await this.logout();
-        } else {
-          this.tableData = [];
-          this.pageInfo.total = 0;
-        }
-        this.loading = false;
-      },
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    async searchList() {
+      this.loading = true;
+      const res = await asyncRequest.list(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        this.tableData = res.data.list;
+        this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
 
-      async statusConfirm(id, status) {
-        let str= status === "1" ? "禁用" : "启用"
-        await this.$confirm('确定要改为'+str+'?',{
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
+    async statusConfirm(id, status) {
+      let str = status === "1" ? "禁用" : "启用";
+      await this.$confirm("确定要改为" + str + "?", {
+        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);
+          }
         })
-          .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>
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+  },
+};
+</script>
    <style lang="scss" scoped>
-   .storeGoods {
-    
-   }
-   </style>
+.storeGoods {
+}
+</style>
    

+ 257 - 257
src/views/purchaseIn/storeSet/addEdit.vue

@@ -61,217 +61,219 @@
             </el-form-item>
           </el-form>
         </el-col>
-        <el-col :span="24" style="text-align: right;">
+        <el-col :span="24" style="text-align: right">
           <el-button type="primary" @click="submitForm" v-if="!isDetail"
             >保 存
           </el-button>
-          <el-button @click="showModelThis = false">{{ isDetail ? "关 闭" : "取 消" }}</el-button>
+          <el-button @click="showModelThis = false">{{
+            isDetail ? "关 闭" : "取 消"
+          }}</el-button>
         </el-col>
       </el-row>
     </el-card>
   </el-dialog>
-   </template>
+</template>
    <script>
-   import asyncRequest from "@/apis/service/purchaseIn/storeSet";
-   import resToken from "@/mixins/resToken";
-   import {
-    isnumber,
-    isMobile,
-    validEmail,
-    isAlphanumeric,
-    isChinese,
-    isEmoticon,
-    validAlphabets,
-  } from "@/utils/validate";
-   export default {
-    name: 'storeSet',
-    props: ["showModel", "id", "isDetail","sitem"],
-    mixins: [resToken],
-    data() {
-      const validateusername = (rule, value, callback) => {
-        if (value === "") {
-          callback(new Error("账号不能为空!"));
+import asyncRequest from "@/apis/service/purchaseIn/storeSet";
+import resToken from "@/mixins/resToken";
+import {
+  isnumber,
+  isMobile,
+  validEmail,
+  isAlphanumeric,
+  isChinese,
+  isEmoticon,
+  validAlphabets,
+} from "@/utils/validate";
+export default {
+  name: "storeSet",
+  props: ["showModel", "id", "isDetail", "sitem"],
+  mixins: [resToken],
+  data() {
+    const validateusername = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("账号不能为空!"));
+      } else {
+        if (value.length < 6 || value.length > 18) {
+          callback(new Error("账号规则为6~18位数字与字母组合!"));
         } else {
-          if (value.length < 6 || value.length > 18) {
+          if (isnumber(value)) {
+            callback(new Error("账号规则为6~18位数字与字母组合!"));
+          } else if (validAlphabets(value)) {
+            callback(new Error("账号规则为6~18位数字与字母组合!"));
+          } else if (!isAlphanumeric(value)) {
             callback(new Error("账号规则为6~18位数字与字母组合!"));
           } else {
-            if (isnumber(value)) {
-              callback(new Error("账号规则为6~18位数字与字母组合!"));
-            } else if (validAlphabets(value)) {
-              callback(new Error("账号规则为6~18位数字与字母组合!"));
-            } else if (!isAlphanumeric(value)) {
-              callback(new Error("账号规则为6~18位数字与字母组合!"));
-            } else {
-              callback();
-            }
+            callback();
           }
         }
-      };
-      const validatename = (rule, value, callback) => {
-        if (value === "") {
-          callback(new Error("真实姓名不能为空!"));
+      }
+    };
+    const validatename = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("真实姓名不能为空!"));
+      } else {
+        if (value.length < 2 || value.length > 12) {
+          callback(new Error("真实姓名规则为2~12位汉字!"));
         } else {
-          if (value.length < 2 || value.length > 12) {
+          if (!isChinese(value)) {
+            console.log(9999);
+            callback(new Error("真实姓名规则为2~12位汉字!"));
+          } else if (isEmoticon(value)) {
+            console.log(2345);
             callback(new Error("真实姓名规则为2~12位汉字!"));
-          } else {
-            if (!isChinese(value)) {
-              console.log(9999);
-              callback(new Error("真实姓名规则为2~12位汉字!"));
-            } else if (isEmoticon(value)) {
-              console.log(2345);
-              callback(new Error("真实姓名规则为2~12位汉字!"));
-            } else {
-              callback();
-            }
-          }
-        }
-      };
-      const validatemobile = (rule, value, callback) => {
-        if (value === "") {
-          callback(new Error("手机号不能为空!"));
-        } else {
-          if (!isMobile(value)) {
-            callback(new Error("手机号格式不正确!"));
           } else {
             callback();
           }
         }
-      };
-  
-      const validateEmail = (rule, value, callback) => {
-        if (value === "") {
-          callback();
+      }
+    };
+    const validatemobile = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("手机号不能为空!"));
+      } else {
+        if (!isMobile(value)) {
+          callback(new Error("手机号格式不正确!"));
         } else {
-          if (!validEmail(value)) {
-            callback(new Error("邮箱格式不正确!"));
-          } else {
-            callback();
-          }
-        }
-      };
-      return {
-        loading: false,
-        title: "添加账号",
-        showModelThis: this.showModel,
-        ruleForm: {
-          username: "", // 账号
-          name: "", // 真实姓名
-          mobile: "",
-          email: "",
-          role_id: "",
-          status: "1",
-          item: [],
-        },
-        rulesThis: this.rules,
-        rules: {
-          name: [
-            {
-              required: true,
-              validator: validatename,
-              trigger: "blur",
-            },
-          ],
-          username: [
-            {
-              required: true,
-              validator: validateusername,
-              trigger: "blur",
-            },
-          ],
-          mobile: [
-            {
-              required: true,
-              validator: validatemobile,
-              trigger: "blur",
-            },
-          ],
-          email: [
-            {
-              required: false,
-              validator: validateEmail,
-              trigger: "blur",
-            },
-          ],
-          role_id: [
-            {
-              required: true,
-              message: "请选择角色",
-              trigger: "change",
-            },
-          ],
-          item: [
-            {
-              type: "array",
-              required: true,
-              message: "请选择所在部门",
-              trigger: "change",
-            },
-          ],
-          status: [
-            {
-              required: true,
-              message: "请选择状态",
-              trigger: "change",
-            },
-          ],
+          callback();
         }
-      };
-    },
-    watch: {
-      showModel: function(val) {
-        this.showModelThis = val;
-        if (val) {
-          this.initForm();
+      }
+    };
+
+    const validateEmail = (rule, value, callback) => {
+      if (value === "") {
+        callback();
+      } else {
+        if (!validEmail(value)) {
+          callback(new Error("邮箱格式不正确!"));
+        } else {
+          callback();
         }
+      }
+    };
+    return {
+      loading: false,
+      title: "添加账号",
+      showModelThis: this.showModel,
+      ruleForm: {
+        username: "", // 账号
+        name: "", // 真实姓名
+        mobile: "",
+        email: "",
+        role_id: "",
+        status: "1",
+        item: [],
       },
-      showModelThis(val) {
-        if (!val) {
-          this.$emit("cancel");
-        }
+      rulesThis: this.rules,
+      rules: {
+        name: [
+          {
+            required: true,
+            validator: validatename,
+            trigger: "blur",
+          },
+        ],
+        username: [
+          {
+            required: true,
+            validator: validateusername,
+            trigger: "blur",
+          },
+        ],
+        mobile: [
+          {
+            required: true,
+            validator: validatemobile,
+            trigger: "blur",
+          },
+        ],
+        email: [
+          {
+            required: false,
+            validator: validateEmail,
+            trigger: "blur",
+          },
+        ],
+        role_id: [
+          {
+            required: true,
+            message: "请选择角色",
+            trigger: "change",
+          },
+        ],
+        item: [
+          {
+            type: "array",
+            required: true,
+            message: "请选择所在部门",
+            trigger: "change",
+          },
+        ],
+        status: [
+          {
+            required: true,
+            message: "请选择状态",
+            trigger: "change",
+          },
+        ],
+      },
+    };
+  },
+  watch: {
+    showModel: function (val) {
+      this.showModelThis = val;
+      if (val) {
+        this.initForm();
       }
     },
-    methods: {
-      closeModel() {
-        console.log("closeModel!!");
-      },
-      async initForm() {
-        this.loading = true;
-        // await this.getRole();
-        if (this.id === "add") {
-          this.title = "添加账号";
-          this.rulesThis = this.rules;
-          await this.resetForm();
+    showModelThis(val) {
+      if (!val) {
+        this.$emit("cancel");
+      }
+    },
+  },
+  methods: {
+    closeModel() {
+      console.log("closeModel!!");
+    },
+    async initForm() {
+      this.loading = true;
+      // await this.getRole();
+      if (this.id === "add") {
+        this.title = "新建仓库";
+        this.rulesThis = this.rules;
+        await this.resetForm();
+      } else {
+        if (this.isDetail) {
+          this.title = "账号详情";
+          this.rulesThis = {};
         } else {
-          if (this.isDetail) {
-            this.title = "账号详情";
-            this.rulesThis = {};
-          } else {
-            this.title = "修改账号";
-            this.rulesThis = this.rules;
-          }
-          await this.resetForm(this.sitem);
-          // await this.initData()
+          this.title = "修改账号";
+          this.rulesThis = this.rules;
         }
-        this.loading = false;
-      },
-      // async getRole() {
-      //   const model = {
-      //     status: "", // 状态
-      //     level: "", // 姓名
-      //     role_name: "",
-      //   };
-      //   const res = await asyncRequest.getRole(model);
-      //   if (res && res.code === 0 && res.data) {
-      //     this.roleList = res.data;
-      //     this.roleList.map((v1) => {
-      //       v1.id += "";
-      //       v1.status += "";
-      //       return v1;
-      //     });
-      //   }
-      // },
-      async initData() {
-        const res = await asyncRequest.detail({ id: this.id });
+        await this.resetForm(this.sitem);
+        // await this.initData()
+      }
+      this.loading = false;
+    },
+    // async getRole() {
+    //   const model = {
+    //     status: "", // 状态
+    //     level: "", // 姓名
+    //     role_name: "",
+    //   };
+    //   const res = await asyncRequest.getRole(model);
+    //   if (res && res.code === 0 && res.data) {
+    //     this.roleList = res.data;
+    //     this.roleList.map((v1) => {
+    //       v1.id += "";
+    //       v1.status += "";
+    //       return v1;
+    //     });
+    //   }
+    // },
+    async initData() {
+      const res = await asyncRequest.detail({ id: this.id });
       if (res && res.code === 0 && res.data) {
         this.ruleForm = res.data;
         this.ruleForm.role_id = this.ruleForm.role;
@@ -280,83 +282,81 @@
       } else {
         this.$message.warning(res.message);
       }
-      },
-      async resetForm(sitem) {
-        // 重置
-        await this.$nextTick(() => {
-          if (this.$refs.ruleForm) {
-            this.$refs.ruleForm.resetFields();
-            this.$refs.ruleForm.clearValidate();
-            const { username, nickname, mobile, email, roleid, status, item } =
-              sitem;
-            this.ruleForm = {
-              username: username || "", // 账号
-              name: nickname || "", // 真实姓名
-              mobile: mobile || "",
-              email: email || "",
-              role_id: roleid || "",
-              status: status || "",
-              item: item || [],
-            };
-            if (this.id === "add" || this.isDetail) {
-              this.rules.username[0].required = false;
-            }
+    },
+    async resetForm(sitem) {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+          const { username, nickname, mobile, email, roleid, status, item } =
+            sitem;
+          this.ruleForm = {
+            username: username || "", // 账号
+            name: nickname || "", // 真实姓名
+            mobile: mobile || "",
+            email: email || "",
+            role_id: roleid || "",
+            status: status || "",
+            item: item || [],
+          };
+          if (this.id === "add" || this.isDetail) {
+            this.rules.username[0].required = false;
           }
-        });
-      },
-    
-      async submitForm() {
-        await this.$refs.ruleForm.validate(async (valid) => {
-          if (valid) {
-            this.loading = true;
-            const { username, name, mobile, email, role_id, status } = JSON.parse(
-              JSON.stringify(this.ruleForm)
-            );
-            const model = {
-              id: this.id,
-              username: username || "", // 账号
-              nickname: name || "", // 真实姓名
-              mobile: mobile || "",
-              email: email || "",
-              role: role_id || "",
-              status: status || "",
-            };
-            let res = {};
-            if (this.id === "add") {
-              delete model["id"];
-              res = await asyncRequest.add(model);
-            } else {
-              res = await asyncRequest.update(model);
-            }
-            this.loading = false;
-            if (res && res.code === 0) {
-              const title = this.id === "add" ? "添加成功" : "修改成功";
-              this.$notify.success({
-                title,
-                message: "",
-              });
-              this.showModelThis = false;
-              // 刷新
-              this.$emit("refresh");
-            } else if (res && res.code >= 100 && res.code <= 104) {
-              await this.logout();
-            } else {
-              this.$message.warning(res.message);
-            }
+        }
+      });
+    },
+
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          this.loading = true;
+          const { username, name, mobile, email, role_id, status } = JSON.parse(
+            JSON.stringify(this.ruleForm)
+          );
+          const model = {
+            id: this.id,
+            username: username || "", // 账号
+            nickname: name || "", // 真实姓名
+            mobile: mobile || "",
+            email: email || "",
+            role: role_id || "",
+            status: status || "",
+          };
+          let res = {};
+          if (this.id === "add") {
+            delete model["id"];
+            res = await asyncRequest.add(model);
           } else {
-            console.log("error submit!!");
-            return false;
+            res = await asyncRequest.update(model);
           }
-        });
-      },
+          this.loading = false;
+          if (res && res.code === 0) {
+            const title = this.id === "add" ? "添加成功" : "修改成功";
+            this.$notify.success({
+              title,
+              message: "",
+            });
+            this.showModelThis = false;
+            // 刷新
+            this.$emit("refresh");
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
     },
- 
-  };
-  </script>
+  },
+};
+</script>
 
    <style lang="scss" scoped>
-   .storeSet {
-    
-   }
-   </style>
+.storeSet {
+}
+</style>
    

+ 206 - 118
src/views/purchaseIn/storeSet/index.vue

@@ -4,7 +4,7 @@
       v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
     >
       <ex-table
-        v-loading="loading"
+        v-loading="false"
         :table="table"
         :data="tableData"
         :columns="columns"
@@ -26,8 +26,53 @@
         <template #table-header="{}">
           <div style="width: 100%">
             <el-row style="padding: 0 0 0 80px">
-              <el-col :span="24">
-                <el-col :span="4" style="width: 120px">
+              <!-- 创建时间 -->
+              <el-col :span="18" style="width: 303px; padding: 0 0 0 10px">
+                <PeriodDatePicker
+                  :start="parmValue.start"
+                  :end="parmValue.end"
+                  :type="1"
+                  :width="'135px'"
+                  :title="'开始时间'"
+                  :size="searchSize"
+                  @numReturned="numReturned($event, 0)"
+                />
+              </el-col>
+
+              <!-- 仓库名称、仓库编码、联系人搜索三合一 -->
+              <!-- 库存量/仓库搜索二合一 -->
+              <el-col :span="8" style="width: 500px; padding-left: 10px">
+                <el-input
+                  :size="searchSize"
+                  placeholder="请输入内容"
+                  v-model="content"
+                  class="input-with-select"
+                >
+                  <el-select
+                    style="width: 150px"
+                    v-model="select"
+                    slot="prepend"
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      label="企业/仓库编码"
+                      value="stock_sn"
+                    ></el-option>
+                    <el-option
+                      label="企业/仓库名称"
+                      value="stock_name"
+                    ></el-option>
+                    <el-option label="联系电话/联系人" value="link"></el-option>
+                  </el-select>
+                  <el-button
+                    slot="append"
+                    icon="el-icon-search"
+                    type="primary"
+                  ></el-button>
+                </el-input>
+              </el-col>
+
+              <!-- <el-col :span="4" style="width: 120px">
                   <el-select
                     :size="searchSize"
                     v-model="parmValue.status"
@@ -48,8 +93,8 @@
                       :value="item.code"
                     />
                   </el-select>
-                </el-col>
-                <el-col :span="4" style="width: 150px; padding: 0 0 0 10px">
+                </el-col> -->
+              <!-- <el-col :span="4" style="width: 150px; padding: 0 0 0 10px">
                   <el-input
                     :size="searchSize"
                     v-model="parmValue.name"
@@ -64,46 +109,54 @@
                     :maxlength="40"
                     placeholder="手机号"
                   />
-                </el-col>
-                <el-col :span="4" style="width: 54px">
+                </el-col> -->
+              <!-- <el-col :span="4" style="width: 54px">
                   <el-button
                     :size="searchSize"
                     type="primary"
                     class="fr"
                     icon="el-icon-search"
                     @click="searchList"
-                /></el-col>
-                <el-col
-                  :span="4"
-                  style="width: 66px"
+                /></el-col> -->
+              <el-col :span="4" style="width: 66px; padding-left: 10px">
+                <el-button
+                  type="warning"
+                  class="fl"
+                  :size="searchSize"
+                  @click="restSearch"
                 >
-                  <el-button
-                    type="warning"
-                    class="fr"
-                    :size="searchSize"
-                    @click="restSearch"
-                  >
-                    重置
-                  </el-button>
-                </el-col>
-                <el-col
-                  :span="3"
-                  style="width: 66px; float: right"
+                  重置
+                </el-button>
+              </el-col>
+              <el-col
+                :span="3"
+                style="width: 56px; margin-left: 10px"
+                class="mr10"
+              >
+                <el-button
+                  class="fl"
+                  :size="searchSize"
+                  type="primary"
+                  @click="addList('add')"
                 >
-                  <el-button
-                    :size="searchSize"
-                    type="primary"
-                    style="float: right; margin-left: 5px"
-                    @click="searchList"
-                  >
-                    刷新
-                  </el-button>
-                </el-col>
+                  新建
+                </el-button>
+              </el-col>
+
+              <el-col :span="3" style="width: 56px" class="fr">
+                <el-button
+                  :size="searchSize"
+                  type="primary"
+                  @click="searchList"
+                >
+                  刷新
+                </el-button>
               </el-col>
             </el-row>
           </div>
         </template>
-        <template #status="{ scope }">
+        -->
+        <!-- <template #status="{ scope }">
           <el-tag
             :size="tablebtnSize"
             :type="scope.row.status == '0' ? 'warning' : ''"
@@ -112,7 +165,7 @@
                 .label || '--'
             "
           ></el-tag>
-        </template>
+        </template> -->
         <template #operation="{ scope }">
           <el-tooltip
             v-if="powers.some((item) => item == '002')"
@@ -206,13 +259,15 @@ import statusList from "@/assets/js/statusList";
 import asyncRequest from "@/apis/service/purchaseIn/storeSet";
 import addEdit from "./addEdit";
 import { mapGetters } from "vuex";
-
+import PeriodDatePicker from "@/components/PeriodDatePicker"; //时间选择器
+import AddStore from "@/views/purchaseIn/addStore";
 export default {
   name: "storeSet",
   mixins: [mixinPage, resToken],
   components: {
     addEdit,
     ExTable,
+    PeriodDatePicker,
   },
   computed: {
     ...mapGetters(["tablebtnSize", "searchSize", "size"]),
@@ -230,23 +285,24 @@ export default {
   },
   data() {
     return {
+      select: "", //选择
+      stock_sn: "", //企业/仓库编码
+      stock_name: "", //企业/仓库名称
+      link: "", //联系电话/联系人
       sitem: null,
-      // 状态
-      statusOptions: [
-        { id: "0", label: "禁用" },
-        { id: "1", label: "启用" },
-      ],
+
       statusList: statusList,
       loading: true,
       showModel: false,
       isDetail: false,
       modelId: 0,
       parmValue: {
-        name: "", // 业务员名字
-        username: "", // 账号
-        status: "", //
-        page: 1, // 页码
-        size: 15, // 每页显示条数
+        supplierNo: "", //供应商编码
+        wsm_code: "", //仓库编码
+        start: "", //新建起始时间
+        end: "", //新建结束时间
+        mobile: "", //手机号
+        contactor: "", //联系人
       },
       tableData: [],
       passwordModel: false,
@@ -270,25 +326,31 @@ export default {
       columns: [
         {
           prop: "nickname",
-          label: "真实姓名",
+          label: "编号",
         },
         {
           prop: "role_name",
-          label: "角色名称",
+          label: "名称",
         },
         {
           prop: "mobile",
-          label: "联系电话",
+          label: "类型",
         },
         {
           prop: "email",
-          label: "邮箱",
+          label: "联系人",
         },
         {
-          prop: "status",
-          label: "状态",
-          _slot_: "status",
-          width: "80px",
+          prop: "email",
+          label: "职务",
+        },
+        {
+          prop: "email",
+          label: "联系方式",
+        },
+        {
+          prop: "email",
+          label: "地址",
         },
         {
           prop: "addtime",
@@ -303,6 +365,11 @@ export default {
           _slot_: "operation",
         },
       ],
+      // 状态
+      statusOptions: [
+        { id: "0", label: "禁用" },
+        { id: "1", label: "启用" },
+      ],
     };
   },
   mounted() {
@@ -310,13 +377,24 @@ export default {
   },
 
   methods: {
+    addList(id) {
+      console.log("点击了新建按钮");
+      this.$router.push({
+        path: "addStore",
+        component: AddStore,
+        query: {
+          id: id,
+        },
+      });
+    },
     restSearch() {
       this.parmValue = {
-        name: "", // 业务员名字
-        username: "", // 账号
-        status: "", //
-        page: 1, // 页码
-        size: 10, // 每页显示条数
+        supplierNo: "", //供应商编码
+        wsm_code: "", //仓库编码
+        start: "", //新建起始时间
+        end: "", //新建结束时间
+        mobile: "", //手机号
+        contactor: "", //联系人
       };
       this.searchList();
     },
@@ -327,34 +405,34 @@ export default {
       this.isDetail = isDetail;
       this.sitem = sitem;
     },
-    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 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;
       const res = await asyncRequest.list(this.parmValue);
@@ -370,42 +448,52 @@ export default {
       this.loading = false;
     },
 
-    async statusConfirm(id, status) {
-      let str = status === "1" ? "禁用" : "启用";
-      await this.$confirm("确定要改为" + str + "?", {
-        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("取消");
-        });
-    },
+    // async statusConfirm(id, status) {
+    //   let str = status === "1" ? "禁用" : "启用";
+    //   await this.$confirm("确定要改为" + str + "?", {
+    //     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>
-.storeSet {
+@media screen and (max-width: 1310px) {
+  .fr {
+    float: left;
+    margin-top: 10px;
+    margin-left: 10px;
+  }
+}
+@media screen and (max-width: 1254px) {
+  .mr10 {
+    margin-top: 10px;
+  }
 }
 </style>
    

+ 0 - 2
src/views/stock/allotFlow/components/checkStock.vue

@@ -1,7 +1,5 @@
 <template>
   <div class="newApply pagePadding">
-    验货审核
-
     <div
       v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
     >

+ 17 - 54
src/views/stock/allotFlow/components/companySearch.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="stockSearch">
+  <div class="companySearch" style="width: 200px; display: inline-block">
     <div class="block" style="width: 100%">
       <!-- <el-cascader
         style="width: 400px"
@@ -44,58 +44,8 @@ export default {
       options: [],
       value: [],
       list: [],
-      states: [
-        "Alabama",
-        "Alaska",
-        "Arizona",
-        "Arkansas",
-        "California",
-        "Colorado",
-        "Connecticut",
-        "Delaware",
-        "Florida",
-        "Georgia",
-        "Hawaii",
-        "Idaho",
-        "Illinois",
-        "Indiana",
-        "Iowa",
-        "Kansas",
-        "Kentucky",
-        "Louisiana",
-        "Maine",
-        "Maryland",
-        "Massachusetts",
-        "Michigan",
-        "Minnesota",
-        "Mississippi",
-        "Missouri",
-        "Montana",
-        "Nebraska",
-        "Nevada",
-        "New Hampshire",
-        "New Jersey",
-        "New Mexico",
-        "New York",
-        "North Carolina",
-        "North Dakota",
-        "Ohio",
-        "Oklahoma",
-        "Oregon",
-        "Pennsylvania",
-        "Rhode Island",
-        "South Carolina",
-        "South Dakota",
-        "Tennessee",
-        "Texas",
-        "Utah",
-        "Vermont",
-        "Virginia",
-        "Washington",
-        "West Virginia",
-        "Wisconsin",
-        "Wyoming",
-      ],
+      states: [],
+      children: [],
     };
   },
   mounted() {
@@ -110,8 +60,21 @@ export default {
   methods: {
     a() {
       console.log("选择了一个公司");
-      this.$emit("searchCard");
+      console.log(this.value);
+      // console.log(this.list);
+      console.log(this.options);
+      this.$emit("searchCard", this.value);
+      this.options.forEach((element) => {
+        // console.log(element);
+        if (element.value === this.value) {
+          console.log(element.label);
+          console.log(element.children);
+          this.children = element.children;
+          this.$emit("stock", this.children);
+        }
+      });
     },
+
     remoteMethod(query) {
       if (query !== "") {
         this.loading = true;

+ 2 - 2
src/views/stock/allotFlow/components/inStock-check.vue

@@ -1,6 +1,5 @@
 <template>
   <div class="newApply pagePadding">
-    入库方验货
     {{ myType }}
     <div
       v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
@@ -125,7 +124,8 @@
     </div>
   </div>
 </template>
-   <script>
+   
+<script>
 import mixinPage from "@/mixins/elPaginationHandle";
 import resToken from "@/mixins/resToken";
 import ExTable from "@/components/ExTableNew.vue";

+ 187 - 174
src/views/stock/allotFlow/components/newApply.vue

@@ -15,7 +15,7 @@
             filterable
             clearable
             :size="searchSize"
-            v-model="selectStock_go"
+            v-model="ruleForm.selectStock_go"
             :options="options"
             style="width: 30%"
             @change="
@@ -31,7 +31,7 @@
             filterable
             clearable
             :size="searchSize"
-            v-model="selectStock_in"
+            v-model="ruleForm.selectStock_in"
             :options="options"
             style="width: 30%"
             @change="
@@ -185,13 +185,22 @@ export default {
     },
   },
   data() {
+    const validateStock = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("手机号不能为空!"));
+      }
+    };
+
     return {
-      selectStock_in: "", //选择的入库仓库名称
-      selectStock_go: [], //选择的出库仓库名称
+      // selectStock_in: "", //选择的入库仓库名称
+      // selectStock_go: [], //选择的出库仓库名称
       stock_go: "", //出库仓库name
       stock_in: "", //入库仓库name
       options: [], //用于渲染二级仓库名
-      ruleForm: {},
+      ruleForm: {
+        selectStock_go: "",
+        selectStock_in: "",
+      },
       rules: {
         //出入库规则
         stock_go_rule: [
@@ -200,6 +209,7 @@ export default {
             message: "请选择出库仓库",
             trigger: "blur",
           },
+          { validator: validateStock, trigger: "blur" },
         ],
         stock_in_rule: [
           {
@@ -207,6 +217,14 @@ export default {
             message: "请选择入库仓库",
             trigger: "blur",
           },
+          { validator: validateStock, trigger: "blur" },
+        ],
+        stock_go_product: [
+          {
+            required: true,
+            message: "请选择入库仓库",
+            trigger: "blur",
+          },
         ],
       },
       loading: true,
@@ -251,190 +269,185 @@ export default {
           _slot_: "operation",
         },
       ],
-      // sitem: null,
-      // // 状态
-      // statusOptions: [
-      //   { id: "0", label: "禁用" },
-      //   { id: "1", label: "启用" },
-      // ],
-      parmValue: {
-        //入参
-        // name: "", // 业务员名字
-        // username: "", // 账号
-        // status: "", //
-        // page: 1, // 页码
-        // size: 15, // 每页显示条数
-      },
-      // passwordModel: false,
-      // passwordModelId: 0,
-      // isPasswordDetail: false,
-      // statusList: statusList,
+      parmValue: {},
     };
   },
   mounted() {
-    this.searchList();
-    this.stockName(); //假数据,获取二级仓库名
+    // this.searchList();
+    // this.stockName(); //假数据,获取二级仓库名
   },
 
   methods: {
-    restSearch() {
-      //重置入参
-      this.parmValue = {};
-      this.searchList();
+    submitForm(formName) {
+      console.log("sds");
+      console.log(formName);
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          alert("submit!");
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
     },
+  },
+  restSearch() {
+    //重置入参
+    this.parmValue = {};
+    // this.searchList();
+  },
 
-    openModal(id, isDetail, sitem) {
-      this.showModel = isDetail;
-      this.modelId = id;
-      this.isDetail = isDetail;
-      this.sitem = sitem;
-    },
-    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;
-      // const res = await asyncRequest.list(this.parmValue);
-      // if (res && res.code === 0 && res.data) {
-      //   this.tableData = res.data.list;
-      //   this.pageInfo.total = Number(res.data.count);
-      // } else if (res && res.code >= 100 && res.code <= 104) {
-      //   await this.logout();
-      // } else {
-      //   this.tableData = [];
-      //   this.pageInfo.total = 0;
-      // }
-      // this.loading = false;
-    },
+  openModal(id, isDetail, sitem) {
+    this.showModel = isDetail;
+    this.modelId = id;
+    this.isDetail = isDetail;
+    this.sitem = sitem;
+  },
+  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;
+    // const res = await asyncRequest.list(this.parmValue);
+    // if (res && res.code === 0 && res.data) {
+    //   this.tableData = res.data.list;
+    //   this.pageInfo.total = Number(res.data.count);
+    // } else if (res && res.code >= 100 && res.code <= 104) {
+    //   await this.logout();
+    // } else {
+    //   this.tableData = [];
+    //   this.pageInfo.total = 0;
+    // }
+    // this.loading = false;
+  },
 
-    async statusConfirm(id, status) {
-      // let str = status === "1" ? "禁用" : "启用";
-      // await this.$confirm("确定要改为" + str + "?", {
-      //   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("取消");
-      //   });
-    },
-    async stockName(isShowModal = false) {
-      //获取多级仓库名称的方法
-      const res = await asyncRequest.listAll(this.parmValue);
-      // console.log(res.data);
-      // this.openModal("005", true);
-      // console.log(this.selectStock_go);
-      // console.log(this.selectStock_in);
-      // this.options = res.data;
-      // console.log(this.options);
-      let arr = res.data;
-      // console.log(arr);
-      arr.forEach((ele) => {
-        //重新封装后台传递来的数据,转换格式
-        let item = {
-          value: ele.id,
-          label: ele.name,
-          children: [],
+  async statusConfirm(id, status) {
+    // let str = status === "1" ? "禁用" : "启用";
+    // await this.$confirm("确定要改为" + str + "?", {
+    //   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("取消");
+    //   });
+  },
+  async stockName(isShowModal = false) {
+    //获取多级仓库名称的方法
+    const res = await asyncRequest.listAll(this.parmValue);
+    // console.log(res.data);
+    // this.openModal("005", true);
+    // console.log(this.selectStock_go);
+    // console.log(this.selectStock_in);
+    // this.options = res.data;
+    // console.log(this.options);
+    let arr = res.data;
+    // console.log(arr);
+    arr.forEach((ele) => {
+      //重新封装后台传递来的数据,转换格式
+      let item = {
+        value: ele.id,
+        label: ele.name,
+        children: [],
+      };
+      ele.child.forEach((elem) => {
+        let model = {
+          value: elem.id,
+          label: elem.name,
         };
-        ele.child.forEach((elem) => {
-          let model = {
-            value: elem.id,
-            label: elem.name,
-          };
-          item.children.push(model);
-        });
-        this.options.push(item);
-      });
-      this.options.forEach((ele) => {
-        //从数据表中筛选出我们要用的数据
-        if (ele.value === this.selectStock_go[0]) {
-          ele.children.forEach((elem) => {
-            if (elem.value === this.selectStock_go[1]) {
-              this.stock_go = ele.label + "/" + elem.label;
-            }
-          });
-        }
-        if (ele.value === this.selectStock_in[0]) {
-          ele.children.forEach((elem) => {
-            if (elem.value === this.selectStock_in[1]) {
-              this.stock_in = ele.label + "/" + elem.label;
-            }
-          });
-        }
+        item.children.push(model);
       });
-      if (this.selectStock_in != "" || this.selectStock_go != "") {
-        console.log("选择了一个项目");
-        this.openModal("005", isShowModal);
+      this.options.push(item);
+    });
+    this.options.forEach((ele) => {
+      //从数据表中筛选出我们要用的数据
+      if (ele.value === this.selectStock_go[0]) {
+        ele.children.forEach((elem) => {
+          if (elem.value === this.selectStock_go[1]) {
+            this.stock_go = ele.label + "/" + elem.label;
+          }
+        });
+      }
+      if (ele.value === this.selectStock_in[0]) {
+        ele.children.forEach((elem) => {
+          if (elem.value === this.selectStock_in[1]) {
+            this.stock_in = ele.label + "/" + elem.label;
+          }
+        });
       }
-      console.log(this.stock_go);
-      console.log(this.stock_in);
-      //   if(){
+    });
+    if (this.selectStock_in != "" || this.selectStock_go != "") {
+      console.log("选择了一个项目");
+      this.openModal("005", isShowModal);
+    }
+    console.log(this.stock_go);
+    console.log(this.stock_in);
+    //   if(){
 
-      //   }
-      // console.log(this.pageInfo.total);
+    //   }
+    // console.log(this.pageInfo.total);
 
-      this.compareStock(); //比较出库仓库和入库仓库是否相同
-    },
+    this.compareStock(); //比较出库仓库和入库仓库是否相同
+  },
 
-    compareStock() {
-      //比较出库仓库和入库仓库是否相同
-      if (
-        this.stock_go === this.stock_in &&
-        this.stock_go !== "" &&
-        this.stock_go != ""
-      ) {
-        console.log("出库仓库和入库仓库相同");
-        this.$message({
-          message: "出库仓库不能和入库仓库相同",
-          type: "error",
-        });
-      }
-    },
+  compareStock() {
+    //比较出库仓库和入库仓库是否相同
+    if (
+      this.stock_go === this.stock_in &&
+      this.stock_go !== "" &&
+      this.stock_go != ""
+    ) {
+      console.log("出库仓库和入库仓库相同");
+      this.$message({
+        message: "出库仓库不能和入库仓库相同",
+        type: "error",
+      });
+    }
   },
 };
 </script>

+ 32 - 61
src/views/stock/allotFlow/components/stockSearch.vue

@@ -1,6 +1,10 @@
 <template>
-  <div class="stockSearch">
-    <div class="block" style="width: 100%">
+  <div
+    class="stockSearch"
+    style="display: inline-block; width: 200px; padding-left: 10px"
+  >
+    {{ stockName }}
+    <div class="block">
       <!-- <el-cascader
         style="width: 400px"
         :options="options"
@@ -17,6 +21,7 @@
         multiple
         filterable
         remote
+        :disabled="companyName === ''"
         reserve-keyword
         placeholder="请选择仓库"
         :remote-method="remoteMethod"
@@ -41,61 +46,11 @@ import { mapGetters } from "vuex";
 export default {
   data() {
     return {
+      company_name: "",
       options: [],
       value: [],
       list: [],
-      states: [
-        "Alabama",
-        "Alaska",
-        "Arizona",
-        "Arkansas",
-        "California",
-        "Colorado",
-        "Connecticut",
-        "Delaware",
-        "Florida",
-        "Georgia",
-        "Hawaii",
-        "Idaho",
-        "Illinois",
-        "Indiana",
-        "Iowa",
-        "Kansas",
-        "Kentucky",
-        "Louisiana",
-        "Maine",
-        "Maryland",
-        "Massachusetts",
-        "Michigan",
-        "Minnesota",
-        "Mississippi",
-        "Missouri",
-        "Montana",
-        "Nebraska",
-        "Nevada",
-        "New Hampshire",
-        "New Jersey",
-        "New Mexico",
-        "New York",
-        "North Carolina",
-        "North Dakota",
-        "Ohio",
-        "Oklahoma",
-        "Oregon",
-        "Pennsylvania",
-        "Rhode Island",
-        "South Carolina",
-        "South Dakota",
-        "Tennessee",
-        "Texas",
-        "Utah",
-        "Vermont",
-        "Virginia",
-        "Washington",
-        "West Virginia",
-        "Wisconsin",
-        "Wyoming",
-      ],
+      states: [],
     };
   },
   mounted() {
@@ -103,24 +58,40 @@ export default {
       return { value: `value:${item}`, label: `label:${item}` };
     });
   },
+  watch: {
+    companyName: "nameChange",
+  },
   computed: {
     ...mapGetters(["searchSize"]),
   },
-  props: ["options"],
+  props: ["options", "companyName", "stockName"],
   methods: {
+    nameChange() {
+      console.log("选择了其他公司");
+      this.value = "";
+      // console.log(this.value);
+      console.log(this.stockName);
+      this.options = this.stockName;
+    },
     a() {
       console.log("选择了一个仓库");
       this.$emit("searchCard");
+      this.company_name = this.companyName;
+      // console.log(this.companyName);
+      // console.log(this.company_name);
+      // console.log(this.value);
     },
     remoteMethod(query) {
       if (query !== "") {
         this.loading = true;
-        setTimeout(() => {
-          this.loading = false;
-          this.options = this.list.filter((item) => {
-            return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
-          });
-        }, 200);
+
+        console.log(this.options);
+        // setTimeout(() => {
+        //   this.loading = false;
+        //   this.options = this.list.filter((item) => {
+        //     return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
+        //   });
+        // }, 200);
       } else {
         this.options = [];
       }

+ 9 - 10
src/views/stock/allotFlow/index.vue

@@ -3,8 +3,10 @@
     <div
       v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
     >
-      <StockSearch></StockSearch>
-      <CompanySearch></CompanySearch>
+      <div class="box">
+        <CompanySearch @searchCard="handClick"></CompanySearch>
+        <StockSearch :companyName="company"></StockSearch>
+      </div>
       <NewApply :myType="type"></NewApply>
       <InStock :myType="type" v-if="type != 1"></InStock>
       <GoStock :myType="type" v-if="type != 1 && type != 2"></GoStock>
@@ -80,6 +82,7 @@ export default {
   },
   data() {
     return {
+      company: "",
       type: 1, //假数据,用于表示后台的操作流程节点
       /**
        * type=1,那么表示当前是新建申请流程,只显示新建申请组件。newApply
@@ -180,6 +183,10 @@ export default {
   },
 
   methods: {
+    handClick(value) {
+      console.log("执行子组件事件", value);
+      this.company = value;
+    },
     restSearch() {
       //重置入参
       this.parmValue = {
@@ -343,13 +350,5 @@ export default {
 };
 </script>
    <style lang="scss" >
-.newApply {
-}
-.el-form-item__content {
-  margin: 0 !important;
-}
-.setcol-table-lie {
-  // margin: 0 !important;
-}
 </style>
    

+ 362 - 0
src/views/stock/my-test/addEdit.vue

@@ -0,0 +1,362 @@
+<template>
+  <el-dialog
+    :title="title"
+    :center="true"
+    align="left"
+    top="5vh"
+    width="1040px"
+    @close="closeModel"
+    :close-on-click-modal="false"
+    :visible.sync="showModelThis"
+    v-loading="loading"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+  >
+    <el-card>
+      <el-row :gutter="10">
+        <el-col :span="24">
+          <el-form
+            :model="ruleForm"
+            status-icon
+            :rules="rulesThis"
+            ref="ruleForm"
+            label-width="110px"
+            class="demo-ruleForm"
+          >
+            <el-form-item
+              label="登录名"
+              prop="loginName"
+              v-if="id === 'add' || isDetail"
+            >
+              <el-input
+                v-model="ruleForm.loginName"
+                :disabled="isDetail"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="姓名" prop="fullName">
+              <el-input
+                v-model="ruleForm.fullName"
+                :disabled="isDetail"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="手机号" prop="tel">
+              <el-input v-model="ruleForm.tel" :disabled="isDetail"></el-input>
+            </el-form-item>
+            <el-form-item label="密码" prop="password" v-if="id === 'add'">
+              <el-input
+                type="password"
+                placeholder="密码"
+                :maxlength="20"
+                v-model="ruleForm.password"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="确认密码" prop="password2" v-if="id === 'add'">
+              <el-input
+                type="password"
+                placeholder="再次输入密码"
+                :maxlength="20"
+                v-model="ruleForm.password2"
+              ></el-input>
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" style="text-align: right;">
+          <el-button type="primary" @click="submitForm" v-if="!isDetail"
+            >保 存
+          </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/stock/my-test";
+   import resToken from "@/mixins/resToken";
+   import {
+    isnumber,
+    isMobile,
+    validEmail,
+    isAlphanumeric,
+    isChinese,
+    isEmoticon,
+    validAlphabets,
+  } from "@/utils/validate";
+   export default {
+    name: 'my-test',
+    props: ["showModel", "id", "isDetail","sitem"],
+    mixins: [resToken],
+    data() {
+      const validateusername = (rule, value, callback) => {
+        if (value === "") {
+          callback(new Error("账号不能为空!"));
+        } else {
+          if (value.length < 6 || value.length > 18) {
+            callback(new Error("账号规则为6~18位数字与字母组合!"));
+          } else {
+            if (isnumber(value)) {
+              callback(new Error("账号规则为6~18位数字与字母组合!"));
+            } else if (validAlphabets(value)) {
+              callback(new Error("账号规则为6~18位数字与字母组合!"));
+            } else if (!isAlphanumeric(value)) {
+              callback(new Error("账号规则为6~18位数字与字母组合!"));
+            } else {
+              callback();
+            }
+          }
+        }
+      };
+      const validatename = (rule, value, callback) => {
+        if (value === "") {
+          callback(new Error("真实姓名不能为空!"));
+        } else {
+          if (value.length < 2 || value.length > 12) {
+            callback(new Error("真实姓名规则为2~12位汉字!"));
+          } else {
+            if (!isChinese(value)) {
+              console.log(9999);
+              callback(new Error("真实姓名规则为2~12位汉字!"));
+            } else if (isEmoticon(value)) {
+              console.log(2345);
+              callback(new Error("真实姓名规则为2~12位汉字!"));
+            } else {
+              callback();
+            }
+          }
+        }
+      };
+      const validatemobile = (rule, value, callback) => {
+        if (value === "") {
+          callback(new Error("手机号不能为空!"));
+        } else {
+          if (!isMobile(value)) {
+            callback(new Error("手机号格式不正确!"));
+          } else {
+            callback();
+          }
+        }
+      };
+  
+      const validateEmail = (rule, value, callback) => {
+        if (value === "") {
+          callback();
+        } else {
+          if (!validEmail(value)) {
+            callback(new Error("邮箱格式不正确!"));
+          } else {
+            callback();
+          }
+        }
+      };
+      return {
+        loading: false,
+        title: "添加账号",
+        showModelThis: this.showModel,
+        ruleForm: {
+          username: "", // 账号
+          name: "", // 真实姓名
+          mobile: "",
+          email: "",
+          role_id: "",
+          status: "1",
+          item: [],
+        },
+        rulesThis: this.rules,
+        rules: {
+          name: [
+            {
+              required: true,
+              validator: validatename,
+              trigger: "blur",
+            },
+          ],
+          username: [
+            {
+              required: true,
+              validator: validateusername,
+              trigger: "blur",
+            },
+          ],
+          mobile: [
+            {
+              required: true,
+              validator: validatemobile,
+              trigger: "blur",
+            },
+          ],
+          email: [
+            {
+              required: false,
+              validator: validateEmail,
+              trigger: "blur",
+            },
+          ],
+          role_id: [
+            {
+              required: true,
+              message: "请选择角色",
+              trigger: "change",
+            },
+          ],
+          item: [
+            {
+              type: "array",
+              required: true,
+              message: "请选择所在部门",
+              trigger: "change",
+            },
+          ],
+          status: [
+            {
+              required: true,
+              message: "请选择状态",
+              trigger: "change",
+            },
+          ],
+        }
+      };
+    },
+    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() {
+        this.loading = true;
+        // await this.getRole();
+        if (this.id === "add") {
+          this.title = "添加账号";
+          this.rulesThis = this.rules;
+          await this.resetForm();
+        } else {
+          if (this.isDetail) {
+            this.title = "账号详情";
+            this.rulesThis = {};
+          } else {
+            this.title = "修改账号";
+            this.rulesThis = this.rules;
+          }
+          await this.resetForm(this.sitem);
+          // await this.initData()
+        }
+        this.loading = false;
+      },
+      // async getRole() {
+      //   const model = {
+      //     status: "", // 状态
+      //     level: "", // 姓名
+      //     role_name: "",
+      //   };
+      //   const res = await asyncRequest.getRole(model);
+      //   if (res && res.code === 0 && res.data) {
+      //     this.roleList = res.data;
+      //     this.roleList.map((v1) => {
+      //       v1.id += "";
+      //       v1.status += "";
+      //       return v1;
+      //     });
+      //   }
+      // },
+      async initData() {
+        const res = await asyncRequest.detail({ id: this.id });
+      if (res && res.code === 0 && res.data) {
+        this.ruleForm = res.data;
+        this.ruleForm.role_id = this.ruleForm.role;
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(res.message);
+      }
+      },
+      async resetForm(sitem) {
+        // 重置
+        await this.$nextTick(() => {
+          if (this.$refs.ruleForm) {
+            this.$refs.ruleForm.resetFields();
+            this.$refs.ruleForm.clearValidate();
+            const { username, nickname, mobile, email, roleid, status, item } =
+              sitem;
+            this.ruleForm = {
+              username: username || "", // 账号
+              name: nickname || "", // 真实姓名
+              mobile: mobile || "",
+              email: email || "",
+              role_id: roleid || "",
+              status: status || "",
+              item: item || [],
+            };
+            if (this.id === "add" || this.isDetail) {
+              this.rules.username[0].required = false;
+            }
+          }
+        });
+      },
+    
+      async submitForm() {
+        await this.$refs.ruleForm.validate(async (valid) => {
+          if (valid) {
+            this.loading = true;
+            const { username, name, mobile, email, role_id, status } = JSON.parse(
+              JSON.stringify(this.ruleForm)
+            );
+            const model = {
+              id: this.id,
+              username: username || "", // 账号
+              nickname: name || "", // 真实姓名
+              mobile: mobile || "",
+              email: email || "",
+              role: role_id || "",
+              status: status || "",
+            };
+            let res = {};
+            if (this.id === "add") {
+              delete model["id"];
+              res = await asyncRequest.add(model);
+            } else {
+              res = await asyncRequest.update(model);
+            }
+            this.loading = false;
+            if (res && res.code === 0) {
+              const title = this.id === "add" ? "添加成功" : "修改成功";
+              this.$notify.success({
+                title,
+                message: "",
+              });
+              this.showModelThis = false;
+              // 刷新
+              this.$emit("refresh");
+            } else if (res && res.code >= 100 && res.code <= 104) {
+              await this.logout();
+            } else {
+              this.$message.warning(res.message);
+            }
+          } else {
+            console.log("error submit!!");
+            return false;
+          }
+        });
+      },
+    },
+ 
+  };
+  </script>
+
+   <style lang="scss" scoped>
+   .my-test {
+    
+   }
+   </style>
+   

+ 418 - 0
src/views/stock/my-test/index.vue

@@ -0,0 +1,418 @@
+<template>
+    <div class="my-test pagePadding">
+    <div
+    v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+  >
+    <ex-table
+      v-loading="loading"
+      :table="table"
+      :data="tableData"
+      :columns="columns"
+      :page="pageInfo"
+      :size="size"
+      @page-curr-change="handlePageChange"
+      @page-size-change="handleSizeChange"
+      @screen-reset="
+        pageInfo.curr = 1;
+        parmValue.page = 1;
+        searchList();
+      "
+      @screen-submit="
+        pageInfo.curr = 1;
+        parmValue.page = 1;
+        searchList();
+      "
+    >
+      <template #table-header="{}">
+        <div style="width: 100%">
+          <el-row style="padding: 0 0 0 80px">
+            <el-col :span="24">
+              <el-col :span="4" style="width: 120px">
+                <el-select
+                  :size="searchSize"
+                  v-model="parmValue.status"
+                  filterable
+                  clearable
+                  placeholder="账号状态"
+                  style="width: 100%"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                >
+                  <el-option
+                    v-for="item in statusList"
+                    :key="'status' + item.code"
+                    :label="item.name"
+                    :value="item.code"
+                  />
+                </el-select>
+              </el-col>
+              <el-col :span="4" style="width: 150px; padding: 0 0 0 10px">
+                <el-input
+                  :size="searchSize"
+                  v-model="parmValue.name"
+                  :maxlength="40"
+                  placeholder="业务员姓名"
+                />
+              </el-col>
+              <el-col :span="4" style="width: 160px; padding: 0 0 0 10px">
+                <el-input
+                  :size="searchSize"
+                  v-model="parmValue.username"
+                  :maxlength="40"
+                  placeholder="手机号"
+                />
+              </el-col>
+              <el-col :span="4" style="width: 54px">
+                <el-button
+                  :size="searchSize"
+                  type="primary"
+                  class="fr"
+                  icon="el-icon-search"
+                  @click="searchList"
+              /></el-col>
+              <el-col
+                :span="4"
+                style="width: 66px"
+              >
+                <el-button
+                  type="warning"
+                  class="fr"
+                  :size="searchSize"
+                  @click="restSearch"
+                >
+                  重置
+                </el-button>
+              </el-col>
+              <el-col
+                :span="3"
+                style="width: 66px; float: right"
+              >
+                <el-button
+                  :size="searchSize"
+                  type="primary"
+                  style="float: right; margin-left: 5px"
+                  @click="searchList"
+                >
+                  刷新
+                </el-button>
+              </el-col>
+            </el-col>
+          </el-row>
+        </div>
+      </template>
+      <template #status="{ scope }">
+        <el-tag
+          :size="tablebtnSize"
+          :type="scope.row.status == '0' ? 'warning' : ''"
+          v-text="
+            (statusOptions.find((item) => item.id == scope.row.status) || {})
+              .label || '--'
+          "
+        ></el-tag>
+      </template>
+      <template #operation="{ scope }">
+        <el-tooltip
+          v-if="powers.some((item) => item == '002')"
+           
+          effect="dark"
+          content="重置密码"
+          placement="top"
+        >
+          <i
+            class="el-icon-refresh-left tb-icon"
+            @click="openPasswordModal(scope.row.id, false)"
+          ></i>
+        </el-tooltip>
+
+        <el-tooltip
+          v-if="powers.some((item) => item == '007')"
+           
+          effect="dark"
+          content="详情"
+          placement="top"
+        >
+          <i
+            class="el-icon-view tb-icon"
+            @click="openModal(scope.row.id, true, scope.row)"
+          ></i>
+        </el-tooltip>
+        <el-tooltip
+          v-if="powers.some((item) => item == '005')"
+           
+          effect="dark"
+          content="修改"
+          placement="top"
+        >
+          <i
+            class="el-icon-edit tb-icon"
+            @click="openModal(scope.row.id, false, scope.row)"
+          ></i>
+        </el-tooltip>
+        <el-tooltip
+          v-if="
+            powers.some((item) => item == '004') && scope.row.status === '1'
+          "
+           
+          effect="dark"
+          content="禁用"
+          placement="top"
+        >
+          <i
+            class="el-icon-video-pause tb-icon"
+            @click="statusConfirm(scope.row.id, scope.row.status)"
+          ></i>
+        </el-tooltip>
+        <el-tooltip
+          v-if="
+            powers.some((item) => item == '004') && scope.row.status === '0'
+          "
+           
+          effect="dark"
+          content="启用"
+          placement="top"
+        >
+          <i
+            class="el-icon-video-play tb-icon"
+            @click="statusConfirm(scope.row.id, scope.row.status)"
+          ></i>
+        </el-tooltip>
+      </template>
+    </ex-table>
+    <add-edit
+      :id="modelId"
+      :sitem="sitem"
+      :show-model="showModel"
+      :is-detail="isDetail"
+      @refresh="searchList"
+      @cancel="showModel = false"
+    />
+  </div>
+  <div v-else>
+    <no-auth></no-auth>
+  </div>
+       
+   
+      <add-edit
+        :showModel="showModel"
+        :id="modelId"
+        :isDetail="isDetail"
+        @refresh="searchList"
+        @cancel="showModel = false"
+      ></add-edit>
+    </div>
+   </template>
+   <script>
+    import mixinPage from "@/mixins/elPaginationHandle";
+    import resToken from "@/mixins/resToken";
+    import ExTable from "@/components/ExTableNew.vue";
+    import statusList from "@/assets/js/statusList";
+    import asyncRequest from "@/apis/service/stock/my-test";
+    import addEdit from "./addEdit";
+    import { mapGetters } from "vuex";
+   
+   export default {
+    name: 'my-test',
+    mixins: [mixinPage, resToken],
+    components: {
+      addEdit,
+      ExTable,
+    },
+    computed: {
+      ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+      powers() {
+        let tran =
+          this.$store.getters.btnList.find(
+            (item) => item.menu_route == "my-test"
+          ) || {};
+        if (tran && tran.action && tran.action.length > 0) {
+          return tran.action;
+        } else {
+          return [];
+        }
+      },
+    },
+    data() {
+      return {
+        sitem: null,
+        // 状态
+        statusOptions: [
+          { id: "0", label: "禁用" },
+          { id: "1", label: "启用" },
+        ],
+        statusList: statusList,
+        loading: true,
+        showModel: false,
+        isDetail: false,
+        modelId: 0,
+        parmValue: {
+          name: "", // 业务员名字
+          username: "", // 账号
+          status: "", //
+          page: 1, // 页码
+          size: 15, // 每页显示条数
+        },
+        tableData: [],
+        passwordModel: false,
+        passwordModelId: 0,
+        isPasswordDetail: false,
+        // 表格 - 数据
+        tableData: [],
+        // 表格 - 参数
+        table: {
+          stripe: true,
+          border: true,
+          _defaultHeader_: ["setcol"],
+        },
+        // 表格 - 分页
+        pageInfo: {
+          size: 15,
+          curr: 1,
+          total: 0,
+        },
+        // 表格 - 列参数
+        columns: [
+          {
+            prop: "nickname",
+            label: "真实姓名",
+          },
+          {
+            prop: "role_name",
+            label: "角色名称",
+          },
+          {
+            prop: "mobile",
+            label: "联系电话",
+          },
+          {
+            prop: "email",
+            label: "邮箱",
+          },
+          {
+            prop: "status",
+            label: "状态",
+            _slot_: "status",
+            width: "80px",
+          },
+          {
+            prop: "addtime",
+            label: "创建时间",
+            sortable: true,
+          },
+          {
+            prop: "",
+            label: "操作",
+            fixed: "right",
+            _noset_: true,
+            _slot_: "operation",
+          },
+        ],
+      };
+    },
+    mounted() {
+      this.searchList();
+    },
+  
+    methods: {
+      restSearch() {
+        this.parmValue = {
+          name: "", // 业务员名字
+          username: "", // 账号
+          status: "", //
+          page: 1, // 页码
+          size: 10, // 每页显示条数
+        };
+        this.searchList();
+      },
+      
+      openModal(id, isDetail, sitem) {
+        this.showModel = true;
+        this.modelId = id;
+        this.isDetail = isDetail;
+        this.sitem = sitem;
+      },
+      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;
+        const res = await asyncRequest.list(this.parmValue);
+        if (res && res.code === 0 && res.data) {
+          this.tableData = res.data.list;
+          this.pageInfo.total = Number(res.data.count);
+        } else if (res && res.code >= 100 && res.code <= 104) {
+          await this.logout();
+        } else {
+          this.tableData = [];
+          this.pageInfo.total = 0;
+        }
+        this.loading = false;
+      },
+
+      async statusConfirm(id, status) {
+        let str= status === "1" ? "禁用" : "启用"
+        await this.$confirm('确定要改为'+str+'?',{
+          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>
+   .my-test {
+    
+   }
+   </style>
+   

+ 34 - 21
src/views/stock/productWeido/index.vue

@@ -247,7 +247,9 @@ import mixinPage from "@/mixins/elPaginationHandle";
 import resToken from "@/mixins/resToken";
 import ExTable from "@/components/ExTableNew.vue";
 import statusList from "@/assets/js/statusList";
-import asyncRequest from "@/apis/service/stock/productWeido";
+// import asyncRequest from "@/apis/service/stock/productWeido";
+import asyncRequest from "@/mock/service/stock/allot"; //获取商品假数据
+
 import addEdit from "./addEdit";
 import { mapGetters } from "vuex";
 
@@ -276,26 +278,26 @@ export default {
     return {
       options: [
         //选择商品下拉框
-        {
-          value: "选项1",
-          label: "黄金糕",
-        },
-        {
-          value: "选项2",
-          label: "双皮奶",
-        },
-        {
-          value: "选项3",
-          label: "蚵仔煎",
-        },
-        {
-          value: "选项4",
-          label: "龙须面",
-        },
-        {
-          value: "选项5",
-          label: "北京烤鸭",
-        },
+        // {
+        //   value: "选项1",
+        //   label: "黄金糕",
+        // },
+        // {
+        //   value: "选项2",
+        //   label: "双皮奶",
+        // },
+        // {
+        //   value: "选项3",
+        //   label: "蚵仔煎",
+        // },
+        // {
+        //   value: "选项4",
+        //   label: "龙须面",
+        // },
+        // {
+        //   value: "选项5",
+        //   label: "北京烤鸭",
+        // },
       ],
       sitem: null,
       // 状态
@@ -436,6 +438,17 @@ export default {
     //获取列表功能
     async searchList() {
       console.log("无列表接口");
+      const res = await asyncRequest.goodsList(this.parmValue);
+      console.log(res.data.list);
+      res.data.list.forEach((element) => {
+        // console.log(element);
+        let op = {
+          value: element.orderNo,
+          label: element.goods,
+        };
+        this.options.push(op);
+        // console.log(this.options);
+      });
       // this.loading = true;
       // const res = await asyncRequest.list(this.parmValue);
       // if (res && res.code === 0 && res.data) {

+ 1 - 0
src/views/stock/stockWarning/addEdit.vue

@@ -169,6 +169,7 @@ export default {
       }
     };
     return {
+      goods: "",
       loading: false,
       title: "添加账号",
       showModelThis: this.showModel,

+ 30 - 87
src/views/stock/stockWarning/index.vue

@@ -28,34 +28,31 @@
           <div style="width: 100%" class="min">
             <el-row style="padding: 0 0 0 80px">
               <el-col :span="24">
-                <!-- 请选择仓库 -->
-                <el-col :span="5" style="width: 250px">
-                  <el-cascader
-                    placeholder="请选择仓库"
-                    filterable
-                    clearable
-                    :size="searchSize"
-                    v-model="value"
-                    :options="options"
-                    style="width: 100%"
-                    @change="
-                      pageInfo.curr = 1;
-                      parmValue.page = 1;
-                      searchList();
-                    "
-                  ></el-cascader>
-                </el-col>
-                <!-- 商品编码 -->
-                <el-col :span="4" style="width: 160px; padding: 0 0 0 10px">
+                <!-- 库存量/仓库搜索二合一 -->
+                <el-col :span="8" style="width: 500px">
                   <el-input
-                    style="width: 100%"
                     :size="searchSize"
-                    v-model="parmValue.name"
-                    :maxlength="40"
-                    placeholder="商品编码"
-                  />
+                    placeholder="请输入内容"
+                    v-model="content"
+                    class="input-with-select"
+                  >
+                    <el-select
+                      style="width: 100px"
+                      v-model="select"
+                      slot="prepend"
+                      placeholder="请选择"
+                    >
+                      <el-option label="库存量" value="product"></el-option>
+                      <el-option label="仓库" value="stock"></el-option>
+                    </el-select>
+                    <el-button
+                      slot="append"
+                      icon="el-icon-search"
+                      type="primary"
+                    ></el-button>
+                  </el-input>
                 </el-col>
-                <!-- 库存量 -->
+
                 <el-col :span="6" style="width: 273px; padding: 0 0 0 10px">
                   <number-range
                     :start="parmValue.total_low"
@@ -69,7 +66,7 @@
                 </el-col>
 
                 <!-- 预警库存量 -->
-                <el-col :span="6" style="width: 303px" class="mr8">
+                <el-col :span="6" style="width: 303px" class="mr10">
                   <number-range
                     :start="parmValue.total_low"
                     :end="parmValue.total_up"
@@ -80,58 +77,20 @@
                     @numReturned="numReturned($event, 0)"
                   />
                 </el-col>
-                <!-- 搜索 -->
-                <el-col :span="4" style="width: 74px" class="mr10">
-                  <el-button
-                    :size="searchSize"
-                    type="primary"
-                    class="fr"
-                    icon="el-icon-search"
-                    label=""
-                    @click="searchList"
-                    >搜索</el-button
-                  >
-                </el-col>
-                <!-- 重置 -->
+
                 <el-col
                   :span="4"
-                  style="width: 74px; margin-left: 10px"
+                  style="width: 54px; margin-left: 10px"
                   class="mr5"
                 >
                   <el-button
                     :size="searchSize"
                     class="fr"
-                    icon="el-icon-refresh-right"
+                    type="warning"
                     @click="searchList"
                     >重置</el-button
                   >
                 </el-col>
-                <!-- <el-col
-                  :span="4"
-                  style="width: 66px"
-                >
-                  <el-button
-                    type="warning"
-                    class="fr"
-                    :size="searchSize"
-                    @click="restSearch"
-                  >
-                    重置
-                  </el-button>
-                </el-col>
-                <el-col
-                  :span="3"
-                  style="width: 66px; float: right"
-                >
-                  <el-button
-                    :size="searchSize"
-                    type="primary"
-                    style="float: right; margin-left: 5px"
-                    @click="searchList"
-                  >
-                    刷新
-                  </el-button>
-                </el-col> -->
               </el-col>
             </el-row>
           </div>
@@ -146,8 +105,7 @@
             "
           ></el-tag>
         </template> -->
-        <!-- <template #operation="{ scope }">
-          <div>123{{ scope.row }}</div>
+        <template #operation="{ scope }">
           <el-tooltip
             v-if="powers.some((item) => item == '005')"
             effect="dark"
@@ -185,7 +143,7 @@
               @click="statusConfirm(scope.row.id, scope.row.status)"
             ></i>
           </el-tooltip>
-        </template> -->
+        </template>
       </ex-table>
       <add-edit
         :id="modelId"
@@ -466,29 +424,17 @@ export default {
 .mr10 {
   margin-left: 10px;
 }
-@media screen and (max-width: 1473px) {
+@media screen and (max-width: 1476px) {
   .mr5 {
     // margin-left: 0px !important;
     margin-top: 10px;
   }
 }
-@media screen and (max-width: 1389px) {
+@media screen and (max-width: 1422px) {
   .mr10 {
     margin-top: 10px;
   }
 }
-.mr8 {
-  padding: 0 0 0 10px;
-}
-@media screen and (max-width: 1305px) {
-  .mr8 {
-    margin-top: 10px;
-    padding-left: 0;
-  }
-  .mr10 {
-    margin-left: 0px;
-  }
-}
 .to {
   float: left;
   height: 32px;
@@ -498,7 +444,4 @@ export default {
 .min {
   min-width: 1050px;
 }
-/**
-import numberRange from "@/components/numberRange";
-*/
 </style>

+ 9 - 5
src/views/stock/survey/index.vue

@@ -5,7 +5,11 @@
     >
       <div style="width: 100%">
         <el-row style="padding: 20px 0 0 30px">
-          <el-col :span="24" style="width: 220px">
+          <el-col :span="24" style="width: 410px">
+            <CompanySearch
+              style="dispaly: inline-block; padding-left: 10px"
+              :options="options"
+            ></CompanySearch>
             <StockSearch :options="options" @searchCard="a()"></StockSearch>
           </el-col>
         </el-row>
@@ -87,6 +91,7 @@ import countTo from "vue-count-to";
 import addEdit from "./addEdit";
 import { mapGetters } from "vuex";
 import StockSearch from "@/views/stock/allotFlow/components/stockSearch.vue";
+import CompanySearch from "@/views/stock/allotFlow/components/companySearch.vue";
 
 export default {
   name: "survey",
@@ -96,6 +101,7 @@ export default {
     ExTable,
     countTo,
     StockSearch,
+    CompanySearch,
   },
   computed: {
     ...mapGetters(["tablebtnSize", "searchSize", "size"]),
@@ -154,7 +160,7 @@ export default {
           endVal: 0,
         },
       ],
-      arr1:[],
+      arr1: [],
 
       loading: true,
       showModel: false,
@@ -241,10 +247,8 @@ export default {
   },
 
   methods: {
-    wchange(e){
-      
+    wchange(e) {
       console.log(e);
-
     },
     restSearch() {
       //清空入参参数

+ 6 - 0
test.http

@@ -0,0 +1,6 @@
+POST www.stock.com/admin/province HTTP/1.1
+content-type: application/json
+
+{
+    
+}