Browse Source

修改组件

戴艳蓉 3 years ago
parent
commit
72846d313f
31 changed files with 202 additions and 995 deletions
  1. 7 0
      src/apis/components/search-account.js
  2. 0 0
      src/components/ex-table/表格+分页
  3. 0 0
      src/components/icon-list/菜单图标选择
  4. 0 0
      src/components/no-auth/暂无权限
  5. 0 0
      src/components/number-range/数字区间框
  6. 0 0
      src/components/organize-tree/组织部门-item
  7. 0 0
      src/components/period-date-picker/日期选择区间
  8. 0 0
      src/components/screenfull/全屏
  9. 0 0
      src/components/search-account/index.js
  10. 115 0
      src/components/search-account/main.vue
  11. 0 0
      src/components/search-account/账号选择框
  12. 0 137
      src/components/search-select/main.vue
  13. 0 0
      src/components/search-stock/仓库选择框
  14. 0 0
      src/components/search-supplier/供应商选择框
  15. 0 2
      src/components/select-area/main.vue
  16. 0 0
      src/components/select-area/省市区联动选择框
  17. 0 0
      src/components/send-verification-code/验证码发送按钮
  18. 0 2
      src/components/shy-select/index.js
  19. 0 62
      src/components/shy-select/main.vue
  20. 0 0
      src/components/shy-tree/菜单设置-item
  21. 0 2
      src/components/size-select/index.js
  22. 0 60
      src/components/size-select/main.vue
  23. 0 0
      src/components/staff-tree/组织员工-item
  24. 0 2
      src/components/tree-table/index.js
  25. 0 155
      src/components/tree-table/main.vue
  26. 0 2
      src/components/tree-table/row.js
  27. 0 487
      src/components/tree-table/tree-row.vue
  28. 0 0
      src/components/upload-excel/excel文件上传
  29. 0 0
      src/components/upload/文件上传
  30. 79 83
      src/views/purchaseIn/addStore/index.vue
  31. 1 1
      src/views/purchaseIn/storeSet/index.vue

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

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

+ 0 - 0
src/components/ex-table/表格+分页


+ 0 - 0
src/components/icon-list/菜单图标选择


+ 0 - 0
src/components/no-auth/暂无权限


+ 0 - 0
src/components/number-range/数字区间框


+ 0 - 0
src/components/organize-tree/组织部门-item


+ 0 - 0
src/components/period-date-picker/日期选择区间


+ 0 - 0
src/components/screenfull/全屏


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


+ 115 - 0
src/components/search-account/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.nickname"
+      :value="item.id"
+    >
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import asyncRequest from "@/apis/components/search-account";
+import resToken from "@/mixins/resToken";
+export default {
+  name: "SearchAccount",
+  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.id === e[0]);
+        if (index !== -1) {
+          let model = {
+            id: this.options[index].id,
+            code: this.options[index].id,
+            label: this.options[index].nickname,
+          };
+          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,
+          name: 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/search-account/账号选择框


+ 0 - 137
src/components/search-select/main.vue

@@ -1,137 +0,0 @@
-<template>
-  <el-select
-    v-model="code"
-    multiple
-    filterable
-    remote
-    :multiple-limit="1"
-    reserve-keyword
-    :size="size"
-    style="width: 100%"
-    :placeholder="placeholder"
-    :disabled="disabled"
-    :remote-method="remoteMethod"
-    :loading="selectLoading"
-    @change="selectChange"
-  >
-    <el-option
-      v-for="item in activeOptions"
-      :key="item.code"
-      :label="item.name"
-      :value="item.code"
-    />
-  </el-select>
-</template>
-<script>
-import asyncRequest from "@/apis/service/searchSelect";
-import resToken from "@/mixins/resToken";
-export default {
-  name: "search-select",
-  props: [
-    "code",
-    "placeholder",
-    "size",
-    "type",
-    "isDetail",
-    "disabled",
-    "names",
-  ],
-  mixins: [resToken],
-  data() {
-    return {
-      activeOptions: [],
-      code: [],
-      selectLoading: false,
-      searchName: "",
-    };
-  },
-  watch: {
-    names: function (val) {
-      this.searchName = val;
-      if (this.isDetail && this.searchName) {
-        this.remoteMethod(this.searchName);
-      }
-    },
-  },
-  created() {
-    this.activeOptions = [];
-    this.initForm();
-  },
-  methods: {
-    async initForm() {
-      this.selectLoading = false;
-    },
-    async selectChange() {
-      this.$emit("end", this.code);
-    },
-    async remoteMethod(query) {
-      this.selectLoading = true;
-      if (query !== "") {
-        this.activeOptions = [];
-        let formValue = {
-          page: 1,
-          size: 50,
-          name: query,
-          company: query,
-        };
-
-        let res = {};
-        if (this.type === "1") {
-          delete formValue["name"];
-          res = await asyncRequest.list1(formValue);
-        } else if (this.type === "2") {
-          delete formValue["company"];
-          res = await asyncRequest.list2(formValue);
-        } else if (this.type === "3") {
-          delete formValue["company"];
-          res = await asyncRequest.list3(formValue);
-        } else {
-          res = await asyncRequest.list4({});
-        }
-        if (res && res.code === 0 && res.data) {
-          this.activeOptions;
-          let list = [];
-          if (this.type === "4") {
-            list = res.data;
-          } else {
-            list = res.data.list;
-          }
-          list.forEach((v1) => {
-            let item = {
-              code:
-                this.type === "1"
-                  ? v1.companyNo || ""
-                  : this.type === "2"
-                  ? v1.companyNo || ""
-                  : this.type === "3"
-                  ? v1.code || ""
-                  : v1.id || "",
-              name:
-                this.type === "1"
-                  ? v1.companyName || ""
-                  : this.type === "2"
-                  ? v1.company_name || ""
-                  : this.type === "3"
-                  ? v1.name || ""
-                  : v1.rate+"%" || "",
-            };
-            this.activeOptions.push(item);
-          });
-        } else if (res && res.code >= 100 && res.code <= 104) {
-          await this.logout();
-        } else {
-          this.$message.warning(res.message);
-        }
-      } else {
-        this.activeOptions = [];
-      }
-      this.selectLoading = false;
-    },
-  },
-};
-</script>
-
-   <style lang="scss" scoped>
-.search-select {
-}
-</style>

+ 0 - 0
src/components/search-stock/仓库选择框


+ 0 - 0
src/components/search-supplier/供应商选择框


+ 0 - 2
src/components/select-area/main.vue

@@ -1,5 +1,4 @@
 <template>
-  <div class="select-area">
     <el-cascader
       :size="size || 'medium'"
       style="width: 100%"
@@ -9,7 +8,6 @@
       :props="props"
       @change="handleChange"
     ></el-cascader>
-  </div>
 </template>
 
 <script>

+ 0 - 0
src/components/select-area/省市区联动选择框


+ 0 - 0
src/components/send-verification-code/验证码发送按钮


+ 0 - 2
src/components/shy-select/index.js

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

+ 0 - 62
src/components/shy-select/main.vue

@@ -1,62 +0,0 @@
-<template>
-  <el-select
-    v-model="value"
-    style="width:100%"
-    clearable
-    :placeholder="placeholder"
-    @focus="setMinWidth"
-  >
-    <el-option
-      v-for="item in array"
-      :key="item.value"
-      :label="item.label"
-      :value="item.value"
-      :style="{ 'min-width': minWidth + 2 + 'px' }"
-    />
-  </el-select>
-</template>
-
-<script>
-export default {
-  name: 'ShySelect',
-  // 将子父组件的v-model打通
-  model: {
-    prop: 'value', // 要存在于props
-    event: 'change' // 当组件的值发生改变时要emit的事件名
-  },
-  props: ['value', 'array', 'placeholder'],
-  data() {
-    return {
-      newValue: this.value,
-      minWidth: ''
-    }
-  },
-  watch: {
-    // 这里检测data中的值,一旦发生变化就提交事件到父组件
-    newValue: function(newVal) {
-      this.$emit('change', newVal)
-    },
-    // 监测父组件值的变化
-    value: function(newVal) {
-      this.newValue = newVal
-    }
-  },
-  methods: {
-    setMinWidth(event) {
-      if (this.array && this.array.length > 0) {
-        // 有数据情况
-        this.minWidth = event.srcElement.clientWidth
-      } else {
-        // 无数据的情况下,给请选择提示设置最小宽度
-        const domEmpty = document.getElementsByClassName(
-          'el-select-dropdown__empty'
-        )
-        if (domEmpty && domEmpty.length > 0) {
-          domEmpty[0].style['min-width'] =
-            event.srcElement.clientWidth + 2 + 'px'
-        }
-      }
-    }
-  }
-}
-</script>

+ 0 - 0
src/components/shy-tree/菜单设置-item


+ 0 - 2
src/components/size-select/index.js

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

+ 0 - 60
src/components/size-select/main.vue

@@ -1,60 +0,0 @@
-<template>
-  <el-dropdown trigger="click" @command="handleSetSize">
-    <div>
-      <svg-icon class-name="size-icon" icon-class="size" />
-    </div>
-    <el-dropdown-menu slot="dropdown">
-      <el-dropdown-item
-        v-for="item of sizeOptions"
-        :key="item.value"
-        :disabled="size === item.value"
-        :command="item.value"
-      >
-        {{ item.label }}
-      </el-dropdown-item>
-    </el-dropdown-menu>
-  </el-dropdown>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      sizeOptions: [
-        { label: 'Default', value: 'default' },
-        { label: 'Medium', value: 'medium' },
-        { label: 'Small', value: 'small' },
-        { label: 'Mini', value: 'mini' }
-      ]
-    }
-  },
-  computed: {
-    size() {
-      return this.$store.getters.size
-    }
-  },
-  methods: {
-    handleSetSize(size) {
-      this.$ELEMENT.size = size
-      this.$store.dispatch('app/setSize', size)
-      this.refreshView()
-      this.$message({
-        message: 'Switch Size Success',
-        type: 'success'
-      })
-    },
-    refreshView() {
-      // In order to make the cached page re-rendered
-      this.$store.dispatch('tagsView/delAllCachedViews', this.$route)
-
-      const { fullPath } = this.$route
-
-      this.$nextTick(() => {
-        this.$router.replace({
-          path: '/redirect' + fullPath
-        })
-      })
-    }
-  }
-}
-</script>

+ 0 - 0
src/components/staff-tree/组织员工-item


+ 0 - 2
src/components/tree-table/index.js

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

+ 0 - 155
src/components/tree-table/main.vue

@@ -1,155 +0,0 @@
-<template>
-  <div class="tree-table">
-    <div class="tree-table-header">
-      <template v-for="(header, index) in columns">
-        <div :key="'header' + index" class="header-item" v-if="header.show">
-          <span>{{ header.label }}</span>
-        </div>
-      </template>
-    </div>
-    <div class="tree-table-body">
-      <tree-rob
-        v-if="data && data.length > 0"
-        :data="data"
-        :columns="columns"
-        @again="again"
-        @statusConfirm="statusConfirm"
-        @openModal="openModal"
-        @setNewProfit="setNewProfit"
-      ></tree-rob>
-      <div v-else class="no-data">暂无数据</div>
-    </div>
-  </div>
-</template>
-
-<script>
-import treeRob from "./tree-row.vue";
-export default {
-  name: "treeTable",
-  components: {
-    treeRob,
-  },
-  props: {
-    /**
-     * el-table 属性集合
-     * 自定义属性:
-     * @param {Array} _defaultHeader_  : 默认的表格头部,支持['setcol', 'screen'] setcol-列设置 screen-筛选
-     * 可使用插槽扩展表格头部:
-     * table-header - 具名插槽
-     * slotProps:selection - 表格选中的数据  alldata - 表格当前全部数据
-     * <template #table-header="slotProps">
-     *   <el-button size="small" @click="click(slotProps)">扩展1</el-button>
-     * </template>
-     */
-    table: {
-      type: Object,
-      default: () => {},
-    },
-    // el-table 表格数据 对应data字段
-    data: {
-      type: Array,
-      default: () => [],
-    },
-    /**
-     * el-table-column 表格列属性集合
-     * 自定义属性:
-     * @param {Boolean}       _noset_        : 是否不允许设置列
-     * @param {Boolean}        _screen_      : 是否允许筛选
-     * @param {Boolean}        _hidden_      : 是否隐藏列
-     * @param {String/Boolean} _screen_tip_  : 筛选按钮提示信息,为false不提示
-     * @param {String} _screen_tip_effect_   : 筛选按钮提示信息主题,dark/light
-     * @param {String} _screen_tip_placement_: 筛选按钮提示信息位置,top/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end
-     * @param {Array}          _keys_        : 支持的筛选key
-     * @param {Array}      _select_options_  : 若需支持包含select的key,value的备选数据,示例:{_select_options_: [{id:'', label:''},...]}
-     * @param {Array}  _select_options_end_  : 若需支持包含select的key,value_end的备选数据,默认使用_select_options_,示例:{_select_options_: [{id:'', label:''},...]}
-     * @param {Array}          _keys_        : 支持的筛选key
-     * @param {String}         _slot_        : 使用具名插槽时的名称
-     * @param {Function}       _format_      : 数据格式化函数,支持返回html
-     * @param {Function}       _render_      : 自定义列,采用vue中的render函数,示例: { _render_:(h, scope) => { return h(...) } }
-     */
-    columns: {
-      type: Array,
-      default: () => [],
-    },
-  },
-  methods: {
-    again(id) {
-      this.$emit("again", id);
-    },
-    statusConfirm(id, status, ex_status) {
-      this.$emit("statusConfirm", id, status, ex_status);
-    },
-    openModal(id, is, app) {
-      this.$emit("openModal", id, is, app);
-    },
-    setNewProfit(e) {
-      this.$emit("setNewProfit", e);
-    },
-  },
-};
-</script>
-
-<style  lang="scss" scoped>
-.tree-table {
-  width: 100%;
-  position: relative;
-  margin: 0 0 50px 0;
-  .tree-table-header {
-    width: 100%;
-    display: flex;
-    border-top: 1px solid #dfe6ec;
-    border-left: 1px solid #dfe6ec;
-    .header-item {
-      flex: 1;
-      text-align: center;
-      padding: 12px 0;
-      height: 48px;
-      border-bottom: 1px solid #dfe6ec;
-      border-right: 1px solid #dfe6ec;
-      align-items: stretch;
-      span {
-        overflow: hidden;
-        text-overflow: ellipsis;
-        white-space: normal;
-        word-break: break-all;
-        line-height: 23px;
-        height: 23px;
-        padding: 0;
-        margin: 0;
-        list-style: none;
-        font-style: normal;
-        text-decoration: none;
-        text-indent: initial;
-        border-spacing: 2px;
-        font-size: 14px;
-        border: none;
-        font-weight: 500;
-        font-family: "Microsoft Yahei", sans-serif;
-        -webkit-tap-highlight-color: transparent;
-        -webkit-font-smoothing: antialiased;
-        display: inline-block;
-        -webkit-box-sizing: border-box;
-        box-sizing: border-box;
-        position: relative;
-        vertical-align: middle;
-        padding-left: 10px;
-        padding-right: 10px;
-        width: 100%;
-        color: #909399;
-      }
-    }
-  }
-  .tree-table-body {
-    width: 100%;
-    // border-top: 1px solid #dfe6ec;
-    border-left: 1px solid #dfe6ec;
-  }
-  .no-data {
-    padding: 25px 0;
-    text-align: center;
-    color: #909399;
-    border-right: 1px solid #dfe6ec;
-    border-bottom: 1px solid #dfe6ec;
-  }
-}
-</style>

+ 0 - 2
src/components/tree-table/row.js

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

+ 0 - 487
src/components/tree-table/tree-row.vue

@@ -1,487 +0,0 @@
-<template>
-  <div class="body-main">
-    <div
-      class="body-row-node"
-      v-for="(node, index) in data"
-      :key="'node' + node.level + index"
-    >
-      <div class="body-row">
-        <template v-for="(item, cindex) in columns">
-          <div class="body-item" :key="'item' + index + cindex">
-            <div class="item-div" v-if="item.prop == 'ex_status'">
-              <el-tag
-                :size="tablebtnSize"
-                v-if="node.ex_status === '0'"
-                :class="{
-                  'hover-tag':
-                    node.status === '0' &&
-                    powers.some((itemsome) => itemsome == '010'),
-                }"
-                :type="'warning'"
-                @click="
-                  openModal(
-                    node.id,
-                    false,
-                    true,
-                    node.status === '0' &&
-                      powers.some((itemsome) => itemsome == '010')
-                  )
-                "
-              >
-                <i
-                  class="el-icon-thumb"
-                  v-if="
-                    node.status === '0' &&
-                    powers.some((itemsome) => itemsome == '010')
-                  "
-                  style="margin-right: 1px"
-                ></i>
-                {{ node.ex_status_cn }}
-              </el-tag>
-              <el-tag
-                :size="tablebtnSize"
-                v-else-if="node.ex_status === '1'"
-                :type="'success'"
-              >
-                {{ node.ex_status_cn }}
-              </el-tag>
-              <el-tag
-                :size="tablebtnSize"
-                v-else-if="node.ex_status === '2'"
-                :class="{
-                  'hover-tag':
-                    node.status === '0' &&
-                    powers.some((itemsome) => itemsome == '009'),
-                }"
-                :type="'danger'"
-                @click="
-                  again(
-                    node.id,
-                    node.status === '0' &&
-                      powers.some((itemsome) => itemsome == '009')
-                  )
-                "
-              >
-                <i
-                  class="el-icon-thumb"
-                  v-if="
-                    node.status === '0' &&
-                    powers.some((itemsome) => itemsome == '009')
-                  "
-                  style="margin-right: 1px"
-                ></i>
-                {{ node.ex_status_cn }}
-              </el-tag>
-              <el-tag
-                :size="tablebtnSize"
-                v-else-if="node.ex_status === '3'"
-                :class="{
-                  'hover-tag':
-                    node.status === '0' &&
-                    powers.some((itemsome) => itemsome == '009'),
-                }"
-                :type="'info'"
-                @click="
-                  again(
-                    node.id,
-                    node.status === '0' &&
-                      powers.some((itemsome) => itemsome == '009')
-                  )
-                "
-              >
-                <i
-                  class="el-icon-thumb"
-                  v-if="
-                    node.status === '0' &&
-                    powers.some((itemsome) => itemsome == '009')
-                  "
-                  style="margin-right: 1px"
-                ></i>
-                {{ node.ex_status_cn }}
-              </el-tag>
-            </div>
-            <div class="item-div" v-else-if="item.prop == 'status'">
-              <span class="item-div-item">
-                <el-tag
-                  v-if="node[item.prop] === '1'"
-                  type="success"
-                  :class="{ 'hover-tag': powers.some((item) => item == '004') }"
-                  :size="tablebtnSize"
-                  @click="
-                    statusConfirm(
-                      node.id,
-                      node.status,
-                      node.ex_status,
-                      powers.some((itemsome) => itemsome == '004')
-                    )
-                  "
-                >
-                  <i
-                    class="el-icon-thumb"
-                    v-if="powers.some((itemsome) => itemsome == '004')"
-                    style="margin-right: 1px"
-                  ></i>
-                  启用</el-tag
-                >
-                <el-tag
-                  v-else
-                  :class="{ 'hover-tag': powers.some((item) => item == '004') }"
-                  :size="tablebtnSize"
-                  type="warning"
-                  @click="
-                    statusConfirm(
-                      node.id,
-                      node.status,
-                      node.ex_status,
-                      powers.some((itemsome) => itemsome == '004')
-                    )
-                  "
-                >
-                  <i
-                    class="el-icon-thumb"
-                    v-if="powers.some((itemsome) => itemsome == '004')"
-                    style="margin-right: 1px"
-                  ></i>
-                  禁用</el-tag
-                >
-              </span>
-            </div>
-            <div class="item-div" v-else-if="item.prop == 'desc'">
-              <span class="item-div-item">
-                <el-link
-                  class="mini-link"
-                  v-if="
-                    (node.status === '0' &&
-                      node.ex_status === '3' &&
-                      powers.some((itemsome) => itemsome == '005')) ||
-                    (node.status === '0' &&
-                      node.ex_status === '2' &&
-                      powers.some((itemsome) => itemsome == '005'))
-                  "
-                  type="primary"
-                  :underline="false"
-                  :size="tablebtnSize"
-                  @click="openModal(node.id, false, false)"
-                >
-                  修改
-                </el-link>
-                <el-link
-                  v-if="powers.some((itemsome) => itemsome == '007')"
-                  class="mini-link"
-                  type="primary"
-                  :underline="false"
-                  :size="tablebtnSize"
-                  @click="openModal(node.id, true, false)"
-                >
-                  详情
-                </el-link>
-
-                <el-link
-                  v-if="
-                    node.rateEdit &&
-                    powers.some((itemsome) => itemsome == '017')
-                  "
-                  class="mini-link"
-                  type="primary"
-                  :underline="false"
-                  :size="tablebtnSize"
-                  @click="setNewProfit(node)"
-                >
-                  提交新毛利
-                </el-link>
-              </span>
-            </div>
-            <div
-              class="item-div item-input"
-              v-else-if="
-                node.rateEdit === true && item.prop == 'in_rate' && item.show
-              "
-            >
-              <el-input-number
-                style="width: 100%"
-                v-model="node.in_rate_new"
-                :step="0.01"
-                :min="0"
-                :max="100"
-                :precision="2"
-                :placeholder="node.in_rate"
-                step-strictly
-                :controls="false"
-              ></el-input-number>
-            </div>
-            <div
-              class="item-div item-input"
-              v-else-if="
-                node.rateEdit === true && item.prop == 'low_rate' && item.show
-              "
-            >
-              <el-input-number
-                style="width: 100%"
-                v-model="node.low_rate_new"
-                :step="0.01"
-                :min="0"
-                :max="100"
-                :precision="2"
-                :placeholder="node.low_rate"
-                step-strictly
-                :controls="false"
-              ></el-input-number>
-            </div>
-            <div
-              class="item-div item-input"
-              v-else-if="
-                node.rateEdit === true && item.prop == 'out_rate' && item.show
-              "
-            >
-              <el-input-number
-                style="width: 100%"
-                v-model="node.out_rate_new"
-                :step="0.01"
-                :min="0"
-                :max="100"
-                :precision="2"
-                :placeholder="node.out_rate"
-                step-strictly
-                :controls="false"
-              ></el-input-number>
-            </div>
-            <div
-              class="item-div item-input"
-              v-else-if="
-                node.rateEdit === true && item.prop == 'rate' && item.show
-              "
-            >
-              <el-input-number
-                style="width: 100%"
-                v-model="node.rate_new"
-                :step="0.01"
-                :min="0"
-                :max="100"
-                :precision="2"
-                :placeholder="node.rate"
-                step-strictly
-                :controls="false"
-              ></el-input-number>
-            </div>
-            <div class="item-div" v-else>
-              <span
-                :class="{
-                  pad2: node.level === 2 && cindex === 0,
-                  pad3: node.level === 3 && cindex === 0,
-                }"
-                class="item-div-item"
-              >
-                <i
-                  style="color: rgb(102, 102, 102)"
-                  class="hasHover"
-                  @click="openI(node.open, node.cat_pid, node.id)"
-                  :class="{
-                    'el-icon-arrow-right': !node['open'],
-                    'el-icon-arrow-down': node['open'],
-                  }"
-                  v-if="
-                    cindex === 0 && node.children && node.children.length > 0
-                  "
-                ></i>
-                {{ node[item.prop] }}</span
-              >
-            </div>
-          </div>
-        </template>
-      </div>
-      <treeRob
-        :data="node.children"
-        v-if="node.children && node.children.length > 0 && node.open"
-        :columns="columns"
-        @again="again"
-        @statusConfirm="statusConfirm"
-        @openModal="openModal"
-        @setNewProfit="setNewProfit"
-      ></treeRob>
-    </div>
-  </div>
-</template>
-
-<script>
-import treeRob from "./tree-row.vue";
-import { mapGetters } from "vuex";
-export default {
-  name: "treeRob",
-  components: {
-    treeRob,
-  },
-  computed: {
-    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
-    powers() {
-      let tran =
-        this.$store.getters.btnList.find((item) => item.menu_route == "sort") ||
-        {};
-      if (tran && tran.action && tran.action.length > 0) {
-        return tran.action;
-      } else {
-        return [];
-      }
-    },
-  },
-  props: {
-    // el-table 表格数据 对应data字段
-    data: {
-      type: Array,
-      default: () => [],
-    },
-    /**
-     * el-table-column 表格列属性集合
-     * 自定义属性:
-     */
-    columns: {
-      type: Array,
-      default: () => [],
-    },
-  },
-  methods: {
-    openI(open, pid, id) {
-      if (open === false || open === true) {
-        this.data.map((v1) => {
-          if (v1.id === id) {
-            v1.open = !open;
-          }
-          return v1;
-        });
-      }
-    },
-    again(id, type) {
-      if (!type) {
-        return;
-      }
-      this.$emit("again", id);
-    },
-    wealWithItem(item, pop) {
-      let value = "";
-      let old = parseFloat(item[`${pop}`] + "");
-      let newi = parseFloat(item[`${pop}_new`] + "");
-      if (old !== newi) {
-        value = newi;
-      }
-      return value;
-    },
-    setNewProfit(node) {
-      let edit = false;
-      let model = {
-        id: node.id,
-        in_rate: this.wealWithItem(node, "in_rate"),
-        out_rate: this.wealWithItem(node, "out_rate"),
-        low_rate: this.wealWithItem(node, "low_rate"),
-        rate: this.wealWithItem(node, "rate"),
-      };
-      if (
-        model.in_rate === "" &&
-        model.out_rate === "" &&
-        model.low_rate === "" &&
-        model.rate === ""
-      ) {
-        edit = true;
-      }
-      if (edit) {
-        this.$message.warning("您未修改毛利!");
-      } else {
-        this.$emit("setNewProfit", model);
-      }
-    },
-    statusConfirm(id, status, ex, type) {
-      if (!type) {
-        return;
-      }
-      this.$emit("statusConfirm", id, status, ex);
-    },
-    openModal(id, is, app, type) {
-      if (!type) {
-        return;
-      }
-      this.$emit("openModal", id, is, app);
-    },
-  },
-};
-</script>
-
-<style lang="scss" scoped>
-.body-main {
-  width: 100%;
-  position: relative;
-  .body-row-node {
-    width: 100%;
-    position: relative;
-    .body-row {
-      width: 100%;
-      display: flex;
-      height: 42px;
-      .body-item {
-        background: #fff;
-        display: inline-block;
-        flex: 1;
-        text-align: center;
-        border-right: 1px solid #dfe6ec;
-        border-bottom: 1px solid #dfe6ec;
-        &:first-child {
-          text-align: left;
-        }
-        .item-div {
-          padding: 8px 0;
-          &.item-input {
-            padding: 0;
-          }
-
-          span.item-div-item {
-            text-overflow: ellipsis;
-            white-space: normal;
-            word-break: break-all;
-            line-height: 23px;
-            height: 23px;
-            overflow: hidden;
-            padding: 0;
-            margin: 0;
-            list-style: none;
-            font-style: normal;
-            text-decoration: none;
-            text-indent: initial;
-            border-spacing: 2px;
-            font-size: 12px;
-            border: none;
-            font-weight: 500;
-            font-family: "Microsoft Yahei", sans-serif;
-            -webkit-tap-highlight-color: transparent;
-            -webkit-font-smoothing: antialiased;
-            display: inline-block;
-            -webkit-box-sizing: border-box;
-            box-sizing: border-box;
-            position: relative;
-            vertical-align: middle;
-            padding-left: 10px;
-            padding-right: 10px;
-            width: 100%;
-            color: #606266;
-            &.open-i {
-              &:hover {
-                cursor: pointer;
-              }
-            }
-            &.pad2 {
-              padding-left: 30px;
-            }
-            &.pad3 {
-              padding-left: 50px;
-            }
-          }
-        }
-      }
-      &:hover {
-        .body-item {
-          background: #f5f7fa;
-        }
-      }
-    }
-
-    // flex:1
-    //  display: flex;
-  }
-}
-</style>

+ 0 - 0
src/components/upload-excel/excel文件上传


+ 0 - 0
src/components/upload/文件上传


+ 79 - 83
src/views/purchaseIn/addStore/index.vue

@@ -26,12 +26,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="仓库名称" prop="stockName">
+            <el-form-item label="仓库名称" prop="accountName">
               <el-input
                 placeholder="请输入仓库名称"
                 filterable
                 clearable
-                v-model="ruleForm.stockName"
+                v-model="ruleForm.accountName"
                 @change="getValue1"
               >
               </el-input>
@@ -41,18 +41,18 @@
         <el-row>
           <el-col :span="12">
             <!-- 省/市/区选择组件 -->
-            <el-form-item label="省/市/区" prop="stockToArea">
+            <el-form-item label="省/市/区" prop="accountToArea">
               <select-area @areaSelect="areaSelect"></select-area>
             </el-form-item>
           </el-col>
           <el-col :span="12"
             ><!-- 仓库详细地址 -->
-            <el-form-item label="详细地址" prop="stockDetail">
+            <el-form-item label="详细地址" prop="accountDetail">
               <el-input
                 placeholder="请输入内容"
-                v-model="ruleForm.stockDetail"
+                v-model="ruleForm.accountDetail"
                 clearable
-                @change="stockDetail"
+                @change="accountDetail"
               >
               </el-input>
             </el-form-item>
@@ -61,25 +61,16 @@
 
         <el-row>
           <el-col :span="12">
-            <el-form-item label="负责人" prop="stockDutyer" style="width: 100%">
-              <el-select
-                style="width: 100%"
-                v-model="ruleForm.stockDutyer"
-                placeholder="请选择仓库负责人"
-                @change="getValue2"
-              >
-                <el-option
-                  v-for="(item, index) in ruleForm.stockDutyer_options"
-                  :key="index"
-                  :label="item.nickname"
-                  :value="item.nickname"
-                >
-                  <span style="float: left">{{ item.nickname }}</span>
-                  <span style="float: right; color: #8492a6; font-size: 13px">{{
-                    item.role_name
-                  }}</span>
-                </el-option>
-              </el-select>
+            <el-form-item label="负责人" prop="accountDutyer" style="width: 100%">
+                  <search-account
+                  :size="searchSize"
+                  :code="accountNo"
+                  :placeholder="'请输入负责人'"
+                  :is-detail="true"
+                  :disabled="false"
+                  :names="accountNames"
+                  @change="accountChange"
+                />
             </el-form-item></el-col
           >
           <el-col :span="12">
@@ -127,7 +118,7 @@
           <el-col :span="12">
             <!-- 收发货地址 -->
             <el-form-item label="省/市/区" prop="linker_addr">
-              <AreaSelect @areaSelect="selectArea"></AreaSelect> </el-form-item
+              <select-area @areaSelect="selectArea"/> </el-form-item
           ></el-col>
           <el-col :span="12">
             <!-- 收发货详细地址 -->
@@ -163,18 +154,18 @@
                 clearable
                 style="width: 100%"
                 v-model="ruleForm.storeToCompany"
-                :options="ruleForm.selectStock_go_options"
+                :options="ruleForm.selectaccount_go_options"
                 @change="getValue"
               ></el-cascader>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="仓库名称" prop="stockName">
+            <el-form-item label="仓库名称" prop="accountName">
               <el-input
                 placeholder="请输入仓库名称"
                 filterable
                 clearable
-                v-model="ruleForm.stockName"
+                v-model="ruleForm.accountName"
                 @change="getValue1"
               >
               </el-input>
@@ -184,31 +175,31 @@
         <el-row>
           <el-col :span="12">
             <!-- 省/市/区选择组件 -->
-            <el-form-item label="省/市/区" prop="stockToArea">
+            <el-form-item label="省/市/区" prop="accountToArea">
               <select-area @areaSelect="areaSelect"></select-area>
             </el-form-item>
           </el-col>
           <el-col :span="12"
             ><!-- 仓库详细地址 -->
-            <el-form-item label="详细地址" prop="stockDetail">
+            <el-form-item label="详细地址" prop="accountDetail">
               <el-input
                 placeholder="请输入内容"
-                v-model="ruleForm.stockDetail"
+                v-model="ruleForm.accountDetail"
                 clearable
-                @change="stockDetail"
+                @change="accountDetail"
               >
               </el-input>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="负责人" prop="stockDutyer" style="width: 50%">
+        <el-form-item label="负责人" prop="accountDutyer" style="width: 50%">
           <el-select
             style="width: 100%"
-            v-model="ruleForm.stockDutyer"
+            v-model="ruleForm.accountDutyer"
             placeholder="请选择仓库负责人"
           >
             <el-option
-              v-for="item in ruleForm.stockDutyer_options"
+              v-for="item in ruleForm.accountDutyer_options"
               :key="item.id"
               :label="item.nickname"
               :value="item.id"
@@ -331,7 +322,9 @@ export default {
       }
     };
     return {
-      stockDutyer: "", //仓库负责人
+       stockNo: [""],
+      stockNames: "",
+      accountDutyer: "", //仓库负责人
       // addId: this.$route.query.id,
       addId: "",
       // route: this.$route,
@@ -348,18 +341,18 @@ export default {
       },
       ruleForm: {
         storeToCompany: "",
-        selectStock_go: "", //公司
-        stockName: "", //仓库名称
-        stockDutyer: "", //仓库负责人
+        selectaccount_go: "", //公司
+        accountName: "", //仓库名称
+        accountDutyer: "", //仓库负责人
         dutyer_mobile: "",
         linker: "", //收发货联系人
         linker_mobile: "", //收发货人联系电话
         linker_detail: "",
         // linker_addr: [], //收发货地址
-        // stockDutyer_options: [], //仓库负责人列表
-        // stockDetail: [], //仓库详细地址
-        // selectStock_go_options: [], //公司列表
-        // stockToArea: [],
+        // accountDutyer_options: [], //仓库负责人列表
+        // accountDetail: [], //仓库详细地址
+        // selectaccount_go_options: [], //公司列表
+        // accountToArea: [],
       }, //
       rulesThis: this.rules,
       rules: {
@@ -372,14 +365,14 @@ export default {
             // trigger: "change",
           },
         ],
-        stockName: [
+        accountName: [
           {
             required: true,
             message: "请输入仓库名称",
             trigger: "blur",
           },
         ],
-        stockDutyer: [
+        accountDutyer: [
           {
             // type: "array",
             required: true,
@@ -388,7 +381,7 @@ export default {
             trigger: "blur",
           },
         ],
-        stockToArea: [
+        accountToArea: [
           {
             type: "array",
             required: true,
@@ -396,7 +389,7 @@ export default {
             trigger: "change",
           },
         ],
-        stockDetail: [
+        accountDetail: [
           {
             required: true,
             message: "请选择仓库详细地址",
@@ -471,6 +464,9 @@ export default {
     this.initForm();
   },
   methods: {
+     stockChange(e) {
+      console.log(e);
+    },
     // 获取公司列表
     getCompanyName(val) {
       this.ruleForm.storeToCompany = val[1];
@@ -485,14 +481,14 @@ export default {
       this.parmValue.wsm_name = val;
     },
     // 仓库详细地址
-    stockDetail(val) {
+    accountDetail(val) {
       console.log(val);
       this.parmValue.addr = val;
     },
     //仓库地址选择
     areaSelect(val) {
       console.log(val);
-      this.ruleForm.stockToArea = val;
+      this.ruleForm.accountToArea = val;
       this.parmValue.addr = val;
     },
     // 收发货地址选择
@@ -517,7 +513,7 @@ export default {
     // 负责人
     getValue2(val) {
       console.log(val);
-      this.stockDutyer = val;
+      this.accountDutyer = val;
     },
     closeModel() {
       console.log("closeModel!!");
@@ -527,14 +523,14 @@ export default {
       // await this.getClist();
       // await this.getRole();
       this.ruleForm = {
-        stockName: "my-Stock", //仓库名称
-        stockDutyer: "", //仓库负责人
+        accountName: "my-account", //仓库名称
+        accountDutyer: "", //仓库负责人
         linker: "", //收发货联系人
 
         linker_mobile: "", //收发货人联系电话
         linker_addr: "", //收发货地址
-        selectStock_go_options: [],
-        stockDutyer_options: [],
+        selectaccount_go_options: [],
+        accountDutyer_options: [],
       };
       console.log(this.addId);
       if (this.addId === "add") {
@@ -601,15 +597,15 @@ export default {
           this.$refs.ruleForm.clearValidate();
           this.ruleForm = {
             dutyer_mobile: "18818818818",
-            stockDetail: "顺义区宏远888",
-            selectStock_go: "", //出库仓库
-            selectStock_go_options: [], //出库仓库列表
-            stockName: "my-STock", //仓库名称
+            accountDetail: "顺义区宏远888",
+            selectaccount_go: "", //出库仓库
+            selectaccount_go_options: [], //出库仓库列表
+            accountName: "my-account", //仓库名称
             linker: "张三",
             linker_mobile: "13223289230",
             linker_detail: "朝阳区太阳城666",
-            stockDutyer: "", //仓库负责人
-            stockDutyer_options: [], //仓库负责人列表
+            accountDutyer: "", //仓库负责人
+            accountDutyer_options: [], //仓库负责人列表
           };
           if (this.id === "add" || this.isDetail) {
             this.rules.username[0].required = false;
@@ -619,11 +615,11 @@ export default {
     },
     async submitForm(formName) {
       let paraValue = {
-        name: this.ruleForm.stockName,
+        name: this.ruleForm.accountName,
         supplierNo: this.ruleForm.storeToCompany,
         wsmtype: "1", //仓库类型
-        addr: this.ruleForm.stockDetail, //仓库地址
-        contactor: this.stockDutyer, //仓库联系人职位
+        addr: this.ruleForm.accountDetail, //仓库地址
+        contactor: this.accountDutyer, //仓库联系人职位
         mobile: this.ruleForm.dutyer_mobile, //仓库联系人
         position: "采购",
         // wsm_type:"",后台暂时不用
@@ -636,9 +632,9 @@ export default {
         },
         wsm_addr: this.ruleForm.linker_detail,
         addrs_code: {
-          // provice_code: this.ruleForm.stockToArea[0],
-          // city_code: this.ruleForm.stockToArea[1],
-          // area_code: this.ruleForm.stockToArea[2],
+          // provice_code: this.ruleForm.accountToArea[0],
+          // city_code: this.ruleForm.accountToArea[1],
+          // area_code: this.ruleForm.accountToArea[2],
         },
       };
       console.log(paraValue);
@@ -677,16 +673,16 @@ export default {
       const res = await asyncRequest.getlist(obj);
       if (res && res.code === 0 && res.data) {
         const { list } = res.data;
-        this.ruleForm.stockDutyer_options = list;
-        console.log(this.ruleForm.stockDutyer_options);
+        this.ruleForm.accountDutyer_options = list;
+        console.log(this.ruleForm.accountDutyer_options);
         // console.log(res.data.list);
         // res.data.list.forEach((element) => {
         //   // let dutyer = {
         //   //   label: element.nickname,
         //   //   value: element.depart[0] ? element.depart[0].name : "",
         //   // };
-        //   // console.log(this.ruleForm.stockDutyer_options);
-        //   this.ruleForm.stockDutyer_options.push(element);
+        //   // console.log(this.ruleForm.accountDutyer_options);
+        //   this.ruleForm.accountDutyer_options.push(element);
         // });
       } else if (res && res.code >= 100 && res.code <= 104) {
         await this.logout();
@@ -710,11 +706,11 @@ export default {
             label: element.name,
             value: element.code,
           };
-          // console.log(this.ruleForm.selectStock_go_options);
-          this.ruleForm.selectStock_go_options.push(company);
-          // this.ruleForm.stockDutyer_options.push(dutyer);
+          // console.log(this.ruleForm.selectaccount_go_options);
+          this.ruleForm.selectaccount_go_options.push(company);
+          // this.ruleForm.accountDutyer_options.push(dutyer);
         });
-        // console.log(this.ruleForm.selectStock_go_options);
+        // console.log(this.ruleForm.selectaccount_go_options);
         // this.tableData = res.data.list;
         // this.pageInfo.total = Number(res.data.count);
       } else if (res && res.code >= 100 && res.code <= 104) {
@@ -727,10 +723,10 @@ export default {
       this.loading = false;
     },
     // 新建仓库
-    async addStock() {
+    async addaccount() {
       this.loading = true;
       console.log(this.parmValue);
-      const res = await asyncRequest.addStock(this.parmValue);
+      const res = await asyncRequest.addaccount(this.parmValue);
       if (res && res.code === 0 && res.data) {
         console.log(res.data.list);
         res.data.list.forEach((element) => {
@@ -739,10 +735,10 @@ export default {
             label: element.name,
             value: element.code,
           };
-          this.ruleForm.selectStock_go_options.push(company);
-          // this.ruleForm.stockDutyer_options.push(dutyer);
+          this.ruleForm.selectaccount_go_options.push(company);
+          // this.ruleForm.accountDutyer_options.push(dutyer);
         });
-        console.log(this.ruleForm.selectStock_go_options);
+        console.log(this.ruleForm.selectaccount_go_options);
         // this.tableData = res.data.list;
         // this.pageInfo.total = Number(res.data.count);
       } else if (res && res.code >= 100 && res.code <= 104) {
@@ -766,10 +762,10 @@ export default {
             label: element.name,
             value: element.code,
           };
-          this.ruleForm.selectStock_go_options.push(company);
-          // this.ruleForm.stockDutyer_options.push(dutyer);
+          this.ruleForm.selectaccount_go_options.push(company);
+          // this.ruleForm.accountDutyer_options.push(dutyer);
         });
-        console.log(this.ruleForm.selectStock_go_options);
+        console.log(this.ruleForm.selectaccount_go_options);
         // this.tableData = res.data.list;
         // this.pageInfo.total = Number(res.data.count);
       } else if (res && res.code >= 100 && res.code <= 104) {

+ 1 - 1
src/views/purchaseIn/storeSet/index.vue

@@ -52,7 +52,7 @@
               </el-col>
 
                   <el-col :span="18" style="width: 303px; padding: 0 0 0 10px">
-                <search-stock
+                <search-account
                   :size="searchSize"
                   :code="stockNo"
                   :placeholder="'仓库名称'"