0f2c1dfc3c4dcc31749669b161d93bdd.json 9.5 KB

1
  1. {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\app\\routine\\download\\index.vue?vue&type=style&index=0&id=3c001468&lang=scss&scoped=true","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\app\\routine\\download\\index.vue","mtime":1761614939006},{"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:DQoudGVtcGxhdGVfc3BfYm94IHsNCiAgcGFkZGluZzogNXB4IDA7DQogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQp9DQoudGVtcGxhdGVfc3Agew0KICBkaXNwbGF5OiBibG9jazsNCiAgcGFkZGluZzogMnB4IDA7DQogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQp9DQouZmxleC13cmFwcGVyIHsNCiAgZGlzcGxheTogZmxleDsNCiAgYm9yZGVyLXJhZGl1czogMTBweDsNCn0NCi5pZnJhbWUtYm94IHsNCiAgd2lkdGg6IDMxMnB4Ow0KICBoZWlnaHQ6IDU1MHB4Ow0KICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KfQ0KLml2dS1tdCB7DQogIGhlaWdodDogNjAwcHg7DQp9DQouY29udGVudCB7DQogIHBhZGRpbmc6IDAgMjBweDsNCn0NCi5jb250ZW50ID4gLnRpdGxlIHsNCiAgcGFkZGluZy1ib3R0b206IDI2cHg7DQp9DQouY29udGVudC1ib3ggew0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBtYXJnaW46IDIwcHggMjBweCAwIDIwcHg7DQogIGNvbG9yOiAjMzMzOw0KfQ0KLmNvbnRlbnQtYm94Lmxhc3Qgew0KICBtYXJnaW4tdG9wOiAwOw0KICBjb2xvcjogIzk5OTk5OTsNCn0NCi5saW5lIHsNCiAgd2lkdGg6IDNweDsNCiAgaGVpZ2h0OiAxNnB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmV2LWNvbG9yLXByaW1hcnkpOw0KICBtYXJnaW4tcmlnaHQ6IDExcHg7DQp9DQouY29udGVudC1ib3ggLnRpdGxlIHsNCiAgZm9udC1zaXplOiAxNnB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCi5jb250ZW50LWJveCA+IHNwYW4gew0KICBjb2xvcjogI2Y1MjIyZDsNCiAgZm9udC1zaXplOiAyMHB4Ow0KfQ0KLmNvbnRlbnQtYm94IC5sZWZ0IHsNCiAgd2lkdGg6IDEwMHB4Ow0KICB0ZXh0LWFsaWduOiByaWdodDsNCn0NCi5jb250ZW50LWJveCAucmlnaHQgew0KICB3aWR0aDogNDAwcHg7DQp9DQoucmFkIHsNCiAgbWFyZ2luLWxlZnQ6IDIwcHg7DQp9DQoubWFzayB7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgbGVmdDogMDsNCiAgdG9wOiAwOw0KICB3aWR0aDogMzEycHg7DQogIGhlaWdodDogNTUwcHg7DQogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAyJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/app/routine/download","sourcesContent":["<template>\r\n <div>\r\n <!-- <div class=\"i-layout-page-header header-title\">\r\n <span class=\"ivu-page-header-title\">{{ $route.meta.title }}</span>\r\n </div> -->\r\n <pages-header ref=\"pageHeader\" :title=\"$route.meta.title\"></pages-header>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt mt16\">\r\n <div class=\"flex-wrapper\">\r\n <!-- :src=\"iframeUrl\" -->\r\n <div>\r\n <iframe class=\"iframe-box\" :src=\"iframeUrl\" frameborder=\"0\" ref=\"iframe\"></iframe>\r\n <div class=\"mask\"></div>\r\n </div>\r\n\r\n <div class=\"right\">\r\n <div class=\"content\">\r\n <div class=\"content-box title\">\r\n <div class=\"line\"></div>\r\n <div class=\"right title\">小程序设置</div>\r\n </div>\r\n <el-alert v-if=\"!pageData.appId && !pageData.code\">\r\n <template slot=\"title\">\r\n 您尚未配置小程序信息,请<router-link :to=\"{ path: $routeProStr + '/setting/routine_config/2/7' }\"\r\n >立即设置</router-link\r\n ></template\r\n >\r\n </el-alert>\r\n <div class=\"content-box\">\r\n <div class=\"left\">小程序名称:</div>\r\n <div class=\"right\">{{ pageData.routine_name || '未命名' }}</div>\r\n </div>\r\n <div class=\"content-box\">\r\n <div class=\"left\">小程序码:</div>\r\n <div class=\"right\">\r\n <el-button type=\"primary\" v-db-click @click=\"downLoadCode(pageData.code)\">下载小程序码</el-button>\r\n </div>\r\n </div>\r\n <div class=\"content-box\">\r\n <div class=\"left\">小程序包:</div>\r\n <div class=\"right\">\r\n <span>是否已开通小程序直播</span>\r\n <el-radio-group class=\"rad\" size=\"large\" v-model=\"is_live\">\r\n <el-radio :label=\"0\">未开通</el-radio>\r\n <el-radio :label=\"1\">已开通</el-radio>\r\n </el-radio-group>\r\n </div>\r\n </div>\r\n <div class=\"content-box last\">\r\n <div class=\"left\"></div>\r\n <div class=\"right\">\r\n <div>\r\n 请谨慎选择是否有开通小程序直播功能,否则将影响小程序的发布 可前往\r\n <a :href=\"pageData.help\" target=\"_blank\">帮助文档</a>\r\n 查看如何开通直播功能\r\n </div>\r\n\r\n <el-button class=\"mt10\" type=\"primary\" v-db-click @click=\"downLoad()\">下载小程序包</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { routineDownload, routineInfo } from '@/api/app';\r\nimport { mapState } from 'vuex';\r\nimport { formatDate } from '@/utils/validate';\r\nexport default {\r\n name: 'routineTemplate',\r\n filters: {\r\n formatDate(time) {\r\n if (time !== 0) {\r\n let date = new Date(time * 1000);\r\n return formatDate(date, 'yyyy-MM-dd hh:mm');\r\n }\r\n },\r\n },\r\n data() {\r\n return {\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 iframeUrl: `${location.origin}/pages/index/index?mdType=iframeWindow`,\r\n is_live: 1,\r\n pageData: {\r\n code: '',\r\n routine_name: '',\r\n help: '',\r\n appId: '1',\r\n },\r\n };\r\n },\r\n created() {\r\n routineInfo().then((res) => {\r\n this.pageData = res.data;\r\n });\r\n },\r\n watch: {\r\n $route(to, from) {},\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 methods: {\r\n downLoad() {\r\n routineDownload({\r\n is_live: this.is_live,\r\n })\r\n .then((res) => {\r\n window.open(res.data.url);\r\n })\r\n .catch((err) => {\r\n this.$message.warning(err.msg);\r\n });\r\n },\r\n downLoadCode(url) {\r\n if (!url) return this.$message.warning('暂无小程序码');\r\n var image = new Image();\r\n image.src = url;\r\n // 解决跨域 Canvas 污染问题\r\n image.setAttribute('crossOrigin', 'anonymous');\r\n image.onload = function () {\r\n var canvas = document.createElement('canvas');\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n var context = canvas.getContext('2d');\r\n context.drawImage(image, 0, 0, image.width, image.height);\r\n var url = canvas.toDataURL(); //得到图片的base64编码数据\r\n var a = document.createElement('a'); // 生成一个a元素\r\n var event = new MouseEvent('click'); // 创建一个单击事件\r\n a.download = name || 'photo'; // 设置图片名称\r\n a.href = url; // 将生成的URL设置为a.href属性\r\n a.dispatchEvent(event); // 触发a的单击事件\r\n };\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.template_sp_box {\r\n padding: 5px 0;\r\n box-sizing: border-box;\r\n}\r\n.template_sp {\r\n display: block;\r\n padding: 2px 0;\r\n box-sizing: border-box;\r\n}\r\n.flex-wrapper {\r\n display: flex;\r\n border-radius: 10px;\r\n}\r\n.iframe-box {\r\n width: 312px;\r\n height: 550px;\r\n border-radius: 10px;\r\n}\r\n.ivu-mt {\r\n height: 600px;\r\n}\r\n.content {\r\n padding: 0 20px;\r\n}\r\n.content > .title {\r\n padding-bottom: 26px;\r\n}\r\n.content-box {\r\n display: flex;\r\n align-items: center;\r\n margin: 20px 20px 0 20px;\r\n color: #333;\r\n}\r\n.content-box.last {\r\n margin-top: 0;\r\n color: #999999;\r\n}\r\n.line {\r\n width: 3px;\r\n height: 16px;\r\n background-color: var(--prev-color-primary);\r\n margin-right: 11px;\r\n}\r\n.content-box .title {\r\n font-size: 16px;\r\n font-weight: bold;\r\n}\r\n.content-box > span {\r\n color: #f5222d;\r\n font-size: 20px;\r\n}\r\n.content-box .left {\r\n width: 100px;\r\n text-align: right;\r\n}\r\n.content-box .right {\r\n width: 400px;\r\n}\r\n.rad {\r\n margin-left: 20px;\r\n}\r\n.mask {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 312px;\r\n height: 550px;\r\n background-color: rgba(0, 0, 0, 0);\r\n}\r\n</style>\r\n"]}]}