91ceeaa10a8741998022b78eb6c30bb4.json 23 KB

1
  1. {"remainingRequest":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/vue-loader/lib/index.js??vue-loader-options!/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/src/views/member/member/index.vue?vue&type=script&lang=js&","dependencies":[{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/src/views/member/member/index.vue","mtime":1618041288000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/babel-loader/lib/index.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgY2l0eURhdGEgZnJvbSAnQC91dGlscy9jaXR5RGF0YScNCmltcG9ydCB1cGxvYWRJbWFnZSBmcm9tICdAL2NvbXBvbmVudHMvdXBsb2FkSW1hZ2UnDQppbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAidnVleCI7DQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICJTeXNNZW1iZXIiLA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICAvKiBjaXR5U2VsZWN0ICovDQogICAgICBjaXR5RGF0YTogY2l0eURhdGEsICAvLyDnnIHluILljLrmlbDmja4NCiAgICAgIGNpdHk6IFtdLCAgLy8g6YCJ5Lit55qE55yB5biC5Yy6DQogICAgICBwcm92aW5jZUNpdHk6IFtdLCAgLy8g6YCJ5Lit55qE55yB5biCDQogICAgICBwcm92aW5jZTogW10sICAvLyDpgInkuK3nmoTnnIENCg0KICAgICAgdGFibGU6IHt1cmw6ICcvbWVtYmVyL2luZGV4Jywgd2hlcmU6IHt9fSwgIC8vIOihqOagvOmFjee9rg0KICAgICAgY2hvb3NlOiBbXSwgIC8vIOihqOagvOmAieS4reaVsOaNrg0KICAgICAgc2hvd0VkaXQ6IGZhbHNlLCAgLy8g5piv5ZCm5pi+56S66KGo5Y2V5by556qXDQogICAgICBlZGl0Rm9ybToge30sICAvLyDooajljZXmlbDmja4NCiAgICAgIGVkaXRSdWxlczogeyAgLy8g6KGo5Y2V6aqM6K+B6KeE5YiZDQogICAgICAgIHJlYWxuYW1lOiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36L6T5YWl5Lya5ZGY5ZCN56ewJywgdHJpZ2dlcjogJ2JsdXInfQ0KICAgICAgICBdLA0KICAgICAgICBzb3J0OiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36L6T5YWl5o6S5bqPJywgdHJpZ2dlcjogJ2JsdXInfQ0KICAgICAgICBdLA0KICAgICAgfSwNCiAgICAgIG1lbWJlckxldmVsTGlzdDogW10sICAvLyDkvJrlkZjnrYnnuqcNCiAgICB9DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgLi4ubWFwR2V0dGVycyhbInBlcm1pc3Npb24iXSksDQogIH0sDQogIGNvbXBvbmVudHM6IHt1cGxvYWRJbWFnZX0sDQogIG1vdW50ZWQoKSB7DQogICAgdGhpcy5nZXRNZW1iZXJMZXZlbExpc3QoKTsgLy8g5p+l6K+i6IGM57qn5YiX6KGoDQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICAvKiDmmL7npLrnvJbovpEgKi8NCiAgICBlZGl0KHJvdykgew0KICAgICAgdGhpcy5lZGl0Rm9ybSA9IE9iamVjdC5hc3NpZ24oe30sIHJvdyk7DQogICAgICB0aGlzLnNob3dFZGl0ID0gdHJ1ZTsNCiAgICB9LA0KICAgIC8qIOS/neWtmOe8lui+kSAqLw0KICAgIHNhdmUoKSB7DQogICAgICB0aGlzLiRyZWZzWydlZGl0Rm9ybSddLnZhbGlkYXRlKCh2YWxpZCkgPT4gew0KICAgICAgICBpZiAodmFsaWQpIHsNCiAgICAgICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy4kbG9hZGluZyh7bG9jazogdHJ1ZX0pOw0KICAgICAgICAgIHRoaXMuJGh0dHAucG9zdCgnL21lbWJlci9lZGl0JywgdGhpcy5lZGl0Rm9ybSkudGhlbihyZXMgPT4gew0KICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICAgICAgdGhpcy5zaG93RWRpdCA9IGZhbHNlOw0KICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHt0eXBlOiAnc3VjY2VzcycsIG1lc3NhZ2U6IHJlcy5kYXRhLm1zZ30pOw0KICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRhYmxlLnJlbG9hZCgpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMuZGF0YS5tc2cpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pLmNhdGNoKGUgPT4gew0KICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlLm1lc3NhZ2UpOw0KICAgICAgICAgIH0pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgfSwNCiAgICAvKiDliKDpmaQgKi8NCiAgICByZW1vdmUocm93KSB7DQogICAgICBpZiAoIXJvdykgeyAgLy8g5om56YeP5Yig6ZmkDQogICAgICAgIGlmICh0aGlzLmNob29zZS5sZW5ndGggPT09IDApIHJldHVybiB0aGlzLiRtZXNzYWdlLmVycm9yKCfor7foh7PlsJHpgInmi6nkuIDmnaHmlbDmja4nKTsNCiAgICAgICAgbGV0IGlkcyA9IHRoaXMuY2hvb3NlLm1hcChkID0+IGQuaWQpOw0KICAgICAgICB0aGlzLiRjb25maXJtKCfnoa7lrpropoHliKDpmaTpgInkuK3nmoTkvJrlkZjlkJc/JywgJ+aPkOekuicsIHt0eXBlOiAnd2FybmluZyd9KS50aGVuKCgpID0+IHsNCiAgICAgICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy4kbG9hZGluZyh7bG9jazogdHJ1ZX0pOw0KICAgICAgICAgIHRoaXMuJGh0dHAucG9zdCgnL21lbWJlci9kZWxldGUnLCB7aWQ6IGlkc30pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgICAgIGlmIChyZXMuZGF0YS5jb2RlID09PSAwKSB7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe3R5cGU6ICdzdWNjZXNzJywgbWVzc2FnZTogcmVzLmRhdGEubXNnfSk7DQogICAgICAgICAgICAgIHRoaXMuJHJlZnMudGFibGUucmVsb2FkKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5kYXRhLm1zZyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSkuY2F0Y2goZSA9PiB7DQogICAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGUubWVzc2FnZSk7DQogICAgICAgICAgfSk7DQogICAgICAgIH0pLmNhdGNoKCgpID0+IDApOw0KICAgICAgfSBlbHNlIHsgIC8vIOWNleS4quWIoOmZpA0KICAgICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy4kbG9hZGluZyh7bG9jazogdHJ1ZX0pOw0KICAgICAgICB0aGlzLiRodHRwLnBvc3QoJy9tZW1iZXIvZGVsZXRlJywge2lkOnJvdy5pZH0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7DQogICAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe3R5cGU6ICdzdWNjZXNzJywgbWVzc2FnZTogcmVzLmRhdGEubXNnfSk7DQogICAgICAgICAgICB0aGlzLiRyZWZzLnRhYmxlLnJlbG9hZCgpOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5kYXRhLm1zZyk7DQogICAgICAgICAgfQ0KICAgICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlLm1lc3NhZ2UpOw0KICAgICAgICB9KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qIOabtOaUueeKtuaAgSAqLw0KICAgIGVkaXRTdGF0dXMocm93KSB7DQogICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy4kbG9hZGluZyh7bG9jazogdHJ1ZX0pOw0KICAgICAgbGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHJvdyk7DQogICAgICB0aGlzLiRodHRwLnBvc3QoJy9tZW1iZXIvc3RhdHVzJywgcGFyYW1zKS50aGVuKHJlcyA9PiB7DQogICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlKHt0eXBlOiAnc3VjY2VzcycsIG1lc3NhZ2U6IHJlcy5kYXRhLm1zZ30pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHJvdy5zdGF0dXMgPSAhcm93LnN0YXR1cyA/IDIgOiAxOw0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLmRhdGEubXNnKTsNCiAgICAgICAgfQ0KICAgICAgfSkuY2F0Y2goZSA9PiB7DQogICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlLm1lc3NhZ2UpOw0KICAgICAgfSk7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiDojrflj5bogYznuqfliJfooagNCiAgICAgKi8NCiAgICBnZXRNZW1iZXJMZXZlbExpc3QoKSB7DQogICAgICB0aGlzLiRodHRwLmdldCgnL21lbWJlcmxldmVsL2dldE1lbWJlckxldmVsTGlzdCcpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICB0aGlzLm1lbWJlckxldmVsTGlzdCA9IHJlcy5kYXRhLmRhdGE7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMuZGF0YS5tc2cpOw0KICAgICAgICB9DQogICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlLm1lc3NhZ2UpOw0KICAgICAgfSk7DQogICAgfSwNCiAgfQ0KfQ0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/member/member","sourcesContent":["<template>\r\n <div class=\"ele-body\">\r\n <el-card shadow=\"never\">\r\n <!-- 搜索表单 -->\r\n <el-form :model=\"table.where\" label-width=\"77px\" class=\"ele-form-search\"\r\n @keyup.enter.native=\"$refs.table.reload()\" @submit.native.prevent>\r\n <el-row :gutter=\"15\">\r\n <el-col :md=\"6\" :sm=\"12\">\r\n <el-form-item label=\"会员手机:\">\r\n <el-input v-model=\"table.where.mobile\" placeholder=\"请输入会员手机\" clearable/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :md=\"9\" :sm=\"12\">\r\n <div class=\"ele-form-actions\">\r\n <el-button type=\"primary\" @click=\"$refs.table.reload()\" icon=\"el-icon-search\" class=\"ele-btn-icon\">查询\r\n </el-button>\r\n <el-button @click=\"(table.where={})&&$refs.table.reload()\">重置</el-button>\r\n <el-button @click=\"showEdit=true\" type=\"primary\" icon=\"el-icon-plus\" class=\"ele-btn-icon\" v-if=\"permission.includes('sys:member:add')\">添加</el-button>\r\n <el-button @click=\"remove()\" type=\"danger\" icon=\"el-icon-delete\" class=\"ele-btn-icon\" v-if=\"permission.includes('sys:member:dall')\">批量删除</el-button>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <!-- 数据表格 -->\r\n <ele-data-table ref=\"table\" :config=\"table\" :choose.sync=\"choose\" height=\"calc(100vh - 265px)\" highlight-current-row>\r\n <template slot-scope=\"{index}\">\r\n <el-table-column type=\"selection\" width=\"45\" align=\"center\" fixed=\"left\"/>\r\n <el-table-column type=\"index\" :index=\"index\" label=\"编号\" width=\"60\" align=\"center\" fixed=\"left\" show-overflow-tooltip/>\r\n <el-table-column prop=\"mobile\" label=\"会员手机\" sortable=\"custom\" show-overflow-tooltip min-width=\"130\"/>\r\n <el-table-column prop=\"nickname\" label=\"会员昵称\" sortable=\"custom\" show-overflow-tooltip min-width=\"120\"/>\r\n <el-table-column label=\"性别\" min-width=\"60\" align=\"center\">\r\n <template slot-scope=\"{row}\">\r\n <el-tag :type=\"['primary','success','warning'][row.gender-1]\" size=\"mini\">{{ ['男', '女', '保密'][row.gender-1] }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"头像\" min-width=\"60\" align=\"center\">\r\n <template slot-scope=\"{row}\">\r\n <el-avatar shape=\"square\" :size=\"35\" :src=\"row.avatar\"/>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"设备来源\" min-width=\"100\" align=\"center\">\r\n <template slot-scope=\"{row}\">\r\n <el-tag :type=\"['primary','success','warning', 'danger', 'info'][row.device-1]\" size=\"mini\">{{ ['苹果', '安卓', 'WAP站', 'PC站', '后台'][row.device-1] }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"会员来源\" min-width=\"100\" align=\"center\">\r\n <template slot-scope=\"{row}\">\r\n <el-tag :type=\"['primary','success'][row.source-1]\" size=\"mini\">{{ ['APP客户端', '后台添加'][row.source-1] }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"status\" label=\"会员状态\" sortable=\"custom\" :resizable=\"false\" min-width=\"120\">\r\n <template slot-scope=\"{row}\">\r\n <el-switch v-model=\"row.status\" @change=\"editStatus(row)\" :active-value=\"1\" :inactive-value=\"2\"/>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"注册时间\" sortable=\"custom\" show-overflow-tooltip align=\"center\" min-width=\"160\">\r\n <template slot-scope=\"{row}\">{{ row.create_time*1000 | toDateString }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"最近登录时间\" sortable=\"custom\" show-overflow-tooltip align=\"center\" min-width=\"160\">\r\n <template slot-scope=\"{row}\">{{ row.login_time*1000 | toDateString }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"login_count\" label=\"登录次数\" show-overflow-tooltip align=\"center\" min-width=\"120\"/>\r\n <el-table-column label=\"操作\" width=\"130px\" align=\"center\" :resizable=\"false\" fixed=\"right\">\r\n <template slot-scope=\"{row}\">\r\n <el-link @click=\"edit(row)\" icon=\"el-icon-edit\" type=\"primary\" :underline=\"false\" v-if=\"permission.includes('sys:member:edit')\">修改</el-link>\r\n <el-popconfirm title=\"确定要删除此会员吗?\" @confirm=\"remove(row)\" class=\"ele-action\">\r\n <el-link slot=\"reference\" icon=\"el-icon-delete\" type=\"danger\" :underline=\"false\" v-if=\"permission.includes('sys:member:delete')\">删除</el-link>\r\n </el-popconfirm>\r\n </template>\r\n </el-table-column>\r\n </template>\r\n </ele-data-table>\r\n </el-card>\r\n <!-- 编辑弹窗 -->\r\n <el-dialog :title=\"editForm.id?'修改会员':'添加会员'\" :visible.sync=\"showEdit\" width=\"700px\"\r\n @closed=\"editForm={}\" :destroy-on-close=\"true\" custom-class=\"ele-dialog-form\" :lock-scroll=\"false\">\r\n <el-form :model=\"editForm\" ref=\"editForm\" :rules=\"editRules\" label-width=\"100px\">\r\n <el-form-item label=\"会员头像:\">\r\n <uploadImage :limit=\"1\" v-model=\"editForm.avatar\"></uploadImage>\r\n </el-form-item>\r\n <el-row :gutter=\"15\">\r\n <el-col :sm=\"12\">\r\n <el-form-item label=\"手机号码:\" prop=\"mobile\">\r\n <el-input v-model=\"editForm.mobile\" placeholder=\"请输入手机号码\" clearable/>\r\n </el-form-item>\r\n <el-form-item label=\"会员姓名:\" prop=\"realname\">\r\n <el-input v-model=\"editForm.realname\" placeholder=\"请输入会员姓名\" clearable/>\r\n </el-form-item>\r\n <el-form-item label=\"出生日期:\" prop=\"gender\">\r\n <el-date-picker\r\n v-model=\"editForm.birthday\"\r\n type=\"date\"\r\n placeholder=\"选择出生日期\"\r\n size=\"small\"\r\n value-format=\"yyyy-MM-dd\"\r\n format=\"yyyy-MM-dd\">\r\n </el-date-picker>\r\n </el-form-item>\r\n <el-form-item label=\"设备类型:\" prop=\"device\">\r\n <el-select v-model=\"editForm.device\" placeholder=\"请选择设备类型\" class=\"ele-block\" clearable>\r\n <el-option label=\"苹果\" :value=\"1\"/>\r\n <el-option label=\"安卓\" :value=\"2\"/>\r\n <el-option label=\"WAP站\" :value=\"3\"/>\r\n <el-option label=\"PC站\" :value=\"4\"/>\r\n <el-option label=\"后台\" :value=\"5\"/>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"所在城市:\" prop=\"city\">\r\n <el-cascader v-model=\"editForm.city\" :options=\"cityData.cityData\" clearable popper-class=\"ele-pop-wrap-higher\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :sm=\"12\">\r\n <el-form-item label=\"会员等级\" prop=\"member_level\" :rules=\"{\r\n required: true, message: '所属会员等级不能为空', trigger: 'change'\r\n }\">\r\n <el-select filterable clearable v-model=\"editForm.member_level\" size=\"small\" placeholder=\"-请选择会员等级-\" class=\"ele-block\">\r\n <el-option v-for=\"item in memberLevelList\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\"/>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"会员昵称:\" prop=\"nickname\">\r\n <el-input v-model=\"editForm.nickname\" placeholder=\"请输入会员昵称\" clearable/>\r\n </el-form-item>\r\n <el-form-item label=\"性别:\" prop=\"gender\">\r\n <el-select v-model=\"editForm.gender\" placeholder=\"请选择性别\" class=\"ele-block\" clearable>\r\n <el-option label=\"男\" :value=\"1\"/>\r\n <el-option label=\"女\" :value=\"2\"/>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"会员来源:\" prop=\"source\">\r\n <el-select v-model=\"editForm.source\" placeholder=\"请选择会员来源\" class=\"ele-block\" clearable>\r\n <el-option label=\"APP客户端\" :value=\"1\"/>\r\n <el-option label=\"后台添加\" :value=\"2\"/>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"会员状态:\" prop=\"status\">\r\n <el-select v-model=\"editForm.status\" placeholder=\"请选择会员状态\" class=\"ele-block\" clearable>\r\n <el-option label=\"正常\" :value=\"1\"/>\r\n <el-option label=\"禁用\" :value=\"2\"/>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-form-item label=\"个人简介:\">\r\n <el-input v-model=\"editForm.intro\" placeholder=\"请输入个人简介\" :rows=\"2\" type=\"textarea\"/>\r\n </el-form-item>\r\n <el-form-item label=\"个人签名:\">\r\n <el-input v-model=\"editForm.signature\" placeholder=\"请输入个人签名\" :rows=\"2\" type=\"textarea\"/>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\">\r\n <el-button @click=\"showEdit=false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"save\">保存</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport cityData from '@/utils/cityData'\r\nimport uploadImage from '@/components/uploadImage'\r\nimport { mapGetters } from \"vuex\";\r\nexport default {\r\n name: \"SysMember\",\r\n data() {\r\n return {\r\n /* citySelect */\r\n cityData: cityData, // 省市区数据\r\n city: [], // 选中的省市区\r\n provinceCity: [], // 选中的省市\r\n province: [], // 选中的省\r\n\r\n table: {url: '/member/index', where: {}}, // 表格配置\r\n choose: [], // 表格选中数据\r\n showEdit: false, // 是否显示表单弹窗\r\n editForm: {}, // 表单数据\r\n editRules: { // 表单验证规则\r\n realname: [\r\n {required: true, message: '请输入会员名称', trigger: 'blur'}\r\n ],\r\n sort: [\r\n {required: true, message: '请输入排序', trigger: 'blur'}\r\n ],\r\n },\r\n memberLevelList: [], // 会员等级\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\"permission\"]),\r\n },\r\n components: {uploadImage},\r\n mounted() {\r\n this.getMemberLevelList(); // 查询职级列表\r\n },\r\n methods: {\r\n /* 显示编辑 */\r\n edit(row) {\r\n this.editForm = Object.assign({}, row);\r\n this.showEdit = true;\r\n },\r\n /* 保存编辑 */\r\n save() {\r\n this.$refs['editForm'].validate((valid) => {\r\n if (valid) {\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/member/edit', this.editForm).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.showEdit = false;\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n } else {\r\n return false;\r\n }\r\n });\r\n },\r\n /* 删除 */\r\n remove(row) {\r\n if (!row) { // 批量删除\r\n if (this.choose.length === 0) return this.$message.error('请至少选择一条数据');\r\n let ids = this.choose.map(d => d.id);\r\n this.$confirm('确定要删除选中的会员吗?', '提示', {type: 'warning'}).then(() => {\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/member/delete', {id: ids}).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n }).catch(() => 0);\r\n } else { // 单个删除\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/member/delete', {id:row.id}).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n }\r\n },\r\n /* 更改状态 */\r\n editStatus(row) {\r\n const loading = this.$loading({lock: true});\r\n let params = Object.assign({}, row);\r\n this.$http.post('/member/status', params).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n } else {\r\n row.status = !row.status ? 2 : 1;\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n },\r\n /**\r\n * 获取职级列表\r\n */\r\n getMemberLevelList() {\r\n this.$http.get('/memberlevel/getMemberLevelList').then(res => {\r\n if (res.data.code === 0) {\r\n this.memberLevelList = res.data.data;\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n this.$message.error(e.message);\r\n });\r\n },\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.ele-block >>> .el-upload, .ele-block >>> .el-upload-dragger {\r\n width: 100%;\r\n}\r\n</style>"]}]}