فهرست منبع

Merge branch 'dev1.2' of http://192.168.3.207:10080/group3/qmx_page_admin into dev1.2

xgwangman 5 سال پیش
والد
کامیت
b4dab9b66a
3فایلهای تغییر یافته به همراه520 افزوده شده و 2 حذف شده
  1. 7 0
      .env
  2. 2 2
      README.md
  3. 511 0
      src/views/sales/partnerDetail.vue

+ 7 - 0
.env

@@ -0,0 +1,7 @@
+VUE_APP_ADMIN_TOKEN_NAME = 'admin_token'
+VUE_APP_API_URL_PREFIX = '/api/admin/'
+VUE_APP_API_ACTION_NAME = '_action'
+VUE_APP_API_TOKEN_NAME = '_token'
+VUE_APP_INDEX_URL = '/'
+VUE_APP_SITE_NAME = '管理平台'
+VUE_APP_SITE_TITLE_TPL = '{title}'

+ 2 - 2
README.md

@@ -14,7 +14,6 @@ npm run serve
 ```
 npm run build
 ```
-
 ### Lints and fixes files
 ```
 npm run lint
@@ -23,4 +22,5 @@ npm run lint
 ### Customize configuration
 See [Configuration Reference](https://cli.vuejs.org/config/).
 
-v1.2 pc端商机管理增加数据导出限额
+v1.2 
+pc端商机管理增加数据导出限额

+ 511 - 0
src/views/sales/partnerDetail.vue

@@ -0,0 +1,511 @@
+<template>
+    <div class="partner-detail">
+        <h1>剑鱼伙伴</h1>
+        <Row class="par-row">
+            <Col style="float:left;width: 20%" class="top-col">
+                <Card>
+                    <div slot="title" class="top-tit">
+                        <div class="avatr">
+                            <img :src="parDetail.headImg" v-if="parDetail.headImg">
+                            <img src="../../assets/images/moren.png" v-else>
+                        </div>
+                        <div class="names">{{parDetail.name}}</div>
+                        <div class="msg1"><span>{{parDetail.phone}}</span></div>
+                        <div class="msg1 msg2"><span>{{parDetail.email}}</span></div>
+                    </div>
+                    <div class="bot-tit">
+                        <div class="over-view" @click="tabClick(1)" :class="{active:infor === 1}"><span>概览</span></div>
+                        <div class="basic" @click="tabClick(2)" :class="{active:infor === 2}"><span>基本信息<i :class="parDetail.auth_status | authColor">{{parDetail.auth_status | authStatus}}</i></span></div>
+                        <div class="fund" @click="tabClick(3)" :class="{active:infor === 3}"><span>资金明细</span></div>
+                    </div>
+                </Card>
+            </Col>
+            <Col style="float:left;width: 77.5%">
+                <Card v-if="infor == 1">
+                    <div slot="title" class="right-fund">概览</div>
+                    <div class="msg-card">
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/riqi.png" />加入日期</div>
+                                <div class="time2">{{parDetail.createtime}}</div>
+                            </div>
+                        </Card>
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/riqi.png" />最后使用日期</div>
+                                <div class="time2">{{parDetail.lastlogintime}}</div>
+                            </div>
+                        </Card>
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/yongjin.png" />累计销售额</div>
+                                <div class="time2">¥{{(parDetail.dis_sales/100).toLocaleString('en-US')}}</div>
+                            </div>
+                        </Card>
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/dingdan.png" />累计销售订单</div>
+                                <div class="time2">{{parDetail.dis_order}}</div>
+                            </div>
+                        </Card>
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/yongjin.png" />累计佣金</div>
+                                <div class="time2">¥{{(parDetail.dis_commission/100).toLocaleString('en-US')}}</div>
+                            </div>
+                        </Card>
+                    </div>
+                    <Table 
+                        size="large"
+                        ellipsis 
+                        :loading="loading" 
+                        :columns="column1" 
+                        :data="datas1" 
+                        stripe 
+                        style="margin-top: 30px"
+                        v-if="infor == 1"
+                    ></Table>
+                </Card>
+                <Card v-else-if="infor == 2">
+                    <div slot="title" class="right-fund">基本信息</div>
+                    <div class="infor-card">
+                        <div class="con" v-if="types == '2'">
+                            <span>企业名称</span>
+                            <span class="spa2">{{parDetail.name}}</span>
+                        </div>
+                        <div class="con" v-else>
+                            <span>用户名</span>
+                            <span class="spa2">{{parDetail.name}}</span>
+                        </div>
+                        <Divider />
+                        <div class="con">
+                            <span>手机</span>
+                            <span class="spa2">{{parDetail.phone}}</span>
+                        </div>
+                        <Divider />
+                        <div class="con">
+                            <span>邮箱</span>
+                            <span class="spa2">{{parDetail.email}}</span>
+                        </div>
+                        <Divider />
+                        <div class="con">
+                            <span>类型</span>
+                            <span class="spa2">{{parDetail.type == '1'?'个人':'企业'}}</span>
+                        </div>
+                        <Divider />
+                        <div class="con">
+                            <span>渠道</span>
+                            <span class="spa2">{{parDetail.channel}}</span>
+                        </div>
+                        <Divider />
+                        <div class="con" v-if="types == '2'">
+                            <span class="spa1">营业执照</span>
+                            <img class="imgs" @click="fruit" :src="parDetail.license"/>
+                        </div>
+                        <Divider v-if="types == '2'" />
+                    </div>
+                </Card>
+                <Card v-else>
+                    <div slot="title" class="right-fund">资金明细</div>
+                    <Table 
+                        size="large"
+                        ellipsis 
+                        :loading="loading" 
+                        :columns="column2" 
+                        :data="datas2" 
+                        stripe 
+                        style="margin-top: 10px"
+                        v-if="infor == 3"
+                    >
+                        <template slot-scope="{ row }" slot="_code">
+                            <div @click="rowsClick(row)">{{row.code}}</div>
+                        </template>
+                    </Table>
+                </Card>
+            </Col>
+        </Row>
+        <Modal v-model="preview" footer-hide :styles="{top:0}" :width="800" class-name="par-model">
+            <img :src="parDetail.license">
+        </Modal>
+    </div>
+</template>
+
+<script>
+import { ChangeDate } from '../../assets/js/date'
+export default {
+    created () {
+        let rout = this.$route.query
+        this.$request('/sales/partnerList/partnerDetail').data({// 基本信息
+            uid: rout.uid,
+            id: rout.id
+        }).success((r) => {
+            this.parDetail = r.data;
+            this.parDetail.createtime = ChangeDate(this.parDetail.createtime);
+            this.parDetail.lastlogintime = ChangeDate(this.parDetail.lastlogintime)
+        }).get()
+
+        this.$request('/sales/partnerList/overview').data({// 概览
+            uid: rout.uid,
+            id: rout.id
+        }).success((r) => {
+            this.datas1 = r.data?r.data:[];
+        }).get()
+
+        this.$request('/sales/partnerList/capitalDetails').data({// 资金明细
+            uid: rout.uid
+        }).success((r) => {
+            let atr = [], atr1 = []
+            // 按时间先后排序
+            if (r.data) {
+                r.data.forEach(e => {
+                    atr.push(new Date(e.createtime).getTime())
+                })
+                atr.sort(this.sortNum)
+                atr.forEach((v) => {
+                    r.data.forEach(res => {
+                        let ar = new Date(res.createtime).getTime()
+                        if (ar === v) {
+                            atr1.push(res)
+                        }
+                    })
+                })
+                this.datas2 = atr1
+            }
+        }).get()
+    },
+    methods: {
+        load(val) {
+            this.loading = val
+        },
+        sortNum (a, b) {
+            return b - a
+        },
+        tabClick(index) {
+            this.infor = index
+        },
+        fruit() {
+            this.preview = true
+        },
+        rowsClick (arr) {
+            if (arr.type == '佣金') {
+                const paths = this.$router.resolve({
+                    path: '/order/orderList/orderDetail', 
+                    query:{
+                        id: arr.order_id,
+                        proType: arr.product_name,
+                        par: 1
+                    }})
+                window.open(paths.href,'_blank')
+            } else if (arr.type == '提现') {
+                const paths = this.$router.resolve({
+                    path: '/sales/withdrawList/withdrawDetail', 
+                    query:{
+                        id: arr.id,
+                        uid: arr.uid,
+                        peType: String(arr.ptype),
+                        deType: 'tixian',
+                        par: 1
+                    }})
+                window.open(paths.href,'_blank')
+            } else if (arr.type == '结算') {
+                const paths = this.$router.resolve({
+                    path: '/sales/settleList/settleDetail', 
+                    query:{
+                        id: arr.id,
+                        uid: arr.uid,
+                        deType: 'jiesuan',
+                        par: 1
+                    }})
+                window.open(paths.href,'_blank')
+            }
+        }
+    },
+    filters: {
+        authStatus (val) {
+            if (val == -1) {
+                return '未通过'
+            } else if (val == 0) {
+                return '未认证'
+            } else if (val == 1) {
+                return '已认证'
+            }
+        },
+        authColor (val) {
+            if (val == -1) {
+                return 'color1'
+            } else if (val == 0) {
+                return 'color2'
+            } else if (val == 1) {
+                return 'color3'
+            }
+        },
+    },
+    data () {
+        return {
+            loading: false,
+            parDetail: [],
+            infor: 1,
+            types: this.$route.query.type,
+            preview: false,
+            datas1: [],
+            datas2: [],
+            column1: [
+                  {
+                      title: '产品名称',
+                      key: 'product_name',
+                      align: 'center'
+                  },
+                  {
+                      title: '累计销售额',
+                      key: 'sale_money_sum',
+                      align: 'center',
+                      render: (h, {row}) => {
+                        return h('span','¥' + parseFloat(row.sale_money_sum/100).toLocaleString('en-US'))
+                      }
+                  },
+                  {
+                      title: '累计销售订单',
+                      key: 'count',
+                      align: 'center'
+                  },
+                  {
+                      title: '累计佣金',
+                      key: 'commission_sum',
+                      align: 'center',
+                      render: (h, {row}) => {
+                        return h('span','¥' + parseFloat(row.commission_sum/100).toLocaleString('en-US'))
+                      }
+                  },
+                  {
+                      title: '平均佣金',
+                      key: 'average',
+                      align: 'center',
+                      render: (h, {row}) => {
+                        return h('span','¥' + parseFloat(row.average/100).toLocaleString('en-US'))
+                      }
+                  }
+              ],
+            column2: [
+                  {
+                      title: '订单号',
+                      slot: '_code',
+                      className: 'table-info-money',
+                      align: 'center'
+                  },
+                  {
+                      title: '类型',
+                      key: 'type',
+                      align: 'center'
+                  },
+                  {
+                      title: '时间',
+                      key: 'createtime',
+                      align: 'center'
+                  },
+                  {
+                      title: '金额',
+                      key: 'money',
+                      align: 'center',
+                      render: (h, {row}) => {
+                        return h('span','¥' + parseFloat(row.money/100).toLocaleString('en-US'))
+                      }
+                  }
+              ]
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.partner-detail {
+    .par-row {
+        background:#Fff;
+        padding:20px 0 20px 15px;
+    }
+    h1 {
+        font-size:24px;
+        color:#3f4047;
+        padding: 10px 0 20px 10px;
+    }
+    .top-col {
+        margin-right: 20px;
+        .ivu-card /deep/ {
+            .ivu-card-head {
+                padding: 28px 0;
+            }
+            .ivu-card-body {
+                padding: 0px!important;
+            }
+        }
+    }
+    .top-tit {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        padding: 0 25px;
+        .avatr {
+            width: 80px; 
+            height: 80px; 
+            border: 2px solid #f4f5f8;
+            border-radius: 63px;
+            overflow: hidden;
+            margin: 20px 0 28px 0;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+        }
+        .names {
+            line-height: 23px;
+            font-size: 16px;
+            font-weight: 700;
+            color: #1b1c1e;
+            margin-bottom: 20px;
+        }
+        .msg1 {
+            width: 100%;
+            span {
+                display: block;
+                width: 100%;
+                height: 32px;
+                line-height: 20px;
+                color: #7b7e8a;
+                background: url(../../assets/images/shoujihao.png) no-repeat 6px top; 
+                background-size: 20px 20px;
+                padding-left: 40px;
+                word-break:break-all;
+            }
+        }
+        .msg2 {
+            span {
+                background: url(../../assets/images/youxiang.png) no-repeat 6px top;
+                background-size: 20px 20px;
+            }
+        }
+    }
+    .bot-tit {
+        padding: 20px 0;
+        div {
+            display: flex;
+            justify-content: center;
+            align-content: center;
+            align-items: center;
+            width: 100%!important;
+            height: 55px!important;
+            line-height: 55px!important;
+            color: #6f727d!important;
+            cursor: pointer;
+            &:hover {
+                span {
+                    color: #475962;
+                }
+            }
+            span {
+                width: 100%;
+                background-size: 20px 20px!important;
+                padding-left: 40px;
+                margin: 0 25px;
+            }
+        }
+        .over-view {
+            span {
+                background: url(../../assets/images/gailan.png) no-repeat 6px center;
+            }
+        }
+        .basic {
+            span {
+                background: url(../../assets/images/xinxi.png) no-repeat 6px center; 
+            }
+            i {
+                display: inline-block;
+                width: 60px;
+                color: #70b603;
+                text-align: right;
+            }
+            .color1 {
+                color: #f4516c;
+            }
+            .color2 {
+                color: #ffb822;
+            }
+            .color3 {
+                color: #34bfa3;
+            }
+        }
+        .fund {
+            span {
+                background: url(../../assets/images/mingxi.png) no-repeat 6px center;
+            }
+        }
+        .active {
+            background:rgba(54,163,247, 0.2);
+        }
+    }
+    .right-fund {
+        font-size: 16px;
+        color: #575962;
+    }
+    .msg-card {
+        display: flex;
+        justify-content: center;
+        flex-direction: initial;
+        align-items: center;
+        .ivu-card {
+            overflow:hidden;
+            width: 252px;
+        }
+        .ivu-card:not(:last-child) {
+            margin-right: 20px;
+        }
+        .add-time {
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            font-weight: 700;
+            color: #1b1c1e;
+            .time1 {
+                display: flex;
+                flex-direction: initial;
+                justify-content: center;
+                align-items: center;
+                width: 100%;
+                height: 40px;
+                font-size: 14px;
+                img {
+                    width: 24px;
+                    height: 24px;
+                    margin-right: 8px;
+                }
+            }
+            .time2 {
+                font-size: 18px;
+            }
+        }
+    }
+    .infor-card {
+        margin: 30px auto;
+        width: 500px;
+        .con {
+            padding: 5px 30px;
+            font-size: 15px;
+            span {
+                display: inline-block;
+                width: 50%;
+            }
+            .spa2 {
+                text-align: right;
+                
+            }
+            .spa1 {
+                float: left;
+            }
+            .imgs {
+                float: right;
+                width: 192px;
+                min-height: 197px;
+                margin-bottom: 30px;
+                cursor: pointer;
+            }
+        }
+    }
+}
+</style>