207b34132f3b929d60ff46d2d031a926.json 24 KB

1
  1. {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\marketing\\channelCode\\createCode.vue?vue&type=style&index=0&id=c38a3616&lang=scss&scoped=true","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\marketing\\channelCode\\createCode.vue","mtime":1761614939030},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\css-loader\\index.js","mtime":1761614929364},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":1761614937403},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\postcss-loader\\src\\index.js","mtime":1761614935133},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\sass-loader\\dist\\cjs.js","mtime":1761614936391},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQouY29udGVudF93aWR0aCB7DQogIHdpZHRoOiA0NjBweDsNCn0NCi5pbmZvIHsNCiAgY29sb3I6ICM4ODg7DQogIGZvbnQtc2l6ZTogMTJweDsNCn0NCi5pdnUtcm93IHsNCiAgYm9yZGVyOiAxcHggc29saWQgI2YyZjJmMjsNCn0NCi5pdnUtZm9ybS1pdGVtIHsNCiAgcGFkZGluZzogMTBweCAwOw0KICBtYXgtd2lkdGg6IDExMDBweDsNCn0NCi5pdnUtZm9ybSA6OnYtZGVlcCAuaXZ1LWZvcm0taXRlbS1sYWJlbCB7DQogIGZvbnQtd2VpZ2h0OiA3MDA7DQogIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50Ow0KfQ0KLml2dS1pbnB1dC13cmFwcGVyIHsNCiAgd2lkdGg6IDMyMHB4Ow0KfQ0KLml2dS1yYWRpby13cmFwcGVyIHsNCiAgbWFyZ2luLXJpZ2h0OiAzMHB4Ow0KICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsNCn0NCi5pdnUtcmFkaW8td3JhcHBlciA6OnYtZGVlcCAuaXZ1LXJhZGlvIHsNCiAgbWFyZ2luLXJpZ2h0OiAxMHB4Ow0KfQ0KLml2dS1pbnB1dC1udW1iZXIgew0KICB3aWR0aDogMTYwcHg7DQp9DQouaXZ1LWRhdGUtcGlja2VyIHsNCiAgd2lkdGg6IDMyMHB4Ow0KfQ0KLml2dS1pY29uLWlvcy1jYW1lcmEtb3V0bGluZSB7DQogIHdpZHRoOiA1OHB4Ow0KICBoZWlnaHQ6IDU4cHg7DQogIGJvcmRlcjogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuMSk7DQogIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAyKTsNCiAgbGluZS1oZWlnaHQ6IDU4cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCi51cGxvYWQtbGlzdCB7DQogIHdpZHRoOiA1OHB4Ow0KICBoZWlnaHQ6IDU4cHg7DQogIGJvcmRlcjogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuMSk7DQogIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgbWFyZ2luLXJpZ2h0OiAxNXB4Ow0KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KOjp2LWRlZXAgLmVsLXRhZyB7DQogIG1hcmdpbi1yaWdodDogNXB4Ow0KfQ0KLnVwbG9hZC1saXN0IGltZyB7DQogIGRpc3BsYXk6IGJsb2NrOw0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiAxMDAlOw0KfQ0KLml2dS1pY29uLWlvcy1jbG9zZS1jaXJjbGUgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogMDsNCiAgcmlnaHQ6IDA7DQogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgLTUwJSk7DQp9DQoubW9kZWxCb3ggOjp2LWRlZXAgLml2dS1tb2RhbC1ib2R5IHsNCiAgcGFkZGluZzogMCAxNnB4IDE2cHggMTZweCAhaW1wb3J0YW50Ow0KfQ0KLmhlYWRlci1zYXZlIHsNCiAgZGlzcGxheTogZmxleDsNCiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KfQ0KLnRyaXAgew0KICBmb250LXNpemU6IDEycHg7DQogIGNvbG9yOiAjY2NjOw0KfQ0KDQp0ZXh0YXJlYSB7DQogIHBhZGRpbmc6IDAgNXB4Ow0KICBib3JkZXItcmFkaXVzOiAzcHg7DQogIGJvcmRlci1jb2xvcjogI2M1YzhjZTsNCiAgb3V0bGluZS1jb2xvcjogIzJkOGNmMDsNCiAgZm9udC1zaXplOiAxNHB4Ow0KfQ0KLnBpY0JveCB7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICAudXBMb2FkIHsNCiAgICB3aWR0aDogNThweDsNCiAgICBoZWlnaHQ6IDU4cHg7DQogICAgbGluZS1oZWlnaHQ6IDU4cHg7DQogICAgYm9yZGVyOiAxcHggZG90dGVkIHJnYmEoMCwgMCwgMCwgMC4xKTsNCiAgICBib3JkZXItcmFkaXVzOiA0cHg7DQogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAyKTsNCiAgfQ0KICAucGljdHJ1ZSB7DQogICAgd2lkdGg6IDYwcHg7DQogICAgaGVpZ2h0OiA2MHB4Ow0KICAgIGJvcmRlcjogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuMSk7DQogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Ow0KDQogICAgaW1nIHsNCiAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgIH0NCiAgfQ0KICAuaWNvbmZvbnQgew0KICAgIGNvbG9yOiAjODk4OTg5Ow0KICB9DQp9DQouYWRkZm9udCB7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgZm9udC1zaXplOiAxMnB4Ow0KICBmb250LXdlaWdodDogNDAwOw0KICBjb2xvcjogdmFyKC0tcHJldi1jb2xvci1wcmltYXJ5KTsNCiAgbWFyZ2luLWxlZnQ6IDE0cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgbWFyZ2luLWxlZnQ6IDEwcHg7DQp9DQouaWNvbnhpYXlpIHsNCiAgZm9udC1zaXplOiAxNHB4Ow0KfQ0KLml2dS1wYWdlLWhlYWRlci10aXRsZSB7DQogIHBhZGRpbmctYm90dG9tOiAwOw0KfQ0KLm5ld3MtYm94IHsNCiAgd2lkdGg6IDIwMHB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOw0KICBwYWRkaW5nOiAxMHB4Ow0KICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KICBtYXJnaW4tdG9wOiAyMHB4Ow0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIC5uZXdzX3BpYyB7DQogICAgd2lkdGg6IDEwMCU7DQogICAgaGVpZ2h0OiAxNTBweDsNCiAgfQ0KICAuZGVsX2ljb24gew0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICByaWdodDogLThweDsNCiAgICB0b3A6IC04cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICB9DQp9DQoubGFiZWxJbnB1dCB7DQogIGJvcmRlcjogMXB4IHNvbGlkICNkY2RlZTI7DQogIHdpZHRoOiA0NjBweDsNCiAgcGFkZGluZzogMCAxNXB4Ow0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIG1pbi1oZWlnaHQ6IDMwcHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgLnNwYW4gew0KICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICBjb2xvcjogI2M1YzhjZTsNCiAgfQ0KICAuaXZ1LWljb24taW9zLWFycm93LWRvd24gew0KICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICBjb2xvcjogIzgwODY5NTsNCiAgfQ0KfQ0K"},{"version":3,"sources":["createCode.vue"],"names":[],"mappings":";AA+ZA;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;;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","file":"createCode.vue","sourceRoot":"src/pages/marketing/channelCode","sourcesContent":["<template>\r\n <div>\r\n <pages-header\r\n ref=\"pageHeader\"\r\n :title=\"$route.meta.title\"\r\n :backUrl=\"$routeProStr + '/marketing/channel_code/channelCodeIndex'\"\r\n ></pages-header>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"mt16\">\r\n <el-form :model=\"formData\" label-width=\"100px\" :rules=\"ruleValidate\">\r\n <el-form-item label=\"渠道码名称:\">\r\n <el-input\r\n clearable\r\n v-model=\"formData.name\"\r\n placeholder=\"请输入渠道码名称\"\r\n class=\"content_width\"\r\n maxlength=\"20\"\r\n show-word-limit\r\n ></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"渠道码分组:\">\r\n <el-select clearable v-model=\"formData.cate_id\" class=\"content_width\">\r\n <el-option\r\n :value=\"item.id\"\r\n v-for=\"(item, index) in labelSort\"\r\n :key=\"index\"\r\n :label=\"item.cate_name\"\r\n ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"用户标签:\">\r\n <div style=\"display: flex\">\r\n <div class=\"labelInput acea-row row-between-wrapper\" v-db-click @click=\"openLabel\">\r\n <div style=\"width: 90%\">\r\n <div v-if=\"dataLabel.length\">\r\n <el-tag closable v-for=\"(item, index) in dataLabel\" @close=\"closeLabel(item)\" :key=\"index\">{{\r\n item.label_name\r\n }}</el-tag>\r\n </div>\r\n <span class=\"span\" v-else>选择用户关联标签</span>\r\n </div>\r\n <div class=\"ivu-icon ivu-icon-ios-arrow-down\"></div>\r\n </div>\r\n <span class=\"addfont\" v-db-click @click=\"addLabel\">新增标签</span>\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"关联推广员:\">\r\n <div class=\"picBox\" v-db-click @click=\"customer\">\r\n <div class=\"pictrue\" v-if=\"formData.avatar\">\r\n <img v-lazy=\"formData.avatar\" />\r\n </div>\r\n <div class=\"upLoad acea-row row-center-wrapper\" v-else>\r\n <i class=\"el-icon-user\" style=\"font-size: 24px\"></i>\r\n </div>\r\n </div>\r\n <div class=\"trip\">扫码注册的新用户,将自动成为此推广员的下级,与分销推广功能一致</div>\r\n </el-form-item>\r\n <el-form-item label=\"有效期:\">\r\n <el-radio-group v-model=\"isReceiveTime\">\r\n <el-radio :label=\"0\">永久</el-radio>\r\n <el-radio :label=\"1\">有效期</el-radio>\r\n </el-radio-group>\r\n <div v-show=\"isReceiveTime\">\r\n <el-input-number\r\n :controls=\"false\"\r\n :max=\"10000\"\r\n :precision=\"0\"\r\n v-model=\"formData.time\"\r\n placeholder=\"请输入天数\"\r\n class=\"content_width input-number-unit-class\"\r\n class-unit=\"天\"\r\n ></el-input-number>\r\n </div>\r\n <div class=\"trip\">临时码过期后不能再扫码,永久二维码最大创建数量为10万个</div>\r\n </el-form-item>\r\n <el-form-item label=\"回复内容:\">\r\n <el-radio-group v-model=\"formData.type\">\r\n <el-radio label=\"text\">文字内容</el-radio>\r\n <el-radio label=\"voice\">声音消息</el-radio>\r\n <el-radio label=\"image\">图片消息</el-radio>\r\n <el-radio label=\"news\">图文消息</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"消息内容:\" prop=\"content\" v-if=\"formData.type === 'text' || formData.type === 'url'\">\r\n <el-input\r\n type=\"textarea\"\r\n rows=\"2\"\r\n clearable\r\n v-model=\"formData.content.content\"\r\n :placeholder=\"formData.type === 'text' ? '请填写消息内容' : '请填写网址链接'\"\r\n class=\"content_width\"\r\n ></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"选取图文:\" v-if=\"formData.type === 'news'\">\r\n <el-button v-db-click @click=\"modals = true\">选择图文消息</el-button>\r\n <div class=\"news-box\" v-if=\"formData.content.list.title\">\r\n <img class=\"news_pic\" :src=\"formData.content.list.image_input[0]\" />\r\n <span>{{ formData.content.list.title }}</span>\r\n <i class=\"el-icon-error del_icon\" v-db-click @click=\"delContent\"></i>\r\n </div>\r\n </el-form-item>\r\n <el-form-item\r\n :label=\"formData.type === 'image' ? '图片地址:' : '语音地址:'\"\r\n prop=\"src\"\r\n v-if=\"formData.type === 'image' || formData.type === 'voice'\"\r\n >\r\n <div class=\"acea-row row-middle\">\r\n <el-input\r\n readonly=\"readonly\"\r\n placeholder=\"请填入链接地址\"\r\n class=\"content_width mr15\"\r\n v-model=\"formData.content.src\"\r\n />\r\n <el-upload\r\n :show-file-list=\"false\"\r\n :action=\"fileUrl\"\r\n :on-success=\"handleSuccess\"\r\n :format=\"formData.type === 'image' ? formatImg : formatVoice\"\r\n :max-size=\"2048\"\r\n :headers=\"header\"\r\n :on-format-error=\"handleFormatError\"\r\n :on-exceeded-size=\"handleMaxSize\"\r\n class=\"mr20\"\r\n style=\"margin-top: 1px\"\r\n accept=\"image/*,.mp3\"\r\n :before-upload=\"beforeUpload\"\r\n >\r\n <el-button type=\"primary\">上传</el-button>\r\n </el-upload>\r\n </div>\r\n <span v-show=\"formData.type === 'image'\">文件最大2Mb,支持bmp/png/jpeg/jpg/gif格式</span>\r\n <span v-show=\"formData.type === 'voice'\">文件最大2Mb,支持mp3格式,播放长度不超过60s</span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button class=\"submit\" type=\"primary\" v-db-click @click=\"save\" :loading=\"loading\" :disabled=\"disabled\"\r\n >立即提交</el-button\r\n >\r\n </el-form-item>\r\n </el-form>\r\n </el-card>\r\n <el-dialog :visible.sync=\"customerShow\" title=\"请选择商城用户\" :show-close=\"true\" width=\"1000px\">\r\n <customerInfo v-if=\"customerShow\" @imageObject=\"imageObject\"></customerInfo>\r\n </el-dialog>\r\n <!--图文消息 -->\r\n <el-dialog :visible.sync=\"modals\" title=\"发送消息\" width=\"1200px\" class=\"modelBox\">\r\n <news-category\r\n v-if=\"modals\"\r\n @getCentList=\"getCentList\"\r\n :scrollerHeight=\"scrollerHeight\"\r\n :contentTop=\"contentTop\"\r\n :contentWidth=\"contentWidth\"\r\n :maxCols=\"maxCols\"\r\n ></news-category>\r\n </el-dialog>\r\n <el-dialog\r\n :visible.sync=\"labelShow\"\r\n scrollable\r\n title=\"请选择用户标签\"\r\n :closable=\"false\"\r\n width=\"540px\"\r\n :footer-hide=\"true\"\r\n :mask-closable=\"false\"\r\n >\r\n <userLabel ref=\"userLabel\" @activeData=\"activeData\" @close=\"labelClose\"></userLabel>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState } from 'vuex';\r\nimport userLabel from '@/components/labelList';\r\n\r\nimport goodsList from '@/components/goodsList/index';\r\nimport newsCategory from '@/components/newsCategory/index';\r\nimport { labelListApi } from '@/api/product';\r\nimport { userLabelAddApi } from '@/api/user';\r\nimport { wechatQrcodeSaveApi, wechatQrcodeTree, wechatQrcodeDetail } from '@/api/setting';\r\nimport Setting from '@/setting';\r\nimport { getCookies } from '@/libs/util';\r\nimport customerInfo from '@/components/customerInfo';\r\nimport { isPicUpload, isVoiceUpload } from '@/utils';\r\n\r\nexport default {\r\n name: 'createCode',\r\n components: {\r\n goodsList,\r\n newsCategory,\r\n customerInfo,\r\n userLabel,\r\n },\r\n data() {\r\n return {\r\n customerShow: false,\r\n labelShow: false,\r\n disabled: false,\r\n maxCols: 4,\r\n labelSelect: [],\r\n\r\n scrollerHeight: '600',\r\n contentTop: '10',\r\n contentWidth: '98%',\r\n formatImg: ['jpg', 'jpeg', 'png', 'bmp', 'gif'],\r\n formatVoice: ['mp3', 'wma', 'wav', 'amr'],\r\n header: {},\r\n fileUrl: Setting.apiBaseURL + '/file/upload/1',\r\n\r\n formData: {\r\n name: '',\r\n type: 'text',\r\n time: undefined,\r\n label_id: [],\r\n image: '',\r\n cate_id: '',\r\n content: {\r\n content: '',\r\n src: '',\r\n list: {},\r\n },\r\n },\r\n labelSort: [],\r\n isReceiveTime: 0,\r\n modals: false,\r\n ruleValidate: {\r\n name: [\r\n {\r\n required: true,\r\n message: '请填写二维码名称',\r\n trigger: 'blur',\r\n },\r\n ],\r\n cate_id: [\r\n {\r\n required: true,\r\n message: '请选择二维码分组',\r\n trigger: 'change',\r\n },\r\n ],\r\n },\r\n id: 0,\r\n dataLabel: [],\r\n loading: false,\r\n };\r\n },\r\n computed: {\r\n ...mapState('media', ['isMobile']),\r\n },\r\n created() {\r\n this.getUserLabelAll();\r\n this.userLabel();\r\n this.getToken();\r\n if (this.$route.query.id) {\r\n this.id = this.$route.query.id;\r\n this.getDetail();\r\n }\r\n },\r\n methods: {\r\n beforeUpload(file) {\r\n if (this.formData.type === 'image') {\r\n return isPicUpload(file);\r\n }\r\n if (this.formData.type === 'voice') {\r\n return isVoiceUpload(file);\r\n }\r\n },\r\n activeData(dataLabel) {\r\n this.labelShow = false;\r\n this.dataLabel = dataLabel;\r\n },\r\n // 标签弹窗关闭\r\n labelClose() {\r\n this.labelShow = false;\r\n },\r\n openLabel(row) {\r\n this.labelShow = true;\r\n if (this.dataLabel.length) this.$refs.userLabel.userLabel(JSON.parse(JSON.stringify(this.dataLabel)));\r\n },\r\n closeLabel(label) {\r\n let index = this.dataLabel.indexOf(this.dataLabel.filter((d) => d.id == label.id)[0]);\r\n this.dataLabel.splice(index, 1);\r\n },\r\n getDetail() {\r\n wechatQrcodeDetail(this.id).then((res) => {\r\n this.formData = res.data;\r\n if (res.data.time > 0) {\r\n this.isReceiveTime = 1;\r\n }\r\n if (res.data.label_id.length) {\r\n this.dataLabel = res.data.label_id;\r\n }\r\n });\r\n },\r\n customer() {\r\n this.customerShow = true;\r\n },\r\n addLabel() {\r\n this.$modalForm(userLabelAddApi(0)).then(() => this.userLabel());\r\n },\r\n // 用户标签\r\n userLabel() {\r\n labelListApi()\r\n .then((res) => {\r\n this.labelSelect = res.data.list;\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n imageObject(e) {\r\n this.customerShow = false;\r\n this.formData.uid = e.uid;\r\n this.formData.avatar = e.image;\r\n },\r\n getCentList(val) {\r\n this.formData.content.list = val.new[0];\r\n this.modals = false;\r\n },\r\n delContent() {\r\n this.formData.content.list = {};\r\n },\r\n // 上传成功\r\n handleSuccess(res, file) {\r\n if (res.status === 200) {\r\n this.formData.content.src = res.data.src;\r\n this.$message.success(res.msg);\r\n } else {\r\n this.$message.error(res.msg);\r\n }\r\n },\r\n handleFormatError(file) {\r\n if (this.formData.type === 'image') {\r\n this.$message.warning('请上传bmp/png/jpeg/jpg/gif格式的图片');\r\n } else {\r\n this.$message.warning('请上传mp3/wma/wav/amr格式的语音');\r\n }\r\n },\r\n handleMaxSize(file) {\r\n this.$message.warning('请上传文件2M以内的文件');\r\n },\r\n // 上传头部token\r\n getToken() {\r\n this.header['Authori-zation'] = 'Bearer ' + getCookies('token');\r\n },\r\n selectMenu(name) {\r\n this.formData.type = name;\r\n },\r\n // 获取分类\r\n getUserLabelAll() {\r\n wechatQrcodeTree().then((res) => {\r\n let data = res.data.data;\r\n this.labelSort = data;\r\n });\r\n },\r\n // 创建\r\n save() {\r\n if (!this.formData.name) {\r\n return this.$message.error('请输入二维码名称');\r\n }\r\n if (!this.formData.cate_id) {\r\n return this.$message.error('请选择分组');\r\n }\r\n if (!this.dataLabel.length) {\r\n return this.$message.error('请选择用户标签');\r\n } else {\r\n let ids = [];\r\n this.dataLabel.map((i) => {\r\n ids.push(i.id);\r\n });\r\n this.formData.label_id = ids;\r\n }\r\n if (!this.formData.uid) {\r\n return this.$message.error('请选择推广员');\r\n }\r\n if (this.isReceiveTime) {\r\n if (this.formData.time < 1) {\r\n return this.$message.error('使用有效期限不能小于1天');\r\n }\r\n } else {\r\n this.formData.time = 0;\r\n }\r\n if (this.formData.type === 'text' || this.formData.type === 'url') {\r\n if (!this.formData.content.content.trim()) {\r\n return this.$message.error('请输入内容');\r\n }\r\n }\r\n if (this.formData.type === 'voice' || this.formData.type === 'image') {\r\n if (!this.formData.content.src.trim()) {\r\n return this.$message.error('请先上传消息');\r\n }\r\n }\r\n if (this.formData.type === 'news') {\r\n if (!this.formData.content.list.title.trim()) {\r\n return this.$message.error('请选择图文消息');\r\n }\r\n }\r\n this.disabled = false;\r\n this.loading = true;\r\n wechatQrcodeSaveApi(this.id, this.formData)\r\n .then((res) => {\r\n this.disabled = true;\r\n this.$message.success(res.msg);\r\n setTimeout(() => {\r\n this.$router.push({\r\n path: this.$routeProStr + '/marketing/channel_code/channelCodeIndex',\r\n });\r\n }, 1000);\r\n })\r\n .catch((err) => {\r\n this.disabled = true;\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.content_width {\r\n width: 460px;\r\n}\r\n.info {\r\n color: #888;\r\n font-size: 12px;\r\n}\r\n.ivu-row {\r\n border: 1px solid #f2f2f2;\r\n}\r\n.ivu-form-item {\r\n padding: 10px 0;\r\n max-width: 1100px;\r\n}\r\n.ivu-form ::v-deep .ivu-form-item-label {\r\n font-weight: 700;\r\n font-size: 14px !important;\r\n}\r\n.ivu-input-wrapper {\r\n width: 320px;\r\n}\r\n.ivu-radio-wrapper {\r\n margin-right: 30px;\r\n font-size: 14px !important;\r\n}\r\n.ivu-radio-wrapper ::v-deep .ivu-radio {\r\n margin-right: 10px;\r\n}\r\n.ivu-input-number {\r\n width: 160px;\r\n}\r\n.ivu-date-picker {\r\n width: 320px;\r\n}\r\n.ivu-icon-ios-camera-outline {\r\n width: 58px;\r\n height: 58px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n border-radius: 4px;\r\n background-color: rgba(0, 0, 0, 0.02);\r\n line-height: 58px;\r\n cursor: pointer;\r\n vertical-align: middle;\r\n}\r\n.upload-list {\r\n width: 58px;\r\n height: 58px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n border-radius: 4px;\r\n margin-right: 15px;\r\n display: inline-block;\r\n position: relative;\r\n cursor: pointer;\r\n vertical-align: middle;\r\n}\r\n::v-deep .el-tag {\r\n margin-right: 5px;\r\n}\r\n.upload-list img {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.ivu-icon-ios-close-circle {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n transform: translate(50%, -50%);\r\n}\r\n.modelBox ::v-deep .ivu-modal-body {\r\n padding: 0 16px 16px 16px !important;\r\n}\r\n.header-save {\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n.trip {\r\n font-size: 12px;\r\n color: #ccc;\r\n}\r\n\r\ntextarea {\r\n padding: 0 5px;\r\n border-radius: 3px;\r\n border-color: #c5c8ce;\r\n outline-color: #2d8cf0;\r\n font-size: 14px;\r\n}\r\n.picBox {\r\n display: inline-block;\r\n cursor: pointer;\r\n .upLoad {\r\n width: 58px;\r\n height: 58px;\r\n line-height: 58px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n border-radius: 4px;\r\n background: rgba(0, 0, 0, 0.02);\r\n }\r\n .pictrue {\r\n width: 60px;\r\n height: 60px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n margin-right: 10px;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n .iconfont {\r\n color: #898989;\r\n }\r\n}\r\n.addfont {\r\n display: inline-block;\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: var(--prev-color-primary);\r\n margin-left: 14px;\r\n cursor: pointer;\r\n margin-left: 10px;\r\n}\r\n.iconxiayi {\r\n font-size: 14px;\r\n}\r\n.ivu-page-header-title {\r\n padding-bottom: 0;\r\n}\r\n.news-box {\r\n width: 200px;\r\n background-color: #f2f2f2;\r\n padding: 10px;\r\n border-radius: 10px;\r\n margin-top: 20px;\r\n position: relative;\r\n .news_pic {\r\n width: 100%;\r\n height: 150px;\r\n }\r\n .del_icon {\r\n position: absolute;\r\n right: -8px;\r\n top: -8px;\r\n cursor: pointer;\r\n }\r\n}\r\n.labelInput {\r\n border: 1px solid #dcdee2;\r\n width: 460px;\r\n padding: 0 15px;\r\n border-radius: 5px;\r\n min-height: 30px;\r\n cursor: pointer;\r\n .span {\r\n font-size: 12px;\r\n color: #c5c8ce;\r\n }\r\n .ivu-icon-ios-arrow-down {\r\n font-size: 14px;\r\n color: #808695;\r\n }\r\n}\r\n</style>\r\n"]}]}