commit
						cfe9b07fe8
					
				|  | @ -188,10 +188,10 @@ export default { | |||
|       }, | ||||
|       formValidate: { | ||||
|         price: [ | ||||
|           { required: true, message: '请输入大于0小于9999的合法充值金额' }, | ||||
|           { required: true, message: '请输入大于等于1小于9999的合法充值金额' }, | ||||
|           { | ||||
|             pattern: /^[1-9]\d{0,3}(\.\d{1,2})?$/, | ||||
|             message: '请输入大于0小于9999的合法充值金额', | ||||
|             message: '请输入大于等于1小于9999的合法充值金额', | ||||
|             trigger: 'change' | ||||
|           } | ||||
|         ] | ||||
|  | @ -200,11 +200,13 @@ export default { | |||
|       logColumns: [ | ||||
|         { | ||||
|           title: '时间', | ||||
|           width: 190, | ||||
|           key: 'createTime' | ||||
|         }, | ||||
|         { | ||||
|           title: '金额', | ||||
|           key: 'money', | ||||
|           width: 180, | ||||
|           render: (h, params) => { | ||||
|             if (params.row.money > 0) { | ||||
|               return h('div', [ | ||||
|  | @ -241,20 +243,29 @@ export default { | |||
|       logColumnsData: {}, // 余额日志 | ||||
|       // 充值记录 | ||||
|       rechargeListColumns: [ | ||||
|         { | ||||
|           title: '充值时间', | ||||
|           key: 'createTime', | ||||
|           width: 168 | ||||
|         }, | ||||
|         { | ||||
|           title: '支付单号', | ||||
|           key: 'rechargeSn', | ||||
|           width: 200 | ||||
|         }, | ||||
|         { | ||||
|           title: '支付方式', | ||||
|           key: 'rechargeWay' | ||||
|         }, | ||||
|         { | ||||
|           title: '充值金额', | ||||
|           key: 'rechargeMoney', | ||||
|           render: (h, params) => { | ||||
|             return h('div', [h('span', this.$options.filters.unitPrice(params.row.rechargeMoney, '¥'))]); | ||||
|             if (params.row.payStatus === 'PAID') { | ||||
|               return h('div', [h('span',{ | ||||
|                 style: { | ||||
|                   color: 'green' | ||||
|                 } | ||||
|               }, this.$options.filters.unitPrice(params.row.rechargeMoney, '+ ¥'))]); | ||||
|             } else { | ||||
|               return h('div', [h('span',this.$options.filters.unitPrice(params.row.rechargeMoney, '¥'))]); | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|  | @ -268,29 +279,49 @@ export default { | |||
|             } | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           title: '支付方式', | ||||
|           key: 'rechargeWay' | ||||
|         }, | ||||
|         { | ||||
|           title: '支付时间', | ||||
|           key: 'payTime' | ||||
|           key: 'payTime', | ||||
|           width: 180 | ||||
|         } | ||||
|       ], | ||||
|       rechargeListData: {}, // 充值记录数据 | ||||
|       // 提现记录 | ||||
|       withdrawApplyColumns: [ | ||||
|         { | ||||
|           title: '申请时间', | ||||
|           key: 'createTime', | ||||
|           width: 168 | ||||
|         }, | ||||
|         { | ||||
|           title: '提现单号', | ||||
|           key: 'sn', | ||||
|           width: 215 | ||||
|           width: 200 | ||||
|         }, | ||||
|         { | ||||
|           title: '提现金额', | ||||
|           key: 'applyMoney', | ||||
|           width: 110, | ||||
|           render: (h, params) => { | ||||
|             return h('div', [h('span', this.$options.filters.unitPrice(params.row.applyMoney, '¥'))]); | ||||
|             if (params.row.applyStatus === 'VIA_AUDITING') { | ||||
|               return h('div', [h('span',{ | ||||
|                 style: { | ||||
|                   color: 'green' | ||||
|                 } | ||||
|               }, this.$options.filters.unitPrice(params.row.applyMoney, '+ ¥'))]); | ||||
|             } else { | ||||
|               return h('div', [h('span', this.$options.filters.unitPrice(params.row.applyMoney, '¥'))]); | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           title: '提现状态', | ||||
|           key: 'applyStatus', | ||||
|           width: 95, | ||||
|           render: (h, params) => { | ||||
|             if (params.row.applyStatus === 'APPLY') { | ||||
|               return h('div', [h('span', {}, '申请中')]); | ||||
|  | @ -302,12 +333,14 @@ export default { | |||
|           } | ||||
|         }, | ||||
|         { | ||||
|           title: '提现时间', | ||||
|           key: 'inspectTime' | ||||
|           title: '审核时间', | ||||
|           key: 'inspectTime', | ||||
|           width: 168 | ||||
|         }, | ||||
|         { | ||||
|           title: '审核备注', | ||||
|           key: 'inspectRemark' | ||||
| 
 | ||||
|         } | ||||
|       ], | ||||
|       withdrawApplyColumnsListData: {} // 提现记录 | ||||
|  |  | |||
|  | @ -2621,12 +2621,12 @@ dom-serializer@0: | |||
|     domelementtype "^2.0.1" | ||||
|     entities "^2.0.0" | ||||
| 
 | ||||
| dom7@^3.0.0: | ||||
|   version "3.0.0" | ||||
|   resolved "https://registry.npm.taobao.org/dom7/download/dom7-3.0.0.tgz#b861ce5d67a6becd7aaa3ad02942ff14b1240331" | ||||
|   integrity sha1-uGHOXWemvs16qjrQKUL/FLEkAzE= | ||||
| dom7@^2.1.5: | ||||
|   version "2.1.5" | ||||
|   resolved "https://registry.yarnpkg.com/dom7/-/dom7-2.1.5.tgz#a79411017800b31d8400070cdaebbfc92c1f6377" | ||||
|   integrity sha512-xnhwVgyOh3eD++/XGtH+5qBwYTgCm0aW91GFgPJ3XG+jlsRLyJivnbP0QmUBFhI+Oaz9FV0s7cxgXHezwOEBYA== | ||||
|   dependencies: | ||||
|     ssr-window "^3.0.0-alpha.1" | ||||
|     ssr-window "^2.0.0" | ||||
| 
 | ||||
| domain-browser@^1.1.1: | ||||
|   version "1.2.0" | ||||
|  | @ -7487,10 +7487,10 @@ sshpk@^1.7.0: | |||
|     safer-buffer "^2.0.2" | ||||
|     tweetnacl "~0.14.0" | ||||
| 
 | ||||
| ssr-window@^3.0.0, ssr-window@^3.0.0-alpha.1: | ||||
|   version "3.0.0" | ||||
|   resolved "https://registry.npm.taobao.org/ssr-window/download/ssr-window-3.0.0.tgz#fd5b82801638943e0cc704c4691801435af7ac37" | ||||
|   integrity sha1-/VuCgBY4lD4MxwTEaRgBQ1r3rDc= | ||||
| ssr-window@^2.0.0: | ||||
|   version "2.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-2.0.0.tgz#98c301aef99523317f8d69618f0010791096efc4" | ||||
|   integrity sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A== | ||||
| 
 | ||||
| ssri@^5.2.4: | ||||
|   version "5.3.0" | ||||
|  | @ -7753,14 +7753,13 @@ svgo@^1.0.0: | |||
|     unquote "~1.1.1" | ||||
|     util.promisify "~1.0.0" | ||||
| 
 | ||||
| swiper@^6.4.1: | ||||
|   version "6.4.1" | ||||
|   resolved "https://registry.npm.taobao.org/swiper/download/swiper-6.4.1.tgz?cache=0&sync_timestamp=1607518804170&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fswiper%2Fdownload%2Fswiper-6.4.1.tgz#6d4e9252ed4226821d4005e77924e929848de8af" | ||||
|   integrity sha1-bU6SUu1CJoIdQAXneSTpKYSN6K8= | ||||
| swiper@^5.2.0: | ||||
|   version "5.4.5" | ||||
|   resolved "https://registry.yarnpkg.com/swiper/-/swiper-5.4.5.tgz#a350f654bf68426dbb651793824925512d223c0f" | ||||
|   integrity sha512-7QjA0XpdOmiMoClfaZ2lYN6ICHcMm72LXiY+NF4fQLFidigameaofvpjEEiTQuw3xm5eksG5hzkaRsjQX57vtA== | ||||
|   dependencies: | ||||
|     dom7 "^3.0.0" | ||||
|     ssr-window "^3.0.0" | ||||
|     tslib "^2.0.0" | ||||
|     dom7 "^2.1.5" | ||||
|     ssr-window "^2.0.0" | ||||
| 
 | ||||
| table@4.0.2: | ||||
|   version "4.0.2" | ||||
|  | @ -7942,11 +7941,6 @@ tslib@^1.10.0: | |||
|   resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1602286724979&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" | ||||
|   integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= | ||||
| 
 | ||||
| tslib@^2.0.0: | ||||
|   version "2.0.3" | ||||
|   resolved "https://registry.npm.taobao.org/tslib/download/tslib-2.0.3.tgz?cache=0&sync_timestamp=1602286724979&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" | ||||
|   integrity sha1-jgdBrEX8DCJuWKF7/D5kubxsphw= | ||||
| 
 | ||||
| tty-browserify@0.0.0: | ||||
|   version "0.0.0" | ||||
|   resolved "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" | ||||
|  |  | |||
|  | @ -86,4 +86,9 @@ export const getMemberFeedbackDetail = (id) => { | |||
|   return getRequest(`/feedback/${id}`); | ||||
| }; | ||||
| 
 | ||||
| //管理员获取发送详情列表
 | ||||
| export const getMemberMessage = (params) => { | ||||
|   return getRequest(`/message/member`, params); | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -17,14 +17,10 @@ export default { | |||
|    * @description api请求基础路径 | ||||
|    */ | ||||
|   api_dev: { | ||||
|     // common: "https://common-api.pickmall.cn",
 | ||||
|     // buyer: "https://buyer-api.pickmall.cn",
 | ||||
|     // seller: "https://store-api.pickmall.cn",
 | ||||
|     // manager: "https://admin-api.pickmall.cn"
 | ||||
|     common: 'http://192.168.0.109:8890', | ||||
|     buyer: 'http://192.168.0.109:8888', | ||||
|     seller: 'http://192.168.0.109:8889', | ||||
|     manager: 'http://192.168.0.109:8887' | ||||
|     common: "https://common-api.pickmall.cn", | ||||
|     buyer: "https://buyer-api.pickmall.cn", | ||||
|     seller: "https://store-api.pickmall.cn", | ||||
|     manager: "https://admin-api.pickmall.cn" | ||||
|   }, | ||||
|   api_prod: { | ||||
|     common: "https://common-api.pickmall.cn", | ||||
|  |  | |||
|  | @ -137,6 +137,13 @@ | |||
|               } | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             title: "充值时间", | ||||
|             key: "createTime", | ||||
|             align: "left", | ||||
|             width: 190, | ||||
|             sortable: false, | ||||
|           }, | ||||
|           { | ||||
|             title: "支付时间", | ||||
|             key: "payTime", | ||||
|  |  | |||
|  | @ -35,16 +35,18 @@ | |||
|               <Row class="operation" style="margin-top: 20px"> | ||||
|                 <Button @click="sendMessage" type="primary">发送消息</Button> | ||||
|               </Row> | ||||
|               <Table | ||||
|                 :loading="loading" | ||||
|                 border | ||||
|                 :columns="messageColumns" | ||||
|                 :data="messageData" | ||||
|                 ref="table" | ||||
|                 sortable="custom" | ||||
|                 @on-sort-change="messageChangeSort" | ||||
|                 @on-selection-change="messageChangeSelect" | ||||
|               ></Table> | ||||
|               <Row> | ||||
|                 <Table | ||||
|                   :loading="loading" | ||||
|                   border | ||||
|                   :columns="messageColumns" | ||||
|                   :data="messageData" | ||||
|                   ref="table" | ||||
|                   sortable="custom" | ||||
|                   @on-sort-change="messageChangeSort" | ||||
|                   @on-selection-change="messageChangeSelect" | ||||
|                 ></Table> | ||||
|               </Row> | ||||
|               <Row type="flex" justify="end" class="page"> | ||||
|                 <Page | ||||
|                   :current="searchMessageForm.pageNumber" | ||||
|  | @ -62,16 +64,18 @@ | |||
|             </TabPane> | ||||
| 
 | ||||
|             <TabPane label="通知类站内信" name="SETTING"> | ||||
|               <Table | ||||
|                 :loading="loading" | ||||
|                 border | ||||
|                 :columns="noticeColumns" | ||||
|                 :data="noticeData" | ||||
|                 ref="table" | ||||
|                 sortable="custom" | ||||
|                 @on-sort-change="changeSort" | ||||
|                 @on-selection-change="changeSelect" | ||||
|               ></Table> | ||||
|               <Row> | ||||
|                 <Table | ||||
|                   :loading="loading" | ||||
|                   border | ||||
|                   :columns="noticeColumns" | ||||
|                   :data="noticeData" | ||||
|                   ref="table" | ||||
|                   sortable="custom" | ||||
|                   @on-sort-change="changeSort" | ||||
|                   @on-selection-change="changeSelect" | ||||
|                 ></Table> | ||||
|               </Row> | ||||
|               <Row type="flex" justify="end" class="page"> | ||||
|                 <Page | ||||
|                   :current="searchForm.pageNumber" | ||||
|  | @ -106,21 +110,22 @@ | |||
|       </div> | ||||
|       <div class="send-setting"> | ||||
|         <div class="left-show"> | ||||
|             <div v-for="(item, index) in form.variables" > | ||||
|               #{<span>{{item}}</span>} | ||||
|             </div> | ||||
|           <div v-for="(item, index) in form.variables"> | ||||
|             #{<span>{{item}}</span>} | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="send-form"> | ||||
|           <Form ref="form" :model="form" :label-width="100" :rules="formValidate"> | ||||
| 
 | ||||
|             <FormItem label="通知节点" prop="noticeNode"> | ||||
|               <Input v-model="form.noticeNode" clearable type="text" style="width: 90%" maxlength="20"  disabled /> | ||||
|               <Input v-model="form.noticeNode" clearable type="text" style="width: 90%" maxlength="20" disabled/> | ||||
|             </FormItem> | ||||
|             <FormItem label="消息标题" prop="noticeTitle"> | ||||
|               <Input v-model="form.noticeTitle" clearable type="text" style="width: 90%" maxlength="20"/> | ||||
|             </FormItem> | ||||
|             <FormItem label="消息内容" prop="noticeContent"> | ||||
|               <Input v-model="form.noticeContent" clearable type="textarea" style="width: 90%" maxlength="50" :autosize="{maxRows:4,minRows: 4}" show-word-limit /> | ||||
|               <Input v-model="form.noticeContent" clearable type="textarea" style="width: 90%" maxlength="50" | ||||
|                      :autosize="{maxRows:4,minRows: 4}" show-word-limit/> | ||||
|             </FormItem> | ||||
|           </Form> | ||||
|         </div> | ||||
|  | @ -137,24 +142,34 @@ | |||
|       :title="messageModalTitle" | ||||
|       v-model="messageModalVisible" | ||||
|       :mask-closable="false" | ||||
|       :width="500" | ||||
|       :width="800" | ||||
|     > | ||||
|       <Form ref="messageSendForm" :model="messageSendForm" :label-width="100" :rules="messageFormValidate"> | ||||
|         <FormItem label="消息标题" prop="title"> | ||||
|           <Input v-model="messageSendForm.title" maxlength="15" clearable style="width: 90%"/> | ||||
|           <Input v-model="messageSendForm.title" maxlength="15" clearable style="width: 70%"/> | ||||
|         </FormItem> | ||||
|         <FormItem label="消息内容" prop="content"> | ||||
|           <Input | ||||
|             v-model="messageSendForm.content" | ||||
|             :rows="4" | ||||
|             type="textarea" | ||||
|             style="max-height:60vh;overflow:auto;width: 90%" | ||||
|             style="max-height:60vh;overflow:auto;width: 70%" | ||||
|           /> | ||||
|         </FormItem> | ||||
| 
 | ||||
|         <FormItem label="发送对象"> | ||||
|           <RadioGroup type="button" button-style="solid" v-model="messageSendForm.messageClient" | ||||
|                       @on-change="selectObject"> | ||||
|             <Radio label="member">会员</Radio> | ||||
|             <Radio label="store">商家</Radio> | ||||
|           </RadioGroup> | ||||
|         </FormItem> | ||||
| 
 | ||||
|         <FormItem label="发送范围"> | ||||
|           <RadioGroup type="button" button-style="solid" v-model="messageSendForm.messageRange" @on-change="selectShop"> | ||||
|             <Radio label="ALL">全站</Radio> | ||||
|             <Radio label="APPOINT">指定商家</Radio> | ||||
|             <Radio v-if="messageSendForm.messageClient == 'store'" label="APPOINT">指定商家</Radio> | ||||
|             <Radio v-if="messageSendForm.messageClient == 'member'" label="MEMBER">指定会员</Radio> | ||||
|           </RadioGroup> | ||||
|         </FormItem> | ||||
|         <FormItem label="指定商家" v-if="shopShow"> | ||||
|  | @ -165,6 +180,17 @@ | |||
|             </Option> | ||||
|           </Select> | ||||
|         </FormItem> | ||||
|         <FormItem label="选择会员" prop="scopeType" | ||||
|                   v-if="memberShow"> | ||||
|           <Button type="primary" icon="ios-add" @click="addVip" ghost>选择会员</Button> | ||||
|           <div style="margin-top:24px;" v-if="messageSendForm.messageClient == 'member'"> | ||||
|             <Table border :columns="userColumns" :data="this.selectedMember"> | ||||
|             </Table> | ||||
|           </div> | ||||
|         </FormItem> | ||||
|         <Modal width="1200" v-model="checkUserList"> | ||||
|           <userList v-if="checkUserList" @callback="callbackSelectUser" :selectedList="selectedMember" ref="memberLayout"/> | ||||
|         </Modal> | ||||
|       </Form> | ||||
|       <div slot="footer"> | ||||
|         <Button type="text" @click="messageModalVisible = false">取消</Button> | ||||
|  | @ -180,7 +206,7 @@ | |||
|       :title="modalTitle" | ||||
|       v-model="messageDetailModalVisible" | ||||
|       :mask-closable="false" | ||||
|       :width="700" | ||||
|       :width="800" | ||||
|     > | ||||
|       <Form ref="messageSendForm" :model="messageSendForm" :label-width="100" :rules="messageFormValidate"> | ||||
|         <FormItem label="消息标题" prop="title"> | ||||
|  | @ -195,30 +221,65 @@ | |||
|             style="max-height:60vh;overflow:auto;width: 50%" | ||||
|           /> | ||||
|         </FormItem> | ||||
|         <FormItem label="发送对象"> | ||||
|           <RadioGroup type="button" button-style="solid" v-model="messageSendForm.messageClient"> | ||||
|             <Radio disabled label="member">会员</Radio> | ||||
|             <Radio disabled label="store">商家</Radio> | ||||
|           </RadioGroup> | ||||
|         </FormItem> | ||||
|         <FormItem label="发送范围"> | ||||
|           <RadioGroup type="button" button-style="solid" v-model="messageSendForm.messageRange"> | ||||
|             <Radio disabled label="ALL">全站</Radio> | ||||
|             <Radio  disabled label="APPOINT">指定商家</Radio> | ||||
|             <Radio v-if="messageSendForm.messageClient == 'store'" disabled label="APPOINT">指定商家</Radio> | ||||
|             <Radio v-if="messageSendForm.messageClient == 'member'" disabled label="MEMBER">指定会员</Radio> | ||||
|           </RadioGroup> | ||||
|         </FormItem> | ||||
|         <FormItem label="指定商家"> | ||||
|           <Table | ||||
|             :loading="loading" | ||||
|             border | ||||
|             :columns="messageDetailColumns" | ||||
|             :data="shopMessageData" | ||||
|             ref="table" | ||||
|             sortable="custom" | ||||
|             @on-sort-change="messageChangeSort" | ||||
|             @on-selection-change="messageChangeSelect" | ||||
|           ></Table> | ||||
|         <FormItem label="指定商家" v-if="messageSendForm.messageClient == 'store'"> | ||||
|           <Row> | ||||
|             <Table | ||||
|               :loading="loading" | ||||
|               border | ||||
|               :columns="messageDetailColumns" | ||||
|               :data="shopMessageData" | ||||
|               ref="table" | ||||
|               sortable="custom" | ||||
|               @on-sort-change="shopMessageChangeSort" | ||||
|             ></Table> | ||||
|           </Row> | ||||
|           <Row type="flex" justify="end" class="page"> | ||||
|             <Page | ||||
|               :current="searchShopMessageForm.pageNumber" | ||||
|               :total="shopMessageDataTotal" | ||||
|               :page-size="searchShopMessageForm.pageSize" | ||||
|               @on-change="messageChangePage" | ||||
|               @on-page-size-change="messageChangePageSize" | ||||
|               @on-change="shopMessageChangePage" | ||||
|               @on-page-size-change="shopMessageChangePageSize" | ||||
|               :page-size-opts="[10, 20, 50]" | ||||
|               size="small" | ||||
|               show-total | ||||
|               show-elevator | ||||
|               show-sizer | ||||
|             ></Page> | ||||
|           </Row> | ||||
|         </FormItem> | ||||
|         <FormItem label="指定会员" v-if="messageSendForm.messageClient == 'member'"> | ||||
|           <Row> | ||||
|             <Table | ||||
|               :loading="loading" | ||||
|               border | ||||
|               :columns="memberMessageDetailColumns" | ||||
|               :data="memberMessageData" | ||||
|               ref="table" | ||||
|               sortable="custom" | ||||
|               @on-sort-change="memberMessageChangeSort" | ||||
|             ></Table> | ||||
|           </Row> | ||||
|           <Row type="flex" justify="end" class="page"> | ||||
|             <Page | ||||
|               :current="searchMemberMessageForm.pageNumber" | ||||
|               :total="memberMessageDataTotal" | ||||
|               :page-size="searchMemberMessageForm.pageSize" | ||||
|               @on-change="memberMessageChangePage" | ||||
|               @on-page-size-change="memberMessageChangePageSize" | ||||
|               :page-size-opts="[10, 20, 50]" | ||||
|               size="small" | ||||
|               show-total | ||||
|  | @ -239,14 +300,18 @@ | |||
|   import * as API_Setting from "@/api/setting.js"; | ||||
|   import * as API_Other from "@/api/other.js"; | ||||
|   import * as API_Shop from "@/api/shops.js"; | ||||
| 
 | ||||
|   import userList from "@/views/member/list/index"; | ||||
| 
 | ||||
|   export default { | ||||
|     name: "bill", | ||||
|     components: {}, | ||||
|     components: { | ||||
|       userList | ||||
|     }, | ||||
|     data() { | ||||
|       return { | ||||
|         openSearch: true, // 显示搜索 | ||||
|         checkUserList: false, //会员选择器 | ||||
|         selectedMember: [], //选择的会员 | ||||
|         openTip: true, // 显示提示 | ||||
|         loading: true, // 表单加载状态 | ||||
|         modalVisible: false, // 添加或编辑显示 | ||||
|  | @ -255,6 +320,7 @@ | |||
|         messageModalTitle: "", // 发送站内信标题 | ||||
|         messageDetailModalVisible: false, // 添加或编辑显示 | ||||
|         shopShow: false, //指定商家是否出现 | ||||
|         memberShow: false, //指定会员是否出现 | ||||
|         shopList: [],//店铺列表 | ||||
|         searchForm: { | ||||
|           // 搜索框初始化对象 | ||||
|  | @ -283,6 +349,12 @@ | |||
|           pageNumber: 1, // 当前页数 | ||||
|           pageSize: 10, // 页面大小 | ||||
|         }, | ||||
|         //发送给会员的消息 | ||||
|         searchMemberMessageForm: { | ||||
|           // 搜索框初始化对象 | ||||
|           pageNumber: 1, // 当前页数 | ||||
|           pageSize: 10, // 页面大小 | ||||
|         }, | ||||
|         form: { | ||||
|           noticeNode: "", | ||||
|           noticeTitle: "" | ||||
|  | @ -290,6 +362,7 @@ | |||
|         //消息发送表单 | ||||
|         messageSendForm: { | ||||
|           messageRange: "ALL", | ||||
|           messageClient: "member", | ||||
|           userIds: [], | ||||
|           userNames: [], | ||||
|         }, | ||||
|  | @ -413,6 +486,45 @@ | |||
|             } | ||||
|           }, | ||||
|         ], | ||||
|         // 用户表格 | ||||
|         userColumns: [ | ||||
|           { | ||||
|             title: "用户名称", | ||||
|             key: "nickName", | ||||
|             minWidth: 120, | ||||
|           }, | ||||
|           { | ||||
|             title: "手机号", | ||||
|             key: "mobile", | ||||
|             render: (h, params) => { | ||||
|               return h("div", params.row.mobile || "暂未填写"); | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             title: "操作", | ||||
|             key: "action", | ||||
|             minWidth: 50, | ||||
|             align: "center", | ||||
|             render: (h, params) => { | ||||
|               return h( | ||||
|                 "Button", | ||||
|                 { | ||||
|                   props: { | ||||
|                     size: "small", | ||||
|                     type: "error", | ||||
|                     ghost: true, | ||||
|                   }, | ||||
|                   on: { | ||||
|                     click: () => { | ||||
|                       this.delUser(params.index); | ||||
|                     }, | ||||
|                   }, | ||||
|                 }, | ||||
|                 "删除" | ||||
|               ); | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         noticeData: [], // 表单数据 | ||||
|         noticeDataTotal: 0, // 表单数据总数 | ||||
|         messageColumns: [ | ||||
|  | @ -427,7 +539,22 @@ | |||
|             minWidth: 350, | ||||
|             tooltip: true | ||||
|           }, | ||||
| 
 | ||||
|           { | ||||
|             title: "发送对象", | ||||
|             key: "messageClient", | ||||
|             width: 100, | ||||
|             render: (h, params) => { | ||||
|               if (params.row.messageClient == "member") { | ||||
|                 return h('div', [ | ||||
|                   h('span', {}, '会员'), | ||||
|                 ]); | ||||
|               } else if (params.row.messageClient == "store") { | ||||
|                 return h('div', [ | ||||
|                   h('span', {}, '商家'), | ||||
|                 ]); | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           { | ||||
|             title: "发送类型", | ||||
|             key: "messageRange", | ||||
|  | @ -439,7 +566,11 @@ | |||
|                 ]); | ||||
|               } else if (params.row.messageRange == "APPOINT") { | ||||
|                 return h('div', [ | ||||
|                   h('span', {}, '指定用户'), | ||||
|                   h('span', {}, '指定商家'), | ||||
|                 ]); | ||||
|               } else if (params.row.messageRange == "MEMBER") { | ||||
|                 return h('div', [ | ||||
|                   h('span', {}, '指定会员'), | ||||
|                 ]); | ||||
|               } | ||||
|             } | ||||
|  | @ -499,7 +630,7 @@ | |||
|             } | ||||
|           }, | ||||
|         ], | ||||
|       messageData: [], // 表单数据 | ||||
|         messageData: [], // 表单数据 | ||||
|         messageDataTotal: 0, // 表单数据总数 | ||||
|         messageDetailColumns: [ | ||||
|           { | ||||
|  | @ -518,17 +649,47 @@ | |||
|             key: "status", | ||||
|             render: (h, params) => { | ||||
|               if (params.row.status == "ALREADY_READY") { | ||||
|                 return h( "Badge", {props: { status: "success",text: "已读" } }) | ||||
|                 return h("Badge", {props: {status: "success", text: "已读"}}) | ||||
|               } else if (params.row.status == "UN_READY") { | ||||
|                 return h( "Badge", {props: { status: "processing",text: "未读" } }) | ||||
|               }else{ | ||||
|                 return h( "Badge", {props: { status: "processing",text: "回收站" } }) | ||||
|                 return h("Badge", {props: {status: "processing", text: "未读"}}) | ||||
|               } else { | ||||
|                 return h("Badge", {props: {status: "processing", text: "回收站"}}) | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|         ], | ||||
|         shopMessageData: [], // 发送给店铺的消息数据 | ||||
|         shopMessageDataTotal: 0, // 发送给店铺的消息数据总数 | ||||
| 
 | ||||
|         memberMessageDetailColumns: [ | ||||
|           { | ||||
|             title: "会员ID", | ||||
|             key: "memberId", | ||||
|             maxWidth: 300, | ||||
|             sortable: false, | ||||
|           }, | ||||
|           { | ||||
|             title: "会员名称", | ||||
|             key: "memberName", | ||||
|             sortable: false, | ||||
|           }, | ||||
|           { | ||||
|             title: "是否已读", | ||||
|             key: "status", | ||||
|             maxWidth: 120, | ||||
|             render: (h, params) => { | ||||
|               if (params.row.status == "ALREADY_READY") { | ||||
|                 return h("Badge", {props: {status: "success", text: "已读"}}) | ||||
|               } else if (params.row.status == "UN_READY") { | ||||
|                 return h("Badge", {props: {status: "processing", text: "未读"}}) | ||||
|               } else { | ||||
|                 return h("Badge", {props: {status: "processing", text: "回收站"}}) | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|         ], | ||||
|         memberMessageData: [], // 发送给店铺的消息数据 | ||||
|         memberMessageDataTotal: 0, // 发送给店铺的消息数据总数 | ||||
|       }; | ||||
|     }, | ||||
|     methods: { | ||||
|  | @ -536,6 +697,41 @@ | |||
|         this.getMessage(); | ||||
|       }, | ||||
| 
 | ||||
|       // 返回已选择的用户 | ||||
|       callbackSelectUser(val) { | ||||
|         // 每次将返回的数据回调判断 | ||||
|         let findUser = this.selectedMember.find((item) => { | ||||
|           return item.id === val.id; | ||||
|         }); | ||||
|         // 如果没有则添加 | ||||
|         if (!findUser) { | ||||
|           this.selectedMember.push(val); | ||||
|         } else { | ||||
|           // 有重复数据就删除 | ||||
|           this.selectedMember.map((item, index) => { | ||||
|             if (item.id === findUser.id) { | ||||
|               this.selectedMember.splice(index, 1); | ||||
|             } | ||||
|           }); | ||||
|         } | ||||
|         this.reSelectMember(); | ||||
|       }, | ||||
| 
 | ||||
|       // 删除选择的会员 | ||||
|       delUser(index) { | ||||
|         this.selectedMember.splice(index, 1); | ||||
|         this.reSelectMember(); | ||||
|       }, | ||||
|       //更新选择的会员 | ||||
|       reSelectMember() { | ||||
|         this.form.memberDTOS = this.selectedMember.map((item) => { | ||||
|           return { | ||||
|             nickName: item.nickName, | ||||
|             id: item.id | ||||
|           } | ||||
|         }); | ||||
|       }, | ||||
| 
 | ||||
|       //获取全部商家 | ||||
|       getShopList() { | ||||
|         this.loading = true; | ||||
|  | @ -548,6 +744,13 @@ | |||
|         this.loading = false; | ||||
| 
 | ||||
|       }, | ||||
|       // 添加指定用户 | ||||
|       addVip() { | ||||
|         this.checkUserList = true; | ||||
|         this.$nextTick(() => { | ||||
|           this.$refs.memberLayout.selectedMember = true; | ||||
|         }); | ||||
|       }, | ||||
|       paneChange(v) { | ||||
|         if (v == "SETTING") { | ||||
|           this.getNoticeMessage() | ||||
|  | @ -582,6 +785,42 @@ | |||
|         this.getMessage(); | ||||
|         this.clearSelectAll(); | ||||
|       }, | ||||
| 
 | ||||
|       //会员消息每页条数发生变化 | ||||
|       memberMessageChangePageSize(v) { | ||||
|         this.searchMemberMessageForm.pageSize = v; | ||||
|         this.messageDetail(); | ||||
|       }, | ||||
|       //会员消息页数变化 | ||||
|       memberMessageChangePage(v) { | ||||
|         this.searchMemberMessageForm.pageNumber = v; | ||||
|         this.messageDetail(); | ||||
|         this.clearSelectAll(); | ||||
|       }, | ||||
|       //会员消息 | ||||
|       memberMessageChangeSort(e) { | ||||
|         this.searchMemberMessageForm.sort = e.key; | ||||
|         this.searchMemberMessageForm.order = e.order; | ||||
|         this.messageDetail() | ||||
|       }, | ||||
| 
 | ||||
|       //店铺消息每页条数发生变化 | ||||
|       shopMessageChangePageSize(v) { | ||||
|         this.searchShopMessageForm.pageSize = v; | ||||
|         this.messageDetail(); | ||||
|       }, | ||||
|       //店铺消息页数变化 | ||||
|       shopMessageChangePage(v) { | ||||
|         this.searchShopMessageForm.pageNumber = v; | ||||
|         this.messageDetail(); | ||||
|         this.clearSelectAll(); | ||||
|       }, | ||||
|       //店铺消息 | ||||
|       shopMessageChangeSort(e) { | ||||
|         this.searchShopMessageForm.sort = e.key; | ||||
|         this.searchShopMessageForm.order = e.order; | ||||
|         this.messageDetail() | ||||
|       }, | ||||
|       //消息 | ||||
|       messageChangeSort(e) { | ||||
|         this.searchMessageForm.sort = e.key; | ||||
|  | @ -622,7 +861,7 @@ | |||
|         }) | ||||
|       }, | ||||
|       //删除站内信 | ||||
|       delete(id){ | ||||
|       delete(id) { | ||||
|         console.warn(id) | ||||
|         this.$Modal.confirm({ | ||||
|           title: "确认删除", | ||||
|  | @ -647,9 +886,11 @@ | |||
|         this.messageModalVisible = true | ||||
|         this.messageModalTitle = "发送站内信" | ||||
|         this.shopShow = false | ||||
|         this.memberShow = false | ||||
|         this.messageSendForm = | ||||
|           { | ||||
|             messageRange: "ALL", | ||||
|             messageClient: "member", | ||||
|             content: "", | ||||
|             title: "", | ||||
|             userIds: [], | ||||
|  | @ -658,6 +899,18 @@ | |||
|       }, | ||||
|       //管理员发送站内信提交 | ||||
|       sendMessageSubmit() { | ||||
|         let userIds = []; | ||||
|         let userNames = []; | ||||
|         console.warn(this.selectedMember) | ||||
|         if (this.messageSendForm.messageClient == 'member' && this.messageSendForm.messageRange == 'MEMBER'){ | ||||
|           this.selectedMember.forEach(function(item, index) { | ||||
|             userIds.push(item.id) | ||||
|             userNames.push(item.username) | ||||
|           }) | ||||
|           this.messageSendForm.userIds = userIds | ||||
|           this.messageSendForm.userNames = userNames | ||||
|         } | ||||
| 
 | ||||
|         if (this.messageSendForm.userIds.length <= 0 && this.messageSendForm.messageRange == "APPOINT") { | ||||
|           this.$Message.error("请选择发送对象"); | ||||
|           return | ||||
|  | @ -677,14 +930,27 @@ | |||
|         }) | ||||
| 
 | ||||
|       }, | ||||
|       //发送对象选择 | ||||
|       selectObject(v) { | ||||
|         this.messageSendForm.messageRange = "ALL" | ||||
|         this.shopShow = false | ||||
|         this.memberShow =false | ||||
|       }, | ||||
|       //弹出选择商家的框 | ||||
|       selectShop(v) { | ||||
|         if (v == "APPOINT") { | ||||
|           this.getShopList() | ||||
|           this.shopShow = true | ||||
|           this.memberShow = false | ||||
|         } | ||||
|         if (v == "ALL") { | ||||
|           this.shopShow = false | ||||
|           this.memberShow = false | ||||
|         } | ||||
|         if (v == "MEMBER") { | ||||
|           this.shopShow = false | ||||
|           this.memberShow = true | ||||
|           this.selectedMember = [] | ||||
|         } | ||||
|       }, | ||||
|       //获取管理员发送列表 | ||||
|  | @ -715,9 +981,9 @@ | |||
|       handleSubmit() { | ||||
|         this.$refs.form.validate((valid) => { | ||||
|           if (valid) { | ||||
|             let params ={ | ||||
|               noticeContent:this.form.noticeContent, | ||||
|               noticeTitle:this.form.noticeTitle | ||||
|             let params = { | ||||
|               noticeContent: this.form.noticeContent, | ||||
|               noticeTitle: this.form.noticeTitle | ||||
|             } | ||||
|             API_Setting.editNoticeMessage(this.form.id, params).then((res) => { | ||||
|               this.submitLoading = false; | ||||
|  | @ -731,19 +997,38 @@ | |||
|         }); | ||||
|       }, | ||||
|       //消息详情 | ||||
|       detail(v) { | ||||
|         this.searchShopMessageForm.messageId = v.id | ||||
|         API_Other.getShopMessage(this.searchShopMessageForm).then((res) => { | ||||
|           if (res.success) { | ||||
|             this.messageDetailModalVisible = true; | ||||
|             this.modalTitle = "消息详情" | ||||
|             this.messageSendForm = v | ||||
|             this.shopMessageData = res.result.records; | ||||
|             this.shopMessageDataTotal = res.result.total; | ||||
|           } | ||||
|         }); | ||||
|       messageDetail() { | ||||
|         if (this.messageSendForm.messageClient == 'member') { | ||||
|           API_Other.getMemberMessage(this.searchMemberMessageForm).then((res) => { | ||||
|             if (res.success) { | ||||
|               this.memberMessageData = res.result.records; | ||||
|               this.memberMessageDataTotal = res.result.total; | ||||
|             } | ||||
|           }); | ||||
|         } else { | ||||
|           console.warn(this.searchShopMessageForm) | ||||
|           API_Other.getShopMessage(this.searchShopMessageForm).then((res) => { | ||||
|             if (res.success) { | ||||
|               this.shopMessageData = res.result.records; | ||||
|               this.shopMessageDataTotal = res.result.total; | ||||
|             } | ||||
|           }); | ||||
|         } | ||||
| 
 | ||||
|       }, | ||||
|       //消息详情弹出框 | ||||
|       detail(v) { | ||||
|         console.warn(this.searchShopMessageForm) | ||||
|         this.messageSendForm = v | ||||
|         if (this.messageSendForm.messageClient == 'member') { | ||||
|           this.searchMemberMessageForm.messageId = v.id | ||||
|         } else { | ||||
|           this.searchShopMessageForm.messageId = v.id | ||||
|         } | ||||
|         this.messageDetail(); | ||||
|         this.messageDetailModalVisible = true; | ||||
|         this.modalTitle = "消息详情" | ||||
|       }, | ||||
|       edit(v) { | ||||
|         API_Setting.getNoticeMessageDetail(v.id).then((res) => { | ||||
|           if (res.success) { | ||||
|  | @ -755,7 +1040,7 @@ | |||
|       }, | ||||
|       //禁用站内信模板 | ||||
|       disable(v) { | ||||
|         API_Setting.updateMessageStatus(v.id,"CLOSE").then((res) => { | ||||
|         API_Setting.updateMessageStatus(v.id, "CLOSE").then((res) => { | ||||
|           if (res.success) { | ||||
|             this.$Message.success("禁用成功"); | ||||
|             this.getNoticeMessage(); | ||||
|  | @ -764,7 +1049,7 @@ | |||
|       }, | ||||
|       //启用站内信模板 | ||||
|       enable(v) { | ||||
|         API_Setting.updateMessageStatus(v.id,"OPEN").then((res) => { | ||||
|         API_Setting.updateMessageStatus(v.id, "OPEN").then((res) => { | ||||
|           if (res.success) { | ||||
|             this.$Message.success("启用成功"); | ||||
|             this.getNoticeMessage(); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue