LIDEXI vor 4 Jahren
Ursprung
Commit
1855c6af3a

BIN
public/img/logo.png


BIN
public/img/logo1.png


+ 50 - 0
src/api/billrecord/billrecord.js

@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/cyzh-billRecord/billrecord/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/cyzh-billRecord/billrecord/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/cyzh-billRecord/billrecord/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/cyzh-billRecord/billrecord/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/cyzh-billRecord/billrecord/submit',
+    method: 'post',
+    data: row
+  })
+}
+

+ 50 - 0
src/api/guosen/agenter.js

@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/cyzh-guosen/agenter/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/cyzh-guosen/agenter/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/cyzh-guosen/agenter/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/agenter/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/agenter/submit',
+    method: 'post',
+    data: row
+  })
+}
+

+ 50 - 0
src/api/guosen/agentertype.js

@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/cyzh-guosen/agentertype/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/cyzh-guosen/agentertype/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/cyzh-guosen/agentertype/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/agentertype/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/agentertype/submit',
+    method: 'post',
+    data: row
+  })
+}
+

+ 58 - 0
src/api/guosen/ordercommission.js

@@ -0,0 +1,58 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/cyzh-guosen/ordercommission/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/cyzh-guosen/ordercommission/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/cyzh-guosen/ordercommission/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/ordercommission/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/ordercommission/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const getByAgenterAndTime = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/ordercommission/getByAgenterAndTime',
+    method: 'post',
+ data: row
+  })
+}

+ 50 - 0
src/api/guosen/useragenter.js

@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/cyzh-guosen/useragenter/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/cyzh-guosen/useragenter/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/cyzh-guosen/useragenter/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/useragenter/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/useragenter/submit',
+    method: 'post',
+    data: row
+  })
+}
+

+ 50 - 0
src/api/sysarea/sysarea.js

@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/cyzh-system/sysarea/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/cyzh-system/sysarea/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/cyzh-system/sysarea/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/cyzh-system/sysarea/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/cyzh-system/sysarea/submit',
+    method: 'post',
+    data: row
+  })
+}
+

+ 297 - 0
src/components/ordercommission/ordercommissionComp.vue

@@ -0,0 +1,297 @@
+<template>
+  <basicContainer :visible="visible">
+
+    <avue-tabs :option="tabsOption" @change="changeTab" :visible="visible"></avue-tabs>
+
+    <el-form :visible="visible">
+
+      <el-form-item>
+        <el-button-group>
+          <el-col :span="12">
+            <el-button size="small" :type="buttonDay" icon="el-icon-document" @click="handleDay">按日
+            </el-button>
+          </el-col>
+          <el-col :span="12">
+            <el-button size="small" :type="buttonMonth" icon="el-icon-data-line" @click="handleMonth">按月
+            </el-button>
+          </el-col>
+        </el-button-group>
+
+        <el-date-picker value-format="yyyy-MM-dd" size="small" v-model="selectDate" :type="dateType" :placeholder="dataPlace">
+        </el-date-picker>
+        <el-button-group>
+          <!-- <el-col :span="12">
+            <el-button size="small" :type="buttonList" icon="el-icon-document" @click="handleList">列表
+            </el-button>
+          </el-col> -->
+          <el-col :span="12">
+            <el-button size="small" :type="buttonChart" icon="el-icon-data-line" @click="handleStatic">统计
+            </el-button>
+          </el-col>
+
+        </el-button-group>
+        <el-button-group>
+          <el-col :span="12">
+            <el-button size="small" icon="el-icon-wallet" v-if="type.prop === 'paying'">结算
+            </el-button>
+          </el-col>
+        </el-button-group>
+      </el-form-item>
+    </el-form>
+    <!-- 图形 -->
+    <div v-if="buttonChart == 'primary'" id="orderStatistics" :style="{ width: '100%', height: '450px' }">
+    </div>
+
+
+    <!--   <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :before-open="beforeOpen"
+      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+      @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" v-if="buttonList == 'primary'">
+
+    </avue-crud> -->
+  </basicContainer>
+
+</template>
+
+<script>
+  import echarts from "echarts";
+  import {
+    getList,
+    getDetail,
+    add,
+    update,
+    remove,
+    getByAgenterAndTime
+  } from "@/api/guosen/ordercommission";
+  export default {
+    props: {
+      agenterId: {
+
+      },
+      visible:{
+
+      }
+    },
+    data() {
+      return {
+        type: {},
+        query: {
+          status: 0,
+          staticType: 1
+        },
+        chart: null,
+        selectDate: [],
+        dateType: "daterange",
+        dataPlace: "选择日期",
+        buttonList: "", //默认显示表格
+        buttonChart: "primary", //默认图形不显示
+        buttonDay: "primary", //默认显示按日
+        buttonMonth: "", //默认图形不显示
+        legendData: ['正向有功实时需量', '反向有功实时需量', '正向无功实时需量', '反向无功实时需量'],
+        tableData: [],
+        tabsOption: {
+          column: [{
+            icon: 'el-icon-warning',
+            label: '待结算',
+            prop: 'paying',
+
+          }, {
+            icon: 'el-icon-info',
+            label: '已结算',
+            prop: 'payed',
+          }]
+        },
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+
+          height: 'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          addBtn: false,
+          menu: false,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [{
+              label: "佣金金额",
+              prop: "amt",
+              rules: [{
+                required: true,
+                message: "请输入佣金金额",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "佣金比例",
+              prop: "rate",
+              rules: [{
+                required: true,
+                message: "请输入佣金比例",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "佣金类型",
+              prop: "type",
+              type: "select",
+              dataType: "number",
+              dicData: [{
+                  label: "城市分红",
+                  value: 1
+                },
+                {
+                  label: "推广分红",
+                  value: 2
+                },
+              ],
+              rules: [{
+                required: true,
+                message: "请输入佣金类型:1-城市分红 2-推广分红",
+                trigger: "blur"
+              }]
+            },
+
+            {
+              //-1: 取消  0:待结算 1:已结算
+              label: "创建时间",
+              prop: "createTime",
+
+            }
+          ]
+        },
+      }
+    },
+
+    mounted() {
+      this.type = this.tabsOption.column[0];
+      let befDate = new Date();
+      let byear = befDate.getFullYear();
+      let bmonth = befDate.getMonth() + 1;
+      let bday = befDate.getDate();
+      let startTime = `${byear}-${bmonth}-${bday}`;
+      this.selectDate = [startTime, startTime];
+      this.query.status = 0;
+    },
+
+    methods: {
+      changeTab(column) {
+        this.type = column;
+        if (this.type.prop === "paying") {
+          this.query.status = 0;
+        } else if (this.type.prop === "payed") {
+          this.query.status = 1;
+        }
+      },
+      init() {
+        this.type = this.tabsOption.column[0];
+        let befDate = new Date();
+        let byear = befDate.getFullYear();
+        let bmonth = befDate.getMonth() + 1;
+        let bday = befDate.getDate();
+        let startTime = `${byear}-${bmonth}-${bday}`;
+        this.selectDate = [startTime, startTime];
+        this.query.agenterId = this.agenterId;
+        this.query.status = 1; //默认已结算
+
+      },
+      //按日
+      handleDay() {
+        this.buttonDay = "primary";
+        this.buttonMonth = "";
+        this.query.staticType = 1;
+        this.dateType = "daterange";
+        this.dataPlace = "选择日期";
+      },
+
+      //按月
+      handleMonth() {
+        this.buttonDay = "";
+        this.buttonMonth = "primary";
+        this.query.staticType = 2;
+        this.dateType = "monthrange";
+        this.dataPlace = "选择月份";
+      },
+      //图表
+      handleList() {
+        this.buttonList = "primary";
+        this.buttonChart = "";
+      },
+
+      //柱状图
+      handleStatic() {
+        this.buttonList = "";
+        this.buttonChart = "primary";
+
+        this.$nextTick(() => {
+          this.loadData();
+        })
+
+      },
+      loadData() {
+        this.query.agenterId = this.agenterId;
+        this.query.beginDate = this.selectDate[0];
+        this.query.endDate = this.selectDate[1];
+
+        getByAgenterAndTime(this.query).then(res => {
+          this.drawRealDemandLine(res.data.data.dateList, res.data.data.dataList);
+          console.log("dddd" + JSON.stringify(res.data))
+        })
+      },
+      //柱形图
+      drawRealDemandLine(dateList, dataList) {
+        // 基于准备好的dom,初始化echarts实例
+        let myChart = echarts.init(document.getElementById('orderStatistics'))
+        // 基于准备好的dom,初始化echarts实例
+        // 绘制图表
+        myChart.setOption({
+          title: {
+            text: ''
+          },
+          tooltip: {},
+          grid: { //直角坐标系内绘图网格
+            show: true, //是否显示直角坐标系网格。[ default: false ]
+            left: "20%", //grid 组件离容器左侧的距离。
+            right: "30px",
+            borderColor: "#c45455", //网格的边框颜色
+            bottom: "20%" //
+          },
+          // x轴拖动
+          dataZoom: [{
+            type: "slider",
+            realtime: true, //拖动滚动条时是否动态的更新图表数据
+            height: 25, //滚动条高度
+            start: 40, //滚动条开始位置(共100等份)
+            end: 65 //结束位置(共100等份)
+          }],
+
+          xAxis: {
+            data: dateList,
+            axisLabel: { //坐标轴刻度标签的相关设置。
+              interval: 0,
+              rotate: "45"
+            }
+          },
+          yAxis: {},
+          series: [{
+            name: '佣金(元)',
+            type: 'bar',
+            data: dataList
+          }]
+        });
+      }
+    },
+
+
+  }
+</script>
+
+<style>
+</style>

+ 2 - 2
src/config/website.js

@@ -2,10 +2,10 @@
  * 全局配置文件
  */
 export default {
-  title: "saber",
+  title: "音乐之声",
   logo: "S",
   key: 'saber',//配置主键,目前用于存储
-  indexTitle: 'Saber Admin',
+  indexTitle: '音乐之声',
   clientId: 'saber', // 客户端id
   clientSecret: 'saber_secret', // 客户端密钥
   tenantMode: true, // 是否开启租户模式

+ 2 - 2
src/lang/zh.js

@@ -1,6 +1,6 @@
 export default {
   tip: '提示',
-  title: 'Saber企业级开发平台',
+  title: '音乐之声',
   logoutTip: '退出系统, 是否继续?',
   submitText: '确定',
   cancelText: '取消',
@@ -67,7 +67,7 @@ export default {
   },
   login: {
     title: '登录 ',
-    info: 'BladeX 企业级开发平台',
+    info: '音乐之声',
     tenantId: '请输入租户ID',
     username: '请输入账号',
     password: '请输入密码',

+ 315 - 0
src/views/billrecord/billrecord.vue

@@ -0,0 +1,315 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.billrecord_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+      <template></template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/billrecord/billrecord";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "姓名",
+              prop: "userName",
+              search: true,
+              rules: [{
+                required: true,
+                message: "请输入用户id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "手机号",
+              prop: "userPhone",
+              search: true,
+              rules: [{
+                required: true,
+                message: "请输入openId",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "活动名称",
+              prop: "activityId",
+              hide: true,
+              display: false,
+              rules: [{
+                required: true,
+                message: "请输入活动id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "价格",
+              prop: "price",
+              rules: [{
+                required: true,
+                message: "请输入价格",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "礼物id",
+              prop: "presentId",
+              hide: true,
+              display: false,
+              rules: [{
+                required: true,
+                message: "请输入礼物id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "订单礼物的数量",
+              prop: "presentCount",
+              rules: [{
+                required: true,
+                message: "请输入订单礼物的数量",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "打赏类型",
+              prop: "type",
+              type: "select",
+              dicData: [
+                {
+                  label: "打赏作品",
+                  value: 1
+                },
+                {
+                  label: "打赏作者",
+                  value: 2
+                }
+              ],
+              rules: [{
+                required: true,
+                message: "请输入1:作品打赏 2:作者打赏",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "关联type的id",
+              prop: "relationId",
+              rules: [{
+                required: true,
+                message: "请输入关联type的id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "支付状态",
+              prop: "payStatus",
+              search: true,
+              type: "select",
+              dicData: [
+                {
+                  label: "待付款",
+                  value: 0
+                },
+                {
+                  label: "已付款",
+                  value: 1
+                },
+                {
+                  label: "已取消",
+                  value: 2
+                }
+              ],
+              rules: [{
+                required: true,
+                message: "请输入支付状态。0:待付款 1:已付款 2:已取消",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.billrecord_add, false),
+          viewBtn: this.vaildData(this.permission.billrecord_view, false),
+          delBtn: this.vaildData(this.permission.billrecord_delete, false),
+          editBtn: this.vaildData(this.permission.billrecord_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 384 - 0
src/views/guosen/agenter.vue

@@ -0,0 +1,384 @@
+<template>
+  <basic-container>
+   <el-dialog  :modal-append-to-body="false" :visible.sync="userAgenterVisible" title="推广用户" width="70%">
+     <useragenter ref="useragenterRef" :agenterId="selectAgenterId"></useragenter>
+   </el-dialog>
+   <el-dialog @close="closeOrderCommission"  append-to-body :close-on-click-modal="false" :visible.sync="viewOrderCommissionVisible" title="分佣记录" width="70%">
+     <ordercommissioncomp  ref="ordercommissioncompRef" :agenterId="selectAgenterId"></ordercommissioncomp>
+   </el-dialog>
+    </el-dialog>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.agenter_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+
+      <template slot="menu" slot-scope="scope">
+        <el-button
+                  type ="text"
+                  size="mini"
+                   icon="el-icon-s-promotion"
+                   plain
+                   v-if="permission.useragenter_view"
+                   @click="viewUserAgenter(scope.row)">推广用户
+        </el-button>
+        <el-button
+                  type ="text"
+                  size="mini"
+                   icon="el-icon-s-promotion"
+                   plain
+                   v-if="permission.ordercommission_view"
+                   @click="viewOrderCommission(scope.row)">分佣记录
+        </el-button>
+      </template>
+
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/guosen/agenter";
+  import {mapGetters} from "vuex";
+  import useragenter from "./useragenter.vue"
+  import ordercommissioncomp from "@/components/ordercommission/ordercommissionComp"
+
+  export default {
+    components:{
+      useragenter,
+      ordercommissioncomp
+    },
+    data() {
+      return {
+        selectAgenterId: 0,
+        userAgenterVisible: false,
+        viewOrderCommissionVisible: false,
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          dialogWidth: "30%",
+          column: [
+
+            {
+              label: "代理人手机号码",
+              prop: "userPhone",
+              search: true,
+              searchLabelWidth: 150,
+              searchSpan: 8,
+              span: 22,
+              row: true,
+              labelWidth: 150,
+              rules: [{
+                required: true,
+                message: "请输入代理人手机号码",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "代理人级别",
+              prop: "level",
+              search: true,
+              type: "select",
+              searchLabelWidth: 150,
+              searchSpan: 8,
+              dataType: "number",
+              span: 22,
+              row: true,
+              labelWidth: 150,
+              dicUrl: "/api/cyzh-guosen/agentertype/list",
+              props:{
+                label: "name",
+                value: "id"
+              },
+              dicFormatter: (res) =>{
+                return res.data.records;
+              },
+              rules: [{
+                required: true,
+                message: "请输入代理人级别: 1-独家代理 2-战略合作伙伴",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "是否启用",
+              prop: "enabled",
+              span: 22,
+              search: true,
+              row: true,
+              value: 1,
+              labelWidth: 150,
+              type: "select",
+              dicData: [
+                {
+                  label: "禁用",
+                  value: -1
+                },
+                {
+                  label: "启用",
+                  value: 1
+                }
+              ],
+              rules: [{
+                required: true,
+                message: "请输入-1: 禁用 1: 启用",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "代理省份",
+              prop: "province",
+              search: true,
+              span: 22,
+              row: true,
+              type: "select",
+               cascaderItem: ["city"],
+              dicUrl: "/api/cyzh-system/sysarea/list?size=1000&layerNumber=1",
+              props:{
+                label: "name",
+                value: "pinyin"
+              },
+              dicFormatter: (res) =>{
+                return res.data.records;
+              },
+
+              labelWidth: 150,
+              display: true,
+
+              rules: [{
+                required: true,
+                message: "请输入代理省份",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "代理城市",
+              search: true,
+              prop: "city",
+              type: "select",
+              dicUrl: `/api/cyzh-system/sysarea/getCityByProvincePinyin?provincePinyin={{key}}`,
+              props:{
+                label: "name",
+                value: "pinyin"
+              },
+              dicFormatter: (res) =>{
+                return res.data;
+              },
+              span: 22,
+              row: true,
+              labelWidth: 150,
+              display: true,
+              rules: [{
+                required: true,
+                message: "请输入代理城市",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.agenter_add, false),
+          viewBtn: this.vaildData(this.permission.agenter_view, false),
+          delBtn: this.vaildData(this.permission.agenter_delete, false),
+          editBtn: this.vaildData(this.permission.agenter_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    watch:{
+     "form.level"(){
+
+
+        if(this.form.level == 1){
+           this.option.column[3].display = true;
+           this.option.column[4].display = true;
+        }else{
+           this.option.column[3].display = false;
+           this.option.column[4].display = false;
+        }
+     }
+    },
+    methods: {
+      closeOrderCommission(){
+        debugger
+        this.viewOrderCommissionVisible = false;
+      },
+      viewOrderCommission(row){
+          this.selectAgenterId = row.id;
+          this.viewOrderCommissionVisible = true;
+          this.$nextTick(()=>{
+            this.$refs.ordercommissioncompRef.init();
+          })
+      },
+      viewUserAgenter(row){
+        this.selectAgenterId = row.id;
+        this.userAgenterVisible = true;
+        this.$nextTick(()=>{
+          this.$refs.useragenterRef.init()
+        });
+
+      },
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 260 - 0
src/views/guosen/agentertype.vue

@@ -0,0 +1,260 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.agentertype_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+      <template slot="costForm">
+        <avue-input-number v-model="form.cost" precision="2" controls-position></avue-input-number>
+      </template>
+      <template slot="cityRateForm">
+        <avue-input-number v-model="form.cityRate" precision="2" controls-position></avue-input-number>
+      </template>
+      <template slot="recommendRateForm">
+        <avue-input-number v-model="form.recommendRate" precision="2" controls-position></avue-input-number>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/guosen/agentertype";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          dialogWidth: "30%",
+          column: [
+            {
+              label: "分类名称",
+              prop: "name",
+              labelWidth: 150,
+              span: 22,
+              row: true,
+              rules: [{
+                required: true,
+                message: "请输入分类名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "城市分红比例",
+              prop: "cityRate",
+               formslot: true,
+               labelWidth: 150,
+               span: 22,
+               row: true,
+              rules: [{
+                required: true,
+                message: "请输入城市分红比例",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "推广分红比例",
+              prop: "recommendRate",
+               formslot: true,
+               labelWidth: 150,
+               span: 22,
+               row: true,
+              rules: [{
+                required: true,
+                message: "请输入推广分红比例",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "成为该类型代理需要支付多少钱",
+              prop: "cost",
+              formslot: true,
+              labelWidth: 150,
+              span: 22,
+              rules: [{
+                required: true,
+                message: "请输入成为该类型需要支付多少钱",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.agentertype_add, false),
+          viewBtn: this.vaildData(this.permission.agentertype_view, false),
+          delBtn: this.vaildData(this.permission.agentertype_delete, false),
+          editBtn: this.vaildData(this.permission.agentertype_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 279 - 0
src/views/guosen/ordercommission.vue

@@ -0,0 +1,279 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.ordercommission_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove,getByAgenterAndTime} from "@/api/guosen/ordercommission";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "关联的订单id",
+              prop: "orderId",
+              rules: [{
+                required: true,
+                message: "请输入关联的订单id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "佣金所属代理人id",
+              prop: "agenterId",
+              rules: [{
+                required: true,
+                message: "请输入佣金所属代理人id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "佣金金额",
+              prop: "amt",
+              rules: [{
+                required: true,
+                message: "请输入佣金金额",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "佣金比例",
+              prop: "rate",
+              rules: [{
+                required: true,
+                message: "请输入佣金比例",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "佣金类型",
+              prop: "type",
+              type: "select",
+              dataType: "number",
+              dicData: [
+                {
+                  label: "城市分红",
+                  value: 1
+                },
+                {
+                  label: "推广分红",
+                  value: 2
+                },
+              ],
+              rules: [{
+                required: true,
+                message: "请输入佣金类型:1-城市分红 2-推广分红",
+                trigger: "blur"
+              }]
+            },
+
+            {
+              //-1: 取消  0:待结算 1:已结算
+              label: "分佣状态",
+              prop: "status",
+              type: "select",
+              dataType: "number",
+              dicData:[
+                {
+                  label: "取消分佣",
+                  value: -1
+                },
+                {
+                  label: "待结算",
+                  value: 0
+                },
+                {
+                  label: "已结算",
+                  value: 1
+                }
+              ],
+            }
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.ordercommission_add, false),
+          viewBtn: this.vaildData(this.permission.ordercommission_view, false),
+          delBtn: this.vaildData(this.permission.ordercommission_delete, false),
+          editBtn: this.vaildData(this.permission.ordercommission_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 323 - 0
src/views/guosen/useragenter.vue

@@ -0,0 +1,323 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+ <template slot-scope="scope" slot="avatar">
+
+      <img style="width: 70px; height: 50px; " :src="scope.row.avatar" :fit="fit" @click="openView(scope.row.avatar)">
+    </template>
+    </avue-crud>
+
+
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/guosen/useragenter";
+  import {mapGetters} from "vuex";
+
+  export default {
+    props:{
+      agenterId:{}
+    },
+    data() {
+      return {
+
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          menu: false,
+          addBtn: false,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+
+
+ {
+              label: "用户昵称",
+              prop: "nickName",
+              search: true,
+              width: 200,
+              rules: [{
+                required: true,
+                message: "请输入用户昵称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "用户头像",
+              prop: "avatar",
+              width: 100,
+              slot: true,
+              rules: [{
+                required: true,
+                message: "请输入用户头像",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "手机号",
+              prop: "phone",
+              search: true,
+              rules: [{
+                required: true,
+                message: "请输入手机号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "性别",
+              prop: "gender",
+              type: "select",
+              search: true,
+              dicData: [
+                {
+                  label: "未知",
+                  value: 0
+                },
+                {
+                  label: "男",
+                  value: 1
+                },
+                {
+                  label: "女",
+                  value:  2
+                }
+              ],
+              rules: [{
+                required: true,
+                message: "请输入0:未知 1:男 2:女",
+                trigger: "blur"
+              }]
+            },
+
+           {
+             label: "所在省份",
+             prop: "province",
+             search: true,
+             span: 22,
+             row: true,
+             type: "select",
+              cascaderItem: ["city"],
+             dicUrl: "/api/cyzh-system/sysarea/list?size=1000&layerNumber=1",
+             props:{
+               label: "name",
+               value: "pinyin"
+             },
+             dicFormatter: (res) =>{
+               return res.data.records;
+             },
+
+             labelWidth: 150,
+             display: true,
+
+             rules: [{
+               required: true,
+               message: "请输入代理省份",
+               trigger: "blur"
+             }]
+           },
+           {
+             label: "所在城市",
+             search: true,
+             prop: "city",
+             type: "select",
+             dicUrl: `/api/cyzh-system/sysarea/getCityByProvincePinyin?provincePinyin={{key}}`,
+             props:{
+               label: "name",
+               value: "pinyin"
+             },
+             dicFormatter: (res) =>{
+               return res.data;
+             },
+             span: 22,
+             row: true,
+             labelWidth: 150,
+             display: true,
+             rules: [{
+               required: true,
+               message: "请输入代理城市",
+               trigger: "blur"
+             }]
+           },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.useragenter_add, false),
+          viewBtn: this.vaildData(this.permission.useragenter_view, false),
+          delBtn: this.vaildData(this.permission.useragenter_delete, false),
+          editBtn: this.vaildData(this.permission.useragenter_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      openView(url) {
+        var data = [{
+          thumbUrl: url,
+          url: url
+        }];
+        this.$ImagePreview(data, 0);
+      },
+      init(){
+        this.query.agenterId = this.agenterId;
+        this.onLoad(this.page,this.query);
+      },
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 51 - 29
src/views/loginuser/loginuser.vue

@@ -27,6 +27,10 @@
                    @click="handleDelete">删 除
         </el-button>
       </template>
+      <template slot-scope="scope" slot="avatar">
+
+           <img style="width: 70px; height: 50px; " :src="scope.row.avatar" :fit="fit" @click="openView(scope.row.avatar)">
+         </template>
     </avue-crud>
   </basic-container>
 </template>
@@ -62,6 +66,8 @@
             {
               label: "用户昵称",
               prop: "nickName",
+              width: 150,
+              search: true,
               rules: [{
                 required: true,
                 message: "请输入用户昵称",
@@ -71,6 +77,8 @@
             {
               label: "用户头像",
               prop: "avatar",
+              width: 120,
+              slot: true,
               rules: [{
                 required: true,
                 message: "请输入用户头像",
@@ -80,6 +88,8 @@
             {
               label: "手机号",
               prop: "phone",
+              width: 100,
+              search: true,
               rules: [{
                 required: true,
                 message: "请输入手机号",
@@ -87,44 +97,37 @@
               }]
             },
             {
-              label: "0:未知 1:男 2:女",
+              label: "性别",
               prop: "gender",
+              type: "select",
+              width: 80,
+              dicData: [
+                {
+                  label: "未知",
+                  value: 0
+                },
+                {
+                  label: "男",
+                  value: 1
+                },
+                {
+                  label: "女",
+                  value: 2
+                }
+              ],
               rules: [{
                 required: true,
                 message: "请输入0:未知 1:男 2:女",
                 trigger: "blur"
               }]
             },
-            {
-              label: "openid",
-              prop: "openid",
-              rules: [{
-                required: true,
-                message: "请输入openid",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "0:未修改 1:已修改",
-              prop: "isUpdatedGender",
-              rules: [{
-                required: true,
-                message: "请输入0:未修改 1:已修改",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "个人介绍",
-              prop: "introduce",
-              rules: [{
-                required: true,
-                message: "请输入个人介绍",
-                trigger: "blur"
-              }]
-            },
+           
+
+
             {
               label: "可用积分",
               prop: "usablePoints",
+              width: 150,
               rules: [{
                 required: true,
                 message: "请输入可用积分",
@@ -143,6 +146,7 @@
             {
               label: "可用热力",
               prop: "usableHot",
+              width: 150,
               rules: [{
                 required: true,
                 message: "请输入可用热力",
@@ -152,12 +156,23 @@
             {
               label: "总热力",
               prop: "totalHot",
+              width: 150,
               rules: [{
                 required: true,
                 message: "请输入总热力",
                 trigger: "blur"
               }]
-            }
+            },
+            {
+              label: "openid",
+              prop: "openid",
+              width: 200,
+              rules: [{
+                required: true,
+                message: "请输入openid",
+                trigger: "blur"
+              }]
+            },
           ]
         },
         data: []
@@ -182,6 +197,13 @@
       }
     },
     methods: {
+      openView(url) {
+        var data = [{
+          thumbUrl: url,
+          url: url
+        }];
+        this.$ImagePreview(data, 0);
+      },
       rowSave(row, done, loading) {
         add(row).then(() => {
           this.onLoad(this.page);

+ 327 - 0
src/views/sysarea/sysarea.vue

@@ -0,0 +1,327 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.sysarea_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/sysarea/sysarea";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "编号",
+              prop: "code",
+              rules: [{
+                required: true,
+                message: "请输入编号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "父级编号",
+              prop: "parentCode",
+              rules: [{
+                required: true,
+                message: "请输入父级编号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "名称",
+              prop: "name",
+              rules: [{
+                required: true,
+                message: "请输入名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "简写名称",
+              prop: "shortName",
+              rules: [{
+                required: true,
+                message: "请输入简写名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "繁体名字",
+              prop: "traditionalName",
+              rules: [{
+                required: true,
+                message: "请输入繁体名字",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "英语名称",
+              prop: "englishName",
+              rules: [{
+                required: true,
+                message: "请输入英语名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "省市区街道全称",
+              prop: "mergerName",
+              rules: [{
+                required: true,
+                message: "请输入省市区街道全称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "层级",
+              prop: "layerNumber",
+              rules: [{
+                required: true,
+                message: "请输入层级",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "邮编",
+              prop: "zipCode",
+              rules: [{
+                required: true,
+                message: "请输入邮编",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "城市编号",
+              prop: "cityCode",
+              rules: [{
+                required: true,
+                message: "请输入城市编号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "拼音",
+              prop: "pinyin",
+              rules: [{
+                required: true,
+                message: "请输入拼音",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "伟度",
+              prop: "lat",
+              rules: [{
+                required: true,
+                message: "请输入伟度",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "经度",
+              prop: "lng",
+              rules: [{
+                required: true,
+                message: "请输入经度",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "首字母",
+              prop: "firstLetter",
+              rules: [{
+                required: true,
+                message: "请输入首字母",
+                trigger: "blur"
+              }]
+            },
+           
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.sysarea_add, false),
+          viewBtn: this.vaildData(this.permission.sysarea_view, false),
+          delBtn: this.vaildData(this.permission.sysarea_delete, false),
+          editBtn: this.vaildData(this.permission.sysarea_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>