notification.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. define({
  2. name: "notification",
  3. template: `
  4. <div>
  5. <el-form ref="form" label-width="15%">
  6. <div id="vue_head">
  7. <div class="base_set">
  8. <div class="vue-main-title">
  9. <div class="vue-main-title-left"></div>
  10. <div class="vue-main-title-content">消息通知</div>
  11. </div>
  12. <div class="vue-main-form">
  13. <el-form-item label="商家通知">
  14. <div class="upload-box" >
  15. <div class="upload-box-member" @click="btnNotificationData">
  16. <i class="el-icon-plus notcie_icon" style="font-size:32px"></i><br>
  17. <span>选择通知人</span>
  18. </div>
  19. </div>
  20. <div class="img_box" v-if="member.avatar_image">
  21. <img :src="member.avatar_image"/>
  22. <span class="introduce_name">{{name}}</span>
  23. </div>
  24. <div class="tip">单品下单通知,可指定某个用户,通知商品下单备货通知,如果商品为同一商家,建议使用系统一设置</div>
  25. <div class="tip">非公众号注册会员,无法绑定通知人员</div>
  26. </el-form-item>
  27. <el-form-item label="通知方式">
  28. <el-checkbox-group v-model="form.notice_type">
  29. <el-checkbox v-for="(item,index) in notification_list" :label="item.id" :key="index" :value="item.id">{{item.name}}</el-checkbox>
  30. </el-checkbox-group>
  31. <div class="tip">通知商家方式</div>
  32. </el-form-item>
  33. </div>
  34. </div>
  35. </div>
  36. </el-form>
  37. <!-- 选择图片弹窗 -->
  38. <el-dialog :visible.sync="choose_goods_show" width="60%" left title="选择通知人">
  39. <div>
  40. <div class="search_line">
  41. <el-input v-if="is_storeCashier" style="width:90%" placeholder="请输入完整的手机号码!!" v-model="keyword_mobile"></el-input>
  42. <el-input v-if="!is_storeCashier" style="width:90%" placeholder="" v-model="keyword"></el-input>
  43. <el-button v-if="is_storeCashier" @click="btnSearchMobile">搜索</el-button>
  44. <el-button v-if="!is_storeCashier" @click="btnSearch">搜索</el-button>
  45. </div>
  46. <el-table :data="goodsData" style="width: 100%;height:500px;overflow:auto" v-loading="loading">
  47. <el-table-column label="昵称" align="" >
  48. <template slot-scope="scope">
  49. <div style="display:flex;">
  50. <img style="width: 50px;height:50px" :src="scope.row.avatar_image" alt="">
  51. <span class="nickname_card">{{scope.row.nickname}}</span>
  52. </div>
  53. </template>
  54. </el-table-column>
  55. <el-table-column label="会员ID" align="center" prop="uid"></el-table-column>
  56. <el-table-column label="姓名" align="center" prop="username"></el-table-column>
  57. <el-table-column label="手机号码" align="center" prop="mobile"></el-table-column>
  58. <el-table-column label="" align="center">
  59. <template slot-scope="scope">
  60. <span style="color:#399fbd" @click="btnSelect(scope.row)">
  61. 选择
  62. </span>
  63. </template>
  64. </el-table-column>
  65. </el-table>
  66. </div>
  67. <span slot="footer" class="dialog-footer">
  68. <el-button @click="choose_goods_show = false">取 消</el-button>
  69. </span>
  70. </el-dialog>
  71. </div>
  72. `,
  73. data(){
  74. return {
  75. notification_list:[{
  76. id:1,
  77. name:"下单通知"
  78. },{
  79. id:2,
  80. name:"付款通知"
  81. },{
  82. id:3,
  83. name:"买家收货通知"
  84. }],
  85. choose_goods_loading:false,
  86. choose_goods_show:false,
  87. // current_page:1,
  88. // total:1,
  89. // per_page:1,
  90. goodsData:[],
  91. member:{
  92. avatar_image:"",
  93. uid:"",
  94. },
  95. name:"",
  96. keyword:"",
  97. keyword_mobile:'',
  98. loading:false
  99. }
  100. },
  101. style: `
  102. .img_box{
  103. margin:20px 0;
  104. display: flex;
  105. flex-direction: column;
  106. }
  107. .img_box img{
  108. width:150px;
  109. height:150px;
  110. }
  111. .introduce_name{
  112. width: 150px;
  113. line-height: 20px;
  114. }
  115. .notcie_icon{
  116. font-size: 32px;
  117. width: 100%;
  118. text-align: center;
  119. }
  120. .el-checkbox-group{
  121. display: contents;
  122. }
  123. .nickname_card{
  124. align-items: center;
  125. overflow: hidden;
  126. text-overflow: ellipsis;
  127. display: -webkit-box;
  128. -webkit-box-orient: vertical;
  129. -webkit-line-clamp: 1;
  130. height: fit-content;
  131. line-height: 50px;
  132. margin-left:10px;
  133. }
  134. `,
  135. created() {
  136. this.member.avatar_image = this.form.member ? this.form.member.avatar_image : "";
  137. this.member.uid = this.form.member ? this.form.member.uid : "";
  138. this.is_storeCashier = this.form.is_storeCashier ? this.form.is_storeCashier : '';
  139. // this.form.notice_type = [1,2]
  140. this.name = this.form.member.username ? this.form.member.username : "";
  141. },
  142. methods: {
  143. btnNotificationData(){
  144. this.choose_goods_show = true;
  145. this.choose_goods_loading = true
  146. },
  147. btnSelect(data){
  148. // console.log(data,'data');
  149. this.name = data.nickname
  150. this.member.avatar_image = data.avatar_image
  151. this.member.uid = data.uid
  152. this.choose_goods_show = false
  153. },
  154. btnSearch(){
  155. this.loading = true
  156. this.$http.post(this.http_url +'member.member.get-search-member-json',{
  157. keyword:this.keyword
  158. }).then(response => {
  159. if(response.data.result==1){
  160. this.$message({
  161. message: '成功',
  162. type: 'success'
  163. });
  164. this.loading = false
  165. this.goodsData = response.data.data.members
  166. }
  167. else{
  168. this.$message.error(response.data);
  169. }
  170. }),function(res){
  171. console.log(res);
  172. };
  173. },
  174. btnSearchMobile() {
  175. this.loading = true
  176. this.$http.post(this.http_url +'plugin.store-cashier.store.admin.member-information.get-member-only-mobile',{
  177. keyword:this.keyword_mobile
  178. }).then(response => {
  179. if(response.data.result==1){
  180. this.$message({
  181. message: '成功',
  182. type: 'success'
  183. });
  184. this.loading = false
  185. this.goodsData = response.data.data.members
  186. }
  187. else{
  188. this.$message.error(response.data.msg);
  189. this.loading = false
  190. }
  191. })
  192. },
  193. extraDate(){
  194. },
  195. validate(){
  196. return {
  197. type:this.form.notice_type,
  198. uid:this.member.uid ? this.member.uid : ""
  199. }
  200. }
  201. },
  202. props: {
  203. form: {
  204. // type: Object,
  205. default() {
  206. return {}
  207. }
  208. },
  209. http_url:{
  210. type:String,
  211. default() {
  212. return "";
  213. },
  214. }
  215. }
  216. })