Authored by 邱骏

增加发放优惠券,商家详情,招商人

@@ -30,6 +30,15 @@ class Api { @@ -30,6 +30,15 @@ class Api {
30 }).catch(this.catch); 30 }).catch(this.catch);
31 } 31 }
32 32
  33 + _postForm(url, data, options = {}) {
  34 + if (!PRODUCTION) { //eslint-disable-line
  35 + url += (url.indexOf('?') >= 0 ? '&' : '?') + 'debug=XYZ';
  36 + }
  37 + return util.ajax.post(url, data, options).then(result => {
  38 + return result.data;
  39 + }).catch(this.catch);
  40 + }
  41 +
33 catch({message}) { 42 catch({message}) {
34 iView.Message.destroy(); 43 iView.Message.destroy();
35 iView.Message.warning(message || '接口错误'); 44 iView.Message.warning(message || '接口错误');
@@ -43,7 +52,10 @@ class Api { @@ -43,7 +52,10 @@ class Api {
43 52
44 const params = {}; 53 const params = {};
45 Object.keys(data).forEach(k => { 54 Object.keys(data).forEach(k => {
46 - if (data[k] || data[k] === 0) { 55 + if (k === 'investName') {
  56 + params[k] = data[k] || '';
  57 + } else if (data[k] || data[k] === 0) {
  58 +
47 params[k] = data[k]; 59 params[k] = data[k];
48 } 60 }
49 }); 61 });
@@ -92,17 +92,18 @@ export default { @@ -92,17 +92,18 @@ export default {
92 width: 100 92 width: 100
93 }, { 93 }, {
94 title: '操作', 94 title: '操作',
95 - width: 270,  
96 align: 'center', 95 align: 'center',
97 render: (h, {row}) => { 96 render: (h, {row}) => {
98 return ( 97 return (
99 <div> 98 <div>
100 - <i-button type="success" size="small" onClick={() => this.onEditCoupon(row, true)}>查看详情</i-button>&nbsp; 99 + <i-button type="success" size="small" onClick={() => this.onEditCoupon(row, true)}>查看详情</i-button>
101 {(row.status === '未生效' || row.status === '生效中') ? 100 {(row.status === '未生效' || row.status === '生效中') ?
102 (<i-button type="primary" size="small" onClick={() => this.onEditCoupon(row)}>修改</i-button>) : 101 (<i-button type="primary" size="small" onClick={() => this.onEditCoupon(row)}>修改</i-button>) :
103 void 0} 102 void 0}
104 - &nbsp; 103 +
105 <i-button type="warning" size="small" onClick={() => this.onToRecord(row)}>发放记录</i-button> 104 <i-button type="warning" size="small" onClick={() => this.onToRecord(row)}>发放记录</i-button>
  105 + {(row.status === '未生效' || row.status === '生效中') ?
  106 + (<i-button type="success" size="small" onClick={() => this.onSendCoupon(row)}>发券</i-button>) : void 0}
106 </div> 107 </div>
107 ); 108 );
108 } 109 }
@@ -136,6 +137,14 @@ export default { @@ -136,6 +137,14 @@ export default {
136 } 137 }
137 })}`; 138 })}`;
138 }, 139 },
  140 + onSendCoupon({id, token}) {
  141 + if (id && token) {
  142 + location.href= `send-coupon.html?${qs.stringify({
  143 + id,
  144 + token
  145 + })}`;
  146 + }
  147 + },
139 onCreated() { 148 onCreated() {
140 this.fetchData(this.filter); 149 this.fetchData(this.filter);
141 }, 150 },
@@ -210,5 +219,7 @@ export default { @@ -210,5 +219,7 @@ export default {
210 </script> 219 </script>
211 220
212 <style> 221 <style>
213 - 222 + button {
  223 + margin: 5px;
  224 + }
214 </style> 225 </style>
  1 +import App from './index.vue';
  2 +import createApp from 'create-app';
  3 +
  4 +createApp(App);
  1 +<template>
  2 + <LayoutContent :breads="[{url: parentUrl, title: '优惠券列表'}, {title: '优惠券发放'}]">
  3 + <i-form>
  4 +
  5 + <i-card class="manual-send-wrapper">
  6 + <p slot="title">手动发放</p>
  7 + <div>
  8 + <i-row class="manual-send-container">
  9 + <i-col span="4" class="title">
  10 + UID<span class="red">*</span>
  11 + </i-col>
  12 + <i-col span="14" class="content">
  13 + <textarea rows="5" id="txt_uids" placeholder="请输入UID,多个UID用英文逗号分隔,单次限制输入50个UID" v-model="uidValue"></textarea>
  14 + </i-col>
  15 + <i-col span="5" class="button">
  16 + <i-button type="success" @click="manualSend">发送</i-button>
  17 + </i-col>
  18 + </i-row>
  19 + </div>
  20 + </i-card>
  21 + <i-card class="import-send-wrapper">
  22 + <p slot="title">批量发放</p>
  23 + <div>
  24 + <i-row class="import-send-container">
  25 + <i-col span="3">&nbsp;</i-col>
  26 + <i-col span="4">
  27 + <div class="button-upload">
  28 + 上传文件
  29 + <form id="formUpload">
  30 + <input type="file" id="upload" @change="fileChange" accept=".csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
  31 + </form>
  32 +
  33 + </div>
  34 + <span class="file-name">{{fileName}}</span>
  35 + </i-col>
  36 + <i-col span="2">&nbsp;</i-col>
  37 + <i-col span="8">&nbsp;</i-col>
  38 + </i-row>
  39 + <i-row style="margin-top: 20px;">
  40 + <i-col span="3">&nbsp;</i-col>
  41 + <i-col span="4">
  42 + <a href="..\..\common/uid_import.xlsx" class="btn-download" target="_blank">下载样例</a>
  43 + <p>1.表头:UID</p>
  44 + <p>2.同一张券可以给同一个用户发多张?</p>
  45 + </i-col>
  46 + <i-col span="2">&nbsp;</i-col>
  47 + <i-col span="8">
  48 + <a href="javascript:void(0)" style="color: red;">校验场景</a>
  49 + <p>1.优惠券数量</p>
  50 + <p>2.优惠券状态是否为未生效,或生效中</p>
  51 + </i-col>
  52 + </i-row>
  53 + <i-row>
  54 + <p style="color: red;text-align: center;margin-top: 30px; font-size: 30px;">{{uploadMessage}}</p>
  55 + </i-row>
  56 + </div>
  57 + </i-card>
  58 + <div class="bottom">
  59 + <i-button type="success" id="btn_import_send" @click="importSend">批量发送</i-button>
  60 + </div>
  61 + </i-form>
  62 + </LayoutContent>
  63 +</template>
  64 +
  65 +<script>
  66 +import Api from '@/api/api';
  67 +import dayjs from 'dayjs';
  68 +import BlobUtil from 'libs/blob';
  69 +import qs from 'qs';
  70 +
  71 +const api = new Api();
  72 +
  73 +export default {
  74 + components: {},
  75 + name: 'SendCouponPage',
  76 + data() {
  77 + return {
  78 + parentUrl: '',
  79 + couponId: 0,
  80 + couponToken: '',
  81 + uidValue: '',
  82 + fileName: '',
  83 + showModal: false,
  84 + message: '',
  85 + uploadMessage: '',
  86 + isSending: false
  87 + };
  88 + },
  89 + created() {
  90 + this.$nextTick(() => {
  91 + const queryString = qs.parse(location.search ? location.search.slice(1) : '');
  92 +
  93 + this.parentUrl = `coupon.html?${qs.stringify(queryString.param)}`;
  94 + this.couponId = queryString.id;
  95 + this.couponToken = queryString.token;
  96 +
  97 + });
  98 + },
  99 + methods: {
  100 + manualSend() { // 手动发放优惠券
  101 + if(this.uidValue && !this.isSending) {
  102 + let uidArr = this.uidValue.replace(/,/g, ',').split(',');
  103 + if (uidArr.length > 50) {
  104 + uidArr.length = 50;
  105 + }
  106 + if (uidArr.length > 0) {
  107 + this.isSending = true;
  108 + api._get('/ufoPlatform/coupon/couponSend', {
  109 + couponToken: this.couponToken,
  110 + uids: uidArr.join(',')
  111 + }).then(result => {
  112 + this.showModal = true;
  113 + this.message = result.message;
  114 + this.isSending = false;
  115 + this.$Modal.info({
  116 + title: '提示' + 'code:' + result.code,
  117 + content: result.message,
  118 + onOK: this.ok
  119 + });
  120 + }).catch(() => {
  121 + this.isSending = false;
  122 + this.$Modal.info({
  123 + title: '提示',
  124 + content: '发送失败',
  125 + onOK: this.ok
  126 + });
  127 + });
  128 + }
  129 + }
  130 + },
  131 + fileChange() {
  132 + let fileUpload = document.getElementById('upload');
  133 + if (fileUpload.files.length > 0) {
  134 + this.fileName = fileUpload.files[0].name;
  135 + }
  136 +
  137 + },
  138 + importSend() {
  139 + if (this.fileName && !this.isSending) {
  140 + let formData = new FormData();
  141 + let file = document.getElementById('upload').files[0];
  142 + let config = {
  143 + headers: {
  144 + 'Content-Type': 'multipart/form-data'
  145 + }
  146 + };
  147 +
  148 + formData.append('file', file);
  149 + formData.append('couponToken', this.couponToken);
  150 + this.isSending = true;
  151 + this.uploadMessage = '文件上传中...';
  152 + api._postForm('/ufoPlatform/coupon/couponSendByImport', formData, false, config).then(result => {
  153 + this.isSending = false;
  154 + this.uploadMessage = '';
  155 + this.$Modal.info({
  156 + title: '提示' + 'code:' + result.code,
  157 + content: result.message,
  158 + onOK: this.ok
  159 + });
  160 + }).catch(() => {
  161 + this.isSending = false;
  162 + this.uploadMessage = '';
  163 + this.$Modal.info({
  164 + title: '提示',
  165 + content: '上传失败',
  166 + onOK: this.ok
  167 + });
  168 + });
  169 + }
  170 + },
  171 + ok() {
  172 + this.showModal = false;
  173 + }
  174 + },
  175 +};
  176 +</script>
  177 +
  178 +<style>
  179 +
  180 + .manual-send-wrapper {
  181 + height: 205px;
  182 + }
  183 +
  184 + .import-send-wrapper {
  185 + height: 100%;
  186 + }
  187 +
  188 + .ivu-card-body {
  189 + padding: 0;
  190 + margin: 0;
  191 + }
  192 +
  193 + .ivu-card-bordered {
  194 + /*border: none;*/
  195 + border-bottom: none;
  196 + }
  197 +
  198 + .ivu-card-head {
  199 + background-color: #f7f7f7;
  200 + }
  201 +
  202 + .manual-send-container {
  203 + margin-top: 20px;
  204 + height: 130px;
  205 + }
  206 +
  207 + .import-send-container {
  208 + margin-top: 40px;
  209 + /*margin-bottom: 200px;*/
  210 + }
  211 +
  212 + .manual-send-container .title {
  213 + text-align: right;
  214 + margin-right: 20px;
  215 + }
  216 +
  217 + .manual-send-container .content {
  218 +
  219 + }
  220 +
  221 + #txt_uids {
  222 + width: 98%;
  223 + height: 100%;
  224 + }
  225 +
  226 + #upload {
  227 + width: 100%;
  228 + height: 100%;
  229 + opacity: 0;
  230 + position: absolute;
  231 + left: 0;
  232 + top: 0;
  233 + }
  234 +
  235 + .button-upload {
  236 + position: relative;
  237 + display: inline-block;
  238 + background-color: #17b566;
  239 + -webkit-border-radius: 5px;
  240 + border-radius: 5px;
  241 + color: #fff;
  242 + width: 80px;
  243 + height: 32px;
  244 + line-height: 32px;
  245 + text-align: center;
  246 + overflow: hidden;
  247 + }
  248 +
  249 + .file-name {
  250 + height: 32px;
  251 + line-height: 32px;
  252 + margin-left: 20px;
  253 + color: #2b85e4;
  254 + display: inline-table;
  255 + vertical-align: middle;
  256 + }
  257 +
  258 + .red {
  259 + color: #ff0000;
  260 + }
  261 +
  262 + .bottom {
  263 + position: absolute;
  264 + bottom: 0;
  265 + width: 100%;
  266 + height: 80px;
  267 + background-color: #f7f7f7;
  268 + line-height: 80px;
  269 + text-align: center;
  270 + }
  271 +
  272 + a {
  273 + text-decoration: none;
  274 + }
  275 +</style>
@@ -19,9 +19,9 @@ @@ -19,9 +19,9 @@
19 </i-form-item> 19 </i-form-item>
20 <i-form-item prop="entryType"> 20 <i-form-item prop="entryType">
21 <i-select placeholder="商家类型" v-model="filter.entryType" style="width: 100px"> 21 <i-select placeholder="商家类型" v-model="filter.entryType" style="width: 100px">
22 - <i-option :value="1">普通入驻</i-option> 22 + <i-option :value="1">入驻卖家</i-option>
23 <i-option :value="2">超级入驻</i-option> 23 <i-option :value="2">超级入驻</i-option>
24 - <i-option :value="3">前期白名单</i-option> 24 + <i-option :value="4">普通卖家</i-option>
25 </i-select> 25 </i-select>
26 </i-form-item> 26 </i-form-item>
27 </i-form> 27 </i-form>
@@ -33,6 +33,76 @@ @@ -33,6 +33,76 @@
33 :data="data" 33 :data="data"
34 @on-page-change="onPageChange"> 34 @on-page-change="onPageChange">
35 </LayoutTable> 35 </LayoutTable>
  36 + <!--弹出框展示商家详情-->
  37 + <div class="popup-detail-wrapper" :class="{ show: isShowDetail}">
  38 + <i-card class="popup-detail-container">
  39 + <p slot="title">商家详情</p>
  40 + <i-button slot="extra" class="btn-close" @click="closePopup">X</i-button>
  41 + <div class="pop-detail-content">
  42 + <i-row>
  43 + <i-col span="4" class="detail-title">UID</i-col>
  44 + <i-col span="8">{{detail.uid || '&nbsp;'}}</i-col>
  45 + <i-col span="4" class="detail-title">商家类型</i-col>
  46 + <i-col span="8">{{['','入驻卖家', '超级入驻', '', '普通卖家'][detail.entryType]}}</i-col>
  47 + </i-row>
  48 + <i-row>
  49 + <i-col span="4" class="detail-title">商家名称</i-col>
  50 + <i-col span="8">{{detail.certName || '--'}}</i-col>
  51 + <i-col span="4" class="detail-title">手机号</i-col>
  52 + <i-col span="8">{{detail.mobile || '--'}}</i-col>
  53 + </i-row>
  54 + <i-row>
  55 + <i-col span="4" class="detail-title">招商人员</i-col>
  56 + <i-col span="8">{{detail.investName || '--'}}</i-col>
  57 + <i-col span="4" class="detail-title">违规次数</i-col>
  58 + <i-col span="8">{{detail.breakRuleTimes || '0'}}</i-col>
  59 + </i-row>
  60 + <i-row>
  61 + <i-col span="4" class="detail-title">账户余额</i-col>
  62 + <i-col span="8" style="color: red;">{{detail.money || '0.00'}}</i-col>
  63 + <i-col span="4" class="detail-title">入驻状态</i-col>
  64 + <i-col span="8">{{detail.validStatusDesc || '--'}}</i-col>
  65 + </i-row>
  66 + <i-row>
  67 + <i-col span="4" class="detail-title">入驻时间</i-col>
  68 + <i-col span="8">{{detail.enterTime || '--'}}</i-col>
  69 + <i-col span="4" class="detail-title">退出入驻时间</i-col>
  70 + <i-col span="8">{{detail.quitTime || '--'}}</i-col>
  71 + </i-row>
  72 + <i-row>
  73 + <i-col span="4" class="detail-title">身份证号</i-col>
  74 + <i-col span="20">{{detail.certNo || '--'}}</i-col>
  75 + </i-row>
  76 + <i-row>
  77 + <i-col span="4" class="detail-title no-border-right" style="min-height: 150px;line-height: 150px;">身份证照片</i-col>
  78 + <i-col span="20" class="border-left" style="min-height: 150px;">
  79 + <img v-if="detail.idCardFrontUrl" class="cert-image" :src="detail.idCardFrontUrl">
  80 + <img v-if="detail.idCardBackUrl" class="cert-image" :src="detail.idCardBackUrl">
  81 + </i-col>
  82 + </i-row>
  83 + </div>
  84 + </i-card>
  85 + </div>
  86 + <!--弹出框绑定招商人员-->
  87 + <div class="popup-invist-wrapper" :class="{ show: isShowInvest}">
  88 + <i-card class="popup-invist-container">
  89 + <p slot="title">绑定招商人</p>
  90 + <i-button slot="extra" class="btn-close" @click="closePopup">X</i-button>
  91 + <div class="popup-invist-content">
  92 + <i-row>
  93 + <i-col class="invist-title" span="8">招商人员</i-col>
  94 + <i-col span="16">
  95 + <input type="text" v-model="investInfo.investName" placeholder="请输入招商人" style="width: 80%">
  96 + </i-col>
  97 + </i-row>
  98 + <i-row>
  99 + <i-col span="24" style="text-align: center;">
  100 + <i-button type="success" @click="submitInvist">保存</i-button>
  101 + </i-col>
  102 + </i-row>
  103 + </div>
  104 + </i-card>
  105 + </div>
36 </LayoutContent> 106 </LayoutContent>
37 </template> 107 </template>
38 108
@@ -40,10 +110,16 @@ @@ -40,10 +110,16 @@
40 import dayjs from 'dayjs'; 110 import dayjs from 'dayjs';
41 import Api from '@/api/api'; 111 import Api from '@/api/api';
42 import qs from 'qs'; 112 import qs from 'qs';
  113 +import {Button} from 'iview'; //eslint-disable-line
  114 +import ICol from "../../../node_modules/iview/src/components/grid/col"; //eslint-disable-line
  115 +import Input from "../../../node_modules/iview/src/components/input/input"; //eslint-disable-line
43 116
44 const api = new Api(); 117 const api = new Api();
45 118
46 export default { 119 export default {
  120 + components: {
  121 + Input,
  122 + ICol},
47 name: 'SendRecordPage', 123 name: 'SendRecordPage',
48 data() { 124 data() {
49 return { 125 return {
@@ -57,68 +133,101 @@ export default { @@ -57,68 +133,101 @@ export default {
57 page: 1, 133 page: 1,
58 total: 0, 134 total: 0,
59 data: [], 135 data: [],
  136 + detail: {},
  137 + investInfo: {},
  138 + nowSelectedRow: {},
  139 + isShowDetail: false, // 显示详情弹框
  140 + isShowInvest: false, // 显示绑定招商人员
60 columns: [{ 141 columns: [{
61 title: 'UID', 142 title: 'UID',
62 key: 'uid', 143 key: 'uid',
  144 + align: 'center',
63 width: 100 145 width: 100
64 }, 146 },
65 { 147 {
66 title: '商家类型', 148 title: '商家类型',
  149 + align: 'center',
67 render(h, {row}) { 150 render(h, {row}) {
68 - return h('span', {}, ['','普通入驻', '超级入驻', '前期白名单'][row.entryType]); 151 + return h('span', {}, ['','入驻卖家', '超级入驻', '', '普通卖家'][row.entryType]);
69 }, 152 },
70 - width: 100 153 + width: 90
71 }, 154 },
72 { 155 {
73 title: '商家名称', 156 title: '商家名称',
74 key: 'certName', 157 key: 'certName',
  158 + align: 'center',
75 width: 100 159 width: 100
76 }, { 160 }, {
77 title: '手机号', 161 title: '手机号',
  162 + align: 'center',
78 key: 'mobile', 163 key: 'mobile',
79 - width: 150 164 + width: 120
80 }, { 165 }, {
81 title: '身份证', 166 title: '身份证',
  167 + align: 'center',
82 key: 'certNo', 168 key: 'certNo',
83 - width: 200 169 + width: 140
84 }, { 170 }, {
85 title: '上架SKUP', 171 title: '上架SKUP',
  172 + align: 'center',
86 key: 'selfSkuNum', 173 key: 'selfSkuNum',
87 - width: 100 174 + width: 95
88 }, { 175 }, {
89 title: '违规次数', 176 title: '违规次数',
90 key: 'breakRuleTimes', 177 key: 'breakRuleTimes',
91 - width: 100 178 + width: 90
92 }, 179 },
93 { 180 {
94 title: '账户余额', 181 title: '账户余额',
  182 + align: 'center',
95 render(h, {row}) { 183 render(h, {row}) {
96 let color = parseInt(row.money, 10) > 999 ? 'inherit' : 'red'; 184 let color = parseInt(row.money, 10) > 999 ? 'inherit' : 'red';
97 return h('span', {style: {color: color}}, row.money); 185 return h('span', {style: {color: color}}, row.money);
98 }, 186 },
99 - width: 100 187 + width: 90
100 }, 188 },
101 { 189 {
102 title: '入驻时间', 190 title: '入驻时间',
  191 + align: 'center',
103 render(h, {row}) { 192 render(h, {row}) {
104 return ( 193 return (
105 - <span>{dayjs(row.enterTime).format('YYYY-MM-DD HH:mm:ss')}</span> 194 + <span>{dayjs(row.enterTime).format('YYYY-MM-DD')}</span>
106 ); 195 );
107 }, 196 },
108 - width: 150 197 + width: 100
109 }, { 198 }, {
110 title: '退出入驻时间', 199 title: '退出入驻时间',
  200 + align: 'center',
111 render(h, {row}) { 201 render(h, {row}) {
112 return ( 202 return (
113 - <span>{row.quitTime ? dayjs(row.quitTime).format('YYYY-MM-DD HH:mm:ss') : ''}</span> 203 + <span>{row.quitTime ? dayjs(row.quitTime).format('YYYY-MM-DD') : ''}</span>
114 ); 204 );
115 }, 205 },
116 - width: 150 206 + width: 100
117 }, { 207 }, {
118 title: '入驻状态', 208 title: '入驻状态',
  209 + align: 'center',
119 key: 'validStatusDesc', 210 key: 'validStatusDesc',
120 - width: 100  
121 - }] 211 + }, {
  212 + title: '招商人员',
  213 + align: 'center',
  214 + key: 'investName',
  215 + }, {
  216 + title: '操作',
  217 + align: 'center',
  218 + width: 150,
  219 + render:(h, {row}) => {
  220 + return (
  221 + <div>
  222 + <i-button type="primary" size="small" onClick={() => this.onShowDetail(row)}>查看</i-button>
  223 + {(row.investName) ?
  224 + (<i-button type="primary" size="small" onClick={() => this.onEditInvest(row)}>修改招商人</i-button>) :
  225 + <i-button type="success" size="small" onClick={() => this.onEditInvest(row)}>绑定招商人</i-button>}
  226 + </div>
  227 + );
  228 + }
  229 + }
  230 + ]
122 }; 231 };
123 }, 232 },
124 created() { 233 created() {
@@ -153,7 +262,6 @@ export default { @@ -153,7 +262,6 @@ export default {
153 }, this.getParams(params))); 262 }, this.getParams(params)));
154 263
155 if (result.code === 200) { 264 if (result.code === 200) {
156 -// console.log('listData:', result);  
157 this.total = result.data.total; 265 this.total = result.data.total;
158 this.data = result.data.list; 266 this.data = result.data.list;
159 this.$Loading.finish(); 267 this.$Loading.finish();
@@ -162,6 +270,51 @@ export default { @@ -162,6 +270,51 @@ export default {
162 this.$Loading.error(); 270 this.$Loading.error();
163 } 271 }
164 }, 272 },
  273 + onShowDetail(row) {
  274 + let detail = Object.assign({}, row);
  275 + detail.enterTime = row.enterTime ? dayjs(row.enterTime).format('YYYY-MM-DD HH:mm:ss') : '--';
  276 + detail.quitTime = row.quitTime ? dayjs(row.quitTime).format('YYYY-MM-DD HH:mm:ss') : '--';
  277 +
  278 + this.detail = detail;
  279 + this.isShowDetail = true;
  280 + },
  281 + onEditInvest(row) {
  282 + this.nowSelectedRow = row;
  283 + this.isShowInvest = true;
  284 + this.investInfo = {
  285 + uid: row.uid,
  286 + investName: row.investName || ''
  287 + };
  288 + },
  289 + submitInvist() {
  290 + if(this.investInfo.uid) {
  291 + api._post('/ufoPlatform/storedSeller/saveInvestUser', this.investInfo).then(result => {
  292 +
  293 + if (result.code === 200) {
  294 +// this.nowSelectedRow.investName = this.investInfo.investName;
  295 + this.closePopup();
  296 + this.fetchData(this.filter, this.page);
  297 + this.$Modal.info({
  298 + title: '提示',
  299 + content: result.message
  300 + });
  301 + } else {
  302 + this.closePopup();
  303 + this.$Modal.info({
  304 + title: '提示',
  305 + content: '保存失败'
  306 + });
  307 + }
  308 + });
  309 + }
  310 + },
  311 + closePopup() {
  312 + this.detail = {};
  313 + this.investInfo = {};
  314 + this.isShowDetail = false;
  315 + this.isShowInvest = false;
  316 + },
  317 +
165 getParams(params) { 318 getParams(params) {
166 return { 319 return {
167 certName: params.certName, 320 certName: params.certName,
@@ -176,5 +329,100 @@ export default { @@ -176,5 +329,100 @@ export default {
176 </script> 329 </script>
177 330
178 <style> 331 <style>
  332 + .ivu-btn {
  333 + margin: 0 2px;
  334 + }
  335 +
  336 + .ivu-table-cell {
  337 + padding: 10px;
  338 + }
  339 +
  340 + .show {
  341 + display: block !important;
  342 + }
179 343
  344 + .btn-close {
  345 + width: 30px;
  346 + height: 30px;
  347 + border: none;
  348 + -webkit-border-radius: 50%;
  349 + border-radius: 50%;
  350 + text-align: center;
  351 + padding: 0;
  352 + color: red;
  353 + }
  354 +
  355 + .popup-detail-wrapper,
  356 + .popup-invist-wrapper {
  357 + display: none;
  358 + width: 100%;
  359 + height: 100%;
  360 + left: 0;
  361 + top: 0;
  362 + position: absolute;
  363 + background-color: rgba(0, 0, 0, 0.7);
  364 + z-index: 99;
  365 + }
  366 +
  367 + .popup-detail-container {
  368 + width: 900px;
  369 + min-height: 500px;
  370 + margin: 100px auto;
  371 + }
  372 +
  373 + .popup-invist-container {
  374 + width: 500px;
  375 + height: 200px;
  376 + margin: 100px auto;
  377 + }
  378 +
  379 + .ivu-row:hover {
  380 + background-color: lightblue;
  381 + }
  382 +
  383 + .ivu-row, .ivu-col {
  384 + overflow: hidden;
  385 + }
  386 +
  387 + .detail-title, .invist-title {
  388 + color: #2db7f5;
  389 + }
  390 +
  391 + .cert-image {
  392 + width: 200px;
  393 + min-height: 126px;
  394 + margin: 4px 10px;
  395 + }
  396 +
  397 + .popup-detail-container .ivu-row {
  398 + border-left: 1px solid lightgray;
  399 + border-bottom: 1px solid lightgray;
  400 + }
  401 +
  402 + .popup-detail-container .ivu-col{
  403 + border: 1px solid lightgray;
  404 + padding: 8px 0;
  405 + text-align: center;
  406 + border-bottom: none;
  407 + border-left: none;
  408 + }
  409 +
  410 + .no-border-right {
  411 + border-right: none !important;
  412 + }
  413 +
  414 + .border-left {
  415 + border-left: 1px solid lightgray !important;
  416 + }
  417 +
  418 + .popup-invist-container .ivu-row {
  419 + padding: 10px 0;
  420 + text-align: center;
  421 + }
  422 +
  423 + input {
  424 + width: 80%;
  425 + box-sizing: border-box;
  426 + -webkit-box-sizing: border-box;
  427 + }
180 </style> 428 </style>