瀏覽代碼

提交代码

wangxingcheng 3 年之前
父節點
當前提交
7a8254791f

+ 1 - 5
.env

@@ -1,15 +1,11 @@
 VUE_GITHUB_USER_NAME=test
 VUE_APP_SECRET_KEY=preview
-<<<<<<< HEAD
-
 # 租户码
 VUE_APP_TENANT=default
 # 登录验证微服务名称
 VUE_APP_AdminPath  = dashoo.opms.admin-0.0.1
 VUE_APP_ParentPath = dashoo.opms.parent-0.0.1
 VUE_APP_MicroSrvProxy_API=http://127.0.0.1:9981/
-
 SSO_LOGIN=''
 SSO_HREF=''
-=======
->>>>>>> 79902962fc8f9a0757d8421b8bb14b9cb61e513b
+

+ 32 - 0
src/api/base/distr/distr.js

@@ -0,0 +1,32 @@
+import micro_request from '@/utils/micro_request'
+const basePath = process.env.VUE_APP_ParentPath
+console.log(basePath)
+export default {
+  login(query) {
+    return micro_request.postRequest(basePath, 'Auth', 'Login', query)
+  },
+  logout(query) {
+    return micro_request.postRequest(basePath, 'Auth', 'LogOut', query)
+  },
+  // 获取列表
+  getList(query) {
+    return micro_request.postRequest(basePath, 'Distributor', 'GetList', query)
+  },
+  //区域列表
+  getTree(query) {
+    return micro_request.postRequest(basePath, 'District', 'GetList', query)
+  },
+  //省市区列表
+  getProvinceInfo(query) {
+    return micro_request.postRequest(
+      basePath,
+      'District',
+      'GetProvinceInfo',
+      query
+    )
+  },
+  //创建经销商
+  doAdd(query) {
+    return micro_request.postRequest(basePath, 'Distributor', 'Create', query)
+  },
+}

+ 30 - 0
src/api/base/region/region.js

@@ -0,0 +1,30 @@
+import micro_request from '@/utils/micro_request'
+const basePath = process.env.VUE_APP_ParentPath
+console.log(basePath)
+export default {
+  login(query) {
+    return micro_request.postRequest(basePath, 'Auth', 'Login', query)
+  },
+  logout(query) {
+    return micro_request.postRequest(basePath, 'Auth', 'LogOut', query)
+  },
+  // 获取列表
+  getList(query) {
+    return micro_request.postRequest(basePath, 'Region', 'GetList', query)
+  },
+  doAdd(query) {
+    return micro_request.postRequest(basePath, 'Region', 'Create', query) //创建区域
+  },
+  doEdit(query) {
+    return micro_request.postRequest(basePath, 'Region', 'UpdateById', query)
+  },
+  doDelete(query) {
+    return micro_request.postRequest(basePath, 'Region', 'DeleteByIds', query) // 删除
+  },
+  doCreate(query) {
+    return micro_request.postRequest(basePath, 'Region', 'CreateRegion', query) //创建销售区域
+  },
+  getRegion(query) {
+    return micro_request.postRequest(basePath, 'Region', 'GetRegion', query)
+  },
+}

+ 38 - 9
src/api/distr.js

@@ -12,13 +12,42 @@ export default {
   getList(query) {
     return micro_request.postRequest(basePath, 'Distributor', 'GetList', query)
   },
-  // doAdd(query) {
-  //     return micro_request.postRequest(basePath, 'Product', 'Create', query)
-  // },
-  // doEdit(query) {
-  //     return micro_request.postRequest(basePath, 'Product', 'UpdateById', query)
-  // },
-  // doDelete(query) {
-  //     return micro_request.postRequest(basePath, 'Product', 'DeleteByIds', query)
-  // },
+  getTree(query) {
+    return micro_request.postRequest(
+      basePath,
+      'District',
+      'GetRegionList',
+      query
+    )
+  },
+  getProvinceInfo(query) {
+    return micro_request.postRequest(
+      basePath,
+      'District',
+      'GetProvinceInfo',
+      query
+    )
+  },
+  //创建经销商
+  doAdd(query) {
+    return micro_request.postRequest(basePath, 'Distributor', 'Create', query)
+  },
+  //修改经销商
+  doEdit(query) {
+    return micro_request.postRequest(
+      basePath,
+      'Distributor',
+      'UpdateById',
+      query
+    )
+  },
+  // 删除
+  doDelete(query) {
+    return micro_request.postRequest(
+      basePath,
+      'Distributor',
+      'DeleteByIds',
+      query
+    )
+  },
 }

+ 4 - 1
src/api/product.js

@@ -10,7 +10,7 @@ export default {
   },
   // 获取列表
   getList(query) {
-    return micro_request.postRequest(basePath, 'Product', 'GetList', query)
+    return micro_request.postRequest(basePath, 'Customer', 'DeriveList', query)
   },
   doAdd(query) {
     return micro_request.postRequest(basePath, 'Product', 'Create', query)
@@ -21,4 +21,7 @@ export default {
   doDelete(query) {
     return micro_request.postRequest(basePath, 'Product', 'DeleteByIds', query)
   },
+  doDerive(query) {
+    return micro_request.postRequest(basePath, 'Customer', 'DeriveList', query)
+  },
 }

+ 1 - 1
src/api/system/dept.js

@@ -1,6 +1,6 @@
 import micro_request from '@/utils/micro_request'
 
-const basePath = process.env.VUE_APP_ParentPath
+const basePath = process.env.VUE_APP_AdminPath
 export default {
   // 获取列表
   getList(query) {

+ 156 - 0
src/views/base/distributor/components/DistrEdit.vue

@@ -0,0 +1,156 @@
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="dialogFormVisible"
+    width="500px"
+    @close="close">
+    <el-form ref="form" label-width="80px" :model="form" :rules="dist">
+      <el-form-item label="名称" prop="distName">
+        <el-input v-model.trim="form.distName" />
+      </el-form-item>
+      <el-form-item label="助记名" prop="abbrName">
+        <el-input v-model.trim="form.abbrName" />
+      </el-form-item>
+      <el-form-item label="说明" prop="distDesc">
+        <el-input v-model.trim="form.distDesc" />
+      </el-form-item>
+      <el-form-item label="负责人" prop="distBoss">
+        <el-input v-model.trim="form.distBoss" />
+      </el-form-item>
+      <el-form-item label="电话" prop="distBossPhone">
+        <el-input v-model.trim="form.distBossPhone" />
+      </el-form-item>
+      <el-form-item label="选择省份" prop="provinceDesc">
+        <el-select
+          ref="optionRef"
+          v-model="form.provinceDesc"
+          placeholder="请选择"
+          @change="selectDistrict">
+          <el-option
+            v-for="item in district"
+            :key="item.id"
+            :label="item.distName"
+            :value="item.id" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="省份" prop="provinceId" style="display: none">
+        <el-input v-model.trim="form.provinceId" />
+      </el-form-item>
+      <el-form-item label="销售人员" prop="belongSale">
+        <el-input v-model.trim="form.belongSale" />
+      </el-form-item>
+      <el-form-item label="业务范围" prop="businessScope">
+        <el-input v-model.trim="form.businessScope" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="save">确 定</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+  import distrApi from '@/api/distr'
+  import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+  export default {
+    name: 'UserEdit',
+    data() {
+      return {
+        form: {
+          dist: [],
+        },
+        dist: {
+          distName: [
+            { required: true, trigger: 'blur', message: '请输入名称' },
+          ],
+          distBoss: [
+            { required: true, trigger: 'blur', message: '请输入负责人' },
+          ],
+          distBossPhone: [
+            {
+              pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+              message: '请输入正确的手机号码',
+              trigger: 'blur',
+              required: true,
+            },
+          ],
+          businessScope: [
+            { required: true, trigger: 'blur', message: '请填写业务范围' },
+          ],
+          provinceDesc: [
+            { required: true, trigger: 'blur', message: '请选择省份' },
+          ],
+          belongSale: [
+            { required: true, trigger: 'blur', message: '请填写归属销售' },
+          ],
+        },
+        //省份
+        district: [],
+        title: '',
+        dialogFormVisible: false,
+      }
+    },
+    created() {
+      //省份
+      this.getProvinceInfo()
+    },
+    methods: {
+      showEdit(row) {
+        if (!row) {
+          this.title = '新建'
+        } else {
+          this.title = '编辑'
+
+          this.form = Object.assign({}, row)
+          console.log('回显', this.form)
+          //  this.pid = this.form.provinceId
+          // this.form.provinceId = this.form.provinceDesc
+        }
+        this.dialogFormVisible = true
+      },
+      close() {
+        this.$refs['form'].resetFields()
+        this.form = this.$options.data().form
+        this.dialogFormVisible = false
+      },
+      async getProvinceInfo() {
+        const { data: data } = await distrApi.getProvinceInfo({})
+        console.log('区域', data.list)
+        this.district = data.list
+      },
+      selectDistrict(id) {
+        let obj = {}
+        obj = this.district.find((item) => {
+          return item.id === id //筛选出匹配数据
+        })
+        console.log('省份名称', obj.distName)
+        this.provinceDesc = obj.distName
+        this.form.provinceId = obj.id
+        this.form.provinceDesc = obj.distName
+      },
+      save() {
+        this.$refs['form'].validate(async (valid) => {
+          if (valid) {
+            if (this.form.id) {
+              console.log(this.form)
+              this.form.distBossPhone = this.form.distBossPhone.toString()
+
+              this.form.provinceId = parseInt(this.form.provinceId)
+
+              console.log('表单修改提交内容:', this.form)
+              const { msg } = await distrApi.doEdit(this.form)
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            } else {
+              console.log('表单提交内容:', this.form)
+              const { msg } = await distrApi.doAdd(this.form)
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            }
+            this.$emit('fetch-data')
+            this.close()
+          }
+        })
+      },
+    },
+  }
+</script>

+ 295 - 0
src/views/base/distributor/index.vue

@@ -0,0 +1,295 @@
+<template>
+  <div class="user-management-container">
+    <el-row :gutter="20">
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <span style="font-size: 25px">所属区域</span>
+        </div>
+        <div class="head-container">
+          <el-tree
+            ref="tree"
+            :data="deptOptions"
+            default-expand
+            :default-expand-all="false"
+            :expand-on-click-node="true"
+            :filter-node-method="filterNode"
+            highlight-current
+            :props="defaultProps"
+            @node-click="handleNodeClick" />
+        </div>
+      </el-col>
+
+      <el-col :span="20" :xs="24">
+        <vab-query-form>
+          <vab-query-form-left-panel :span="15">
+            <el-form :inline="true" :model="queryForm" @submit.native.prevent>
+              <el-form-item>
+                <el-input
+                  v-model.trim="queryForm.distCode"
+                  clearable
+                  placeholder="经销商编码" />
+              </el-form-item>
+              &nbsp;
+              <el-form-item>
+                <el-input
+                  v-model.trim="queryForm.distName"
+                  clearable
+                  placeholder="经销商名称" />
+              </el-form-item>
+              &nbsp;
+              <el-form-item>
+                <el-input
+                  v-model.trim="queryForm.belongSale"
+                  clearable
+                  placeholder="所属销售" />
+              </el-form-item>
+              <el-form-item>
+                <el-button
+                  icon="el-icon-search"
+                  type="primary"
+                  @click="queryData">
+                  查询
+                </el-button>
+              </el-form-item>
+            </el-form>
+            <vab-query-form-left-panel :span="2">
+              <el-button
+                icon="el-icon-plus"
+                type="primary"
+                @click="handleEdit($event)">
+                新建
+              </el-button>
+            </vab-query-form-left-panel>
+          </vab-query-form-left-panel>
+        </vab-query-form>
+
+        <el-table
+          v-loading="listLoading"
+          border
+          :data="list"
+          :height="height"
+          @selection-change="setSelectRows">
+          <el-table-column
+            align="center"
+            show-overflow-tooltip
+            type="selection" />
+          <el-table-column
+            align="center"
+            label="经销商编码"
+            prop="distCode"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="经销商名称"
+            prop="distName"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="助记名"
+            prop="abbrName"
+            show-overflow-tooltip />
+          <!-- <el-table-column
+        align="center"
+        label="省级ID"
+        prop="parentId"
+        show-overflow-tooltip /> -->
+          <el-table-column
+            align="center"
+            label="所在省份"
+            prop="provinceDesc"
+            show-overflow-tooltip />
+          <!-- <template #default="{ row }">
+        {{ row.District.distName  }}
+      </template>
+      </el-table-column> -->
+          <el-table-column
+            align="center"
+            label="归属销售"
+            prop="belongSale"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="业务范围"
+            prop="businessScope"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="负责人"
+            prop="distBoss"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="负责人电话"
+            prop="distBossPhone"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="创建人"
+            prop="createdName"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="创建时间"
+            prop="createdTime"
+            show-overflow-tooltip />
+
+          <el-table-column
+            align="center"
+            label="操作"
+            show-overflow-tooltip
+            width="85">
+            <template #default="{ row }">
+              <el-button type="text" @click="handleEdit(row)">编辑</el-button>
+              <el-button type="text" @click="handleDelete(row)">删除</el-button>
+            </template>
+          </el-table-column>
+          <template #empty>
+            <el-image
+              class="vab-data-empty"
+              :src="require('@/assets/empty_images/data_empty.png')" />
+          </template>
+        </el-table>
+        <el-pagination
+          background
+          :current-page="queryForm.pageNum"
+          :layout="layout"
+          :page-size="queryForm.pageSize"
+          :total="total"
+          @current-change="handleCurrentChange"
+          @size-change="handleSizeChange" />
+      </el-col>
+    </el-row>
+    <edit ref="edit" @fetch-data="fetchData" />
+  </div>
+</template>
+
+<script>
+  import Edit from './components/DistrEdit'
+  import distrApi from '@/api/distr'
+  export default {
+    name: 'Distr',
+    components: { Edit },
+    data() {
+      return {
+        list: [],
+        listLoading: true,
+        layout: 'total, sizes, prev, pager, next, jumper',
+        total: 0,
+        selectRows: '',
+        queryForm: {
+          pageNum: 1,
+          pageSize: 10,
+          userName: '',
+        },
+        deptOptions: undefined,
+        defaultProps: {
+          id: 'id',
+          children: 'children',
+          label: 'regionDesc',
+        },
+        treeDefaultExpandAll: true,
+      }
+    },
+    computed: {
+      height() {
+        return this.$baseTableHeight(1)
+      },
+    },
+    created() {
+      this.fetchData()
+      this.getTree()
+    },
+    methods: {
+      async getTree() {
+        const { data: data } = await distrApi.getTree({})
+        console.log('区域', data.list)
+        this.deptOptions = data.list
+      },
+      // 筛选节点
+      filterNode(value, data) {
+        if (!value) return true
+        return data[this.defaultProps.label].indexOf(value) !== -1
+      },
+      // 节点单击事件
+      handleNodeClick(data) {
+        console.log('ID', data.id)
+        this.queryForm.provinceId = data.id
+        this.fetchData()
+      },
+      setSelectRows(val) {
+        this.selectRows = val
+      },
+      handleEdit(row) {
+        if (row.id) {
+          this.$refs['edit'].showEdit(row)
+        } else {
+          this.$refs['edit'].showEdit()
+        }
+      },
+      handleDelete(row) {
+        if (row.id) {
+          this.$baseConfirm('你确定要删除当前项吗', null, async () => {
+            const { msg } = await distrApi.doDelete({ ids: row.id })
+            this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            await this.fetchData()
+          })
+        } else {
+          if (this.selectRows.length > 0) {
+            const ids = this.selectRows.map((item) => parseInt(item.id))
+            console.log(ids)
+            this.$baseConfirm('你确定要删除选中项吗', null, async () => {
+              const { msg } = await distrApi.doDelete({ ids })
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+              await this.fetchData()
+            })
+          } else {
+            this.$baseMessage('未选中任何行', 'error', 'vab-hey-message-error')
+          }
+        }
+      },
+      handleSizeChange(val) {
+        this.queryForm.pageSize = val
+        this.fetchData()
+      },
+      handleCurrentChange(val) {
+        this.queryForm.pageNum = val
+        this.fetchData()
+      },
+      queryData() {
+        this.queryForm.pageNum = 1
+        this.fetchData()
+      },
+      async fetchData() {
+        this.listLoading = true
+        const {
+          data: { list, total },
+        } = await distrApi.getList(this.queryForm)
+        this.list = list
+        this.total = total
+        this.listLoading = false
+      },
+    },
+  }
+</script>
+<style>
+  .el-tree-node:focus > .el-tree-node__content {
+    /*设置选中的样式 */
+    background-color: #dde9ff !important;
+  }
+
+  .el-tree-node__content:hover {
+    /*设置鼠标飘过的颜色 */
+    background: #eaf9ff !important;
+    color: #007bff;
+  }
+
+  .el-tree--highlight-current
+    .el-tree-node.is-current
+    > .el-tree-node__content {
+    /*current选中的样式 */
+    color: #4d95fd;
+    font-weight: bold;
+    background-color: #dde9ff !important;
+  }
+</style>
+>

+ 90 - 0
src/views/base/region/components/RegEdit.vue

@@ -0,0 +1,90 @@
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="dialogFormVisible"
+    width="500px"
+    @close="close">
+    <el-form ref="form" label-width="80px" :model="form" :rules="regEdit">
+      <el-form-item label="区域描述" prop="regionDesc">
+        <el-input v-model.trim="form.regionDesc" />
+      </el-form-item>
+      <el-form-item label="负责人" prop="userName">
+        <el-input v-model.trim="form.userName" />
+      </el-form-item>
+      <el-form-item label="备注">
+        <el-input v-model="form.remark" type="textarea" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="save">确 定</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+  import regionApi from '@/api/base/region/region'
+
+  export default {
+    name: 'Edit',
+    data() {
+      return {
+        form: {
+          regEdit: [],
+        },
+        regEdit: {
+          regionDesc: [
+            { required: true, trigger: 'blur', message: '请填写区域' },
+          ],
+          userName: [
+            { required: true, trigger: 'blur', message: '请填写区域负责人' },
+          ],
+        },
+        title: '',
+        dialogFormVisible: false,
+        //省份
+        district: [],
+        //区域
+        options: [],
+        provinceCode: '',
+        // 区域
+        regionId: '',
+        vaule: '',
+      }
+    },
+    created() {},
+    methods: {
+      showEdit(row) {
+        if (!row) {
+          this.title = '添加'
+        } else {
+          this.title = '编辑'
+          this.form = Object.assign({}, row)
+        }
+        this.dialogFormVisible = true
+      },
+      close() {
+        this.$refs['form'].resetFields()
+        this.form = this.$options.data().form
+        this.dialogFormVisible = false
+      },
+      save() {
+        this.$refs['form'].validate(async (valid) => {
+          if (valid) {
+            if (this.form.id) {
+              console.log(this.form)
+              const { msg } = await regionApi.doCreate(this.form)
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            } else {
+              console.log('from--->', this.form)
+              const { msg } = await regionApi.doCreate(this.form)
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            }
+            this.$emit('fetch-data')
+            this.close()
+          }
+        })
+      },
+    },
+  }
+</script>

+ 131 - 0
src/views/base/region/components/RegionEdit.vue

@@ -0,0 +1,131 @@
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="dialogFormVisible"
+    width="500px"
+    @close="close">
+    <el-form ref="form" label-width="80px" :model="form" :rules="regionEdit">
+      <el-form-item label="区域ID" style="display: none">
+        <el-input v-model="form.regionId" type="input" />
+      </el-form-item>
+      <el-form-item label="省份选择" prop="provinceCode">
+        <el-select
+          ref="optionRef"
+          v-model="form.provinceCode"
+          placeholder="请选择"
+          @change="selectDistrict">
+          <el-option
+            v-for="item in district"
+            :key="item.id"
+            :label="item.distName"
+            :value="item.id" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="备注">
+        <el-input v-model="form.remark" type="textarea" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="save">确 定</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+  import distrApi from '@/api/distr'
+  import regionApi from '@/api/base/region/region'
+  export default {
+    name: 'Edit',
+    data() {
+      return {
+        form: {
+          regionEdit: [],
+        },
+        regionEdit: {
+          provinceCode: [
+            { required: true, trigger: 'blur', message: '请选择省份' },
+          ],
+        },
+        title: '',
+        dialogFormVisible: false,
+        //省份
+        district: [],
+        //区域
+        options: [],
+        provinceCode: '',
+        // 区域
+        regionId: '',
+        vaule: '',
+      }
+    },
+    created() {
+      //区域
+      this.getRegion()
+      //省份
+      this.getProvinceInfo()
+      this.setRegion()
+    },
+    methods: {
+      setRegion(id) {
+        console.log('setRegionnid', id)
+        this.form.regionId = id
+      },
+      async getRegion() {
+        const { data: data } = await regionApi.getRegion({})
+        this.options = data.list
+      },
+      selectClass(id) {
+        let obj = {}
+        obj = this.options.find((item) => {
+          return item.id === id //筛选出匹配数据
+        })
+        this.regionId = obj.id
+      },
+      async getProvinceInfo() {
+        const { data: data } = await distrApi.getProvinceInfo({})
+        console.log('区域', data.list)
+        this.district = data.list
+      },
+      selectDistrict(id) {
+        let obj = {}
+        obj = this.district.find((item) => {
+          return item.id === id //筛选出匹配数据
+        })
+        this.provinceCode = obj.id
+      },
+
+      showEdit(row) {
+        if (!row) {
+          this.title = '添加'
+        } else {
+          this.title = '编辑'
+          this.form = Object.assign({}, row)
+        }
+        this.dialogFormVisible = true
+      },
+      close() {
+        // this.$refs['form'].resetFields()
+        // this.form = this.$options.data().form
+        this.dialogFormVisible = false
+      },
+      save() {
+        this.$refs['form'].validate(async (valid) => {
+          if (valid) {
+            if (this.form.id) {
+              console.log(this.form)
+              const { msg } = await regionApi.doEdit(this.form)
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            } else {
+              console.log('from', this.form)
+              const { msg } = await regionApi.doAdd(this.form)
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            }
+            this.$emit('fetch-data')
+            this.close()
+          }
+        })
+      },
+    },
+  }
+</script>

+ 301 - 0
src/views/base/region/index.vue

@@ -0,0 +1,301 @@
+<template>
+  <div class="user-management-container">
+    <el-row :gutter="20">
+      <el-col :span="5" :xs="24">
+        <div class="head-container" style="margin-bottom: 5px">
+          <el-input v-model="filterText" placeholder="输入关键字进行过滤" />
+          <el-tree
+            class="filter-tree"
+            ref="tree"
+            :data="deptOptions"
+            default-expand-all
+            :default-expanded-keys="[1]"
+            :filter-node-method="filterNode"
+            highlight-current
+            node-key="id"
+            :props="defaultProps"
+            @node-click="handleNodeClick" />
+          <!-- <el-tree ref="tree" :data="deptOptions" node-key="id" 
+          :filter-node-method="filterNode" :props="defaultProps"
+          @node-click="handleNodeClick" /> -->
+        </div>
+        <!-- <div class="buttons">
+    <el-button  @click="getCheckedNodes($event)">添加区域</el-button>
+  </div> -->
+        <vab-query-form-left-panel :span="2">
+          <el-button
+            icon="el-icon-plus"
+            type="primary"
+            @click="getCheckedNodes($event)">
+            添加区域
+          </el-button>
+        </vab-query-form-left-panel>
+      </el-col>
+      <el-col :span="15" :xs="24">
+        <vab-query-form>
+          <vab-query-form-left-panel :span="20">
+            <el-form :inline="true" :model="queryForm" @submit.native.prevent>
+              <el-form-item style="letter-spacing: 12px">
+                <el-input
+                  v-model.trim="queryForm.custCode"
+                  clearable
+                  placeholder="客户编码" />
+              </el-form-item>
+              &nbsp;
+
+              <el-form-item>
+                <el-input
+                  v-model.trim="queryForm.custName"
+                  clearable
+                  placeholder="客户名称" />
+              </el-form-item>
+              &nbsp;
+              <el-form-item>
+                <el-input
+                  v-model.trim="queryForm.custIndustry"
+                  clearable
+                  placeholder="客户行业" />
+              </el-form-item>
+              <el-form-item>
+                <el-button
+                  icon="el-icon-search"
+                  type="primary"
+                  @click="queryData">
+                  查询
+                </el-button>
+              </el-form-item>
+            </el-form>
+            <vab-query-form-left-panel :span="2">
+              <el-button
+                icon="el-icon-plus"
+                type="primary"
+                @click="handleEdit($event)">
+                添加
+              </el-button>
+            </vab-query-form-left-panel>
+          </vab-query-form-left-panel>
+        </vab-query-form>
+
+        <el-table
+          v-loading="listLoading"
+          border
+          :data="list"
+          style="width: 100%; height: 500px"
+          @selection-change="setSelectRows">
+          <el-table-column
+            align="center"
+            show-overflow-tooltip
+            type="selection" />
+          <el-table-column
+            align="center"
+            label="省份"
+            prop="distName"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="客户数量"
+            prop="count"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="创建人"
+            prop="createdName"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="创建时间"
+            prop="createdTime"
+            show-overflow-tooltip />
+          <el-table-column
+            align="center"
+            label="操作"
+            show-overflow-tooltip
+            width="85">
+            <template #default="{ row }">
+              <el-button type="text" @click="handleEdit(row)">编辑</el-button>
+              <el-button type="text" @click="handleDelete(row)">删除</el-button>
+            </template>
+          </el-table-column>
+          <template #empty>
+            <el-image
+              class="vab-data-empty"
+              :src="require('@/assets/empty_images/data_empty.png')" />
+          </template>
+        </el-table>
+        <el-pagination
+          background
+          :current-page="queryForm.pageNum"
+          :layout="layout"
+          :page-size="queryForm.pageSize"
+          :total="total"
+          @current-change="handleCurrentChange"
+          @size-change="handleSizeChange" />
+      </el-col>
+    </el-row>
+    <edit ref="edit" @fetch-data="fetchData" />
+
+    <reg-edit ref="reg-edit" @fetch-data="fetchData" />
+  </div>
+</template>
+
+<script>
+  import Edit from './components/RegionEdit'
+  import RegEdit from './components/RegEdit'
+  import regionApi from '@/api/base/region/region'
+
+  export default {
+    name: 'Distr',
+    components: { Edit, RegEdit },
+    data() {
+      return {
+        current: '',
+        list: [],
+        listLoading: true,
+        layout: 'total, sizes, prev, pager, next, jumper',
+        total: 0,
+        selectRows: '',
+        filterText: '',
+        queryForm: {
+          pageNum: 1,
+          pageSize: 10,
+          userName: '',
+        },
+        deptOptions: undefined,
+        defaultProps: {
+          id: 'id',
+          regionCode: 'regionCode',
+          label: 'regionDesc',
+        },
+        treeDefaultExpandAll: true,
+        regionId: 0,
+      }
+    },
+
+    computed: {
+      height() {
+        return this.$baseTableHeight(10)
+      },
+    },
+    watch: {
+      filterText(val) {
+        this.$refs.tree.filter(val)
+      },
+    },
+    created() {
+      this.fetchData()
+      this.getRegion()
+    },
+    methods: {
+      async getRegion() {
+        const { data: data } = await regionApi.getRegion({})
+        var first_id = data.list[0].id
+
+        console.log('区域', first_id)
+        this.deptOptions = data.list
+        this.queryForm.regionId = first_id //data.list[0].id
+        this.$refs['edit'].setRegion(first_id)
+        //默认第一选中
+        this.$nextTick(() => {
+          this.$refs.tree.setCurrentKey(first_id)
+        })
+        this.fetchData()
+      },
+      // 筛选节点
+      filterNode(value, data) {
+        if (!value) return true
+        return data[this.defaultProps.label].indexOf(value) !== -1
+      },
+      // 节点单击事件
+      handleNodeClick(data) {
+        console.log('ID', data.id)
+        this.$refs['edit'].setRegion(data.id)
+        this.queryForm.regionId = data.id
+        this.fetchData()
+      },
+
+      setSelectRows(val) {
+        this.selectRows = val
+      },
+      getCheckedNodes() {
+        this.$refs['reg-edit'].showEdit()
+      },
+      handleEdit(row) {
+        if (row.id) {
+          this.$refs['edit'].showEdit(row)
+        } else {
+          this.$refs['edit'].showEdit()
+        }
+      },
+      handleDelete(row) {
+        if (row.id) {
+          console.log('deletedId', row.id)
+          this.$baseConfirm('你确定要删除当前项吗', null, async () => {
+            const { msg } = await regionApi.doDelete({ ids: row.id })
+            this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            await this.fetchData()
+          })
+        } else {
+          if (this.selectRows.length > 0) {
+            const ids = this.selectRows.map((item) => parseInt(item.id))
+            console.log(ids)
+            this.$baseConfirm('你确定要删除选中项吗', null, async () => {
+              const { msg } = await regionApi.doDelete({ ids })
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+              await this.fetchData()
+            })
+          } else {
+            this.$baseMessage('未选中任何行', 'error', 'vab-hey-message-error')
+          }
+        }
+      },
+      handleSizeChange(val) {
+        this.queryForm.pageSize = val
+        this.fetchData()
+      },
+      handleCurrentChange(val) {
+        this.queryForm.pageNum = val
+        this.fetchData()
+      },
+      queryData() {
+        this.queryForm.pageNum = 1
+        this.fetchData()
+      },
+      async fetchData() {
+        this.listLoading = true
+        const {
+          data: { list, total },
+        } = await regionApi.getList(this.queryForm)
+        this.list = list
+        this.total = total
+        this.listLoading = false
+      },
+    },
+  }
+</script>
+<style>
+  .el-tree-node:focus > .el-tree-node__content {
+    /*设置选中的样式 */
+    background-color: #dde9ff !important;
+  }
+
+  .el-tree-node__content:hover {
+    /*设置鼠标飘过的颜色 */
+    background: #eaf9ff !important;
+    color: #007bff;
+  }
+
+  .el-tree--highlight-current
+    .el-tree-node.is-current
+    > .el-tree-node__content {
+    /*current选中的样式 */
+    color: #4d95fd;
+    font-weight: bold;
+    background-color: #dde9ff !important;
+  }
+
+  .vab-query-form[data-v-64063760]
+    .el-form-item:first-child
+    .el-form-item--small {
+    margin: 0 10px 10px 0 !important;
+  }
+</style>

+ 15 - 8
src/views/system/product/components/UserEdit.vue → src/views/product/components/UserEdit.vue

@@ -14,7 +14,7 @@
       <el-form-item label="产品分类" prop="prodClass">
         <el-input v-model.trim="form.prodClass" />
       </el-form-item>
-      <el-form-item label="建议成交价" prop="guidPrice">
+      <el-form-item label="成交价" prop="guidPrice">
         <el-input v-model.trim="form.guidPrice" />
       </el-form-item>
       <el-form-item label="经销商价" prop="distPrice">
@@ -27,7 +27,7 @@
         <el-input v-model.trim="form.marketPrice" />
       </el-form-item>
       <el-form-item label="备注" prop="remark">
-        <el-input v-model.trim="form.remark" />
+        <el-input v-model.trim="form.remark" type="textarea" />
       </el-form-item>
     </el-form>
     <template #footer>
@@ -47,14 +47,21 @@
           roles: [],
         },
         rules: {
-          userName: [
-            { required: true, trigger: 'blur', message: '请输入用户名' },
+          prodCode: [
+            { required: true, trigger: 'blur', message: '请输入编码' },
           ],
-          password: [
-            { required: true, trigger: 'blur', message: '请输入密码' },
+          prodName: [
+            { required: true, trigger: 'blur', message: '请输入名称' },
+          ],
+          prodClass: [
+            { required: true, trigger: 'blur', message: '请输入分类' },
+          ],
+          guidPrice: [
+            { required: true, trigger: 'blur', message: '请输入建议成交价' },
+          ],
+          distPrice: [
+            { required: true, trigger: 'blur', message: '请输入经销商价' },
           ],
-          email: [{ required: true, trigger: 'blur', message: '请输入邮箱' }],
-          roles: [{ required: true, trigger: 'blur', message: '请选择角色' }],
         },
         title: '',
         dialogFormVisible: false,

+ 0 - 0
src/views/system/product/index.vue → src/views/product/index.vue


+ 0 - 104
src/views/system/distributor/components/UserEdit.vue

@@ -1,104 +0,0 @@
-<template>
-  <el-dialog
-    :title="title"
-    :visible.sync="dialogFormVisible"
-    width="500px"
-    @close="close">
-    <el-form ref="form" label-width="80px" :model="form" :rules="rules">
-      <el-form-item label="经销商编码" prop="prodCode">
-        <el-input v-model.trim="form.prodCode" />
-      </el-form-item>
-      <el-form-item label="经销商名称" prop="prodName">
-        <el-input v-model.trim="form.prodName" />
-      </el-form-item>
-      <el-form-item label="产品分类" prop="prodClass">
-        <el-input v-model.trim="form.prodClass" />
-      </el-form-item>
-      <el-form-item label="建议成交价" prop="guidPrice">
-        <el-input v-model.trim="form.guidPrice" />
-      </el-form-item>
-      <el-form-item label="经销商价" prop="distPrice">
-        <el-input v-model.trim="form.distPrice" />
-      </el-form-item>
-      <el-form-item label="签约代理价" prop="agentPrice">
-        <el-input v-model.trim="form.agentPrice" />
-      </el-form-item>
-      <el-form-item label="市场报价" prop="marketPrice">
-        <el-input v-model.trim="form.marketPrice" />
-      </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input v-model.trim="form.remark" />
-      </el-form-item>
-    </el-form>
-    <template #footer>
-      <el-button @click="close">取 消</el-button>
-      <el-button type="primary" @click="save">确 定</el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script>
-  import distrApi from '@/api/distr'
-  export default {
-    name: 'UserEdit',
-    data() {
-      return {
-        form: {
-          roles: [],
-        },
-        rules: {
-          userName: [
-            { required: true, trigger: 'blur', message: '请输入用户名' },
-          ],
-          password: [
-            { required: true, trigger: 'blur', message: '请输入密码' },
-          ],
-          email: [{ required: true, trigger: 'blur', message: '请输入邮箱' }],
-          roles: [{ required: true, trigger: 'blur', message: '请选择角色' }],
-        },
-        title: '',
-        dialogFormVisible: false,
-      }
-    },
-    methods: {
-      showEdit(row) {
-        if (!row) {
-          this.title = '添加'
-        } else {
-          this.title = '编辑'
-          this.form = Object.assign({}, row)
-        }
-        this.dialogFormVisible = true
-      },
-      close() {
-        this.$refs['form'].resetFields()
-        this.form = this.$options.data().form
-        this.dialogFormVisible = false
-      },
-      save() {
-        this.$refs['form'].validate(async (valid) => {
-          if (valid) {
-            if (this.form.id) {
-              this.form.guidPrice = parseFloat(this.form.guidPrice).toFixed(2)
-              this.form.distPrice = parseFloat(this.form.distPrice).toFixed(2)
-              this.form.agentPrice = parseFloat(this.form.agentPrice).toFixed(2)
-              this.form.marketPrice = parseFloat(this.form.marketPrice).toFixed(
-                2
-              )
-              console.log(this.form)
-              const { msg } = await distrApi.doEdit(this.form)
-              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
-            } else {
-              this.form.guidPrice = parseFloat(this.form.guidPrice).toFixed(2)
-              console.log(this.form)
-              const { msg } = await distrApi.doAdd(this.form)
-              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
-            }
-            this.$emit('fetch-data')
-            this.close()
-          }
-        })
-      },
-    },
-  }
-</script>

+ 0 - 219
src/views/system/distributor/index.vue

@@ -1,219 +0,0 @@
-<template>
-  <div class="user-management-container">
-    <vab-query-form>
-      <!-- <vab-query-form-left-panel :span="12">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">
-          添加
-        </el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">
-          批量删除
-        </el-button>
-      </vab-query-form-left-panel> -->
-      <vab-query-form-right-panel :span="12">
-        <el-form :inline="true" :model="queryForm" @submit.native.prevent>
-          <el-form-item>
-            <el-input
-              v-model.trim="queryForm.distCode"
-              clearable
-              placeholder="经销商编码" />
-          </el-form-item>
-          <el-form-item>
-            <el-input
-              v-model.trim="queryForm.distName"
-              clearable
-              placeholder="经销商名称" />
-          </el-form-item>
-          <el-form-item>
-            <el-input
-              v-model.trim="queryForm.belongSale"
-              clearable
-              placeholder="所属销售" />
-          </el-form-item>
-          <el-form-item>
-            <el-button icon="el-icon-search" type="primary" @click="queryData">
-              查询
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </vab-query-form-right-panel>
-    </vab-query-form>
-
-    <el-table
-      v-loading="listLoading"
-      border
-      :data="list"
-      :height="height"
-      @selection-change="setSelectRows">
-      <el-table-column align="center" show-overflow-tooltip type="selection" />
-      <!--      <el-table-column align="center" label="序号" width="55">
-        <template #default="{ $index }">
-          {{ $index + 1 }}
-        </template>
-      </el-table-column>-->
-      <el-table-column
-        align="center"
-        label="经销商编码"
-        prop="distCode"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="经销商名称"
-        prop="distName"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="助计名"
-        prop="abbrName"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="所在省份"
-        prop="provinceDesc"
-        show-overflow-tooltip />
-      <!-- <template #default="{ row }">
-        {{ row.District.distName  }}
-      </template>
-      </el-table-column> -->
-      <el-table-column
-        align="center"
-        label="归属销售"
-        prop="belongSale"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="业务范围"
-        prop="businessScope"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="负责人"
-        prop="distBoss"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="负责人电话"
-        prop="distBossPhone"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="创建人"
-        prop="createdName"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="创建时间"
-        prop="createdTime"
-        show-overflow-tooltip />
-
-      <el-table-column
-        align="center"
-        label="操作"
-        show-overflow-tooltip
-        width="85">
-        <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
-        </template>
-      </el-table-column>
-      <template #empty>
-        <el-image
-          class="vab-data-empty"
-          :src="require('@/assets/empty_images/data_empty.png')" />
-      </template>
-    </el-table>
-    <el-pagination
-      background
-      :current-page="queryForm.pageNum"
-      :layout="layout"
-      :page-size="queryForm.pageSize"
-      :total="total"
-      @current-change="handleCurrentChange"
-      @size-change="handleSizeChange" />
-    <edit ref="edit" @fetch-data="fetchData" />
-  </div>
-</template>
-
-<script>
-  import Edit from './components/UserEdit'
-  import distrApi from '@/api/distr'
-  export default {
-    name: 'User',
-    components: { Edit },
-    data() {
-      return {
-        list: [],
-        listLoading: true,
-        layout: 'total, sizes, prev, pager, next, jumper',
-        total: 0,
-        selectRows: '',
-        queryForm: {
-          pageNum: 1,
-          pageSize: 10,
-          userName: '',
-        },
-      }
-    },
-    computed: {
-      height() {
-        return this.$baseTableHeight(1)
-      },
-    },
-    created() {
-      this.fetchData()
-    },
-    methods: {
-      setSelectRows(val) {
-        this.selectRows = val
-      },
-      handleEdit(row) {
-        if (row.id) {
-          this.$refs['edit'].showEdit(row)
-        } else {
-          this.$refs['edit'].showEdit()
-        }
-      },
-      handleDelete(row) {
-        if (row.id) {
-          this.$baseConfirm('你确定要删除当前项吗', null, async () => {
-            const { msg } = await distrApi.doDelete({ ids: [row.id] })
-            this.$baseMessage(msg, 'success', 'vab-hey-message-success')
-            await this.fetchData()
-          })
-        } else {
-          if (this.selectRows.length > 0) {
-            const ids = this.selectRows.map((item) => parseInt(item.id))
-            console.log(ids)
-            this.$baseConfirm('你确定要删除选中项吗', null, async () => {
-              const { msg } = await distrApi.doDelete({ ids })
-              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
-              await this.fetchData()
-            })
-          } else {
-            this.$baseMessage('未选中任何行', 'error', 'vab-hey-message-error')
-          }
-        }
-      },
-      handleSizeChange(val) {
-        this.queryForm.pageSize = val
-        this.fetchData()
-      },
-      handleCurrentChange(val) {
-        this.queryForm.pageNum = val
-        this.fetchData()
-      },
-      queryData() {
-        this.queryForm.pageNum = 1
-        this.fetchData()
-      },
-      async fetchData() {
-        this.listLoading = true
-        const {
-          data: { list, total },
-        } = await distrApi.getList(this.queryForm)
-        this.list = list
-        this.total = total
-        this.listLoading = false
-      },
-    },
-  }
-</script>