提交 82dcd74a authored 作者: 王鹏飞's avatar 王鹏飞

update

上级 5e7f3928
......@@ -12,10 +12,12 @@
"@tinymce/tinymce-vue": "^3.2.8",
"axios": "^0.21.1",
"blueimp-md5": "^2.18.0",
"clipboard": "^2.0.8",
"core-js": "^3.12.1",
"cross-env": "^7.0.3",
"element-ui": "^2.15.1",
"lodash": "^4.17.21",
"qrcode.vue": "^1.7.0",
"vue": "^2.6.12",
"vue-loader": "^15.9.7",
"vue-router": "^3.5.1",
......@@ -3162,6 +3164,16 @@
"node": ">= 10"
}
},
"node_modules/clipboard": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz",
"integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==",
"dependencies": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"node_modules/cliui": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
......@@ -4175,6 +4187,11 @@
"node": ">=0.4.0"
}
},
"node_modules/delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"node_modules/depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
......@@ -6319,6 +6336,14 @@
"integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
"dev": true
},
"node_modules/good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
"dependencies": {
"delegate": "^3.1.2"
}
},
"node_modules/graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
......@@ -9663,6 +9688,14 @@
"node": ">=6"
}
},
"node_modules/qrcode.vue": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-1.7.0.tgz",
"integrity": "sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g==",
"peerDependencies": {
"vue": "^2.0.0"
}
},
"node_modules/qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
......@@ -10507,6 +10540,11 @@
"get-ready": "~1.0.0"
}
},
"node_modules/select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
},
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
......@@ -11805,6 +11843,11 @@
"node": ">=0.6.0"
}
},
"node_modules/tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
......@@ -16204,6 +16247,16 @@
"integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
"dev": true
},
"clipboard": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz",
"integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==",
"requires": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"cliui": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
......@@ -17004,6 +17057,11 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
......@@ -18701,6 +18759,14 @@
}
}
},
"good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
"requires": {
"delegate": "^3.1.2"
}
},
"graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
......@@ -21323,6 +21389,12 @@
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qrcode.vue": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-1.7.0.tgz",
"integrity": "sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g==",
"requires": {}
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
......@@ -21993,6 +22065,11 @@
"get-ready": "~1.0.0"
}
},
"select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
},
"select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
......@@ -23060,6 +23137,11 @@
"setimmediate": "^1.0.4"
}
},
"tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
......
......@@ -72,10 +72,12 @@
"@tinymce/tinymce-vue": "^3.2.8",
"axios": "^0.21.1",
"blueimp-md5": "^2.18.0",
"clipboard": "^2.0.8",
"core-js": "^3.12.1",
"cross-env": "^7.0.3",
"element-ui": "^2.15.1",
"lodash": "^4.17.21",
"qrcode.vue": "^1.7.0",
"vue": "^2.6.12",
"vue-loader": "^15.9.7",
"vue-router": "^3.5.1",
......
<template>
<el-dialog
title="推广"
width="700px"
:close-on-click-modal="false"
@opened="handleOpened"
v-bind="$attrs"
v-on="$listeners"
>
<div class="qrcode">
<div class="qrcode-left">
<qrcode-vue :value="value" size="180" ref="qrcode" />
</div>
<div class="qrcode-right">
<h4>分享链接</h4>
<el-input readonly :value="value" id="qrcodeValue">
<el-button slot="append" data-clipboard-target="#qrcodeValue" ref="copy">复制</el-button>
</el-input>
<p>可推广至微信、支付宝、QQ等任意渠道</p>
<a :href="qrcodeUrl" download="下载二维码">
<el-button type="text">下载二维码</el-button>
</a>
</div>
</div>
</el-dialog>
</template>
<script>
import QrcodeVue from 'qrcode.vue'
import Clipboard from 'clipboard'
export default {
components: { QrcodeVue },
props: {
value: { type: String, default: '' }
},
data() {
return {
qrcodeUrl: '',
clipboard: null
}
},
methods: {
getQrcodeUrl() {
this.qrcodeUrl = this.$refs.qrcode.$el
.querySelector('canvas')
.toDataURL('image/png')
.replace('image/png', 'image/octet-stream')
},
initClipboard() {
if (this.clipboard) {
return
}
this.clipboard = new Clipboard(this.$refs.copy.$el)
this.clipboard.on('success', () => {
this.$message({ message: '复制成功!', type: 'success' })
})
this.clipboard.on('error', () => {
this.$message({ message: '复制失败,请手动选择复制!', type: 'error' })
})
},
handleOpened() {
this.$nextTick(function () {
this.initClipboard()
this.getQrcodeUrl()
})
}
},
destroyed() {
this.clipboard && this.clipboard.destroy()
}
}
</script>
<style lang="scss" scoped>
.qrcode {
margin: 0 10px 20px;
display: flex;
}
.qrcode-left {
background-color: #f7f8fa;
box-sizing: border-box;
width: 292px;
height: 292px;
padding: 56px;
}
.qrcode-right {
flex: 1;
margin-left: 20px;
h4 {
font-weight: normal;
margin-bottom: 12px;
}
p {
font-size: 14px;
color: #969799;
line-height: 20px;
height: 16px;
margin: 8px 0;
}
}
</style>
......@@ -35,15 +35,22 @@
<p>浏览量:{{ row.page_view }}</p>
</template>
<template v-slot:table-x="{ row }">
<el-button type="text" @click="handleUpdate(row)">编辑</el-button>
<router-link :to="{ name: 'goodsEdit', params: { id: row.spu_id } }">
<el-button type="text">编辑</el-button>
</router-link>
<el-button type="text" @click="handlePromote(row)">推广</el-button>
<el-button type="text" @click="handleCopy(row)">复制</el-button>
<router-link :to="{ name: 'goodsAdd', query: { id: row.spu_id } }">
<el-button type="text">复制</el-button>
</router-link>
</template>
</table-list>
<div class="footer">
<el-button size="medium" :disabled="!multipleSelection.length" @click="handleUpdateStatus">上架</el-button>
<el-button size="medium" :disabled="!multipleSelection.length" @click="onRemove">删除</el-button>
</div>
<!-- 推广 -->
<share-qrcode :visible.sync="shareDialogVisible" :value="shareUrl"></share-qrcode>
</app-card>
</template>
......@@ -51,11 +58,13 @@
// 组件
import TableList from '@/components/base/tableList'
import AppCard from '@/components/base/card'
import ShareQrcode from '@/components/goods/shareQrcode'
// 接口
import { getGoodsList, deleteGoods, updateGoodsStatus } from '@/api/goods'
export default {
components: { AppCard, TableList },
components: { AppCard, TableList, ShareQrcode },
data() {
return {
activeName: '0',
......@@ -65,7 +74,9 @@ export default {
{ label: '已售罄', name: '3' },
{ label: '仓库中', name: '1' }
],
multipleSelection: []
multipleSelection: [],
shareDialogVisible: false,
shareUrl: ''
}
},
computed: {
......@@ -145,8 +156,8 @@ export default {
this.$refs.list.refetch(true)
},
// 编辑
handleUpdate(data) {
this.$router.push({ name: 'goodsEdit', params: { id: data.spu_id } })
handleUpdate(row) {
this.$router.push({ name: 'goodsEdit', params: { id: row.spu_id } })
},
// 删除
onRemove() {
......@@ -164,10 +175,13 @@ export default {
})
},
// 推广
handlePromote(data) {},
handlePromote(row) {
this.shareUrl = `https://h5-shop.ezijing.com/buy?shop_id=${row.shop_id}&id=${row.spu_id}`
this.shareDialogVisible = true
},
// 复制
handleCopy(data) {
this.$router.push({ name: 'goodsAdd', query: { id: data.spu_id } })
handleCopy(row) {
this.$router.push({ name: 'goodsAdd', query: { id: row.spu_id } })
},
// 选择
handleSelectionChange(value) {
......
......@@ -12,7 +12,7 @@
<el-button type="text" @click="handlePromote(row)">推广</el-button>
</template>
</table-list>
<el-dialog :title="title" width="30%" :visible.sync="dialogVisible">
<el-dialog :title="title" width="500px" :visible.sync="dialogVisible" :close-on-click-modal="false">
<group-edit
:isEdit="isEdit"
:data="editRaw"
......@@ -21,6 +21,9 @@
v-if="dialogVisible"
/>
</el-dialog>
<!-- 推广 -->
<share-qrcode :visible.sync="shareDialogVisible" :value="shareUrl"></share-qrcode>
</app-card>
</template>
......@@ -28,17 +31,20 @@
// 组件
import AppCard from '@/components/base/card'
import TableList from '@/components/base/tableList'
import ShareQrcode from '@/components/goods/shareQrcode'
import GroupEdit from './edit'
// 接口
import { getGroupList, deleteGroup } from '@/api/goods'
export default {
components: { AppCard, TableList, GroupEdit },
components: { AppCard, TableList, GroupEdit, ShareQrcode },
data() {
return {
dialogVisible: false,
isEdit: false,
editRaw: {}
editRaw: {},
shareDialogVisible: false,
shareUrl: ''
}
},
computed: {
......@@ -91,7 +97,10 @@ export default {
})
},
// 推广
handlePromote() {}
handlePromote(row) {
this.shareUrl = `https://h5-shop.ezijing.com/shop?shop_id=${row.shop_id}&group_id=${row.group_id}`
this.shareDialogVisible = true
}
},
beforeMount() {
// 获取商品分组
......
......@@ -25,7 +25,9 @@
<p>{{ row.buy_count }}</p>
</template>
<template v-slot:table-x="{ row }">
<el-button type="text" @click="handleView(row)">查看</el-button>
<router-link :to="{ name: 'orderDetail', params: { id: row.order_id } }">
<el-button type="text">查看</el-button>
</router-link>
</template>
</table-list>
</app-card>
......@@ -62,7 +64,7 @@ export default {
httpRequest: getOrderSearchList,
params: {
shop_id: this.$store.state.shopId,
search_field: '',
search_field: 'spu_name',
search_value: '',
order_status: '',
payment_method: ''
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论