e9fc1bf266df059f849b7fdf9b8af7e2.json 21 KB

1
  1. {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\user\\grade\\card\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\user\\grade\\card\\index.vue","mtime":1761185180227},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOw0KaW1wb3J0IGNhcmRMaXN0IGZyb20gJy4vbGlzdC52dWUnOw0KaW1wb3J0IHsgdXNlck1lbWJlckJhdGNoLCBtZW1iZXJCYXRjaFNhdmUsIG1lbWJlckJhdGNoU2V0VmFsdWUsIGV4cG9ydE1lbWJlckNhcmQsIHVzZXJNZW1iZXJTY2FuIH0gZnJvbSAnQC9hcGkvdXNlcic7DQppbXBvcnQgeyBleHBvcnRtYmVyQ2FyZExpc3QgfSBmcm9tICdAL2FwaS9leHBvcnQuanMnOw0KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdpbmRleCcsDQogIGNvbXBvbmVudHM6IHsgY2FyZExpc3QgfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgY2FyZE1vZGFsOiBmYWxzZSwNCiAgICAgIGlkOiAwLA0KICAgICAgZ3JpZDogew0KICAgICAgICB4bDogNywNCiAgICAgICAgbGc6IDcsDQogICAgICAgIG1kOiAxMiwNCiAgICAgICAgc206IDI0LA0KICAgICAgICB4czogMjQsDQogICAgICB9LA0KICAgICAgdGJvZHk6IFtdLA0KICAgICAgdG90YWw6IDAsDQogICAgICBncmFkZUZyb206IHsNCiAgICAgICAgdGl0bGU6ICcnLA0KICAgICAgICBwYWdlOiAxLA0KICAgICAgICBsaW1pdDogMTUsDQogICAgICB9LA0KICAgICAgbG9hZGluZzogZmFsc2UsDQogICAgICBtb2RhbDogZmFsc2UsDQoNCiAgICAgIGZvcm1WYWxpZGF0ZTogew0KICAgICAgICBpZDogMCwNCiAgICAgICAgdGl0bGU6ICcnLA0KICAgICAgICB0b3RhbF9udW06IDEsDQogICAgICAgIHVzZV9kYXk6IDEsDQogICAgICAgIHN0YXR1czogMSwNCiAgICAgICAgcmVtYXJrOiAnJywNCiAgICAgIH0sDQogICAgICBtb2RhbDI6IGZhbHNlLA0KICAgICAgbW9kYWwzOiBmYWxzZSwNCiAgICAgIHFyY29kZTogbnVsbCwNCiAgICAgIGZhcGk6IHt9LA0KICAgIH07DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgLi4ubWFwU3RhdGUoJ21lZGlhJywgWydpc01vYmlsZSddKSwNCiAgICBsYWJlbFdpZHRoKCkgew0KICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyB1bmRlZmluZWQgOiAnODBweCc7DQogICAgfSwNCiAgICBsYWJlbFBvc2l0aW9uKCkgew0KICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAndG9wJyA6ICdyaWdodCc7DQogICAgfSwNCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICB0aGlzLmdldE1lbWJlckJhdGNoKHRoaXMuZ3JhZGVGcm9tKTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIC8vIOaJueasoeWIl+ihqA0KICAgIGdldE1lbWJlckJhdGNoKCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgIHVzZXJNZW1iZXJCYXRjaCh0aGlzLmdyYWRlRnJvbSkNCiAgICAgICAgLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgICAgIHRoaXMudGJvZHkgPSByZXMuZGF0YS5saXN0Ow0KICAgICAgICAgIHRoaXMudG90YWwgPSByZXMuZGF0YS5jb3VudDsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChlcnIpID0+IHsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOaJueasoeWQjeensOafpeivog0KICAgIHVzZXJTZWFyY2hzKCkgew0KICAgICAgdGhpcy5ncmFkZUZyb20ucGFnZSA9IDE7DQogICAgICB0aGlzLmdldE1lbWJlckJhdGNoKCk7DQogICAgfSwNCiAgICAvLyDmv4DmtLsgfCDlhrvnu5MNCiAgICBvbmNoYW5nZUlzU2hvdyhyb3cpIHsNCiAgICAgIG1lbWJlckJhdGNoU2V0VmFsdWUocm93LmlkLCB7DQogICAgICAgIGZpZWxkOiAnc3RhdHVzJywNCiAgICAgICAgdmFsdWU6IHJvdy5zdGF0dXMsDQogICAgICB9KQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKGVycikgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyLm1zZyk7DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g5a+85Ye6DQogICAgYXN5bmMgZXhwb3J0KHJvdykgew0KICAgICAgbGV0IFt0aCwgZmlsZWtleSwgZGF0YSwgZmlsZU5hbWVdID0gW1tdLCBbXSwgW10sICcnXTsNCiAgICAgIGxldCBsZWJEYXRhID0gYXdhaXQgdGhpcy5nZXRFeGNlbERhdGEocm93LmlkKTsNCiAgICAgIGlmICghZmlsZU5hbWUpIGZpbGVOYW1lID0gbGViRGF0YS5maWxlbmFtZTsNCiAgICAgIGlmICghZmlsZWtleS5sZW5ndGgpIHsNCiAgICAgICAgZmlsZWtleSA9IGxlYkRhdGEuZmlsZUtleTsNCiAgICAgIH0NCiAgICAgIGlmICghdGgubGVuZ3RoKSB0aCA9IGxlYkRhdGEuaGVhZGVyOw0KICAgICAgZGF0YSA9IGRhdGEuY29uY2F0KGxlYkRhdGEuZXhwb3J0KTsNCiAgICAgIHRoaXMuJGV4cG9ydEV4Y2VsKHRoLCBmaWxla2V5LCBmaWxlTmFtZSwgZGF0YSk7DQogICAgfSwNCiAgICBnZXRFeGNlbERhdGEoZXhjZWxEYXRhKSB7DQogICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gew0KICAgICAgICBleHBvcnRtYmVyQ2FyZExpc3QoZXhjZWxEYXRhKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTsNCiAgICAgICAgfSk7DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOabtOWkmg0KICAgIGNoYW5nZU1lbnUocm93LCBuYW1lKSB7DQogICAgICBzd2l0Y2ggKG5hbWUpIHsNCiAgICAgICAgY2FzZSAnMSc6DQogICAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUuaWQgPSByb3cuaWQ7DQogICAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUudGl0bGUgPSByb3cudGl0bGU7DQogICAgICAgICAgdGhpcy5tb2RhbCA9IHRydWU7DQogICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJzInOg0KICAgICAgICAgIHRoaXMuaWQgPSByb3cuaWQ7DQogICAgICAgICAgdGhpcy5jYXJkTW9kYWwgPSB0cnVlOw0KICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICczJzoNCiAgICAgICAgICB0aGlzLmV4cG9ydChyb3cpOw0KICAgICAgICAgIGJyZWFrOw0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g5re75Yqg5om55qyh5by556qXDQogICAgYWRkQmF0Y2goKSB7DQogICAgICAvLyB0aGlzLmZhcGkucmVzZXRGaWVsZHMoKTsNCiAgICAgIHRoaXMubW9kYWwgPSB0cnVlOw0KICAgICAgdGhpcy5mb3JtVmFsaWRhdGUuaWQgPSAwOw0KICAgICAgdGhpcy5mb3JtVmFsaWRhdGUudGl0bGUgPSAnJzsNCiAgICB9LA0KICAgIC8vIOaPkOS6pOaJueasoQ0KICAgIG9uU3VibWl0KCkgew0KICAgICAgaWYgKHRoaXMuZm9ybVZhbGlkYXRlLmlkKSB7DQogICAgICAgIG1lbWJlckJhdGNoU2V0VmFsdWUodGhpcy5mb3JtVmFsaWRhdGUuaWQsIHsNCiAgICAgICAgICBmaWVsZDogJ3RpdGxlJywNCiAgICAgICAgICB2YWx1ZTogdGhpcy5mb3JtVmFsaWRhdGUudGl0bGUsDQogICAgICAgICAgcmVtYXJrOiB0aGlzLmZvcm1WYWxpZGF0ZS5yZW1hcmssDQogICAgICAgIH0pDQogICAgICAgICAgLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgICAgdGhpcy5tb2RhbCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOw0KICAgICAgICAgICAgdGhpcy5nZXRNZW1iZXJCYXRjaCgpOw0KICAgICAgICAgIH0pDQogICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyLm1zZyk7DQogICAgICAgICAgfSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBtZW1iZXJCYXRjaFNhdmUodGhpcy5mb3JtVmFsaWRhdGUuaWQsIHRoaXMuZm9ybVZhbGlkYXRlKQ0KICAgICAgICAgIC50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICAgIHRoaXMubW9kYWwgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsNCiAgICAgICAgICAgIHRoaXMuZ2V0TWVtYmVyQmF0Y2goKTsNCiAgICAgICAgICB9KQ0KICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOw0KICAgICAgICAgIH0pOw0KICAgICAgfQ0KICAgIH0sDQogICAgb25TdWJtaXQyKGZvcm1EYXRhKSB7fSwNCiAgICAvLyDkvJrlkZjljaHkuoznu7TnoIENCiAgICBnZXRNZW1iZXJTY2FuKCkgew0KICAgICAgdXNlck1lbWJlclNjYW4oKQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy5xcmNvZGUgPSByZXMuZGF0YTsNCiAgICAgICAgICB0aGlzLm1vZGFsMyA9IHRydWU7DQogICAgICAgIH0pDQogICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlcnIubXNnKTsNCiAgICAgICAgfSk7DQogICAgfSwNCiAgfSwNCn07DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAoLA;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;;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;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/pages/user/grade/card","sourcesContent":["<template>\r\n <div>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt\" :body-style=\"{ padding: 0 }\">\r\n <div class=\"padding-add\">\r\n <el-form\r\n :model=\"gradeFrom\"\r\n inline\r\n :label-width=\"labelWidth\"\r\n :label-position=\"labelPosition\"\r\n @submit.native.prevent\r\n >\r\n <el-form-item label=\"批次名称:\" label-for=\"title\">\r\n <el-input clearable v-model=\"gradeFrom.title\" placeholder=\"请输入批次名称\" class=\"form_content_width\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" v-db-click @click=\"userSearchs\">查询</el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n </el-card>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"mt16\">\r\n <el-button type=\"primary\" v-db-click @click=\"addBatch\">添加批次</el-button>\r\n <el-button v-db-click @click=\"getMemberScan\">卡密使用页面二维码</el-button>\r\n <el-table\r\n class=\"mt14\"\r\n :data=\"tbody\"\r\n v-loading=\"loading\"\r\n highlight-current-row\r\n no-userFrom-text=\"暂无数据\"\r\n no-filtered-userFrom-text=\"暂无筛选结果\"\r\n >\r\n <el-table-column label=\"编号\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.id }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"批次名称\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.title }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"体验天数\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.use_day }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"发卡总数量\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.total_num }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"使用数量\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.use_num }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"制卡时间\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.add_time }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"是否激活\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <el-switch\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n v-model=\"scope.row.status\"\r\n :value=\"scope.row.status\"\r\n @change=\"onchangeIsShow(scope.row)\"\r\n size=\"large\"\r\n >\r\n </el-switch>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"备注\" min-width=\"120\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.remark }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"制卡时间\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.add_time }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" fixed=\"right\" width=\"120\">\r\n <template slot-scope=\"scope\">\r\n <el-dropdown size=\"small\" @command=\"changeMenu(scope.row, $event, scope.$index)\" :transfer=\"true\">\r\n <span class=\"el-dropdown-link\">更多<i class=\"el-icon-arrow-down el-icon--right\"></i> </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item command=\"1\">编辑批次名</el-dropdown-item>\r\n <el-dropdown-item command=\"2\">查看卡列表</el-dropdown-item>\r\n <el-dropdown-item command=\"3\">导出</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"acea-row row-right page\">\r\n <pagination\r\n v-if=\"total\"\r\n :total=\"total\"\r\n :page.sync=\"gradeFrom.page\"\r\n :limit.sync=\"gradeFrom.limit\"\r\n @pagination=\"getMemberBatch\"\r\n />\r\n </div>\r\n </el-card>\r\n <el-dialog :visible.sync=\"modal\" width=\"540px\" :title=\"`${formValidate.id ? '编辑' : '添加'}批次`\">\r\n <!-- <form-create v-model=\"fapi\" :rule=\"rule\" @submit=\"onSubmit\"></form-create> -->\r\n <el-form ref=\"formValidate\" :model=\"formValidate\" label-width=\"80px\" @submit.native.prevent>\r\n <el-form-item label=\"批次名称:\">\r\n <el-input placeholder=\"请输入批次名称\" element-id=\"unit_name\" v-model=\"formValidate.title\" class=\"w100\" />\r\n </el-form-item>\r\n <el-form-item label=\"备注:\" v-if=\"formValidate.id\">\r\n <el-input type=\"textarea\" placeholder=\"请输入备注\" v-model=\"formValidate.remark\" class=\"w100\" />\r\n </el-form-item>\r\n <template v-if=\"!formValidate.id\">\r\n <el-form-item label=\"制卡数量:\">\r\n <el-input-number\r\n :controls=\"false\"\r\n placeholder=\"请输入制卡数量\"\r\n element-id=\"sort\"\r\n :precision=\"0\"\r\n :max=\"100000\"\r\n :min=\"1\"\r\n v-model=\"formValidate.total_num\"\r\n class=\"perW10\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"体验天数:\">\r\n <el-input-number\r\n :controls=\"false\"\r\n placeholder=\"请输入体验天数\"\r\n element-id=\"sort\"\r\n :precision=\"0\"\r\n :max=\"100000\"\r\n :min=\"1\"\r\n v-model=\"formValidate.use_day\"\r\n class=\"perW10\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"是否激活:\">\r\n <el-radio-group element-id=\"status\" v-model=\"formValidate.status\">\r\n <el-radio :label=\"1\" class=\"radio\">激活</el-radio>\r\n <el-radio :label=\"0\">冻结</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"备注:\">\r\n <el-input type=\"textarea\" placeholder=\"请输入备注\" v-model=\"formValidate.remark\" class=\"w100\" />\r\n </el-form-item>\r\n </template>\r\n </el-form>\r\n <div class=\"acea-row row-right\">\r\n <el-button v-db-click @click=\"modal = false\">取消</el-button>\r\n <el-button type=\"primary\" v-db-click @click=\"onSubmit()\">提交</el-button>\r\n </div>\r\n </el-dialog>\r\n <el-dialog :visible.sync=\"cardModal\" title=\"卡列表\" width=\"1000px\">\r\n <cardList v-if=\"cardModal\" :id=\"id\"></cardList>\r\n </el-dialog>\r\n <el-dialog :visible.sync=\"modal3\" title=\"二维码\" width=\"540px\">\r\n <div v-if=\"qrcode\" class=\"acea-row row-around\">\r\n <div v-if=\"qrcode && qrcode.wechat_img\" class=\"acea-row row-column-around row-between-wrapper\">\r\n <div v-viewer class=\"QRpic\">\r\n <img v-lazy=\"qrcode.wechat_img\" />\r\n </div>\r\n <span class=\"mt10\">公众号二维码</span>\r\n </div>\r\n <div v-if=\"qrcode && qrcode.routine\" class=\"acea-row row-column-around row-between-wrapper\">\r\n <div v-viewer class=\"QRpic\">\r\n <img v-lazy=\"qrcode.routine\" />\r\n </div>\r\n <span class=\"mt10\">小程序二维码</span>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState } from 'vuex';\r\nimport cardList from './list.vue';\r\nimport { userMemberBatch, memberBatchSave, memberBatchSetValue, exportMemberCard, userMemberScan } from '@/api/user';\r\nimport { exportmberCardList } from '@/api/export.js';\r\n\r\nexport default {\r\n name: 'index',\r\n components: { cardList },\r\n data() {\r\n return {\r\n cardModal: false,\r\n id: 0,\r\n grid: {\r\n xl: 7,\r\n lg: 7,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n tbody: [],\r\n total: 0,\r\n gradeFrom: {\r\n title: '',\r\n page: 1,\r\n limit: 15,\r\n },\r\n loading: false,\r\n modal: false,\r\n\r\n formValidate: {\r\n id: 0,\r\n title: '',\r\n total_num: 1,\r\n use_day: 1,\r\n status: 1,\r\n remark: '',\r\n },\r\n modal2: false,\r\n modal3: false,\r\n qrcode: null,\r\n fapi: {},\r\n };\r\n },\r\n computed: {\r\n ...mapState('media', ['isMobile']),\r\n labelWidth() {\r\n return this.isMobile ? undefined : '80px';\r\n },\r\n labelPosition() {\r\n return this.isMobile ? 'top' : 'right';\r\n },\r\n },\r\n created() {\r\n this.getMemberBatch(this.gradeFrom);\r\n },\r\n methods: {\r\n // 批次列表\r\n getMemberBatch() {\r\n this.loading = true;\r\n userMemberBatch(this.gradeFrom)\r\n .then((res) => {\r\n this.loading = false;\r\n this.tbody = res.data.list;\r\n this.total = res.data.count;\r\n })\r\n .catch((err) => {\r\n this.loading = false;\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n // 批次名称查询\r\n userSearchs() {\r\n this.gradeFrom.page = 1;\r\n this.getMemberBatch();\r\n },\r\n // 激活 | 冻结\r\n onchangeIsShow(row) {\r\n memberBatchSetValue(row.id, {\r\n field: 'status',\r\n value: row.status,\r\n })\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n // 导出\r\n async export(row) {\r\n let [th, filekey, data, fileName] = [[], [], [], ''];\r\n let lebData = await this.getExcelData(row.id);\r\n if (!fileName) fileName = lebData.filename;\r\n if (!filekey.length) {\r\n filekey = lebData.fileKey;\r\n }\r\n if (!th.length) th = lebData.header;\r\n data = data.concat(lebData.export);\r\n this.$exportExcel(th, filekey, fileName, data);\r\n },\r\n getExcelData(excelData) {\r\n return new Promise((resolve, reject) => {\r\n exportmberCardList(excelData).then((res) => {\r\n resolve(res.data);\r\n });\r\n });\r\n },\r\n // 更多\r\n changeMenu(row, name) {\r\n switch (name) {\r\n case '1':\r\n this.formValidate.id = row.id;\r\n this.formValidate.title = row.title;\r\n this.modal = true;\r\n break;\r\n case '2':\r\n this.id = row.id;\r\n this.cardModal = true;\r\n break;\r\n case '3':\r\n this.export(row);\r\n break;\r\n }\r\n },\r\n // 添加批次弹窗\r\n addBatch() {\r\n // this.fapi.resetFields();\r\n this.modal = true;\r\n this.formValidate.id = 0;\r\n this.formValidate.title = '';\r\n },\r\n // 提交批次\r\n onSubmit() {\r\n if (this.formValidate.id) {\r\n memberBatchSetValue(this.formValidate.id, {\r\n field: 'title',\r\n value: this.formValidate.title,\r\n remark: this.formValidate.remark,\r\n })\r\n .then((res) => {\r\n this.modal = false;\r\n this.$message.success(res.msg);\r\n this.getMemberBatch();\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n } else {\r\n memberBatchSave(this.formValidate.id, this.formValidate)\r\n .then((res) => {\r\n this.modal = false;\r\n this.$message.success(res.msg);\r\n this.getMemberBatch();\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n }\r\n },\r\n onSubmit2(formData) {},\r\n // 会员卡二维码\r\n getMemberScan() {\r\n userMemberScan()\r\n .then((res) => {\r\n this.qrcode = res.data;\r\n this.modal3 = true;\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.el-input-number--small {\r\n width: 100%;\r\n}\r\n.QRpic {\r\n width: 180px;\r\n height: 180px;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n}\r\n.w414 {\r\n width: 414px;\r\n}\r\n</style>\r\n"]}]}