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

Merge branch 'master' into dev

...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"dayjs": "^1.10.5", "dayjs": "^1.10.5",
"element-ui": "^2.15.2", "element-ui": "^2.15.2",
"js-file-download": "^0.4.12",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"qrcode.vue": "^1.7.0", "qrcode.vue": "^1.7.0",
"vue": "^2.6.12", "vue": "^2.6.12",
...@@ -8563,6 +8564,11 @@ ...@@ -8563,6 +8564,11 @@
"integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
"dev": true "dev": true
}, },
"node_modules/js-file-download": {
"version": "0.4.12",
"resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz",
"integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg=="
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
...@@ -21820,6 +21826,11 @@ ...@@ -21820,6 +21826,11 @@
"integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
"dev": true "dev": true
}, },
"js-file-download": {
"version": "0.4.12",
"resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz",
"integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg=="
},
"js-tokens": { "js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
......
...@@ -80,6 +80,7 @@ ...@@ -80,6 +80,7 @@
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"dayjs": "^1.10.5", "dayjs": "^1.10.5",
"element-ui": "^2.15.2", "element-ui": "^2.15.2",
"js-file-download": "^0.4.12",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"qrcode.vue": "^1.7.0", "qrcode.vue": "^1.7.0",
"vue": "^2.6.12", "vue": "^2.6.12",
......
...@@ -39,3 +39,10 @@ export function orderSearch(data) { ...@@ -39,3 +39,10 @@ export function orderSearch(data) {
export function getOrderLogs(data) { export function getOrderLogs(data) {
return httpRequest.post('/api/shop/order/logs/search', data) return httpRequest.post('/api/shop/order/logs/search', data)
} }
/**
* 导出订单
*/
export function exportOrder(data) {
return httpRequest.post('/api/shop/order/range/search/download', data, { responseType: 'blob' })
}
...@@ -118,6 +118,20 @@ ...@@ -118,6 +118,20 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</app-card> </app-card>
<app-card title="更多设置">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="服务说明">
<el-input v-model="ruleForm.spare.service_desc"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="购买说明">
<el-input v-model="ruleForm.spare.buy_desc"></el-input>
</el-form-item>
</el-col>
</el-row>
</app-card>
</el-form> </el-form>
<app-card v-show="stepActive === 2"> <app-card v-show="stepActive === 2">
<div class="goods-detail"> <div class="goods-detail">
...@@ -201,7 +215,8 @@ export default { ...@@ -201,7 +215,8 @@ export default {
buy_limit: '1', // 限购 buy_limit: '1', // 限购
goodStockList: [], // 规格明细 goodStockList: [], // 规格明细
skuKeyValueList: [], skuKeyValueList: [],
messageList: [] // 留言 messageList: [], // 留言
spare: {}
}, },
buyButtonTextRadio: '1', buyButtonTextRadio: '1',
rules: { rules: {
...@@ -262,6 +277,12 @@ export default { ...@@ -262,6 +277,12 @@ export default {
} catch (error) { } catch (error) {
console.log('留言解析失败', error) console.log('留言解析失败', error)
} }
// 额外页面配置
try {
this.ruleForm.spare = data.spare ? JSON.parse(data.spare) : {}
} catch (error) {
console.log('额外页面配置信息解析失败', error)
}
// 购买按钮 // 购买按钮
this.buyButtonTextRadio = data.buy_button_text === '立即购买' ? '1' : '2' this.buyButtonTextRadio = data.buy_button_text === '立即购买' ? '1' : '2'
this.loading = false this.loading = false
...@@ -344,6 +365,7 @@ export default { ...@@ -344,6 +365,7 @@ export default {
const params = Object.assign({ shop_id: this.shopId }, this.ruleForm) const params = Object.assign({ shop_id: this.shopId }, this.ruleForm)
params.chart_oss = JSON.stringify(params.chart_oss) params.chart_oss = JSON.stringify(params.chart_oss)
params.spec = JSON.stringify(params.goodStockList) params.spec = JSON.stringify(params.goodStockList)
params.spare = JSON.stringify(params.spare)
params.app_button_text = JSON.stringify(params.messageList) params.app_button_text = JSON.stringify(params.messageList)
this.isEdit ? this.handleEdit(params, callback) : this.handleAdd(params, callback) this.isEdit ? this.handleEdit(params, callback) : this.handleAdd(params, callback)
}) })
......
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
border border
ref="list" ref="list"
> >
<div class="tab-aside">
<div class="tab-aside-buttons">
<el-button type="primary" size="medium" @click="handleExport">导出</el-button>
</div>
</div>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick"> <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane :label="item.label" :name="item.value" v-for="item in orderStatus" :key="item.value"></el-tab-pane> <el-tab-pane :label="item.label" :name="item.value" v-for="item in orderStatus" :key="item.value"></el-tab-pane>
</el-tabs> </el-tabs>
...@@ -80,12 +85,13 @@ ...@@ -80,12 +85,13 @@
<script> <script>
import dayjs from 'dayjs' import dayjs from 'dayjs'
import fileDownload from 'js-file-download'
// 组件 // 组件
import TableList from '@/components/base/tableList.vue' import TableList from '@/components/base/tableList.vue'
import AppCard from '@/components/base/card.vue' import AppCard from '@/components/base/card.vue'
import GoodsItem from '@/components/goods/goodsItem.vue' import GoodsItem from '@/components/goods/goodsItem.vue'
// 接口 // 接口
import { getOrderSearchList } from '@/api/order' import { getOrderSearchList, exportOrder } from '@/api/order'
export default { export default {
components: { AppCard, TableList, GoodsItem }, components: { AppCard, TableList, GoodsItem },
data() { data() {
...@@ -103,7 +109,14 @@ export default { ...@@ -103,7 +109,14 @@ export default {
], ],
orderStartTime: '', orderStartTime: '',
orderEndTime: '', orderEndTime: '',
orderActiveDay: '' orderActiveDay: '',
params: {
shop_id: this.$store.state.shopId,
search_field: 'spu_name',
search_value: '',
order_status: '',
payment_method: ''
}
} }
}, },
computed: { computed: {
...@@ -112,13 +125,7 @@ export default { ...@@ -112,13 +125,7 @@ export default {
return { return {
remote: { remote: {
httpRequest: getOrderSearchList, httpRequest: getOrderSearchList,
params: { params: this.params,
shop_id: this.$store.state.shopId,
search_field: 'spu_name',
search_value: '',
order_status: '',
payment_method: ''
},
beforeRequest: this.beforeRequest, beforeRequest: this.beforeRequest,
callback: this.callback callback: this.callback
}, },
...@@ -226,6 +233,13 @@ export default { ...@@ -226,6 +233,13 @@ export default {
} }
return map[value] || value return map[value] || value
}, },
// 导出
handleExport() {
exportOrder(this.params).then(response => {
const datetime = dayjs().format('YYYY-MM-DD-HH-mm-ss')
fileDownload(response, `Order_zijing_${datetime}.csv`)
})
},
// tab // tab
handleClick() { handleClick() {
this.$refs.list.refetch(true) this.$refs.list.refetch(true)
...@@ -257,6 +271,14 @@ export default { ...@@ -257,6 +271,14 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.tab-aside {
position: relative;
z-index: 10;
}
.tab-aside-buttons {
position: absolute;
right: 0;
}
::v-deep .filter-buttons { ::v-deep .filter-buttons {
display: block; display: block;
padding-left: 68px; padding-left: 68px;
......
...@@ -17,11 +17,15 @@ const store = new Vuex.Store({ ...@@ -17,11 +17,15 @@ const store = new Vuex.Store({
{ label: '玛丽伍德综合管理方向工商管理硕士', value: '1012' }, { label: '玛丽伍德综合管理方向工商管理硕士', value: '1012' },
{ label: '索菲亚大学金融方向工商管理硕士', value: '1000' }, { label: '索菲亚大学金融方向工商管理硕士', value: '1000' },
{ label: '瑞士酒店大学酒店及旅游业工商管理硕士', value: '1008' }, { label: '瑞士酒店大学酒店及旅游业工商管理硕士', value: '1008' },
{ label: '瑞士美食艺术管理大学CAAS餐饮管理MBA', value: '1015' },
{ label: '美国印第安纳大学Kelley商学院金融学硕士', value: '1001' }, { label: '美国印第安纳大学Kelley商学院金融学硕士', value: '1001' },
{ label: '加州整合大学应用心理学硕士', value: '1006' }, { label: '加州整合大学应用心理学硕士', value: '1006' },
{ label: '美国康博斯威尔大学教育学硕士', value: '1005' }, { label: '美国康博斯威尔大学教育学硕士', value: '1005' },
{ label: '中国未来金融领袖计划', value: '1007' }, { label: '中国未来金融领袖计划', value: '1007' },
{ label: '道路运输企业', value: '5001' } { label: 'WMP高级财富管理师', value: '5000' },
{ label: '道路运输企业', value: '5001' },
{ label: '1+X', value: '5002' },
{ label: 'PRP', value: '5003' }
], ],
// 费用类型 // 费用类型
feeTypes: [] feeTypes: []
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论