소스 검색

选中经销商

howie 3 년 전
부모
커밋
357c0972a3
2개의 변경된 파일573개의 추가작업 그리고 132개의 파일을 삭제
  1. 566 128
      src/views/sales_policy/components/TabelTransfer.vue
  2. 7 4
      src/views/sales_policy/components/editPolicy.vue

+ 566 - 128
src/views/sales_policy/components/TabelTransfer.vue

@@ -1,151 +1,589 @@
-<template v-else>
-  <el-row :gutter="20">
-    <el-col :span="10" :offset="0">
-      <h5>未选经销商</h5>
-      <el-divider
-        direction="horizontal"
-        content-position="left"
-      />
+<template>
+  <div>
 
-      <el-table
-        ref="multipleTable"
-        :data="dataL"
-        element-loading-text="Loading"
-        border
-        height="480px"
-        fit
-        highlight-current-row
-        @select-all="handleSelectionAllChange"
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column
-          type="selection"
-          width="55"
-          :selectable="selectable"
-          align="center"
+    <el-row :gutter="20">
+      <el-col :span="10" :offset="0">
+        <h5>未选经销商</h5>
+        <el-divider
+          direction="horizontal"
+          content-position="left"
         />
-        <el-table-column
-          prop="number"
-          label="经销商编码"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="经销商名称"
-          align="center"
-        />
-      </el-table>
-      <!-- 分页 -->
-      <div style="margin: 20px 0">
-        <el-pagination
-          :current-page="currentPages"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="clistTotal"
-          @size-change="handleSizeChanges"
-          @current-change="handleCurrentChanges"
-        />
-      </div>
-    </el-col>
-    <el-col :span="4" class="middle_box" :offset="0">
-      <el-col>
-        <el-button
-          size="small"
-          :disabled="type == 2"
-          @click="handleAllAdd"
-        >全部添加</el-button></el-col>
-      <el-col>
-        <el-button
-          size="small"
-          :disabled="type == 2"
-          @click="handleAdd"
-        >增加</el-button></el-col>
-      <el-col>
-        <el-button
-          size="small"
-          :disabled="type == 1"
-          @click="handleDelete"
-        >删除</el-button></el-col>
-      <el-col>
-        <el-button
-          size="small"
-          :disabled="type == 1"
-          @click="handleAllDelete"
-        >全部删除</el-button></el-col>
-    </el-col>
-    <el-col :span="10" :offset="0">
-      <h5>已选经销商</h5>
-      <el-divider
-        direction="horizontal"
-        content-position="left"
-      />
 
-      <el-table
-        v-loading="listLoading"
-        :data="custoList"
-        element-loading-text="Loading"
-        border
-        height="480px"
-        fit
-        highlight-current-row
-        stripe
-        @select-all="handleSelectionAllChange2"
-        @selection-change="handleSelectionChange2"
-      >
-        <el-table-column type="selection" width="55" align="center" />
-        <el-table-column
-          prop="customerNumber"
-          label="经销商编码"
-          align="center"
-        />
-        <el-table-column
-          prop="customerName"
-          label="经销商名称"
-          align="center"
+        <el-table
+          ref="multipleTable"
+          :data="dataL"
+          element-loading-text="Loading"
+          border
+          height="480px"
+          fit
+          highlight-current-row
+          @select-all="handleSelectionAllChange"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column
+            type="selection"
+            width="55"
+            :selectable="selectable"
+            align="center"
+          />
+          <el-table-column
+            prop="number"
+            label="经销商编码"
+            align="center"
+          />
+          <el-table-column
+            prop="name"
+            label="经销商名称"
+            align="center"
+          />
+        </el-table>
+        <!-- 分页 -->
+        <div style="margin: 20px 0">
+          <el-pagination
+            :current-page="currentPages"
+            :page-sizes="[10, 20, 30, 50]"
+            :page-size="10"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="clistTotal"
+            @size-change="handleSizeChanges"
+            @current-change="handleCurrentChanges"
+          />
+        </div>
+      </el-col>
+      <el-col :span="4" class="middle_box" :offset="0">
+        <el-col>
+          <el-button
+            size="small"
+            :disabled="type == 2"
+            @click="handleAllAdd"
+          >全部添加</el-button></el-col>
+        <el-col>
+          <el-button
+            size="small"
+            :disabled="type == 2"
+            @click="handleAdd"
+          >增加</el-button></el-col>
+        <el-col>
+          <el-button
+            size="small"
+            :disabled="type == 1"
+            @click="handleDelete"
+          >删除</el-button></el-col>
+        <el-col>
+          <el-button
+            size="small"
+            :disabled="type == 1"
+            @click="handleAllDelete"
+          >全部删除</el-button></el-col>
+      </el-col>
+      <el-col :span="10" :offset="0">
+        <h5>已选经销商</h5>
+        <el-divider
+          direction="horizontal"
+          content-position="left"
         />
-      </el-table>
-      <!-- 分页 -->
-      <!-- <div style="margin: 20px 0">
-        <el-pagination
-          @size-change="handleSizeChanges"
-          @current-change="handleCurrentChanges"
-          :current-page="currentPages"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="clistTotals"
+
+        <el-table
+          v-loading="listLoading"
+          :data="custoList"
+          element-loading-text="Loading"
+          border
+          height="480px"
+          fit
+          highlight-current-row
+          stripe
+          @select-all="handleSelectionAllChange2"
+          @selection-change="handleSelectionChange2"
         >
-        </el-pagination>
-      </div> -->
-    </el-col>
-  </el-row>
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column
+            prop="customerNumber"
+            label="经销商编码"
+            align="center"
+          />
+          <el-table-column
+            prop="customerName"
+            label="经销商名称"
+            align="center"
+          />
+        </el-table>
+      </el-col>
+    </el-row>
+    <div>
+      <el-button
+        v-if="$parent.isShow == 5"
+        type="primary"
+        size="default"
+        @click="handleSave"
+      >保存</el-button>
+    </div>
+
+  </div>
 </template>
+
 <script>
+import {
+  deleteCondition,
+  deleteMaterialPolicy,
+  getConditionList,
+  getCrList,
+  getCustomerList,
+  getMaterialList,
+  getPolicyDetail,
+  toExamine,
+  updatePolicy
+} from '@/api/policy_list'
+import EditCondition from './EditCondition'
+import ImageUpload from '@/components/Common/image-upload.vue'
+
+import { handleImport } from '@/utils/util'
+
 import Minxin from '@/mixin'
 
 export default {
-  mixins: [Minxin],
-  props: {
-    conditList: {
-      type: Array,
-      default: [],
-    },
+  name: 'Examine',
+  components: {
+    EditCondition,
+    ImageUpload
   },
+  mixins: [Minxin],
   data() {
     return {
-
-    };
+      baseURL: '',
+      dcurrentPage: 1,
+      dpageSize: 10,
+      dlistTotal: 0,
+      currentPages: 1, // 当前页码
+      pageSizes: 10, // 每页数量
+      clistTotal: 0,
+      input: '',
+      remark: '',
+      fileList: [],
+      listLoading: false,
+      imageUrl: '',
+      dataList: [],
+      examineStatus: 'OK',
+      options: {},
+      value: '',
+      detail: {},
+      srcList: [],
+      screenForm: {
+        code: '',
+        createBy: '',
+        endCreateTime: '',
+        endTime1: '',
+        endTime2: '',
+        examineBy: '',
+        remark: '',
+        startCreateTime: '',
+        startTime1: '',
+        startTime2: '',
+        status: '',
+        title: '',
+        type: ''
+      },
+      conditionList: [],
+      custoList: [],
+      isEdit: 1,
+      cid: '',
+      cpolicyId: '',
+      dataL: [],
+      clistTotal: 0,
+      clistTotals: 0,
+      type: 1,
+      fileList: [],
+      importFileList: [],
+      leftData: [],
+      rightData: [],
+      typeOptions: [
+        {
+          value: 'PROVISION',
+          label: '配提'
+        },
+        {
+          value: 'LIMIT',
+          label: '限量'
+        }
+      ]
+    }
   },
-
+  computed: {
+    comTitle() {
+      let title = '详情页'
+      if (this.$parent.isShow == 5) {
+        title = '编辑页'
+      } else if (this.$parent.isShow == 8) {
+        title = '审核页'
+      } else {
+        title = '详情页'
+      }
+      return title
+    }
+  },
+  created() {},
   methods: {
+    getList() {
+      this.listLoading = true
+      getPolicyDetail({ policyId: this.$parent.id }).then((res) => {
+        this.detail = res.data
+        this.srcList = [this.$imageUrl + this.detail.imgSrc]
+        if (this.$parent.isShow == 5 && this.detail.imgSrc) {
+          this.fileList = [
+            {
+              hover: '',
+              url: this.detail.imgSrc
+            }
+          ]
+        }
+        this.handletwoList()
+        // 获取条件政策
+        this.getConditionList()
+        this.getCond()
+      })
+    },
 
+    getCrList() {
+      const customerParams = {
+        pageNum: this.currentPage,
+        pageSize: this.pageSize,
+        keyword: this.region == 1 || this.region == '' ? '' : this.keyword,
+        region: this.region == 1 ? this.keyword : ''
+      }
+      // 获取经销商列表
+      getCrList(customerParams).then((res) => {
+        for (let j = 0; j < this.custoList.length; j++) {
+          for (let i = 0; i < res.data.records.length; i++) {
+            if (res.data.records[i].id == this.custoList[j].customerId) {
+              res.data.records[i].disabled = true
+            }
+          }
+        }
+        this.dataL = res.data.records
+        for (let k = 0; k < this.dataL.length; k++) {
+          (this.dataL[k].customerId = this.dataL[k].id),
+          (this.dataL[k].customerName = this.dataL[k].name),
+          (this.dataL[k].customerNumber = this.dataL[k].number)
+        }
 
-  }
+        console.log(this.dataL, '获取经销商列表')
+        this.clistTotal = res.data.total
+      })
+    },
+    // 更改每页数量
+    handleSizeChanges(val) {
+      this.pageSizes = val
+      this.currentPages = 1
+      this.getCond()
+    },
+    // 更改当前页
+    handleCurrentChanges(val) {
+      this.currentPages = val
+      this.getCond()
+    },
+    // 更改每页数量
+    handleSizeChange2(val) {
+      this.dpageSize = val
+      this.dcurrentPage = 1
+      this.handletwoList()
+    },
+    // 更改当前页
+    handleCurrentChange2(val) {
+      this.dcurrentPage = val
+      this.handletwoList()
+    },
+    getCommonApi(row) {
+      (this.isEdit = 2), (this.cid = row.id), (this.cpolicyId = row.policyId)
+      console.log(
+        this.cpolicyId,
+        this.detail.code,
+        this.cpolicyId == this.detail.code
+      )
+    },
+    getCond() {
+      this.listLoading = true
+      const custoParams = {
+        pageNum: this.currentPages,
+        pageSize: this.pageSizes,
+        policyId: this.detail.code
+      }
+      getCustomerList(custoParams).then((res) => {
+        this.custoList = res.data.records
+        this.clistTotals = res.data.total
+        this.listLoading = false
+        this.getCrList()
+      })
+    },
+    handleSubmit() {
+      toExamine({
+        examineStatus: this.examineStatus,
+        policyId: this.$parent.id,
+        examineRemark: this.remark
+      }).then((res) => {
+        this.$successMsg('已提交审核')
+        this.$parent.isShow = 1
+        this.$parent.getList()
+      })
+    },
+    // 获取货品信息
+    handletwoList() {
+      // this.searchForm.type
+      const paramss = {
+        pageNum: this.dcurrentPage,
+        pageSize: this.dpageSize,
+        policyId: this.detail.code,
+        saleTypeCode: ''
+      }
+      getMaterialList(paramss)
+        .then((result) => {
+          this.dataList = result.data.records
+          this.dlistTotal = result.data.total
+          this.listLoading = false
+        })
+        .catch((err) => {
+          console.error(err)
+        })
+    },
+    // 导入
+    async handleImport(param) {
+      this.importLoading = true
+      const file = param.file
+      console.log(file, 123)
+      const formData = new FormData()
+      formData.append('file', file)
+      formData.append('policyId', this.detail.code)
+      // formData.append("mainId", this.detail.mainId);
+      const result = await handleImport('/policy/material/import', formData)
+      this.importLoading = false
+      this.importFileList = []
+      if (result.code == 200) {
+        this.$alert(result.message, '导入成功', {
+          confirmButtonText: '确定'
+        })
+
+        this.handletwoList()
+      } else {
+        this.$alert(result.message, '导入失败', {
+          confirmButtonText: '确定'
+        })
+      }
+    },
+    handleCondition(id, index) {
+      deleteCondition({ id }).then((res) => {
+        // this.conditionList.splice(index, 1);
+        // Object.assign(
+        //   this.$children[9].$data,
+        //   this.$children[9].$options.data()
+        // );
+        this.getConditionList()
+        this.$successMsg('删除成功')
+      })
+    },
+    getConditionList() {
+      const condParams = {
+        policyId: this.detail.code
+      }
+      getConditionList(condParams).then((res) => {
+        this.conditionList = res.data
+      })
+    },
+    // 删除
+    hanleDelete(id) {
+      const params = { policyMaterialId: id }
+      deleteMaterialPolicy(params).then((res) => {
+        this.$successMsg('删除成功')
+        this.handletwoList()
+      })
+    },
+    /**
+     * 根据条件禁用行复选框
+     * 函数返回值为false则禁用选择(反之亦然)
+     * @param {Object} row - 行数据
+     * @param {String} index - 索引值
+     * @return Boolean
+     */
+    selectable: function(row, index) {
+      // row.disabled == undefined 才能被选中
+      if (row.disabled == undefined || row.disabled == false) {
+        return true
+      } else {
+        return false
+      }
+      // 函数必须有返回值且是布尔值
+      // 页面刷新后该函数会执行 N 次进行判断(N 为表格行数)
+      // 如果没有返回值则默认返回false(全部无法选中)
+    },
+    handleSelectionAllChange(e) {
+      this.leftData = e
+      this.type = 1
+    },
+    handleSelectionChange(e) {
+      this.leftData = e
+      this.type = 1
+    },
+    handleSelectionAllChange2(e) {
+      this.rightData = e
+      this.type = 2
+    },
+    handleSelectionChange2(e) {
+      this.rightData = e
+      this.type = 2
+    },
+    handleLeft(e) {
+      this.type = 1
+    },
+    handleRight(e) {
+      this.type = 2
+    },
+    handleAllAdd() {
+      if (this.type == 1 && this.leftData.length) {
+        for (let i = 0; i < this.dataL.length; i++) {
+          for (let j = 0; j < this.leftData.length; j++) {
+            if (this.dataL[i].id == this.leftData[j].id) {
+              this.dataL[i].disabled = true
+            }
+          }
+        }
+        this.custoList = [...this.custoList, ...this.leftData]
+        this.$refs.multipleTable.clearSelection()
+      } else {
+        this.$errorMsg('请选择要添加的经销商')
+      }
+    },
+    handleAllDelete() {
+      if (this.type == 2 && this.rightData.length) {
+        for (let i = 0; i < this.dataL.length; i++) {
+          for (let j = 0; j < this.rightData.length; j++) {
+            if (this.dataL[i].id == this.rightData[j].customerId) {
+              this.$set(this.dataL[i], 'disabled', false)
+            }
+          }
+        }
+        const arr = this.resArr(this.custoList, this.rightData)
+        this.custoList = arr
+      } else {
+        this.$errorMsg('请选择要删除的经销商')
+      }
+    },
+    handleAdd() {
+      if (this.type == 1 && this.leftData.length) {
+        for (let i = 0; i < this.dataL.length; i++) {
+          for (let j = 0; j < this.leftData.length; j++) {
+            if (this.dataL[i].id == this.leftData[j].id) {
+              this.dataL[i].disabled = true
+            }
+          }
+        }
+        this.custoList = [...this.custoList, ...this.leftData]
+        this.leftData = []
+        this.$refs.multipleTable.clearSelection()
+      } else {
+        this.$errorMsg('请选择要添加的经销商')
+      }
+    },
+    handleDelete() {
+      if (this.type == 2 && this.rightData.length) {
+        for (let i = 0; i < this.dataL.length; i++) {
+          for (let j = 0; j < this.rightData.length; j++) {
+            if (this.dataL[i].id == this.rightData[j].customerId) {
+              this.$set(this.dataL[i], 'disabled', false)
+            }
+          }
+        }
+        const arr = this.resArr(this.custoList, this.rightData)
+        this.custoList = arr
+      } else {
+        this.$errorMsg('请选择要删除的经销商')
+      }
+    },
+    // 去掉相同数据
+    resArr(arr1, arr2) {
+      return arr1.filter((v) => arr2.every((val) => val.id != v.id))
+    },
+    async handleSave() {
+      if (this.custoList.length) {
+        var arr = []
+        this.custoList.forEach((el) => {
+          arr.push({
+            customerId: el.customerId,
+            customerName: el.customerName,
+            customerNumber: el.customerNumber,
+            lastOrderTime: '',
+            limitTakeNum: 0,
+            policyId: this.detail.code,
+            policyTitle: '',
+            remark: ''
+          })
+        })
 
-};
+        const params = {
+          ...this.detail,
+          policyCustomers: arr,
+          imgSrc: this.fileList.length ? this.fileList[0].url : ''
+        }
+        await updatePolicy(params)
+        await this.getCond()
+        this.$successMsg('编辑成功')
+        this.fileList = []
+        this.$parent.isShow = 1
+      }
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
+.el-col {
+  overflow: hidden;
+}
+.value{
+  ::v-deep .el-input__prefix{
+    display: none;
+  }
+}
+.descriptions {
+  // border: #EBEEF5;
+  border: 1px solid #ebeef5;
+  border-bottom: none;
+  .el-row {
+    height: 40px;
+    line-height: 40px;
+  }
+  .el-col:nth-child(odd) {
+    background-color: #ebeef5;
+  }
+  .el-col {
+    padding: 0 15px;
+    height: 100%;
+    border-bottom: 1px solid #ebeef5;
+  }
+}
+.el-divider--horizontal {
+  margin: 20px 0;
+}
+.col {
+  height: 100px;
+}
 
+.import-btn {
+  margin-right: 10px;
+  display: inline-block;
+}
+::v-deep .el-input__icon .el-icon-time{
+  display: none;
+}
+.middle_box {
+  margin-top: 80px;
+  text-align: center;
+  height: 430px;
+  display: flex;
+  flex-direction: column;
+  align-content: center;
+  justify-content: space-between;
+  align-items: center;
+}
+.img-box {
+  height: 150px;
+  display: flex;
+  align-items: center;
+}
 </style>

+ 7 - 4
src/views/sales_policy/components/editPolicy.vue

@@ -405,7 +405,8 @@
             </el-row>
             <el-divider />
           </el-row>
-          <Transfer @handleAddPolicy="handleAddPolicy" @handleReset="handleReset" />
+<!--          <TabelTransfer />-->
+<!--          <Transfer @handleAddPolicy="handleAddPolicy" @handleReset="handleReset" />-->
         </div>
       </div>
     </div>
@@ -433,7 +434,8 @@ import {
   updateCondition
 } from '@/api/policy_list'
 import { downloadFiles, handleImport } from '@/utils/util'
-import Transfer from './Transfer'
+// import Transfer from './Transfer'
+import TabelTransfer from './TabelTransfer'
 import AddCondition from './AddCondition'
 import ImageUpload from '@/components/Common/image-upload.vue'
 
@@ -848,7 +850,7 @@ export default {
         })
         return
       }
-      
+
       this.dataList.splice(index, 1)
       if (!this.dataList.length) {
         this.dcurrentPage !== 1 ? this.dcurrentPage -= 1 : this.dcurrentPage = 1
@@ -928,7 +930,8 @@ export default {
   components: {
     Transfer,
     AddCondition,
-    ImageUpload
+    ImageUpload,
+    TabelTransfer
   }
 }
 </script>