This commit is contained in:
szdot 2023-11-10 16:52:17 +08:00
parent 5a667351c6
commit 45c0e8b645
12 changed files with 84 additions and 123 deletions

View File

@ -1,5 +1,5 @@
<template> <template>
<el-date-picker v-model="value2" type="daterange" align="right" unlink-panels range-separator="" <el-date-picker v-model="value" type="daterange" align="right" unlink-panels range-separator=""
start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions" format="yyyy-MM-dd HH:mm:ss"> start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions" format="yyyy-MM-dd HH:mm:ss">
</el-date-picker> </el-date-picker>
</template> </template>
@ -7,6 +7,9 @@
<script> <script>
export default { export default {
data () { data () {
const orderSearch = this.$store.getters['app/getOrderSerch']
const startTimestamp = orderSearch.start_time
const endTimestamp = orderSearch.end_time
return { return {
pickerOptions: { pickerOptions: {
shortcuts: [ shortcuts: [
@ -79,21 +82,22 @@ export default {
} }
] ]
}, },
value1: '', value: [startTimestamp, endTimestamp]
value2: ''
} }
}, },
watch: { watch: {
value2 (newVal) { value (newVal) {
if (newVal && newVal.length === 2) { if (newVal && newVal.length === 2) {
const end = newVal[1] const end = newVal[1]
end.setHours(23, 59, 59, 999) // 23:59:59 end.setHours(23, 59, 59, 999) // 23:59:59
const startTimestamp = Math.floor(newVal[0].getTime() / 1000) // const startTimestamp = Math.floor(newVal[0].getTime() / 1000) //
const endTimestamp = Math.floor(end.getTime() / 1000) // const endTimestamp = Math.floor(end.getTime() / 1000) //
this.$emit('dateRangepicked', { start: startTimestamp, end: endTimestamp }) this.$store.commit('app/setOrderSerch', { start_time: startTimestamp })
this.$store.commit('app/setOrderSerch', { end_time: endTimestamp })
} }
if (newVal === null) { if (newVal === null) {
this.$emit('dateRangepicked', { start: '', end: '' }) this.$store.commit('app/setOrderSerch', { start_time: '' })
this.$store.commit('app/setOrderSerch', { end_time: '' })
} }
} }
} }

View File

@ -14,16 +14,15 @@
export default { export default {
data () { data () {
return { return {
value: ['orderId', ''] value: this.$store.getters['app/getOrderSerch'].search
} }
}, },
watch: { watch: {
value (val) { value (val) {
this.$emit('input', val) this.$store.commit('app/setOrderSerch', { search: val })
} }
}, },
created () { created () {
this.$emit('input', this.value)
} }
} }
</script> </script>

View File

@ -25,12 +25,12 @@ export default {
value: 'actively', value: 'actively',
label: '商家发起退款' label: '商家发起退款'
}], }],
value: [] value: this.$store.getters['app/getOrderSerch'].back
} }
}, },
watch: { watch: {
value (val) { value (val) {
this.$emit('selectedValuesChanged', val) this.$store.commit('app/setOrderSerch', { back: val })
} }
} }
} }

View File

@ -28,12 +28,12 @@ export default {
value: 'closed', value: 'closed',
label: '交易关闭' label: '交易关闭'
}], }],
value: [] value: this.$store.getters['app/getOrderSerch'].status
} }
}, },
watch: { watch: {
value (val) { value (val) {
this.$emit('selectedValuesChanged', val) this.$store.commit('app/setOrderSerch', { status: val })
} }
} }
} }

View File

@ -5,8 +5,8 @@
<span class="m-l-15">所有分类</span> <span class="m-l-15">所有分类</span>
</el-option> </el-option>
<el-option v-for="item in categoryListArr" :key="item.id" :label="item.name" :value="item.path"> <el-option v-for="item in categoryListArr" :key="item.id" :label="item.name" :value="item.path">
<el-avatar v-if="item.bz_1 != ''" class="vm" shape="square" :size="25" <el-avatar v-if="item.photo != ''" class="vm" shape="square" :size="25"
:src="$store.state.settings.host + '/Data/UploadFiles/category/' + item.bz_1"> :src="$store.state.settings.host + '/Data/UploadFiles/category/' + item.photo">
</el-avatar> </el-avatar>
<el-avatar v-else :size="25" class="vm" shape="square" icon="iconfont icon-tuxiang"></el-avatar> <el-avatar v-else :size="25" class="vm" shape="square" icon="iconfont icon-tuxiang"></el-avatar>
<span v-for="element in item.pathLen" :key="element" class="m-l-30"></span> <span v-for="element in item.pathLen" :key="element" class="m-l-30"></span>

View File

@ -1,39 +0,0 @@
<template>
<el-select class="w-100" v-model="value" multiple placeholder="退款状态过滤:空置为不过滤(显示全部订单),可多选条件">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</template>
<script>
export default {
data () {
return {
options: [{
value: 'normal',
label: '从未申请'
}, {
value: 'requested',
label: '申请退款中'
}, {
value: 'refunded',
label: '已退款'
}, {
value: 'rejected',
label: '拒绝退款'
}, {
value: 'actively',
label: '商家发起退款'
}],
value: []
}
},
watch: {
value (val) {
this.$emit('selectedValuesChanged', val)
}
}
}
</script>
<style lang="scss" scoped></style>

View File

@ -6,6 +6,7 @@ import user from './modules/user'
import api from '@/utils/api' import api from '@/utils/api'
import { Message, MessageBox } from 'element-ui' import { Message, MessageBox } from 'element-ui'
// 把vuex作为插件引入到Vue示例中 ps:注册
Vue.use(Vuex) Vue.use(Vuex)
const store = new Vuex.Store({ const store = new Vuex.Store({

View File

@ -3,7 +3,8 @@ const state = {
isCollapse: localStorage.getItem('isCollapse') ? !!+localStorage.getItem('isCollapse') : true, // 侧边导航栏 显隐 isCollapse: localStorage.getItem('isCollapse') ? !!+localStorage.getItem('isCollapse') : true, // 侧边导航栏 显隐
isMobile: null, // 是否是pc端 true电脑端 false为移动端 isMobile: null, // 是否是pc端 true电脑端 false为移动端
defaultLngLat: null, // 地图默认经纬度 defaultLngLat: null, // 地图默认经纬度
defaultZoom: null // 地图默认缩放 defaultZoom: null, // 地图默认缩放
orderSerch: null// 订单列表页搜索条件
} }
const mutations = { const mutations = {
@ -38,6 +39,16 @@ const mutations = {
setDefaultZoom (state, zoom) { setDefaultZoom (state, zoom) {
state.defaultZoom = zoom state.defaultZoom = zoom
localStorage.setItem('defaultZoom', zoom) localStorage.setItem('defaultZoom', zoom)
},
// 设置订单页面搜索默认值
setOrderSerch (state, partialSerchObj) {
state.orderSerch = state.orderSerch || {} // 设置默认值
// 深层合并传递的部分对象到当前的 state.orderSerch
state.orderSerch = { ...state.orderSerch, ...partialSerchObj }
// 存储到 localStorage
localStorage.setItem('orderSerch', JSON.stringify(state.orderSerch))
} }
} }
@ -51,6 +62,19 @@ const getters = {
// 获取地图默认缩放值 缓存中没有从 localStorage中获取 也没有设置为1 // 获取地图默认缩放值 缓存中没有从 localStorage中获取 也没有设置为1
getDefaultZoom () { getDefaultZoom () {
return state.defaultZoom !== null ? state.defaultZoom : localStorage.getItem('defaultZoom') !== null ? localStorage.getItem('defaultZoom') : 1 return state.defaultZoom !== null ? state.defaultZoom : localStorage.getItem('defaultZoom') !== null ? localStorage.getItem('defaultZoom') : 1
},
// 获取订单页面搜索条件
getOrderSerch (state) {
const defaultValues = {
start_time: '', // 搜索条件 起始时间
end_time: '', // 搜索条件 结束时间
status: [], // 搜索条件 订单状态
back: [], // 搜索条件 退款状态
search: ['orderId', '']// 搜索条件 搜索
}
// 深层合并 state.orderSerch 和默认值 取值得时候对象里面如果有得属性 会被保留 没有得会用defaultValues的属性进行填充
// 缓存中没有 从本地拿 本地也没有 给一个默认空对象
return { ...defaultValues, ...state.orderSerch } || JSON.parse(localStorage.getItem('orderSerch')) || defaultValues
} }
} }

View File

@ -17,7 +17,7 @@
</el-button-group> </el-button-group>
<!-- 分类树 --> <!-- 分类树 -->
<div> <div>
<el-button type="text" @click="openWin('添加根分类', { id: 0, path: '', bz_1: '' })"> <el-button type="text" @click="openWin('添加根分类', { id: 0, path: '', photo: '' })">
添加根分类 添加根分类
</el-button> </el-button>
</div> </div>
@ -26,7 +26,7 @@
<span :class="data.show == 0 ? 'hideColor' : ''">{{ data.name }}</span> <span :class="data.show == 0 ? 'hideColor' : ''">{{ data.name }}</span>
<span> <span>
<el-button type="text" @click.stop="" <el-button type="text" @click.stop=""
@click="openWin(`${data.name} : 添加子分类`, { id: data.id, path: data.path, bz_1: '' })"> @click="openWin(`${data.name} : 添加子分类`, { id: data.id, path: data.path, photo: '' })">
添加子分类 添加子分类
</el-button> </el-button>
<el-button type="text" class="textEditBut" @click.stop="" @click="openWin(`${data.name} : 编辑`, data)"> <el-button type="text" class="textEditBut" @click.stop="" @click="openWin(`${data.name} : 编辑`, data)">
@ -77,7 +77,7 @@
:src="$store.state.settings.host + '/Data/UploadFiles/category/' + form.oldFile" class="avatar" /> :src="$store.state.settings.host + '/Data/UploadFiles/category/' + form.oldFile" class="avatar" />
<template v-else> <template v-else>
<i class="el-icon-plus f-s-30 m-t-70 seatFontColor"></i> <i class="el-icon-plus f-s-30 m-t-70 seatFontColor"></i>
<div class="el-upload__text"><em>建议100*100像素 <br> jpg png gif </em></div> <div class="el-upload__text"><em>建议40*40像素 <br>svg jpg png gif </em></div>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
@ -177,9 +177,9 @@ export default {
} }
}, },
beforeAvatarUpload (file) { beforeAvatarUpload (file) {
const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/gif' const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/gif' || file.type === 'image/svg+xml'
if (!isJPG) { if (!isJPG) {
this.$message.error('上传图片只能是JPG|PNG|GIF格式!') this.$message.error('上传图片只能是SVG|JPG|PNG|GIF格式!')
} }
return isJPG return isJPG
}, },
@ -198,7 +198,7 @@ export default {
this.form.sort = data.sort this.form.sort = data.sort
this.form.show = data.show === '1' this.form.show = data.show === '1'
this.form.desc = data.desc this.form.desc = data.desc
this.form.oldFile = data.bz_1 this.form.oldFile = data.photo
this.form.upFile = '' this.form.upFile = ''
if (Object.keys(data).length === 0) { if (Object.keys(data).length === 0) {
this.$message.warning('清空表单') this.$message.warning('清空表单')

View File

@ -5,19 +5,19 @@
<el-col :span="4"> <el-col :span="4">
<SelectionShopId class="w-100" v-model="shop_id" :allSel="true" /> <SelectionShopId class="w-100" v-model="shop_id" :allSel="true" />
</el-col> </el-col>
<el-col :span="9"> <el-col :span="10">
<DatePickerOrder class="w-100" @dateRangepicked="handleDateRangePicked" /> <DatePickerOrder class="w-100" />
</el-col> </el-col>
<el-col :span="11"> <el-col :span="10">
<SearchOrder class="w-100" @input="handleSearchChange" /> <SearchOrder class="w-100" />
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="15"> <el-row :gutter="15">
<el-col :span="13"> <el-col :span="13">
<SelectionOrderStatus @selectedValuesChanged="handleOrderStatusChange" /> <SelectionOrderStatus />
</el-col> </el-col>
<el-col :span="11"> <el-col :span="11">
<SelectionOrderBack @selectedValuesChanged="handleOrderBackChange" /> <SelectionOrderBack />
</el-col> </el-col>
</el-row> </el-row>
<!-- 订单列表 --> <!-- 订单列表 -->
@ -36,7 +36,7 @@
{{ scope.row.addtime | parseTime('{y}-{m}-{d} {h}:{i}') }} {{ scope.row.addtime | parseTime('{y}-{m}-{d} {h}:{i}') }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="controler" label="操作" width="400" min-width="400"> <el-table-column prop="controler" label="操作" width="380" min-width="380">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button-group> <el-button-group>
<el-button type="warning" icon="el-icon-edit">同意退款</el-button> <el-button type="warning" icon="el-icon-edit">同意退款</el-button>
@ -69,12 +69,7 @@ export default {
return { return {
pageSize: 50, // pageSize: 50, //
currentPage: 1, // currentPage: 1, //
shop_id: '', // id shop_id: '' // id
start_time: '', //
end_time: '', //
status: [], //
back: [], // 退
search: [] //
} }
}, },
components: { components: {
@ -89,6 +84,10 @@ export default {
orderList () { orderList () {
return this.$store.state.orderList return this.$store.state.orderList
}, },
// ( )
orderSerch () {
return this.$store.getters['app/getOrderSerch']
},
// //
orderListArr () { orderListArr () {
if (this.orderList.length > 0) { if (this.orderList.length > 0) {
@ -98,41 +97,41 @@ export default {
filteredList = filteredList.filter(order => order.shop_id === this.shop_id) filteredList = filteredList.filter(order => order.shop_id === this.shop_id)
} }
// //
if (this.start_time !== '' && this.end_time !== '') { if (this.orderSerch.start_time !== '' && this.orderSerch.end_time !== '') {
const startTime = parseInt(this.start_time) const startTime = parseInt(this.orderSerch.start_time)
const endTime = parseInt(this.end_time) const endTime = parseInt(this.orderSerch.end_time)
filteredList = filteredList.filter(order => { filteredList = filteredList.filter(order => {
const orderTime = parseInt(order.addtime) const orderTime = parseInt(order.addtime)
return startTime < orderTime && orderTime < endTime return startTime < orderTime && orderTime < endTime
}) })
} }
// //
if (this.status.length > 0) { if (this.orderSerch.status.length > 0) {
filteredList = filteredList.filter(order => { filteredList = filteredList.filter(order => {
// this.status // this.status
return this.status.includes(order.status) return this.orderSerch.status.includes(order.status)
}) })
} }
// //
if (this.back.length > 0) { if (this.orderSerch.back.length > 0) {
filteredList = filteredList.filter(order => { filteredList = filteredList.filter(order => {
// this.status // this.status
return this.back.includes(order.back) return this.orderSerch.back.includes(order.back)
}) })
} }
// //
if (this.search[1] !== '') { if (this.orderSerch.search[1] !== '') {
filteredList = filteredList.filter(order => { filteredList = filteredList.filter(order => {
if (this.search[0] === 'orderId') { if (this.orderSerch.search[0] === 'orderId') {
return order.order_sn.indexOf(this.search[1]) >= 0 return order.order_sn.indexOf(this.orderSerch.search[1]) >= 0
} else if (this.search[0] === 'name') { } else if (this.orderSerch.search[0] === 'name') {
return order.receiver.indexOf(this.search[1]) >= 0 return order.receiver.indexOf(this.orderSerch.search[1]) >= 0
} else if (this.search[0] === 'tel') { } else if (this.orderSerch.search[0] === 'tel') {
return order.tel.indexOf(this.search[1]) >= 0 return order.tel.indexOf(this.orderSerch.search[1]) >= 0
} else if (this.search[0] === 'remark') { } else if (this.orderSerch.search[0] === 'remark') {
return order.remark.indexOf(this.search[1]) >= 0 return order.remark.indexOf(this.orderSerch.search[1]) >= 0
} else if (this.search[0] === 'desc') { } else if (this.orderSerch.search[0] === 'desc') {
return order.describe.indexOf(this.search[1]) >= 0 return order.describe.indexOf(this.orderSerch.search[1]) >= 0
} }
}) })
} }
@ -141,36 +140,9 @@ export default {
return [] return []
} }
} }
}, },
methods: { methods: {
countSelIdArr, countSelIdArr
/**
* @description: 日期组件绑定事件
*/
handleDateRangePicked (dateRange) {
//
this.start_time = dateRange.start
this.end_time = dateRange.end
},
/**
* @description: 订单状态选择组件绑定事件
*/
handleOrderStatusChange (val) {
this.status = val
},
/**
* @description: 退货选择组件绑定事件
*/
handleOrderBackChange (val) {
this.back = val
},
/**
* @description: 搜索组件绑定事件
*/
handleSearchChange (val) {
this.search = val
}
}, },
watch: { watch: {
}, },

View File

@ -60,7 +60,7 @@
:src="$store.state.settings.host + '/Data/UploadFiles/spu/' + form.oldFile" class="avatar" /> :src="$store.state.settings.host + '/Data/UploadFiles/spu/' + form.oldFile" class="avatar" />
<template v-else> <template v-else>
<i class="el-icon-plus f-s-30 m-t-70 seatFontColor"></i> <i class="el-icon-plus f-s-30 m-t-70 seatFontColor"></i>
<div class="el-upload__text"><em>建议400*400像素 <br> jpg png </em></div> <div class="el-upload__text"><em>建议288*216像素 <br> jpg png </em></div>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>

View File

@ -9,7 +9,7 @@
<h3 class="f-s-30 m-b-15 fc">Authorize</h3> <h3 class="f-s-30 m-b-15 fc">Authorize</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<span class="svg-container"><i class="iconfont icon-yonghuziliao f-s-24"></i></span> <span class="svg-container"><i class="iconfont icon-yonghuziliao f-s-24"></i></span>
<el-input ref="username" v-model="loginForm.username" placeholder="用户" name="username" type="text" tabindex="1" <el-input ref="username" class="usernameBox" v-model="loginForm.username" placeholder="用户" name="username" type="text" tabindex="1"
auto-complete="on" /> auto-complete="on" />
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
@ -115,7 +115,7 @@ $cursor: #fff;
<style lang="scss" scoped> <style lang="scss" scoped>
$bg: #2d3a4b; $bg: #2d3a4b;
$dark_gray: #889aa4; $dark_gray: #889aa4;
$light_gray: #eee; $light_gray: #efefef;
h3 { h3 {
color: $light_gray; color: $light_gray;