diff --git a/src/api/system/common.js b/src/api/system/common.js new file mode 100644 index 0000000..d42ccf9 --- /dev/null +++ b/src/api/system/common.js @@ -0,0 +1,10 @@ +import request from '@/utils/request' + +// 查询省市区列表 +export function areaSelect(query) { + return request({ + url: '/common/area', + method: 'get', + params: query + }) +} diff --git a/src/api/ums/member.js b/src/api/ums/member.js index f42d7f2..3f8a72e 100644 --- a/src/api/ums/member.js +++ b/src/api/ums/member.js @@ -52,3 +52,14 @@ export function exportUmsMember(query) { params: query }) } + +// 更改会员账号状态 +export function changeAccountStatus(data) { + return request({ + url: '/ums/member/status/change', + method: 'post', + data: data + }) +} + + diff --git a/src/config/business.js b/src/config/business.js index 969a9fb..6ebf3e9 100644 --- a/src/config/business.js +++ b/src/config/business.js @@ -2,5 +2,5 @@ export const dict_types = ["sys_user_sex", "sys_show_hide", "sys_normal_disable", "sys_job_status", "sys_job_group", "sys_yes_no", "sys_notice_type", "sys_notice_status", "sys_oper_type", "sys_common_status", "wms_item_type", "wms_carrier_level", "wms_supplier_level", "wms_receipt_type", "wms_receipt_status", "wms_shipment_type", "wms_shipment_status", "wms_movement_type", "wms_movement_status", - "pms_publish_status", 'sku_sort_list', 'sys_show_status' + "pms_publish_status", 'sku_sort_list', 'sys_show_status','oms_pay_type','oms_order_status' ]; diff --git a/src/main.js b/src/main.js index 3f45547..c21d655 100644 --- a/src/main.js +++ b/src/main.js @@ -19,7 +19,7 @@ import './assets/icons' // icon import './permission' // permission control import { getDicts } from "@/api/system/dict/data"; import { getConfigKey } from "@/api/system/config"; -import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; +import { parseTime, resetForm, addDateRange, addDateRange2, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; // 分页组件 import Pagination from "@/components/Pagination"; // 自定义表格工具组件 @@ -54,6 +54,8 @@ Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.download = download Vue.prototype.handleTree = handleTree +Vue.prototype.addDateRange2 = addDateRange2 + // 全局组件挂载 Vue.component('DictTag', DictTag) diff --git a/src/store/getters.js b/src/store/getters.js index a013ad8..0d97c03 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -17,6 +17,7 @@ const getters = { dictMap: state => state.dict.dictMap, productCategories: state => state.mall.productCategories, + areaSelect: state => state.mall.areaSelect, brandList: state => state.mall.brandList, } export default getters diff --git a/src/store/modules/mall.js b/src/store/modules/mall.js index f7e468f..4fbaf08 100644 --- a/src/store/modules/mall.js +++ b/src/store/modules/mall.js @@ -1,14 +1,19 @@ import {listPmsProductCategory} from "@/api/pms/productCategory"; import {allBrand} from "@/api/pms/brand"; +import {areaSelect} from "@/api/system/common"; const state = { productCategories: [], - brandList: [] + brandList: [], + areaSelect: [] } const mutations = { SET_PRODUCT_CATEGORIES: (state, value) => { state.productCategories = value }, + SET_areaSelect: (state, value) => { + state.areaSelect = value + }, SET_BRAND_LIST: (state, value) => { state.brandList = value }, @@ -22,6 +27,14 @@ const actions = { commit('SET_PRODUCT_CATEGORIES', res); }) }, + loadAreaSelect({ commit, state }, force = false) { + if (!force && state.areaSelect.length > 0) { + return Promise.resolve(); + } + return areaSelect({},{}).then(res => { + commit('SET_areaSelect', res.data); + }) + }, loadBrandList({ commit, state }, force = false) { if (!force && state.brandList.length > 0) { return Promise.resolve(); @@ -37,4 +50,4 @@ export default { state, mutations, actions -} \ No newline at end of file +} diff --git a/src/utils/DateUtil.js b/src/utils/DateUtil.js new file mode 100644 index 0000000..a4a6c73 --- /dev/null +++ b/src/utils/DateUtil.js @@ -0,0 +1,221 @@ +/** + * Created by lcx47996 on 2017/12/25. + */ + +export function dateFormat(date, format) { + if (!date || date === 0) { + return '' + } + if (!(date instanceof Date)) { + date = new Date(date) + if (date.toString() === 'Invalid Date') { + return '无效时间戳' + } + } + format = format || 'yyyy-MM-dd hh:mm:ss' + const o = { + 'M+': date.getMonth() + 1, // 月份 + 'd+': date.getDate(), // 日 + 'h+': date.getHours(), // 小时 + 'm+': date.getMinutes(), // 分 + 's+': date.getSeconds(), // 秒 + 'q+': Math.floor((date.getMonth() + 3) / 3), // 季度 + 'S': date.getMilliseconds() // 毫秒 + }; + if (/(y+)/.test(format)) { + format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); + } + for (const k in o) { + if (new RegExp('(' + k + ')').test(format)) { + format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))); + } + } + return format; +} + +function getAfterDate(after) { + var dd = new Date(); + dd.setDate(dd.getDate() + after);// 获取AddDayCount天后的日期 + var y = dd.getFullYear(); + var m = dd.getMonth() + 1;// 获取当前月份的日期 + var d = dd.getDate(); + return y + '-' + m + '-' + d; +} + +function getAfterDateReturnDate(datetime, after) { + if (!(datetime.type instanceof Date)) { + return datetime + } + var r = new Date(datetime.getTime()) + r.setDate(datetime.getDate() + after);// 获取AddDayCount天后的日期 + return r; +} + +function getAfterHourReturnDate(datetime, after) { + if (!(datetime.type instanceof Date)) { + return datetime + } + var r = new Date(datetime.getTime() + after * 60 * 60 * 1000) + return r; +} + +function getAfterMounth(date, after) { + var dd = new Date(); + dd.setMonth(dd.getMonth() + after);// 获取AddDayCount天后的日期 + var y = dd.getFullYear(); + var m = dd.getMonth() + 1;// 获取当前月份的日期 + var d = dd.getDate(); + return y + '-' + m + '-' + d; +} + +/** + * 计算2个日期相差的天数,不包含今天,如:2016-12-13到2016-12-15,相差2天 + */ +function dateDiff(startDate, endDate) { + return parseInt((endDate - startDate) / 1000 / 60 / 60 / 24);// 把相差的毫秒数转换为天数 +} + +/** + * 计算2个日期相差的天数,包含今天,如:2016-12-13到2016-12-15,相差3天 + */ +function dateDiffIncludeToday(startDate, endDate) { + return parseInt((endDate - startDate) / 1000 / 60 / 60 / 24) + 1;// 把相差的毫秒数转换为天数 +} + +/** + * 获取凌晨时间 + * @param day + */ +export function getMorningTime(day = 0) { + if (day == null) { + return null; + } + const timeStamp = new Date(new Date().setHours(0, 0, 0, 0)).getTime(); + return new Date(timeStamp + day * 86400000); +} + +export function getStartEnd(length) { + const end = getMorningTime(0); + const start = getMorningTime(0); + start.setTime(start.getTime() - 3600 * 1000 * 24 * length); + return {end, start}; +} + +function getTimeShort() { + const timeShort = [ + { + text: '今天', + onClick(picker) { + const {end, start} = getStartEnd(0); + picker.$emit('pick', [start, end]); + } + }, + { + text: '昨天', + onClick(picker) { + const time = getMorningTime(0); + time.setTime(time.getTime() - 3600 * 1000 * 24); + picker.$emit('pick', [time, time]); + } + }, + { + text: '最近一周', + onClick(picker) { + const {end, start} = getStartEnd(7); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近一个月', + onClick(picker) { + const {end, start} = getStartEnd(30); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近三个月', + onClick(picker) { + const {end, start} = getStartEnd(90); + picker.$emit('pick', [start, end]); + } + } + ]; + return timeShort; +} + +function getTimeShort2(){ + const timeShort = [ + { + text: '今天', + onClick(picker) { + const temp = new Date(); + picker.$emit('pick', [new Date(temp.setHours(0, 0, 0, 0)), new Date(temp.setHours(23, 59, 59, 0))]); + } + }, + { + text: '昨天', + onClick(picker) { + const temp = new Date(); + temp.setTime(temp.getTime() - 3600 * 1000 * 24); + picker.$emit('pick', [new Date(temp.setHours(0, 0, 0, 0)), new Date(temp.setHours(23, 59, 59, 0))]); + } + }, + { + text: '前一周', + onClick(picker) { + const start = new Date(); + const end = new Date(); + start.setTime(end.getTime() - 3600 * 1000 * 24 * 6); + picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]); + } + }, + { + text: '这个月', + onClick(picker) { + const end = getCurrentMonthLast(); + const start = getCurrentMonthFirst(); + picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]); + + function getCurrentMonthFirst() { + let date = new Date(); + date.setDate(1); + return date; + } + + // 获取当前月的最后一天 + function getCurrentMonthLast() { + let date = new Date(); + let currentMonth = date.getMonth(); + let nextMonth = ++currentMonth; + let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1); + let oneDay = 1000 * 60 * 60 * 24; + + return new Date(nextMonthFirstDay - oneDay); + } + } + }, + { + text: '前一个月', + onClick(picker) { + const start = new Date(); + const end = new Date(); + start.setTime(end.getTime() - 3600 * 1000 * 24 * 29); + picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]); + } + } + ] + return timeShort +} + +export default { + 'getAfterDate': getAfterDate, + 'getAfterMounth': getAfterMounth, + 'dateDiff': dateDiff, + 'dateDiffIncludeToday': dateDiffIncludeToday, + 'getAfterDateReturnDate': getAfterDateReturnDate, + 'getAfterHourReturnDate': getAfterHourReturnDate, + getTimeShort, + getTimeShort2, + dateFormat, + getStartEnd, + getMorningTime +} + diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js index d2cd2a0..f5fbd75 100644 --- a/src/utils/ruoyi.js +++ b/src/utils/ruoyi.js @@ -1,4 +1,4 @@ - +import moment from "moment/moment"; /** * 通用js方法封装处理 @@ -68,6 +68,19 @@ export function addDateRange(params, dateRange, propName) { return search; } +export function addDateRange2(params, dateRange, addDay=true) { + let search = params; + dateRange = Array.isArray(dateRange) ? dateRange : []; + if (addDay) { + search['beginTime'] = dateRange[0]; + search['endTime'] = moment(dateRange[1]).add(1,"days").format('yyyy-MM-DD'); + } else { + search['beginTime'] = dateRange[0]; + search['endTime'] = dateRange[1]; + } + return search; +} + // 回显数据字典 export function selectDictLabel(datas, value) { if (value === undefined) { diff --git a/src/views/components/AddressSelector/index.vue b/src/views/components/AddressSelector/index.vue new file mode 100644 index 0000000..ad9ff4e --- /dev/null +++ b/src/views/components/AddressSelector/index.vue @@ -0,0 +1,62 @@ + + + + + + + + diff --git a/src/views/oms/order/index.vue b/src/views/oms/order/index.vue index 4ddf960..4ac3e7f 100644 --- a/src/views/oms/order/index.vue +++ b/src/views/oms/order/index.vue @@ -1,285 +1,89 @@ - - - - - - - - - - - - - - - - - - - - - + + + - - - - - + + - - - + + + - - - - - - - - - - - + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - 搜索 重置 - {{showMoreCondition ? '收起条件' : '展开条件'}} + - - - 新增 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + {{ getOrderTypeText(scope.row.status) }} + + + + + + ¥{{ scope.row.totalAmount }} + + + + + ¥{{ scope.row.payAmount }} + + + + + + {{ getPayTypeText(scope.row.payType) }} + + + + + + {{ scope.row.receiverName }} {{ scope.row.receiverPhone }} + {{ scope.row.receiverDetailAddress }} + + + + + + + + + - {{ parseTime(scope.row.paymentTime, '')}} + {{ parseTime(scope.row.payTime, '')}} @@ -292,26 +96,24 @@ {{ parseTime(scope.row.receiveTime, '')}} - + + + {{ parseTime(scope.row.createTime, '')}} + + + + 修改 - 删除 + @click="goDetail(scope.row)" + v-hasPermi="['oms:order:detail']" + >详情 - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 请选择字典生成 - - - - - 请选择字典生成 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 请选择字典生成 - - - - - 请选择字典生成 - - - - - - - - - - - - - - - - -