Forráskód Böngészése

活动接口对接

谢杰标 2 éve
szülő
commit
bb908662ee

+ 33 - 0
src/api/salesman/act.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+//登录短信
+export function getActList(query) {
+  return request({
+    url: "/distribution/activity/list",
+    method: "get",
+    params: query
+  });
+}
+// 下载海报
+export function makePoster(query) {
+  return request({
+    url: "/distribution/poster/makePoster",
+    method: "get",
+    params: query
+  });
+}
+// 活动详情
+export function getActDetail(id) {
+  return request({
+    url: "/distribution/activity/" + id,
+    method: "get",
+  });
+}
+
+// 获得链条吗
+export function getLinkCode(query) {
+  return request({
+    url: "/distribution/poster/linkCode",
+    method: "get",
+    params: query
+  });
+}

+ 8 - 0
src/api/salesman/commission.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+//登录短信
+export function getCashList() {
+  return request({
+    url: "/distribution/cash/log/fromOrderCashList",
+    method: "get",
+  });
+}

+ 72 - 0
src/api/salesman/user.js

@@ -0,0 +1,72 @@
+import request from '@/utils/request'
+//修改信息
+export function sellerEdit(data) {
+  return request({
+    url: "/distribution/seller/edit",
+    method: "post",
+    data: data,
+  });
+}
+export function getInfoByShareCode(data) {
+  return request({
+    url: "/app/common/distribution/getInfoByShareCode",
+    method: "get",
+    data: data,
+    noToken: true,
+  });
+}
+
+// 查询用户是否绑定公众号
+export function checkBindGzh(data) {
+  return request({
+    url: "/distribution/seller/checkBindGzh",
+    method: "get",
+    data,
+  });
+}
+
+// 获取appid
+export function getWxConfig(data) {
+  return request({
+    url: "/app/common/wx/config",
+    method: "get",
+    data: data,
+    noToken: true,
+  });
+}
+
+//绑定公众号
+export function OfficialLogin(data) {
+  return request({
+    url: "/distribution/seller/gzh_bind",
+    method: "post",
+    data: data,
+  });
+}
+
+// 提现
+export function withdrawal(data) {
+  return request({
+    url: "/distribution/withdrawal",
+    method: "post",
+    data: data,
+  });
+}
+
+// 提现记录
+export function getWithdrawalList(data) {
+  return request({
+    url: "/distribution/withdrawal/list",
+    method: "get",
+    data: data,
+  });
+}
+
+//登录业务员用户信息
+export function getSellerInfo(data) {
+  return request({
+    url: "/distribution/seller/getInfo",
+    method: "get",
+    data: data,
+  });
+}

BIN
src/assets/images/defhead.png


+ 1 - 2
src/components/tableList.vue

@@ -289,8 +289,7 @@
             v-else-if="item.scope === 'PvOrdown'"
             style="color: blue; cursor: pointer"
           >
-            <span style="padding-right: 20px">预览</span>
-            <span>下载</span>
+            <span>预览</span>
           </div>
           <span v-else-if="item.scope === 'leftCh'">
             {{ item.ch }}{{ scope.row[item.prop] }}

+ 282 - 0
src/views/salesman/act/index.vue

@@ -0,0 +1,282 @@
+<template>
+  <div id="registeredUser">
+    <search-box-new
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+    />
+    <table-list
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      :loading="loading"
+    >
+      <template slot="btn" slot-scope="props">
+        <el-button type="text" @click="editClick(props.scope.row)"
+          >详情</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+  </div>
+</template>
+
+<script>
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+import { getActList } from "@/api/salesman/act";
+export default {
+  name: "RegisteredUser",
+  components: { searchBoxNew, tableList, pagination },
+  data() {
+    return {
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "活动列表",
+        index: 0,
+        ch: "条",
+        num: false,
+        choice: false,
+        addHide: true,
+        backFatherBtn: {
+          status: false,
+          title: "未定义",
+        },
+      },
+      //搜索
+      formList: [
+        {
+          prop: "name",
+          placeholder: "请输入活动名称",
+        },
+      ],
+      formData: {
+        name: "",
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "活动名称",
+          prop: "name",
+          hidden: true,
+        },
+        // {
+        //   label: "活动类型",
+        //   prop: "nickname",
+        //   hidden: true,
+        // },
+        {
+          label: "模板",
+          prop: "posterTempName",
+          hidden: true,
+        },
+        {
+          label: "活动开始时间",
+          prop: "startTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "活动结束时间",
+          prop: "endTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "创建人",
+          prop: "createBy",
+          hidden: true,
+        },
+        {
+          label: "创建时间",
+          prop: "startTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "状态",
+          prop: "status",
+          hidden: true,
+          scope: "isOptions",
+          options: [
+            {
+              label: "启用",
+              value: 1,
+            },
+            {
+              label: "禁用",
+              value: 0,
+            },
+          ],
+        },
+        {
+          label: "海报",
+          prop: "idCard",
+          scope: "openBox",
+          hidden: true,
+        },
+        {
+          label: "备注",
+          prop: "remark",
+          hidden: true,
+        },
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+      pageSize: 10, //每页多少条数据
+      currentPage: 1, //当前页码
+    };
+  },
+  mounted() {
+    this.search();
+  },
+  methods: {
+    search(int) {
+      this.loading = true;
+      if (int === 1) {
+        this.formData.pageNum = 1;
+      }
+      if (int === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+          name: "",
+        };
+      }
+      getActList(this.formData)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    init() {
+      this.search(2);
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+    editClick(e, status) {
+      this.$router.push({
+        name: "ActivityInfo",
+        query: {
+          id: e.distributionId,
+          status: status ? "edit" : "info",
+        },
+      });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.el-button {
+  border-radius: 8px;
+}
+/deep/.el-dialog {
+  border-radius: 8px;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+.imgBox {
+  width: 100%;
+  // height: 210px;
+  border: 1px solid #e2e2e2;
+  border-radius: 8px;
+  padding: 8px 8px 3px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  .imgLabel {
+    flex: 1;
+    width: 100%;
+    border: 1px dotted #e2e2e2;
+    color: #999;
+    font-size: 14px;
+    cursor: pointer;
+    border-radius: 8px;
+    .msPhoto {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      max-width: 100%;
+      max-height: 270px;
+      img {
+        max-width: 100%;
+        max-height: 270px;
+      }
+    }
+    .imgbbx {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      width: 100%;
+      height: 100%;
+      i {
+        font-weight: bold;
+        margin: 14px 0;
+        font-size: 24px;
+      }
+    }
+  }
+  p {
+    margin: 5px 0px;
+  }
+}
+</style>

+ 0 - 19
src/views/salesman/commission.vue

@@ -1,19 +0,0 @@
-<template>
-  <div>commission</div>
-</template>
-
-<script>
-export default {
-  name: "commission",
-
-  data() {
-    return {};
-  },
-
-  mounted() {},
-
-  methods: {},
-};
-</script>
-
-<style lang="scss" scoped></style>

+ 14 - 3
src/views/salesman/actList.vue → src/views/salesman/commission/index.vue

@@ -1,18 +1,26 @@
 <template>
   <div id="registeredUser">
-    <search-box-new
+    <!-- <search-box-new
       ref="searchBox"
       :formData="formData"
       :formList="formList"
       @search="search"
       @init="init"
-    />
+    /> -->
     <table-list
       :tableSets="tableSet"
       :tableData="tableData"
       :navText="navText"
       :loading="loading"
     >
+      <template slot="customize">
+        <el-button size="medium" @click="handelBatch(1)" type="primary"
+          >申请提现</el-button
+        >
+        <el-button size="medium" @click="handelBatch(0)" type="primary"
+          >提现记录</el-button
+        >
+      </template>
       <template slot="btn" slot-scope="props">
         <el-button type="text">详情</el-button>
       </template>
@@ -24,6 +32,7 @@
       @handleSizeChange="handleSizeChange"
       @handleCurrentChange="handleCurrentChange"
     />
+    <withd-dialog :dialogVisible.sync="dialogVisible"></withd-dialog>
   </div>
 </template>
 
@@ -31,9 +40,10 @@
 import searchBoxNew from "@/components/searchBoxNew";
 import tableList from "@/components/tableList";
 import pagination from "@/components/pagination";
+import withdDialog from "./withdDialog.vue";
 export default {
   name: "RegisteredUser",
-  components: { searchBoxNew, tableList, pagination },
+  components: { searchBoxNew, tableList, pagination, withdDialog },
   data() {
     return {
       loading: false, //当前表单加载是否加载动画
@@ -120,6 +130,7 @@ export default {
       total: 0, //一共多少条
       pageSize: 10, //每页多少条数据
       currentPage: 1, //当前页码
+      dialogVisible: true,
     };
   },
   mounted() {

+ 114 - 0
src/views/salesman/commission/withdDialog.vue

@@ -0,0 +1,114 @@
+<template>
+  <Base-dialog
+    title="申请提现"
+    :disabledBtn="disabledBtn"
+    :isShow.sync="isShow"
+    @submit="submitForm"
+    @close="close"
+  >
+    <el-form :inline="true" :model="form" :rules="rules" ref="form">
+      <el-form-item label="提现金额:">
+        <el-input v-model="form.money" placeholder="请输入提现金额"> </el-input>
+      </el-form-item>
+    </el-form>
+    <div class="withd-tips">
+      提现注意事项:
+      <p>1.当佣金被结算时有一定的冻结期,被解冻的佣金方可提现</p>
+      <p>2.微信打款当日单笔金额最多500元,当日最多20000元</p>
+      <p>3.通常在1-3个工作日内可到账</p>
+    </div>
+  </Base-dialog>
+</template>
+
+<script>
+export default {
+  props: {
+    dialogVisible: {
+      type: Boolean,
+      default: false,
+    },
+    disabledBtn: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  data() {
+    return {
+      msgTitle: [
+        { label: "学习拍照异常", value: 1 },
+        {
+          label: "学习拍照太黑无法识别人像,请确保拍照光线充足并拍到全脸",
+          value: 2,
+        },
+        {
+          label: "学习拍照太模糊无法识别人像,请确保拍照光线充足并拍到全脸",
+          value: 3,
+        },
+        {
+          label: "学习拍照人像不全无法识别,请确保拍照光线充足并拍到全脸",
+          value: 4,
+        },
+      ],
+      form: {
+        money: 0,
+      },
+      rules: {
+        name: [
+          { required: true, message: "请输入活动名称", trigger: "blur" },
+          { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  methods: {
+    submitForm() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    uploadText(msg) {
+      this.formData.cheating_reason = msg;
+    },
+    close() {
+      this.isShow = false;
+    },
+  },
+  computed: {
+    isShow: {
+      get() {
+        return this.dialogVisible;
+      },
+      set(val) {
+        this.$emit("update:dialogVisible", false);
+      },
+    },
+  },
+  watch: {
+    dialogVisible(val) {
+      if (val === false) {
+        this.uploadText("");
+      } else {
+        this.$nextTick(() => {
+          this.$refs.formData.clearValidate();
+        });
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.input-suffix {
+  display: flex;
+  align-items: center;
+}
+.withd-tips {
+  margin-top: 20px;
+  line-height: 10px;
+  color: #999;
+}
+</style>

+ 166 - 0
src/views/salesman/person/index.vue

@@ -0,0 +1,166 @@
+<template>
+  <div class="sales-box">
+    <el-form
+      label-position="right"
+      label-width="120px"
+      :model="listData"
+      ref="listData"
+    >
+      <el-form-item
+        v-for="(items, indexs) in listitem"
+        :key="indexs"
+        :label="items.label"
+        :prop="items.prop"
+      >
+        <div v-if="items.scope === 'header_img'" class="header_img">
+          <el-image
+            class="imageStyBoxShow"
+            :src="
+              listData[items.prop]
+                ? $methodsTools.splitImgHost(listData[items.prop])
+                : defaultHead
+            "
+            :preview-src-list="[
+              $methodsTools.splitImgHost(listData[items.prop]),
+            ]"
+          >
+          </el-image>
+          <label for="imgs"
+            ><i class="btns">{{
+              listData[items.prop] ? "更换头像" : "上传头像"
+            }}</i></label
+          >
+          <input
+            id="imgs"
+            type="file"
+            style="display: none"
+            @change="uploadImg"
+          />
+        </div>
+        <!-- <el-input v-else v-model="listData[items.prop]"></el-input> -->
+        <div v-else>{{ listData[items.prop] }}</div>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { getSellerInfo } from "@/api/salesman/user";
+export default {
+  data() {
+    return {
+      // 弹窗字段
+      listitem: [
+        {
+          label: " ",
+          prop: "avatar",
+          scope: "header_img",
+        },
+        {
+          label: "姓名",
+          prop: "realname",
+        },
+        {
+          label: "手机号码",
+          prop: "telphone",
+        },
+        {
+          label: "身份证号",
+          prop: "idCard",
+        },
+        {
+          label: "总佣金",
+          prop: "realname",
+        },
+        {
+          label: "已提现",
+          prop: "telphone",
+        },
+        {
+          label: "可提现",
+          prop: "idCard",
+        },
+      ],
+      //   弹窗数据
+      listData: {
+        realname: "",
+        telphone: "",
+        idCard: "",
+        status: 1,
+      },
+      defaultHead: require("../../../assets/images/defhead.png"),
+    };
+  },
+  methods: {
+    uploadImg(e) {
+      var file = e.target.files[0];
+      if (file === undefined) {
+        e.target.value = "";
+        return;
+      }
+      if (file.size > 0.3 * 1024 * 1024) {
+        this.$message.warning("图片不得大于300kb");
+        e.target.value = "";
+        return;
+      }
+      var type = e.target.value.toLowerCase().split(".").splice(-1);
+      if (type[0] != "jpg" && type[0] != "png" && type[0] != "jpeg") {
+        this.$message.warning("上传格式需为:.jpg/.png/.jpeg");
+        e.target.value = "";
+        return;
+      }
+      this.$upload
+        .upload(file, 0)
+        .then((res) => {
+          this.$set(this.listData, "avatar", res);
+          this.$refs["listData"].validateField("avatar");
+        })
+        .finally(() => {
+          e.target.value = "";
+        });
+    },
+    getSellerInfo() {
+      getSellerInfo().then((res) => {
+        console.log(res);
+      });
+    },
+  },
+  created() {
+    this.getSellerInfo();
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.sales-box {
+  width: 500px;
+  padding: 40px;
+  /deep/ {
+    .el-form-item {
+      margin-bottom: 30px;
+    }
+  }
+}
+.header_img {
+  display: flex;
+  align-items: center;
+  margin-left: 40px;
+  & > .imageStyBoxShow {
+    border-radius: 50%;
+    overflow: hidden;
+    width: 80px;
+    height: 80px;
+    margin-right: 18px;
+    border: 1px solid #999;
+  }
+  .btns {
+    border: 1px solid #333;
+    color: #333;
+    padding: 4px 6px;
+    font-style: normal;
+    border-radius: 8px;
+    cursor: pointer;
+    user-select: none;
+  }
+}
+</style>

+ 0 - 18
src/views/salesman/personInfo.vue

@@ -1,18 +0,0 @@
-<template>
-  <div>person</div>
-</template>
-
-<script>
-export default {
-  name: "person",
-  data() {
-    return {};
-  },
-
-  mounted() {},
-
-  methods: {},
-};
-</script>
-
-<style lang="scss" scoped></style>

+ 29 - 0
src/views/salesman/withdrawal/record.vue

@@ -0,0 +1,29 @@
+<template>
+    <div>
+        111
+    </div>
+</template>
+
+<script>
+export default {
+    name: 'SaasEntrepotAdminRecord',
+
+    data() {
+        return {
+            
+        };
+    },
+
+    mounted() {
+        
+    },
+
+    methods: {
+        
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 1 - 0
src/views/systemSettings/menu/index.vue

@@ -465,6 +465,7 @@ export default {
     submitForm: function () {
       this.$refs["form"].validate((valid) => {
         if (valid) {
+          this.form.tenantId = undefined
           if (this.form.menuId != undefined) {
             // if(this.form.component.length === 0){
             //   this.form.component = ''