Преглед изворни кода

Merge branch 'test' into 'master'

Test

See merge request quanshu/mp-ui-pc!368
Evan пре 2 година
родитељ
комит
665cf49377

+ 22 - 0
src/api/admin/creator.js

@@ -0,0 +1,22 @@
+import request from '@/utils/request'
+
+
+// 查询创客列表
+export function listCreator(urlParams, data) {
+  return request({
+    url: '/api/v1/mp/admin/channel/apply/list',
+    method: 'post',
+    data: data,
+    urlParams: urlParams
+  })
+}
+
+//编辑渠道用户状态信息
+export function updateCreatorStatus(data) {
+  return request({
+    url: `/api/v1/mp/admin/channel/apply/update/${data}`,
+    method: 'post',
+  })
+}
+
+

+ 3 - 0
src/views/business/channel/components/Detail.vue

@@ -94,6 +94,9 @@
          <el-form-item label="佣金" style="width: 50%;margin-bottom:5px;" >
          <el-form-item label="佣金" style="width: 50%;margin-bottom:5px;" >
            <span :class="loading?'el-icon-loading':''"></span>¥{{detail.operData && detail.operData.commAmt/100}}
            <span :class="loading?'el-icon-loading':''"></span>¥{{detail.operData && detail.operData.commAmt/100}}
          </el-form-item>
          </el-form-item>
+         <el-form-item label="账户余额" style="width: 50%;margin-bottom:5px;" >
+             <span :class="loading?'el-icon-loading':''"></span>¥{{detail.money / 100}}
+          </el-form-item>
      </flexbox>
      </flexbox>
    </el-form>
    </el-form>
    <div slot="footer" class="dialog-footer">
    <div slot="footer" class="dialog-footer">

+ 1 - 1
src/views/business/channel/index.vue

@@ -148,7 +148,7 @@
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column label="状态" key="statusV">
           <el-table-column label="状态" key="statusV">
-           <template slot-scope="{ row, column }">
+           <template slot-scope="{ row }">
              <el-tag :type="JSON.parse(row.status).value == '1' ? 'success' : 'info'">{{ JSON.parse(row.status).desc }}</el-tag>
              <el-tag :type="JSON.parse(row.status).value == '1' ? 'success' : 'info'">{{ JSON.parse(row.status).desc }}</el-tag>
            </template>
            </template>
           </el-table-column>
           </el-table-column>

+ 16 - 2
src/views/business/coupon/add.vue

@@ -13,6 +13,13 @@
               <el-radio :label="1">盲票购买</el-radio>
               <el-radio :label="1">盲票购买</el-radio>
             </el-radio-group>
             </el-radio-group>
           </el-form-item>
           </el-form-item>
+          <el-form-item v-if="addData.type === 1" label="是否新用户注册发放:">
+            <el-switch :disabled="readonly"
+              v-model="addData.isNewUserCoupon"
+              :active-value="1"
+              :inactive-value="0"
+            />
+          </el-form-item>
           <el-form-item label="券金额:" prop="discount">
           <el-form-item label="券金额:" prop="discount">
             <el-input v-model.number="addData.discount" :readonly="readonly" type="number" :min="0" placeholder="请输入券券金额">
             <el-input v-model.number="addData.discount" :readonly="readonly" type="number" :min="0" placeholder="请输入券券金额">
               <template slot="append">元</template>
               <template slot="append">元</template>
@@ -32,6 +39,7 @@
             </el-input>
             </el-input>
             <div class="tip">若门店承担100%,则核销后公司不需要打款给门店,依此类推。</div>
             <div class="tip">若门店承担100%,则核销后公司不需要打款给门店,依此类推。</div>
           </el-form-item>
           </el-form-item>
+          
           <el-form-item label="最低消费金额:" prop="minOrderAmt">
           <el-form-item label="最低消费金额:" prop="minOrderAmt">
             <el-input v-model="addData.minOrderAmt" :readonly="readonly" type="number" placeholder="请输入可使用的最低消费金额">
             <el-input v-model="addData.minOrderAmt" :readonly="readonly" type="number" placeholder="请输入可使用的最低消费金额">
               <template slot="append">元</template>
               <template slot="append">元</template>
@@ -52,6 +60,9 @@
               <template slot="append">天有效</template>
               <template slot="append">天有效</template>
             </el-input> -->
             </el-input> -->
           </el-form-item>
           </el-form-item>
+          <el-form-item label="已使用数量:" v-if="readonly || addData.status === 'on' || addData.status === 'off'">
+            <div style="color:#606266">{{ addData.usedQty }}</div>
+          </el-form-item>
           <el-form-item label="使用说明:" prop="description">
           <el-form-item label="使用说明:" prop="description">
             <el-input type="textarea" rows="4" :readonly="readonly" v-model="addData.description" placeholder="请输入使用说明 对用户可见"/>
             <el-input type="textarea" rows="4" :readonly="readonly" v-model="addData.description" placeholder="请输入使用说明 对用户可见"/>
           </el-form-item>
           </el-form-item>
@@ -169,6 +180,7 @@ export default {
       addData: {
       addData: {
         ticketBoxList:[],
         ticketBoxList:[],
         useArea: 5,
         useArea: 5,
+        isNewUserCoupon: 0,
         dueDays: 90,
         dueDays: 90,
         type: 2,
         type: 2,
         channelSharedRate:0,
         channelSharedRate:0,
@@ -211,14 +223,15 @@ export default {
   created() {
   created() {
     if (this.id) {
     if (this.id) {
       getCouponDetail(this.id).then(res => {
       getCouponDetail(this.id).then(res => {
-        const { couponId, title, quantity, discount, channelSharedRate, minOrderAmt, dueDays, description, ticketBoxList, channelList, status } = res.data
+        const { couponId, title,isNewUserCoupon, quantity, discount, channelSharedRate, minOrderAmt, dueDays, description,usedQty, ticketBoxList, channelList, status } = res.data
         this.addData = {
         this.addData = {
           type: JSON.parse(res.data.type).value,
           type: JSON.parse(res.data.type).value,
           useArea: JSON.parse(res.data.useArea).value,
           useArea: JSON.parse(res.data.useArea).value,
+          isNewUserCoupon: isNewUserCoupon ? 1 : 0 ,
           status: JSON.parse(res.data.status).value,
           status: JSON.parse(res.data.status).value,
           discount: accDiv(discount, 100),
           discount: accDiv(discount, 100),
           minOrderAmt: accDiv(minOrderAmt, 100),
           minOrderAmt: accDiv(minOrderAmt, 100),
-          couponId, title, quantity, channelSharedRate, dueDays, description, ticketBoxList
+          couponId, title, quantity, channelSharedRate, dueDays, description, ticketBoxList,usedQty
         }
         }
         this.channelList = channelList
         this.channelList = channelList
       })
       })
@@ -249,6 +262,7 @@ export default {
           return
           return
         }
         }
       } else if (this.addData.type == 2) {
       } else if (this.addData.type == 2) {
+        this.addData.isNewUserCoupon = null
         if(this.addData.useArea !== 2 && this.addData.useArea !== 0 && this.addData.useArea !== 1 ) {
         if(this.addData.useArea !== 2 && this.addData.useArea !== 0 && this.addData.useArea !== 1 ) {
           this.$message({
           this.$message({
             message: '请选择使用范围!',
             message: '请选择使用范围!',

+ 7 - 0
src/views/business/coupon/index.vue

@@ -16,6 +16,13 @@
           <el-option label="门店消费" :value="2" />
           <el-option label="门店消费" :value="2" />
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
+      <el-form-item label="是否新用户注册发放">
+        <el-select v-model="queryParams.isNewUserCoupon" placeholder="请选择" clearable @change="queryParams.pageNum = 1;getList()">
+          <el-option label="全部" value="" />
+          <el-option label="是" :value="1" />
+          <el-option label="否" :value="0" />
+        </el-select>
+      </el-form-item>
       <el-form-item label="状态">
       <el-form-item label="状态">
         <el-select v-model="queryParams.status" placeholder="请选择券状态" clearable @change="queryParams.pageNum = 1;getList()">
         <el-select v-model="queryParams.status" placeholder="请选择券状态" clearable @change="queryParams.pageNum = 1;getList()">
           <el-option label="全部" value="" />
           <el-option label="全部" value="" />

+ 190 - 0
src/views/business/creator/index.vue

@@ -0,0 +1,190 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <!--用户数据-->
+      <el-col :span="24" :xs="24">
+        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch">
+          <el-form-item label="申请人名称" prop="name">
+            <el-input v-model="queryParams.name" placeholder="请输入申请人名称" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
+          </el-form-item>
+          <el-form-item label="手机号码" prop="phone">
+            <el-input v-model="queryParams.phone" placeholder="请输入手机号码" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
+          </el-form-item>
+          <el-form-item label="状态" prop="status">
+            <el-select v-model="queryParams.status" placeholder="请选择" clearable size="small" @change="handleQuery()" style="width: 200px;margin-right: 1px;">
+              <el-option label="全部" value="" />
+              <el-option label="已联系" :value="1" />
+              <el-option label="未联系" :value="0" />
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+
+        <el-row :gutter="10" class="mb8">
+          <!-- <el-col :span="1.5">
+            <el-button
+              type="primary"
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['business:craetor:add']"
+            >添加</el-button>
+          </el-col> -->
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table v-loading="loading" :data="channelList">
+          <el-table-column label="编号" prop="id" width="100px" />
+          <el-table-column label="申请人姓名" prop="name" show-overflow-tooltip />
+          <el-table-column label="手机号" prop="phone" />
+          <el-table-column label="所在地区">
+            <template slot-scope="{ row }">
+              {{ row.province ? row.province + '/' + row.city + '/' + row.area : '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column label="行业资源" prop="resource">
+            <template slot-scope="{ row }">
+              <span v-if="row.resource">
+                <span v-if="row.resource.length > 19">
+                  <el-popover placement="top-start" width="400" trigger="hover" :content="row.resource">
+                    <span slot="reference">{{row.resource.slice(0, 19).concat("...")}}</span>
+                  </el-popover>
+                </span>
+                <span v-else>
+                  {{ row.resource }}
+                </span>
+              </span>
+              <span v-else>-</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="申请时间" prop="createdTime">
+            <template slot-scope="{ row }">
+              {{ parseTime(row.createdTime) }}
+            </template>
+          </el-table-column>
+
+          <el-table-column label="状态" key="status">
+            <template slot-scope="{ row }">
+              <el-tag v-if="row.status == 0" type="success">未联系</el-tag>
+              <el-tag v-else type="info">已联系</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <span v-if="scope.row.status == 0">
+                <el-button size="mini" type="text" @click="handleStatusChange(scope.row)" v-hasPermi="['business:apply:update']">
+                  <span>标记为已联系</span>
+                </el-button>
+              </span>
+              <span v-else>-</span>
+
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination v-show="total>0" :total="total" :page.sync="pageParams.pageNum" :limit.sync="pageParams.pageSize" @pagination="getList" />
+      </el-col>
+    </el-row>
+
+  </div>
+</template>
+
+<script>
+import { listCreator, updateCreatorStatus } from "@/api/admin/creator";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import Spec from '../goods/components/spec.vue';
+export default {
+  name: "Channel",
+  components: {
+    Spec
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      channelList: [],
+      // 查询参数
+      queryParams: {
+        name: "",
+        phone: "",
+        status: "",
+      },
+      pageParams: {
+        pageNum: 1,
+        pageSize: 10,
+        // orderByColumn: 'id',
+        // isAsc: 'desc',
+
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询用户列表 */
+    getList() {
+      this.loading = true;
+      listCreator('pageNum=' + this.pageParams.pageNum + '&pageSize=' + this.pageParams.pageSize + '&', this.queryParams).then(response => {
+        this.channelList = response.rows;
+        this.channelList.forEach(item => {
+          item.statusV = JSON.parse(item.status).value + ""
+        })
+        this.total = response.total;
+        this.loading = false;
+      }
+      );
+    },
+    // //切换排序
+    // sortChannelId(row){
+    //   if (row){
+    //     let prop =  row.prop == 'commRate' ? ('t1.'+ row.prop) : row.prop;
+    //     this.pageParams.orderByColumn = prop
+    //     this.pageParams.isAsc = row.order=='ascending'?"asc":"desc";
+    //     this.getList()
+    //   }
+    // },
+
+    // 状态修改
+    handleStatusChange(row) {
+      this.$confirm('确认标记"' + row.name + '"为已联系吗?', "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return updateCreatorStatus(row.id);
+      }).then(() => {
+        this.msgSuccess("标记成功");
+        this.getList();
+      }).catch(function () {
+      });
+    },
+
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.pageParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams = {
+        name: "",
+        phone: "",
+        status: "",
+      },
+        this.resetForm("queryForm");
+      this.handleQuery();
+    },
+  }
+};
+</script>
+<style lang="sass" scoped>
+</style>

+ 20 - 23
src/views/business/salesite/components/AddCreate.vue

@@ -1,24 +1,15 @@
 <template>
 <template>
-  <el-dialog
-    title="编辑门店名称"
-    :visible.sync="dialogVisible"
-    width="750px"
-    :append-to-body="true"
-    :before-close="close"
-    :destroy-on-close="true"
-    :close-on-click-modal="false"
-  >
-    <el-form
-      ref="form"
-      :model="form"
-      :rules="rules"
-      label-width="120px"
-      style="max-height: 375px;overflow: auto;"
-    >
+  <el-dialog title="编辑门店名称" :visible.sync="dialogVisible" width="750px" :append-to-body="true" :before-close="close" :destroy-on-close="true" :close-on-click-modal="false">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px" style="max-height: 375px;overflow: auto;">
       <el-form-item label="门店名称" prop="name" style="width: 60%;margin: 40px 0">
       <el-form-item label="门店名称" prop="name" style="width: 60%;margin: 40px 0">
-          <el-input v-model="form.name" placeholder="例如xxxx店, 对用户可见" />
-        </el-form-item>
-      </el-form>
+        <el-input v-model="form.name" placeholder="例如xxxx店, 对用户可见" />
+      </el-form-item>
+      <el-form-item label="关闭分佣:">
+        <el-switch v-model="form.commFlag" :active-value="1" :inactive-value="0" />
+        <div class="tip">开启后,购买线上票不分佣(渠道,门店,推广员)</div>
+      </el-form-item>
+    </el-form>
+
     <div slot="footer" class="dialog-footer">
     <div slot="footer" class="dialog-footer">
       <el-button @click="close">取 消</el-button>
       <el-button @click="close">取 消</el-button>
       <el-button type="primary" :disabled="loading" @click="saveClick">确 定</el-button>
       <el-button type="primary" :disabled="loading" @click="saveClick">确 定</el-button>
@@ -40,7 +31,8 @@ export default {
       loading: false,
       loading: false,
       // 表单参数
       // 表单参数
       form: {
       form: {
-        name:"",
+        name: "",
+        commFlag: 0,
       },
       },
       // 表单校验
       // 表单校验
       rules: {
       rules: {
@@ -63,13 +55,14 @@ export default {
       this.loading = true;
       this.loading = true;
       getSaleSiteDetail(this.editId).then(res => {
       getSaleSiteDetail(this.editId).then(res => {
         this.form.name = res.data.name
         this.form.name = res.data.name
+        this.form.commFlag = res.data.commFlag
         this.loading = false
         this.loading = false
       }).catch(() => {
       }).catch(() => {
-          this.loading = false;
-        });
+        this.loading = false;
+      });
     },
     },
     //确定修改
     //确定修改
-    saveClick(){
+    saveClick() {
       this.loading = true
       this.loading = true
       this.$refs.form.validate(valid => {
       this.$refs.form.validate(valid => {
         if (valid) {
         if (valid) {
@@ -104,6 +97,10 @@ export default {
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
+.tip {
+  font-size: 12px;
+  color: #999;
+}
 .tag {
 .tag {
   margin-right: 15px;
   margin-right: 15px;
   width: 90px;
   width: 90px;

+ 8 - 0
src/views/business/salesite/components/Detail.vue

@@ -121,6 +121,14 @@
             <span :class="loading?'el-icon-loading':''"></span>¥{{detail.operData && detail.operData.commAmt/100}}
             <span :class="loading?'el-icon-loading':''"></span>¥{{detail.operData && detail.operData.commAmt/100}}
           </el-form-item>
           </el-form-item>
      </flexbox>
      </flexbox>
+     <flexbox
+         class="ygp-form-items"
+         align="flex-start"
+         justify="flex-start">
+          <el-form-item label="账户余额" style="width: 50%;margin-bottom:5px;" >
+             <span :class="loading?'el-icon-loading':''"></span>¥{{detail.money / 100}}
+          </el-form-item>
+     </flexbox>
    </el-form>
    </el-form>
    <div slot="footer" class="dialog-footer">
    <div slot="footer" class="dialog-footer">
      <el-button @click="close">关 闭</el-button>
      <el-button @click="close">关 闭</el-button>

+ 4 - 4
src/views/business/salesite/index.vue

@@ -18,7 +18,7 @@
           @change="handleQuery"
           @change="handleQuery"
         >
         >
           <el-option
           <el-option
-            v-for="(item, index) in channelList"
+            v-for="(item) in channelList"
             :key="item.channelId"
             :key="item.channelId"
             :label="item.name"
             :label="item.name"
             :value="item.channelId">
             :value="item.channelId">
@@ -125,7 +125,7 @@
       </el-table-column>
       </el-table-column>
       <el-table-column label="手机号码"  prop="mobile" width="120px"/>
       <el-table-column label="手机号码"  prop="mobile" width="120px"/>
       <el-table-column label="佣金比例" sortable="custom" prop="commRate" width="100px">
       <el-table-column label="佣金比例" sortable="custom" prop="commRate" width="100px">
-        <template slot-scope="{ row, column }">
+        <template slot-scope="{ row }">
            <span>{{row.commRate}}%</span>
            <span>{{row.commRate}}%</span>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
@@ -140,13 +140,13 @@
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column label="认证状态" prop="certifyStatus" >
       <el-table-column label="认证状态" prop="certifyStatus" >
-        <template slot-scope="{ row, column }">
+        <template slot-scope="{ row }">
              <span v-if="getValue(row.certifyStatus) == 'y'" style="color: blue;"> {{getDesc(row.certifyStatus)}}</span>
              <span v-if="getValue(row.certifyStatus) == 'y'" style="color: blue;"> {{getDesc(row.certifyStatus)}}</span>
              <span v-if="getValue(row.certifyStatus) == 'n'" style="color: red;"> {{getDesc(row.certifyStatus)}}</span>
              <span v-if="getValue(row.certifyStatus) == 'n'" style="color: red;"> {{getDesc(row.certifyStatus)}}</span>
          </template>
          </template>
       </el-table-column>
       </el-table-column>
       <el-table-column label="状态" key="statusV">
       <el-table-column label="状态" key="statusV">
-        <template slot-scope="{ row, column }">
+        <template slot-scope="{ row }">
             <el-tag :type="JSON.parse(row.status).value == '1' ? 'success' : 'info'">{{ JSON.parse(row.status).desc }}</el-tag>
             <el-tag :type="JSON.parse(row.status).value == '1' ? 'success' : 'info'">{{ JSON.parse(row.status).desc }}</el-tag>
         </template>
         </template>
         <!-- <template slot-scope="scope">
         <!-- <template slot-scope="scope">