Browse Source

组件修改

戴艳蓉 3 years ago
parent
commit
21fdff8af1

+ 0 - 11
src/apis/components/area-select.js

@@ -1,11 +0,0 @@
-import http from "@/apis/axios";
-const api = "admin/";
-export default {
-//省份列表
-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),
-};
-   

+ 0 - 17
src/apis/components/company.js

@@ -1,17 +0,0 @@
-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 + "supplierlist", 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),
-};
-   

+ 7 - 0
src/apis/components/search-stock.js

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

+ 7 - 0
src/apis/components/search-supplier.js

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

+ 10 - 0
src/apis/components/select-area.js

@@ -0,0 +1,10 @@
+import http from "@/apis/axios";
+const api = "admin/";
+export default {
+    //省份列表
+    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),
+};

+ 0 - 93
src/components/company-search/main.vue

@@ -1,93 +0,0 @@
-<template>
-  <div class="companySearch" style="width: 100%; display: inline-block">
-    <el-select
-      style="width: 100%"
-      :size="isSize ? searchSize : ''"
-      v-model="value"
-      :multiple="false"
-      filterable
-      remote
-      reserve-keyword
-      placeholder="请选择公司"
-      :remote-method="remoteMethod"
-      :loading="loading"
-      @change="a($event)"
-    >
-      <el-option
-        v-for="item in options"
-        :key="item.value"
-        :label="item.label"
-        :value="item.value"
-      >
-      </el-option>
-    </el-select>
-  </div>
-</template>
-
-<script>
-import { mapGetters } from "vuex";
-import asyncRequest from "@/apis/components/company";
-
-export default {
-  name:"CompanySearch",
-  data() {
-    return {
-      isSize: false,
-      options: [],
-      value: [],
-      list: [],
-      states: [],
-      children: [],
-    };
-  },
-  computed: {
-    ...mapGetters(["searchSize"]),
-  },
-  props: ["isSize"],
-  methods: {
-    a(e) {
-      let companyName = "";
-      this.options.forEach((ele) => {
-        if (ele.value === e) {
-          companyName = ele.code;
-        }
-      });
-      let company = {
-        value: e,
-        companyName,
-      };
-      this.$emit("searchCard", company);
-    },
-    async remoteMethod(query) {
-      if (query !== "") {
-        this.loading = true;
-        let parmValue = {
-          page: 1,
-          size: 100,
-        };
-        const res = await asyncRequest.list(parmValue);
-        let arr = res.data.list;
-        arr.forEach((ele) => {
-          let item = {
-            value: ele.id,
-            label: ele.name,
-            code: ele.code,
-          };
-          this.options.push(item);
-        });
-        this.loading = false;
-        console.log(this.options);
-        this.options = arr.filter((item) => {
-          return item.name.indexOf(query) > -1;
-        });
-        console.log(this.options);
-      } else {
-        this.options = [];
-      }
-    },
-  },
-};
-</script>
-
-<style>
-</style>

+ 0 - 0
src/components/area-select/index.js → src/components/search-stock/index.js


+ 115 - 0
src/components/search-stock/main.vue

@@ -0,0 +1,115 @@
+<template>
+  <el-select
+    v-model="code"
+    multiple
+    filterable
+    remote
+    :multiple-limit="1"
+    reserve-keyword
+    :size="size || 'medium'"
+    style="width: 100%"
+    :placeholder="placeholder"
+    :disabled="disabled"
+    :remote-method="remoteMethod"
+    :loading="selectLoading"
+    @change="selectChange"
+  >
+    <el-option
+      v-for="(item, index) in options"
+      :key="item.id + index"
+      :label="item.name"
+      :value="item.wsm_code"
+    >
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import asyncRequest from "@/apis/components/search-stock";
+import resToken from "@/mixins/resToken";
+export default {
+  name: "SearchStock",
+  mixins: [resToken],
+  props: ["size", "code", "placeholder", "isDetail", "disabled", "names"],
+  /**
+   * 属性集合
+   * @param {String}        size             : 组件大小            非必填
+   * @param {Array}         value            : 选中值              必填
+   * @param {String}        placeholder      : 提示信息            非必填
+   * @param {Boolean}       sDetail          : 是否是详情逻辑       必填
+   * @param {Boolean}       disabled         : 是否禁用            必填
+   * @param {String}        names            : 选中值label         展示详情必填
+   */
+  /**
+   * 事件集合
+   * @change             : 选中值变化调用   抛出选中数据
+   */
+  data() {
+    return {
+      options: [],
+      code: [],
+      selectLoading: false,
+      searchName: "",
+    };
+  },
+  watch: {
+    names: function (val,old) {
+      console.log(val,old)
+      this.searchName = val;
+      if (this.isDetail && this.searchName) {
+        this.remoteMethod(this.searchName);
+      }
+    },
+  },
+  created() {
+    this.options = [];
+    this.selectLoading = false;
+  },
+  methods: {
+    async selectChange(e) {
+      if (e && e.length > 0) {
+        let index = this.options.findIndex((v) => v.wsm_code === e[0]);
+        if (index !== -1) {
+          let model = {
+            id: this.options[index].id,
+            code: this.options[index].wsm_code,
+            label: this.options[index].name,
+          };
+          this.$emit("change", model);
+        } else {
+          this.$emit("change", {});
+        }
+      } else {
+        this.$emit("change", {});
+      }
+    },
+    async remoteMethod(query) {
+      this.selectLoading = true;
+      if (query !== "") {
+        this.options = [];
+        let formValue = {
+          page: 1,
+          size: 100,
+          stock: query,
+        };
+
+        let res = await asyncRequest.list(formValue);
+        if (res && res.code === 0 && res.data) {
+          const { list } = res.data;
+          this.options = list;
+        } else if (res && res.code >= 100 && res.code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(res.message);
+        }
+      } else {
+        this.options = [];
+      }
+      this.selectLoading = false;
+    },
+  },
+};
+</script>
+
+<style>
+</style>

+ 0 - 0
src/components/company-search/index.js → src/components/search-supplier/index.js


+ 115 - 0
src/components/search-supplier/main.vue

@@ -0,0 +1,115 @@
+<template>
+  <el-select
+    v-model="code"
+    multiple
+    filterable
+    remote
+    :multiple-limit="1"
+    reserve-keyword
+    :size="size || 'medium'"
+    style="width: 100%"
+    :placeholder="placeholder"
+    :disabled="disabled"
+    :remote-method="remoteMethod"
+    :loading="selectLoading"
+    @change="selectChange"
+  >
+    <el-option
+      v-for="(item, index) in options"
+      :key="item.id + index"
+      :label="item.name"
+      :value="item.code"
+    >
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import asyncRequest from "@/apis/components/search-supplier";
+import resToken from "@/mixins/resToken";
+export default {
+  name: "SearchSupplier",
+  mixins: [resToken],
+  props: ["size", "code", "placeholder", "isDetail", "disabled", "names"],
+  /**
+   * 属性集合
+   * @param {String}        size             : 组件大小            非必填
+   * @param {Array}         value            : 选中值              必填
+   * @param {String}        placeholder      : 提示信息            非必填
+   * @param {Boolean}       sDetail          : 是否是详情逻辑       必填
+   * @param {Boolean}       disabled         : 是否禁用            必填
+   * @param {String}        names            : 选中值label         展示详情必填
+   */
+  /**
+   * 事件集合
+   * @change             : 选中值变化调用   抛出选中数据
+   */
+  data() {
+    return {
+      options: [],
+      code: [],
+      selectLoading: false,
+      searchName: "",
+    };
+  },
+  watch: {
+    names: function (val,old) {
+      console.log(val,old)
+      this.searchName = val;
+      if (this.isDetail && this.searchName) {
+        this.remoteMethod(this.searchName);
+      }
+    },
+  },
+  created() {
+    this.options = [];
+    this.selectLoading = false;
+  },
+  methods: {
+    async selectChange(e) {
+      if (e && e.length > 0) {
+        let index = this.options.findIndex((v) => v.code === e[0]);
+        if (index !== -1) {
+          let model = {
+            id: this.options[index].id,
+            code: this.options[index].code,
+            label: this.options[index].name,
+          };
+          this.$emit("change", model);
+        } else {
+          this.$emit("change", {});
+        }
+      } else {
+        this.$emit("change", {});
+      }
+    },
+    async remoteMethod(query) {
+      this.selectLoading = true;
+      if (query !== "") {
+        this.options = [];
+        let formValue = {
+          page: 1,
+          size: 100,
+          supplier: query,
+        };
+
+        let res = await asyncRequest.list(formValue);
+        if (res && res.code === 0 && res.data) {
+          const { list } = res.data;
+          this.options = list;
+        } else if (res && res.code >= 100 && res.code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(res.message);
+        }
+      } else {
+        this.options = [];
+      }
+      this.selectLoading = false;
+    },
+  },
+};
+</script>
+
+<style>
+</style>

+ 0 - 0
src/components/stock-search/index.js → src/components/select-area/index.js


+ 26 - 24
src/components/area-select/main.vue → src/components/select-area/main.vue

@@ -1,32 +1,33 @@
 <template>
-  <div class="area-select">
-    <!-- <h1>省/市/区选择组件</h1> -->
-    <div class="block">
-      <el-cascader
-        :size="isSize ? searchSize : ''"
-        style="width: 100%"
-        filterable
-        clearable
-        v-model="ruleForm.storeToArea"
-        :props="props"
-        @change="handleChange"
-      ></el-cascader>
-    </div>
+  <div class="select-area">
+    <el-cascader
+      :size="size || 'medium'"
+      style="width: 100%"
+      filterable
+      clearable
+      v-model="value"
+      :props="props"
+      @change="handleChange"
+    ></el-cascader>
   </div>
 </template>
 
 <script>
-import asyncRequest from "@/apis/components/area-select";
-import { mapGetters } from "vuex";
+import asyncRequest from "@/apis/components/select-area";
 export default {
-  name:'AreaSelect',
-  computed: {
-    ...mapGetters(["searchSize", "size"]),
-  },
-  props: ["isSize"],
+  name: "SelectArea",
+  props: ["size", "value"],
+  /**
+   * 属性集合
+   * @param {String}       size       : 组件大小 非必填
+   * @param {Array}        value      : 选中值  必填
+   */
+  /**
+   * 事件集合
+   * @change             : 选中值变化调用   抛出选中数据
+   */
   data() {
     return {
-      isDetails: true,
       props: {
         lazy: true, //开启远程加载
         async lazyLoad(node, resolve) {
@@ -61,17 +62,18 @@ export default {
           }
         },
       },
-      ruleForm: { storeToArea: [] },
     };
   },
   methods: {
     handleChange(value) {
-      console.log("123");
-      this.$emit("areaSelect", value);
+      this.$emit("change", value);
     },
   },
 };
 </script>
 
 <style>
+.select-area {
+  display: inline-block;
+}
 </style>

+ 0 - 92
src/components/stock-search/main.vue

@@ -1,92 +0,0 @@
-<template>
-  <div
-    class="stockSearch"
-    style="display: inline-block; width: 300px; padding-left: 10px"
-  >
-    <el-select
-      style="width: 100%"
-      :disabled="isDisabled === ''"
-      :size="isSize ? searchSize : ''"
-      v-model="value"
-      multiple
-      filterable
-      remote
-      reserve-keyword
-      placeholder="请选择仓库"
-      :remote-method="remoteMethod"
-      :loading="loading"
-      @change="a"
-    >
-      <el-option
-        v-for="item in options"
-        :key="item.value"
-        :label="item.label"
-        :value="item.value"
-      >
-      </el-option>
-    </el-select>
-  </div>
-</template>
-
-<script>
-import { mapGetters } from "vuex";
-export default {
-  props: ["isDisabled", "isSize"],
-  data() {
-    return {
-      company_name: "",
-      options: [],
-      value: [],
-      list: [],
-      states: [],
-    };
-  },
-  mounted() {
-    this.list = this.states.map((item) => {
-      return { value: `value:${item}`, label: `label:${item}` };
-    });
-  },
-  watch: {
-    companyName: "nameChange",
-  },
-  computed: {
-    ...mapGetters(["searchSize"]),
-  },
-  // 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;
-
-        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 = [];
-      }
-    },
-  },
-};
-</script>
-
-<style>
-</style>

+ 4 - 4
src/views/purchaseIn/addStore/index.vue

@@ -22,7 +22,7 @@
               prop="storeToCompany"
               style="width: 100%"
             >
-              <company-search @searchCard="getCompanyName"></company-search>
+              <search-supplier @searchCard="getCompanyName"></search-supplier>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -42,7 +42,7 @@
           <el-col :span="12">
             <!-- 省/市/区选择组件 -->
             <el-form-item label="省/市/区" prop="stockToArea">
-              <area-select @areaSelect="areaSelect"></area-select>
+              <select-area @areaSelect="areaSelect"></select-area>
             </el-form-item>
           </el-col>
           <el-col :span="12"
@@ -185,7 +185,7 @@
           <el-col :span="12">
             <!-- 省/市/区选择组件 -->
             <el-form-item label="省/市/区" prop="stockToArea">
-              <area-select @areaSelect="areaSelect"></area-select>
+              <select-area @areaSelect="areaSelect"></select-area>
             </el-form-item>
           </el-col>
           <el-col :span="12"
@@ -254,7 +254,7 @@
           <el-col :span="12">
             <!-- 收发货地址 -->
             <el-form-item label="省/市/区" prop="linker_addr">
-              <area-select @areaSelect="selectArea"></area-select> </el-form-item
+              <select-area @areaSelect="selectArea"></select-area> </el-form-item
           ></el-col>
           <el-col :span="12">
             <!-- 收发货详细地址 -->

+ 44 - 61
src/views/purchaseIn/storeSet/index.vue

@@ -28,7 +28,7 @@
             <el-row style="padding: 0 0 0 80px">
               <!-- 创建时间 -->
               <el-col :span="18" style="width: 303px; padding: 0 0 0 10px">
-                <PeriodDatePicker
+                <period-date-picker
                   :start="parmValue.start"
                   :end="parmValue.end"
                   :type="1"
@@ -39,9 +39,33 @@
                 />
               </el-col>
 
+              <el-col :span="18" style="width: 303px; padding: 0 0 0 10px">
+                <search-supplier
+                  :size="searchSize"
+                  :code="supplierNo"
+                  :placeholder="'供应商公司名称'"
+                  :is-detail="true"
+                  :disabled="false"
+                  :names="supplierNames"
+                  @change="supplierChange"
+                />
+              </el-col>
+
+                  <el-col :span="18" style="width: 303px; padding: 0 0 0 10px">
+                <search-stock
+                  :size="searchSize"
+                  :code="stockNo"
+                  :placeholder="'仓库名称'"
+                  :is-detail="true"
+                  :disabled="false"
+                  :names="stockNames"
+                  @change="stockChange"
+                />
+              </el-col>
+
               <!-- 仓库名称、仓库编码、联系人搜索三合一 -->
               <!-- 库存量/仓库搜索二合一 -->
-              <el-col :span="8" style="width: 500px; padding-left: 10px">
+              <!-- <el-col :span="8" style="width: 500px; padding-left: 10px">
                 <el-input
                   :size="searchSize"
                   placeholder="请输入内容"
@@ -70,54 +94,7 @@
                     type="primary"
                   ></el-button>
                 </el-input>
-              </el-col>
-
-              <!-- <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> -->
               <el-col :span="4" style="width: 66px; padding-left: 10px">
                 <el-button
                   type="warning"
@@ -185,17 +162,6 @@
             </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')"
@@ -322,6 +288,10 @@ export default {
       showModel: false,
       isDetail: false,
       modelId: 0,
+      supplierNo: [""],
+      supplierNames: "",
+      stockNo: [""],
+      stockNames: "",
       parmValue: {
         supplierNo: "", //供应商编码
         wsm_code: "", //仓库编码
@@ -399,10 +369,23 @@ export default {
     };
   },
   mounted() {
+
+    this.supplierNo = ["GYS-20210416-0494"];
+    this.supplierNames = "北京嘉瑄置业有限公司璞瑄酒店";
+
+    
+    this.stockNo = ["WSM8b49211013191450"];
+    this.stockNames = "华北仓er";
     this.searchList();
   },
 
   methods: {
+    supplierChange(e) {
+      console.log(e);
+    },
+      stockChange(e) {
+      console.log(e);
+    },
     addList(id) {
       console.log(id);
       console.log("点击了新建按钮");