| 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=style&index=0&id=eef20e8a&lang=scss&scoped=true","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\\css-loader\\index.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\postcss-loader\\src\\index.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\sass-loader\\dist\\cjs.js","mtime":499162500000},{"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:DQouZWwtaW5wdXQtbnVtYmVyLS1zbWFsbCB7DQogIHdpZHRoOiAxMDAlOw0KfQ0KLlFScGljIHsNCiAgd2lkdGg6IDE4MHB4Ow0KICBoZWlnaHQ6IDE4MHB4Ow0KDQogIGltZyB7DQogICAgd2lkdGg6IDEwMCU7DQogICAgaGVpZ2h0OiAxMDAlOw0KICB9DQp9DQoudzQxNCB7DQogIHdpZHRoOiA0MTRweDsNCn0NCg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAoWA;AACA;AACA;AACA;AACA;AACA;;AAEA;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"]}]}
|