diff --git a/src/api/scm/addReserveDiningApi.js b/src/api/scm/addReserveDiningApi.js new file mode 100644 index 0000000..b7e4186 --- /dev/null +++ b/src/api/scm/addReserveDiningApi.js @@ -0,0 +1,78 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 保存就餐商品信息 +export function saveReserveGoods(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.saveReserveGoods', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取就餐参数列表 +export function listReserveParams(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveParams', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 上传文件 +export function uploadFile(data) { + return new Promise((resolve, reject) => { + request({ + url: '/uploadFile', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取文件下载URL +export function getFileUrl(fileId) { + return new Promise((resolve, reject) => { + request({ + url: '/callComponent/download/getFile/file', + method: 'get', + params: { + fileId, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/addReserveServiceApi.js b/src/api/scm/addReserveServiceApi.js new file mode 100644 index 0000000..b8c58a5 --- /dev/null +++ b/src/api/scm/addReserveServiceApi.js @@ -0,0 +1,82 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +/** + * 保存预约服务信息 + * @param {Object} data 服务信息 + * @returns {Promise} + */ +export function saveReserveGoods(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.saveReserveGoods', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 获取预约参数列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function listReserveParams(params = {}) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveParams', + method: 'get', + params: { + page: 1, + row: 100, + communityId: getCommunityId(), + ...params + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 上传文件 + * @param {FormData} formData 文件表单数据 + * @returns {Promise} + */ +export function uploadFile(formData) { + return new Promise((resolve, reject) => { + request({ + url: '/uploadFile', + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 获取文件下载URL + * @param {String} fileId 文件ID + * @returns {String} 文件下载URL + */ +export function getFileUrl(fileId) { + return `/callComponent/download/getFile/file?fileId=${fileId}&communityId=${getCommunityId()}&time=${new Date().getTime()}` +} \ No newline at end of file diff --git a/src/api/scm/doDiningApi.js b/src/api/scm/doDiningApi.js new file mode 100644 index 0000000..4b5b535 --- /dev/null +++ b/src/api/scm/doDiningApi.js @@ -0,0 +1,135 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取预约商品列表 +export function listReserveGoods(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveGoods', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询业主就餐记录 +export function queryOwnerDining(params) { + return new Promise((resolve, reject) => { + request({ + url: '/owner.queryOwnerDining', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 导出数据 +export function exportData(params) { + return new Promise((resolve, reject) => { + request({ + url: '/export.exportData', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 执行就餐 +export function doDining(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserveOrder.doDining', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存预约商品订单 +export function saveReserveGoodsOrder(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserveOrder.saveReserveGoodsOrder', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除预约商品 +export function deleteReserveGoods(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.deleteReserveGoods', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取预约参数 +export function listReserveParams(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveParams', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/editReserveDiningApi.js b/src/api/scm/editReserveDiningApi.js new file mode 100644 index 0000000..cd78f52 --- /dev/null +++ b/src/api/scm/editReserveDiningApi.js @@ -0,0 +1,84 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 更新预订餐饮商品 +export function updateReserveGoods(data) { + return new Promise((resolve, reject) => { + data.communityId = getCommunityId() + request({ + url: '/reserve.updateReserveGoods', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取预订参数列表 +export function listReserveParams(params) { + return new Promise((resolve, reject) => { + const defaultParams = { + page: 1, + row: 100, + communityId: getCommunityId() + } + request({ + url: '/reserve.listReserveParams', + method: 'get', + params: Object.assign(defaultParams, params) + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取预订餐饮商品列表 +export function listReserveGoods(params) { + return new Promise((resolve, reject) => { + const defaultParams = { + page: 1, + row: 1, + communityId: getCommunityId() + } + request({ + url: '/reserve.listReserveGoods', + method: 'get', + params: Object.assign(defaultParams, params) + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 上传图片 +export function uploadImage(data) { + return new Promise((resolve, reject) => { + const formData = new FormData() + formData.append('uploadFile', data.file) + formData.append('communityId', getCommunityId()) + + request({ + url: 'uploadFile', + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/editReserveServiceApi.js b/src/api/scm/editReserveServiceApi.js new file mode 100644 index 0000000..ad60a5c --- /dev/null +++ b/src/api/scm/editReserveServiceApi.js @@ -0,0 +1,107 @@ +import request from '@/utils/request' + +/** + * 更新预约服务信息 + * @param {Object} data 服务信息 + * @returns {Promise} + */ +export function updateReserveGoods(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.updateReserveGoods', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 获取预约参数列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function listReserveParams(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveParams', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 获取预约服务列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function listReserveGoods(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveGoods', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 上传文件 + * @param {FormData} formData 文件表单数据 + * @returns {Promise} + */ +export function uploadFile(formData) { + return new Promise((resolve, reject) => { + request({ + url: '/uploadFile', + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 获取文件下载URL + * @param {String} fileId 文件ID + * @returns {Promise} + */ +export function getFileUrl(fileId) { + return new Promise((resolve, reject) => { + request({ + url: '/callComponent/download/getFile/file', + method: 'get', + params: { + fileId, + communityId: -1 + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/ownerDiningApi.js b/src/api/scm/ownerDiningApi.js new file mode 100644 index 0000000..ed86777 --- /dev/null +++ b/src/api/scm/ownerDiningApi.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +// 查询业主就餐记录 +export function queryOwnerReserveGoods(params) { + return new Promise((resolve, reject) => { + request({ + url: '/owner.queryOwnerReserveGoods', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 导出数据 +export function exportData(params) { + return new Promise((resolve, reject) => { + request({ + url: '/export.exportData', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/reserveCatalogManageApi.js b/src/api/scm/reserveCatalogManageApi.js index 721e91a..052de07 100644 --- a/src/api/scm/reserveCatalogManageApi.js +++ b/src/api/scm/reserveCatalogManageApi.js @@ -4,12 +4,13 @@ import { getCommunityId } from '@/api/community/communityApi' // 获取预约目录列表 export function listReserveCatalog(params) { return new Promise((resolve, reject) => { + const communityId = getCommunityId() request({ url: '/reserve.listReserveCatalog', method: 'get', params: { ...params, - communityId: getCommunityId() + communityId } }).then(response => { const res = response.data @@ -23,12 +24,13 @@ export function listReserveCatalog(params) { // 添加预约目录 export function saveReserveCatalog(data) { return new Promise((resolve, reject) => { + const communityId = getCommunityId() request({ url: '/reserve.saveReserveCatalog', method: 'post', data: { ...data, - communityId: getCommunityId() + communityId } }).then(response => { const res = response.data @@ -42,12 +44,13 @@ export function saveReserveCatalog(data) { // 更新预约目录 export function updateReserveCatalog(data) { return new Promise((resolve, reject) => { + const communityId = getCommunityId() request({ url: '/reserve.updateReserveCatalog', method: 'post', data: { ...data, - communityId: getCommunityId() + communityId } }).then(response => { const res = response.data @@ -61,12 +64,13 @@ export function updateReserveCatalog(data) { // 删除预约目录 export function deleteReserveCatalog(data) { return new Promise((resolve, reject) => { + const communityId = getCommunityId() request({ url: '/reserve.deleteReserveCatalog', method: 'post', data: { ...data, - communityId: getCommunityId() + communityId } }).then(response => { const res = response.data diff --git a/src/api/scm/reserveConfirmApi.js b/src/api/scm/reserveConfirmApi.js new file mode 100644 index 0000000..84b6646 --- /dev/null +++ b/src/api/scm/reserveConfirmApi.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +// 获取核销订单列表 +export function listReserveGoodsConfirmOrder(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserveOrder.listReserveGoodsConfirmOrder', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 核销预约订单 +export function saveReserveGoodsConfirmOrder(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserveOrder.saveReserveGoodsConfirmOrder', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/reserveDiningManageApi.js b/src/api/scm/reserveDiningManageApi.js new file mode 100644 index 0000000..8250b08 --- /dev/null +++ b/src/api/scm/reserveDiningManageApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取预约就餐列表 +export function listReserveGoods(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveGoods', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取预约目录列表 +export function listReserveCatalog(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveCatalog', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取预约参数 +export function listReserveParams(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveParams', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存预约订单 +export function saveReserveGoodsOrder(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserveOrder.saveReserveGoodsOrder', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除预约商品 +export function deleteReserveGoods(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.deleteReserveGoods', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/reserveOrderApi.js b/src/api/scm/reserveOrderApi.js new file mode 100644 index 0000000..1bebb77 --- /dev/null +++ b/src/api/scm/reserveOrderApi.js @@ -0,0 +1,38 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取预约订单列表 +export function listReserveGoodsOrder(params) { + return new Promise((resolve, reject) => { + const defaultParams = { + communityId: getCommunityId(), + ...params + } + request({ + url: '/reserveOrder.listReserveGoodsOrder', + method: 'get', + params: defaultParams + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 取消预约订单 +export function cancelReserveOrder(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserveOrder.cancelReserveOrder', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/reserveParamsManageApi.js b/src/api/scm/reserveParamsManageApi.js new file mode 100644 index 0000000..42ee7d2 --- /dev/null +++ b/src/api/scm/reserveParamsManageApi.js @@ -0,0 +1,81 @@ +import request from '@/utils/request' + +// 获取预约参数列表 +export function listReserveParams(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.listReserveParams', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加预约参数 +export function saveReserveParams(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.saveReserveParams', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新预约参数 +export function updateReserveParams(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.updateReserveParams', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除预约参数 +export function deleteReserveParams(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.deleteReserveParams', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新预约开放时间 +export function updateReserveParamsOpenTime(data) { + return new Promise((resolve, reject) => { + request({ + url: '/reserve.updateReserveParamsOpenTime', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/reserveServiceManageApi.js b/src/api/scm/reserveServiceManageApi.js new file mode 100644 index 0000000..22db304 --- /dev/null +++ b/src/api/scm/reserveServiceManageApi.js @@ -0,0 +1,87 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取预约服务列表 +export function listReserveGoods(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/reserve.listReserveGoods', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取预约目录列表 +export function listReserveCatalog(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/reserve.listReserveCatalog', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取预约参数 +export function listReserveParams(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/reserve.listReserveParams', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存预约订单 +export function saveReserveGoodsOrder(data) { + return new Promise((resolve, reject) => { + data.communityId = getCommunityId() + request({ + url: '/reserveOrder.saveReserveGoodsOrder', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除预约服务 +export function deleteReserveGoods(data) { + return new Promise((resolve, reject) => { + data.communityId = getCommunityId() + request({ + url: '/reserve.deleteReserveGoods', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/scm/addReserveCatalog.vue b/src/components/scm/addReserveCatalog.vue index 4b01681..f5fe4a5 100644 --- a/src/components/scm/addReserveCatalog.vue +++ b/src/components/scm/addReserveCatalog.vue @@ -12,57 +12,57 @@ label-width="120px" > @@ -115,10 +115,10 @@ export default { }, methods: { open() { - this.formData.communityId = getCommunityId() this.visible = true + this.formData.communityId = getCommunityId() this.$nextTick(() => { - this.$refs.form.resetFields() + this.$refs.form && this.$refs.form.resetFields() }) }, handleClose() { @@ -133,7 +133,7 @@ export default { this.visible = false this.$emit('success') } catch (error) { - this.$message.error(this.$t('reserveCatalogManage.add.error')) + this.$message.error(error.message || this.$t('reserveCatalogManage.add.error')) } } }) diff --git a/src/components/scm/addReserveDiningPerson.vue b/src/components/scm/addReserveDiningPerson.vue new file mode 100644 index 0000000..69d4ac1 --- /dev/null +++ b/src/components/scm/addReserveDiningPerson.vue @@ -0,0 +1,205 @@ + + + \ No newline at end of file diff --git a/src/components/scm/addReserveParams.vue b/src/components/scm/addReserveParams.vue new file mode 100644 index 0000000..6094628 --- /dev/null +++ b/src/components/scm/addReserveParams.vue @@ -0,0 +1,215 @@ + + + \ No newline at end of file diff --git a/src/components/scm/addReserveServicePerson.vue b/src/components/scm/addReserveServicePerson.vue new file mode 100644 index 0000000..7f3bbe8 --- /dev/null +++ b/src/components/scm/addReserveServicePerson.vue @@ -0,0 +1,225 @@ + + + \ No newline at end of file diff --git a/src/components/scm/deleteReserveCatalog.vue b/src/components/scm/deleteReserveCatalog.vue index 7356ac9..663cd9b 100644 --- a/src/components/scm/deleteReserveCatalog.vue +++ b/src/components/scm/deleteReserveCatalog.vue @@ -6,15 +6,14 @@ @close="handleClose" >
-

{{ $t('reserveCatalogManage.delete.confirmText1') }}

+

{{ $t('reserveCatalogManage.delete.confirmText') }}

{{ formData.name }}

-

{{ $t('reserveCatalogManage.delete.confirmText2') }}

{{ $t('common.cancel') }} - + {{ $t('common.confirm') }} @@ -30,6 +29,7 @@ export default { data() { return { visible: false, + loading: false, formData: { catalogId: '', name: '', @@ -38,13 +38,13 @@ export default { } }, methods: { - open(row) { + open(data) { + this.visible = true this.formData = { - catalogId: row.catalogId, - name: row.name, + catalogId: data.catalogId, + name: data.name, communityId: getCommunityId() } - this.visible = true }, handleClose() { this.formData = { @@ -52,15 +52,22 @@ export default { name: '', communityId: '' } + this.loading = false }, - async handleSubmit() { + async handleConfirm() { try { - await deleteReserveCatalog(this.formData) + this.loading = true + await deleteReserveCatalog({ + catalogId: this.formData.catalogId, + communityId: this.formData.communityId + }) this.$message.success(this.$t('reserveCatalogManage.delete.success')) this.visible = false this.$emit('success') } catch (error) { - this.$message.error(this.$t('reserveCatalogManage.delete.error')) + this.$message.error(error.message || this.$t('reserveCatalogManage.delete.error')) + } finally { + this.loading = false } } } @@ -75,6 +82,6 @@ export default { .delete-name { font-weight: bold; color: #f56c6c; - margin: 10px 0; + margin-top: 10px; } \ No newline at end of file diff --git a/src/components/scm/deleteReserveDining.vue b/src/components/scm/deleteReserveDining.vue new file mode 100644 index 0000000..184646c --- /dev/null +++ b/src/components/scm/deleteReserveDining.vue @@ -0,0 +1,69 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/deleteReserveOrderPerson.vue b/src/components/scm/deleteReserveOrderPerson.vue new file mode 100644 index 0000000..8be49cd --- /dev/null +++ b/src/components/scm/deleteReserveOrderPerson.vue @@ -0,0 +1,57 @@ + + + \ No newline at end of file diff --git a/src/components/scm/deleteReserveParams.vue b/src/components/scm/deleteReserveParams.vue new file mode 100644 index 0000000..68b0983 --- /dev/null +++ b/src/components/scm/deleteReserveParams.vue @@ -0,0 +1,80 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/editReserveCatalog.vue b/src/components/scm/editReserveCatalog.vue index 5b2c98d..77e80a9 100644 --- a/src/components/scm/editReserveCatalog.vue +++ b/src/components/scm/editReserveCatalog.vue @@ -12,57 +12,57 @@ label-width="120px" > @@ -118,15 +118,12 @@ export default { } }, methods: { - open(row) { + open(data) { + this.visible = true this.formData = { - ...row, + ...data, communityId: getCommunityId() } - this.visible = true - this.$nextTick(() => { - this.$refs.form.clearValidate() - }) }, handleClose() { this.$refs.form.resetFields() @@ -140,7 +137,7 @@ export default { this.visible = false this.$emit('success') } catch (error) { - this.$message.error(this.$t('reserveCatalogManage.edit.error')) + this.$message.error(error.message || this.$t('reserveCatalogManage.edit.error')) } } }) diff --git a/src/components/scm/editReserveParams.vue b/src/components/scm/editReserveParams.vue new file mode 100644 index 0000000..b80851f --- /dev/null +++ b/src/components/scm/editReserveParams.vue @@ -0,0 +1,222 @@ + + + \ No newline at end of file diff --git a/src/components/scm/editReserveParamsOpenTime.vue b/src/components/scm/editReserveParamsOpenTime.vue new file mode 100644 index 0000000..ca015b2 --- /dev/null +++ b/src/components/scm/editReserveParamsOpenTime.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/uploadImageUrl.vue b/src/components/scm/uploadImageUrl.vue new file mode 100644 index 0000000..bb30101 --- /dev/null +++ b/src/components/scm/uploadImageUrl.vue @@ -0,0 +1,192 @@ + + + + + \ No newline at end of file diff --git a/src/i18n/scmI18n.js b/src/i18n/scmI18n.js index 33d5343..42fd018 100644 --- a/src/i18n/scmI18n.js +++ b/src/i18n/scmI18n.js @@ -10,6 +10,17 @@ import { messages as integralGiftDetailManageMessages } from '../views/scm/integ import { messages as communityIntegralMessages } from '../views/scm/communityIntegralLang' import { messages as goldMessages } from '../views/scm/goldLang' import { messages as reserveCatalogManageMessages } from '../views/scm/reserveCatalogManageLang' +import { messages as reserveParamsManageMessages } from '../views/scm/reserveParamsManageLang' +import { messages as reserveDiningManageMessages } from '../views/scm/reserveDiningManageLang' +import { messages as reserveServiceManageMessages } from '../views/scm/reserveServiceManageLang' +import { messages as addReserveDiningMessages } from '../views/scm/addReserveDiningLang' +import { messages as editReserveDiningMessages } from '../views/scm/editReserveDiningLang' +import { messages as doDiningMessages } from '../views/scm/doDiningLang' +import { messages as addReserveServiceMessages } from '../views/scm/addReserveServiceLang' +import { messages as ownerDiningMessages } from '../views/scm/ownerDiningLang' +import { messages as editReserveServiceMessages } from '../views/scm/editReserveServiceLang' +import { messages as reserveOrderMessages } from '../views/scm/reserveOrderLang' +import { messages as reserveConfirmMessages } from '../views/scm/reserveConfirmLang' export const messages = { en: { @@ -26,6 +37,17 @@ export const messages = { ...communityIntegralMessages.en, ...goldMessages.en, ...reserveCatalogManageMessages.en, + ...reserveParamsManageMessages.en, + ...reserveDiningManageMessages.en, + ...reserveServiceManageMessages.en, + ...addReserveDiningMessages.en, + ...editReserveDiningMessages.en, + ...doDiningMessages.en, + ...addReserveServiceMessages.en, + ...ownerDiningMessages.en, + ...editReserveServiceMessages.en, + ...reserveOrderMessages.en, + ...reserveConfirmMessages.en, }, zh: { ...couponMarketMessages.zh, @@ -40,5 +62,16 @@ export const messages = { ...communityIntegralMessages.zh, ...goldMessages.zh, ...reserveCatalogManageMessages.zh, + ...reserveParamsManageMessages.zh, + ...reserveDiningManageMessages.zh, + ...reserveServiceManageMessages.zh, + ...addReserveDiningMessages.zh, + ...editReserveDiningMessages.zh, + ...doDiningMessages.zh, + ...addReserveServiceMessages.zh, + ...ownerDiningMessages.zh, + ...editReserveServiceMessages.zh, + ...reserveOrderMessages.zh, + ...reserveConfirmMessages.zh, } } \ No newline at end of file diff --git a/src/router/scmRouter.js b/src/router/scmRouter.js index ac42740..49716a3 100644 --- a/src/router/scmRouter.js +++ b/src/router/scmRouter.js @@ -59,4 +59,64 @@ export default [ name: '/pages/reserve/reserveCatalogManage', component: () => import('@/views/scm/reserveCatalogManageList.vue') }, + { + path: '/pages/reserve/reserveParamsManage', + name: '/pages/reserve/reserveParamsManage', + component: () => import('@/views/scm/reserveParamsManageList.vue') + }, + { + path: '/pages/reserve/reserveDiningManage', + name: '/pages/reserve/reserveDiningManage', + component: () => import('@/views/scm/reserveDiningManageList.vue') + }, + { + path: '/pages/reserve/reserveServiceManage', + name: '/pages/reserve/reserveServiceManage', + component: () => import('@/views/scm/reserveServiceManageList.vue') + }, + { + path: '/views/scm/addReserveDining', + name: '/views/scm/addReserveDining', + component: () => import('@/views/scm/addReserveDiningList.vue') + }, + { + path: '/views/scm/editReserveDining', + name: '/views/scm/editReserveDining', + component: () => import('@/views/scm/editReserveDiningList.vue') + }, + { + path: '/views/scm/doDining', + name: '/views/scm/doDining', + component: () => import('@/views/scm/doDiningList.vue') + }, + { + path: '/views/scm/addReserveService', + name: '/views/scm/addReserveService', + component: () => import('@/views/scm/addReserveServiceList.vue') + }, + { + path: '/views/scm/ownerDining', + name: '/views/scm/ownerDining', + component: () => import('@/views/scm/ownerDiningList.vue') + }, + { + path: '/views/scm/reserveCatalogManage', + name: '/views/scm/reserveCatalogManage', + component: () => import('@/views/scm/reserveCatalogManageList.vue') + }, + { + path: '/views/scm/editReserveService', + name: '/views/scm/editReserveService', + component: () => import('@/views/scm/editReserveServiceList.vue') + }, + { + path: '/pages/reserve/reserveOrder', + name: '/pages/reserve/reserveOrder', + component: () => import('@/views/scm/reserveOrderList.vue') + }, + { + path:'/pages/reserve/reserveConfirm', + name:'/pages/reserve/reserveConfirm', + component: () => import('@/views/scm/reserveConfirmList.vue') + }, ] \ No newline at end of file diff --git a/src/views/scm/addReserveDiningLang.js b/src/views/scm/addReserveDiningLang.js new file mode 100644 index 0000000..2a2dd18 --- /dev/null +++ b/src/views/scm/addReserveDiningLang.js @@ -0,0 +1,62 @@ +export const messages = { + en: { + addReserveDining: { + title: 'Add Dining Product', + goodsName: 'Name', + goodsNamePlaceholder: 'Required, please enter name', + paramsId: 'Parameter', + paramsIdPlaceholder: 'Required, please select parameter', + price: 'Price', + pricePlaceholder: 'Required, please enter price', + sort: 'Sort', + sortPlaceholder: 'Required, please enter sort', + startDate: 'Start Date', + startDatePlaceholder: 'Required, please select start date', + endDate: 'End Date', + endDatePlaceholder: 'Required, please select end date', + imgUrl: 'Product Cover', + state: 'Status', + statePlaceholder: 'Required, please select status', + stateOff: 'Off Shelf', + stateOn: 'On Shelf', + goodsDesc: 'Product Description', + goodsDescPlaceholder: 'Required, please enter product description', + content: 'Product Details', + contentPlaceholder: 'Required, please enter product details' + }, + uploadImage: { + fileSizeLimit: 'Image size cannot exceed 2MB', + uploadFailed: 'Image upload failed' + } + }, + zh: { + addReserveDining: { + title: '添加就餐商品', + goodsName: '名称', + goodsNamePlaceholder: '必填,请填写名称', + paramsId: '参数', + paramsIdPlaceholder: '必填,请选择参数', + price: '单价', + pricePlaceholder: '必填,请填写单价', + sort: '排序', + sortPlaceholder: '必填,请填写排序', + startDate: '开始时间', + startDatePlaceholder: '必填,请填写开始时间', + endDate: '结束时间', + endDatePlaceholder: '必填,请填写结束时间', + imgUrl: '产品封面', + state: '状态', + statePlaceholder: '必填,请选择状态', + stateOff: '未上架', + stateOn: '上架', + goodsDesc: '商品简介', + goodsDescPlaceholder: '必填,请填写商品简介', + content: '商品详情', + contentPlaceholder: '必填,请输入商品描述' + }, + uploadImage: { + fileSizeLimit: '图片大小不能超过2MB', + uploadFailed: '图片上传失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/addReserveDiningList.vue b/src/views/scm/addReserveDiningList.vue new file mode 100644 index 0000000..f3ca8e3 --- /dev/null +++ b/src/views/scm/addReserveDiningList.vue @@ -0,0 +1,205 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/addReserveServiceLang.js b/src/views/scm/addReserveServiceLang.js new file mode 100644 index 0000000..7294d14 --- /dev/null +++ b/src/views/scm/addReserveServiceLang.js @@ -0,0 +1,82 @@ +export const messages = { + en: { + addReserveService: { + title: 'Add Service', + name: 'Name', + namePlaceholder: 'Required, please enter name', + params: 'Parameters', + paramsPlaceholder: 'Required, please select parameters', + price: 'Service Fee', + pricePlaceholder: 'Required, please enter service fee', + sort: 'Sort', + sortPlaceholder: 'Required, please enter sort order', + startDate: 'Start Date', + startDatePlaceholder: 'Required, please select start date', + endDate: 'End Date', + endDatePlaceholder: 'Required, please select end date', + coverImage: 'Service Cover', + state: 'Status', + statePlaceholder: 'Required, please select status', + stateOff: 'Off Shelf', + stateOn: 'On Shelf', + goodsDesc: 'Service Description', + goodsDescPlaceholder: 'Required, please enter service description', + content: 'Service Details', + saveSuccess: 'Service saved successfully', + saveFailed: 'Failed to save service', + nameRequired: 'Name is required', + paramsRequired: 'Parameters is required', + priceRequired: 'Service fee is required', + sortRequired: 'Sort order is required', + startDateRequired: 'Start date is required', + endDateRequired: 'End date is required', + coverImageRequired: 'Service cover is required', + stateRequired: 'Status is required', + goodsDescRequired: 'Service description is required' + }, + uploadImage: { + fileSizeLimit: 'Image size cannot exceed 2MB', + uploadFailed: 'Image upload failed' + } + }, + zh: { + addReserveService: { + title: '添加服务', + name: '名称', + namePlaceholder: '必填,请填写名称', + params: '参数', + paramsPlaceholder: '必填,请选择参数', + price: '上门费', + pricePlaceholder: '必填,请填写上门费', + sort: '排序', + sortPlaceholder: '必填,请填写排序', + startDate: '开始时间', + startDatePlaceholder: '必填,请填写开始时间', + endDate: '结束时间', + endDatePlaceholder: '必填,请填写结束时间', + coverImage: '服务封面', + state: '状态', + statePlaceholder: '必填,请选择状态', + stateOff: '未上架', + stateOn: '上架', + goodsDesc: '商品简介', + goodsDescPlaceholder: '必填,请填写商品简介', + content: '商品详情', + saveSuccess: '服务保存成功', + saveFailed: '服务保存失败', + nameRequired: '名称不能为空', + paramsRequired: '参数不能为空', + priceRequired: '上门费不能为空', + sortRequired: '排序不能为空', + startDateRequired: '开始时间不能为空', + endDateRequired: '结束时间不能为空', + coverImageRequired: '服务封面不能为空', + stateRequired: '状态不能为空', + goodsDescRequired: '商品简介不能为空' + }, + uploadImage: { + fileSizeLimit: '图片大小不能超过2MB', + uploadFailed: '图片上传失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/addReserveServiceList.vue b/src/views/scm/addReserveServiceList.vue new file mode 100644 index 0000000..eb6c75e --- /dev/null +++ b/src/views/scm/addReserveServiceList.vue @@ -0,0 +1,225 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/doDiningLang.js b/src/views/scm/doDiningLang.js new file mode 100644 index 0000000..0dce3e7 --- /dev/null +++ b/src/views/scm/doDiningLang.js @@ -0,0 +1,98 @@ +export const messages = { + en: { + doDining: { + selectGoods: 'Select Goods', + scanQrCode: 'Please scan QR code', + dining: 'Dining', + diningRecords: 'Dining Records', + selectStartTime: 'Select start time', + selectEndTime: 'Select end time', + enterOwnerName: 'Enter owner name', + enterDinerName: 'Enter diner name', + diningTime: 'Dining Time', + goods: 'Goods', + owner: 'Owner', + diner: 'Diner', + dinerPhone: 'Diner Phone', + orderNo: 'Order No', + remark: 'Remark' + }, + addReserveDiningPerson: { + reserveDining: 'Reserve Dining', + personName: 'Person Name', + personNamePlaceholder: 'Required, please enter person name', + personTel: 'Person Tel', + personTelPlaceholder: 'Required, please enter person tel', + payWay: 'Pay Way', + payWayPlaceholder: 'Please select pay way', + cash: 'Cash', + wechat: 'WeChat', + alipay: 'Alipay', + quantity: 'Quantity', + quantityPlaceholder: 'Please select quantity', + unit: 'unit', + receivableAmount: 'Receivable Amount', + receivableAmountPlaceholder: 'Required, please enter receivable amount', + receivedAmount: 'Received Amount', + receivedAmountPlaceholder: 'Required, please enter received amount', + appointmentTime: 'Appointment Time', + appointmentTimePlaceholder: 'Required, please select appointment time', + openTime: 'Open Time', + openTimePlaceholder: 'Please select open time', + hour: 'hour', + remark: 'Remark', + remarkPlaceholder: 'Required, please enter remark' + }, + deleteReserveDining: { + confirmDelete: 'Confirm to delete reserve dining?' + } + }, + zh: { + doDining: { + selectGoods: '选择商品', + scanQrCode: '请用扫码枪扫二维码', + dining: '就餐', + diningRecords: '就餐记录', + selectStartTime: '请选择开始时间', + selectEndTime: '请选择结束时间', + enterOwnerName: '请输入业主名称', + enterDinerName: '请输入就餐人', + diningTime: '就餐时间', + goods: '商品', + owner: '业主', + diner: '就餐人', + dinerPhone: '就餐电话', + orderNo: '订单编号', + remark: '备注' + }, + addReserveDiningPerson: { + reserveDining: '预约就餐', + personName: '预约人', + personNamePlaceholder: '必填,请填写预约人', + personTel: '预约电话', + personTelPlaceholder: '必填,请填写预约电话', + payWay: '支付方式', + payWayPlaceholder: '请选择支付方式', + cash: '现金', + wechat: '微信', + alipay: '支付宝', + quantity: '预约数量', + quantityPlaceholder: '请选择预约数量', + unit: '个', + receivableAmount: '应收金额', + receivableAmountPlaceholder: '必填,请填写应收金额', + receivedAmount: '实收金额', + receivedAmountPlaceholder: '必填,请填写实收金额', + appointmentTime: '预约日期', + appointmentTimePlaceholder: '必填,请选择预约日期', + openTime: '预约时间', + openTimePlaceholder: '请选择预约时间', + hour: '时', + remark: '备注', + remarkPlaceholder: '必填,请填写备注' + }, + deleteReserveDining: { + confirmDelete: '确定删除预约就餐?' + } + } +} \ No newline at end of file diff --git a/src/views/scm/doDiningList.vue b/src/views/scm/doDiningList.vue new file mode 100644 index 0000000..8efcbb7 --- /dev/null +++ b/src/views/scm/doDiningList.vue @@ -0,0 +1,355 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/editReserveDiningLang.js b/src/views/scm/editReserveDiningLang.js new file mode 100644 index 0000000..97833fb --- /dev/null +++ b/src/views/scm/editReserveDiningLang.js @@ -0,0 +1,94 @@ +export const messages = { + en: { + editReserveDining: { + title: 'Edit Dining Product', + goodsName: 'Name', + requiredGoodsName: 'Required, please enter name', + params: 'Parameters', + requiredParams: 'Required, please select parameters', + price: 'Price', + requiredPrice: 'Required, please enter price', + sort: 'Sort', + requiredSort: 'Required, please enter sort', + startDate: 'Start Date', + requiredStartDate: 'Required, please select start date', + endDate: 'End Date', + requiredEndDate: 'Required, please select end date', + coverImage: 'Product Cover', + state: 'Status', + requiredState: 'Required, please select status', + stateNotOnShelf: 'Not On Shelf', + stateOnShelf: 'On Shelf', + goodsDesc: 'Product Description', + requiredGoodsDesc: 'Required, please enter product description', + content: 'Product Details', + requiredContent: 'Required, please enter product details', + validate: { + goodsName: 'Name cannot be empty', + paramsId: 'Please select parameters', + price: 'Price cannot be empty', + sort: 'Sort cannot be empty', + startDate: 'Please select start date', + endDate: 'Please select end date', + imgUrl: 'Please upload product cover', + state: 'Please select status', + goodsDesc: 'Product description cannot be empty', + content: 'Product details cannot be empty' + }, + fetchParamsError: 'Failed to get parameters', + fetchGoodsError: 'Failed to get product information' + }, + uploadImage: { + validate: { + size: 'Image size cannot exceed 2MB' + }, + uploadError: 'Image upload failed' + } + }, + zh: { + editReserveDining: { + title: '编辑就餐商品', + goodsName: '名称', + requiredGoodsName: '必填,请填写名称', + params: '参数', + requiredParams: '必填,请选择参数', + price: '单价', + requiredPrice: '必填,请填写单价', + sort: '排序', + requiredSort: '必填,请填写排序', + startDate: '开始时间', + requiredStartDate: '必填,请填写开始时间', + endDate: '结束时间', + requiredEndDate: '必填,请填写结束时间', + coverImage: '产品封面', + state: '状态', + requiredState: '必填,请选择状态', + stateNotOnShelf: '未上架', + stateOnShelf: '上架', + goodsDesc: '商品简介', + requiredGoodsDesc: '必填,请填写商品简介', + content: '商品详情', + requiredContent: '必填,请输入商品详情', + validate: { + goodsName: '名称不能为空', + paramsId: '请选择参数', + price: '单价不能为空', + sort: '排序不能为空', + startDate: '请选择开始时间', + endDate: '请选择结束时间', + imgUrl: '请上传产品封面', + state: '请选择状态', + goodsDesc: '商品简介不能为空', + content: '商品详情不能为空' + }, + fetchParamsError: '获取参数失败', + fetchGoodsError: '获取商品信息失败' + }, + uploadImage: { + validate: { + size: '图片大小不能超过2MB' + }, + uploadError: '图片上传失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/editReserveDiningList.vue b/src/views/scm/editReserveDiningList.vue new file mode 100644 index 0000000..945e069 --- /dev/null +++ b/src/views/scm/editReserveDiningList.vue @@ -0,0 +1,270 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/editReserveServiceLang.js b/src/views/scm/editReserveServiceLang.js new file mode 100644 index 0000000..4890973 --- /dev/null +++ b/src/views/scm/editReserveServiceLang.js @@ -0,0 +1,62 @@ +export const messages = { + en: { + editReserveService: { + title: 'Edit Service', + goodsName: 'Name', + goodsNamePlaceholder: 'Required, please enter name', + params: 'Parameters', + paramsPlaceholder: 'Required, please select parameters', + price: 'Service Fee', + pricePlaceholder: 'Required, please enter service fee', + sort: 'Sort', + sortPlaceholder: 'Required, please enter sort', + state: 'Status', + statePlaceholder: 'Required, please select status', + stateOff: 'Off Shelf', + stateOn: 'On Shelf', + startDate: 'Start Date', + startDatePlaceholder: 'Required, please select start date', + endDate: 'End Date', + endDatePlaceholder: 'Required, please select end date', + imgUrl: 'Cover Image', + goodsDesc: 'Description', + goodsDescPlaceholder: 'Required, please enter description', + content: 'Content', + contentPlaceholder: 'Required, please enter content' + }, + uploadImage: { + sizeLimit: 'Image size cannot exceed 2MB', + uploadError: 'Upload failed' + } + }, + zh: { + editReserveService: { + title: '编辑服务', + goodsName: '名称', + goodsNamePlaceholder: '必填,请填写名称', + params: '参数', + paramsPlaceholder: '必填,请选择参数', + price: '上门费', + pricePlaceholder: '必填,请填写上门费', + sort: '排序', + sortPlaceholder: '必填,请填写排序', + state: '状态', + statePlaceholder: '必填,请选择状态', + stateOff: '未上架', + stateOn: '上架', + startDate: '开始时间', + startDatePlaceholder: '必填,请填写开始时间', + endDate: '结束时间', + endDatePlaceholder: '必填,请填写结束时间', + imgUrl: '产品封面', + goodsDesc: '商品简介', + goodsDescPlaceholder: '必填,请填写商品简介', + content: '商品详情', + contentPlaceholder: '必填,请输入商品描述' + }, + uploadImage: { + sizeLimit: '图片大小不能超过2MB', + uploadError: '上传失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/editReserveServiceList.vue b/src/views/scm/editReserveServiceList.vue new file mode 100644 index 0000000..37b6b9f --- /dev/null +++ b/src/views/scm/editReserveServiceList.vue @@ -0,0 +1,294 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/ownerDiningLang.js b/src/views/scm/ownerDiningLang.js new file mode 100644 index 0000000..11e4944 --- /dev/null +++ b/src/views/scm/ownerDiningLang.js @@ -0,0 +1,52 @@ +export const messages = { + en: { + ownerDining: { + search: { + title: 'Search Conditions', + startDate: 'Select start date', + endDate: 'Select end date', + nameLike: 'Enter owner name', + link: 'Enter owner phone' + }, + list: { + title: 'Owner Dining Records' + }, + table: { + startDate: 'Start Date', + endDate: 'End Date', + name: 'Owner Name', + link: 'Phone', + goodsName: 'Goods', + frequency: 'Frequency' + }, + fetchError: 'Failed to fetch data', + exportSuccess: 'Export successful', + exportError: 'Export failed' + } + }, + zh: { + ownerDining: { + search: { + title: '查询条件', + startDate: '请选择开始时间', + endDate: '请选择结束时间', + nameLike: '请输入业主名称', + link: '请选择业主手机号' + }, + list: { + title: '业主就餐' + }, + table: { + startDate: '开始时间', + endDate: '结束时间', + name: '业主名称', + link: '手机号', + goodsName: '商品', + frequency: '就餐次数' + }, + fetchError: '获取数据失败', + exportSuccess: '导出成功', + exportError: '导出失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/ownerDiningList.vue b/src/views/scm/ownerDiningList.vue new file mode 100644 index 0000000..e4a1111 --- /dev/null +++ b/src/views/scm/ownerDiningList.vue @@ -0,0 +1,228 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/reserveCatalogManageLang.js b/src/views/scm/reserveCatalogManageLang.js index 5286d97..9fc4455 100644 --- a/src/views/scm/reserveCatalogManageLang.js +++ b/src/views/scm/reserveCatalogManageLang.js @@ -5,72 +5,73 @@ export const messages = { title: 'Search Conditions', namePlaceholder: 'Please enter name', typePlaceholder: 'Please select type', - typeOption1: 'Reservation Dining', - typeOption2: 'Reservation Service' + typeOptions: { + all: 'All', + dining: 'Reservation Dining', + service: 'Reservation Service' + } }, list: { title: 'Reservation Catalog List' }, table: { type: 'Type', - type1: 'Reservation Dining', - type2: 'Reservation Service', name: 'Name', sort: 'Sort', state: 'Status', - state1: 'Show', - state2: 'Hide', - createTime: 'Create Time' + createTime: 'Create Time', + typeOptions: { + dining: 'Reservation Dining', + service: 'Reservation Service' + }, + stateOptions: { + show: 'Show', + hide: 'Hide' + } }, - add: { - title: 'Add Reservation Catalog', - name: 'Name', - namePlaceholder: 'Required, please enter name', + form: { + name: 'Catalog Name', sort: 'Sort', - sortPlaceholder: 'Required, please enter sort', type: 'Type', - typePlaceholder: 'Required, please select type', - typeOption1: 'Reservation Dining', - typeOption2: 'Reservation Service', state: 'Status', + namePlaceholder: 'Required, please enter catalog name', + sortPlaceholder: 'Required, please enter sort number', + typePlaceholder: 'Required, please select type', statePlaceholder: 'Required, please select status', - stateOption1: 'Show', - stateOption2: 'Hide', + typeOptions: { + dining: 'Reservation Dining', + service: 'Reservation Service' + }, + stateOptions: { + show: 'Show', + hide: 'Hide' + } + }, + validate: { + nameRequired: 'Catalog name is required', + nameMaxLength: 'Catalog name cannot exceed 128 characters', + sortRequired: 'Sort is required', + sortMaxLength: 'Sort cannot exceed 12 characters', + typeRequired: 'Type is required', + stateRequired: 'Status is required', + catalogIdRequired: 'Catalog ID is required' + }, + add: { + title: 'Add Reservation Catalog', success: 'Add successfully', - error: 'Add failed' + error: 'Failed to add' }, edit: { title: 'Edit Reservation Catalog', - name: 'Name', - namePlaceholder: 'Required, please enter name', - sort: 'Sort', - sortPlaceholder: 'Required, please enter sort', - type: 'Type', - typePlaceholder: 'Required, please select type', - typeOption1: 'Reservation Dining', - typeOption2: 'Reservation Service', - state: 'Status', - statePlaceholder: 'Required, please select status', - stateOption1: 'Show', - stateOption2: 'Hide', success: 'Edit successfully', - error: 'Edit failed' + error: 'Failed to edit' }, delete: { title: 'Delete Confirmation', - confirmText1: 'Are you sure to delete the reservation catalog', - confirmText2: '? This operation cannot be undone.', + confirmText: 'Are you sure to delete this reservation catalog?', + name: 'Catalog Name', success: 'Delete successfully', - error: 'Delete failed' - }, - validate: { - nameRequired: 'Name is required', - nameMaxLength: 'Name cannot exceed 128 characters', - sortRequired: 'Sort is required', - sortMaxLength: 'Sort cannot exceed 12 characters', - typeRequired: 'Type is required', - stateRequired: 'Status is required', - catalogIdRequired: 'Catalog ID is required' + error: 'Failed to delete' }, fetchError: 'Failed to fetch data' } @@ -81,73 +82,74 @@ export const messages = { title: '查询条件', namePlaceholder: '请输入名称', typePlaceholder: '请选择类型', - typeOption1: '预约就餐', - typeOption2: '预约服务' + typeOptions: { + all: '全部', + dining: '预约就餐', + service: '预约服务' + } }, list: { title: '预约目录列表' }, table: { type: '类型', - type1: '预约就餐', - type2: '预约服务', name: '名称', sort: '排序', state: '状态', - state1: '展示', - state2: '不展示', - createTime: '创建时间' + createTime: '创建时间', + typeOptions: { + dining: '预约就餐', + service: '预约服务' + }, + stateOptions: { + show: '展示', + hide: '不展示' + } }, - add: { - title: '添加预约目录', - name: '名称', - namePlaceholder: '必填,请输入名称', + form: { + name: '目录名称', sort: '排序', - sortPlaceholder: '必填,请输入排序', type: '类型', - typePlaceholder: '必填,请选择类型', - typeOption1: '预约就餐', - typeOption2: '预约服务', state: '状态', + namePlaceholder: '必填,请填写预约目录', + sortPlaceholder: '必填,请填写排序', + typePlaceholder: '必填,请选择类型', statePlaceholder: '必填,请选择状态', - stateOption1: '展示', - stateOption2: '不展示', + typeOptions: { + dining: '预约就餐', + service: '预约服务' + }, + stateOptions: { + show: '展示', + hide: '不展示' + } + }, + validate: { + nameRequired: '预约名称不能为空', + nameMaxLength: '预约名称不能超过128个字符', + sortRequired: '排序不能为空', + sortMaxLength: '排序不能超过12个字符', + typeRequired: '类型不能为空', + stateRequired: '状态不能为空', + catalogIdRequired: '编号不能为空' + }, + add: { + title: '添加预约目录', success: '添加成功', error: '添加失败' }, edit: { title: '修改预约目录', - name: '名称', - namePlaceholder: '必填,请输入名称', - sort: '排序', - sortPlaceholder: '必填,请输入排序', - type: '类型', - typePlaceholder: '必填,请选择类型', - typeOption1: '预约就餐', - typeOption2: '预约服务', - state: '状态', - statePlaceholder: '必填,请选择状态', - stateOption1: '展示', - stateOption2: '不展示', success: '修改成功', error: '修改失败' }, delete: { title: '删除确认', - confirmText1: '确定要删除预约目录', - confirmText2: '?此操作不可撤销。', + confirmText: '确定删除该预约目录吗?', + name: '目录名称', success: '删除成功', error: '删除失败' }, - validate: { - nameRequired: '名称不能为空', - nameMaxLength: '名称不能超过128个字符', - sortRequired: '排序不能为空', - sortMaxLength: '排序不能超过12个字符', - typeRequired: '类型不能为空', - stateRequired: '状态不能为空', - catalogIdRequired: '目录ID不能为空' - }, fetchError: '获取数据失败' } } diff --git a/src/views/scm/reserveCatalogManageList.vue b/src/views/scm/reserveCatalogManageList.vue index 976541b..7b8654e 100644 --- a/src/views/scm/reserveCatalogManageList.vue +++ b/src/views/scm/reserveCatalogManageList.vue @@ -7,14 +7,30 @@ - + - - - + + + + @@ -29,57 +45,102 @@
{{ $t('reserveCatalogManage.list.title') }} - + {{ $t('common.add') }}
- - + + - - - + + + - - + + - +
- - - + + + + + \ No newline at end of file diff --git a/src/views/scm/reserveDiningManageLang.js b/src/views/scm/reserveDiningManageLang.js new file mode 100644 index 0000000..3af9af3 --- /dev/null +++ b/src/views/scm/reserveDiningManageLang.js @@ -0,0 +1,134 @@ +export const messages = { + en: { + reserveDiningManage: { + searchTitle: 'Search Conditions', + listTitle: 'Reservation Dining', + addCatalog: 'Add Catalog', + addCatalogFirst: 'Please add catalog first', + addFirst: 'Please add first', + goodsIdPlaceholder: 'Please enter goods ID', + goodsNamePlaceholder: 'Please enter goods name', + statePlaceholder: 'Please select status', + stateNotOnline: 'Not Online', + stateOnline: 'Online', + goodsCover: 'Goods Cover', + goodsName: 'Name(ID)', + params: 'Parameters', + reserveWay: 'Reservation Way', + day: 'Day', + week: 'Week', + reserveCount: 'Reservation Count', + reserveQuantity: 'Reservation Quantity', + price: 'Price', + validDate: 'Valid Date', + reserveStartTime: 'Reservation Start Time', + sort: 'Sort', + state: 'Status', + reserveDining: 'Reservation Dining', + diningStatistics: 'Dining Statistics', + dining: 'Dining', + fetchError: 'Failed to fetch data' + }, + reserveDining: { + reservePerson: 'Reservation Person', + reservePersonPlaceholder: 'Required, please enter reservation person', + reservePersonRequired: 'Reservation person is required', + reservePersonMaxLength: 'Reservation person cannot exceed 64 characters', + reserveTel: 'Reservation Tel', + reserveTelPlaceholder: 'Required, please enter reservation tel', + reserveTelRequired: 'Reservation tel is required', + reserveTelMaxLength: 'Reservation tel cannot exceed 11 characters', + payWay: 'Payment Way', + payWayPlaceholder: 'Please select payment way', + payWayRequired: 'Payment way is required', + cash: 'Cash', + wechat: 'WeChat', + alipay: 'Alipay', + reserveQuantity: 'Reservation Quantity', + reserveQuantityPlaceholder: 'Please select reservation quantity', + unit: 'unit', + receivableAmount: 'Receivable Amount', + receivableAmountPlaceholder: 'Required, please enter receivable amount', + receivableAmountRequired: 'Receivable amount is required', + receivedAmount: 'Received Amount', + receivedAmountPlaceholder: 'Required, please enter received amount', + receivedAmountRequired: 'Received amount is required', + reserveDate: 'Reservation Date', + reserveDatePlaceholder: 'Required, please select reservation date', + reserveDateRequired: 'Reservation date is required', + reserveTime: 'Reservation Time', + reserveTimePlaceholder: 'Required, please select reservation time', + hour: 'hour', + remark: 'Remark', + remarkPlaceholder: 'Required, please enter remark', + remarkRequired: 'Remark is required', + confirmDelete: 'Confirm to delete reservation dining?' + } + }, + zh: { + reserveDiningManage: { + searchTitle: '查询条件', + listTitle: '预约就餐', + addCatalog: '添加目录', + addCatalogFirst: '请先添加目录', + addFirst: '请先添加', + goodsIdPlaceholder: '请输入商品ID', + goodsNamePlaceholder: '请输入商品名称', + statePlaceholder: '请选择状态', + stateNotOnline: '未上线', + stateOnline: '上线', + goodsCover: '商品封面', + goodsName: '名称(编号)', + params: '参数', + reserveWay: '预约方式', + day: '日', + week: '周', + reserveCount: '预约次数', + reserveQuantity: '预约数量', + price: '单价', + validDate: '有效期', + reserveStartTime: '开始预约时间', + sort: '排序', + state: '状态', + reserveDining: '预约就餐', + diningStatistics: '就餐统计', + dining: '就餐', + fetchError: '获取数据失败' + }, + reserveDining: { + reservePerson: '预约人', + reservePersonPlaceholder: '必填,请填写预约人', + reservePersonRequired: '预约人不能为空', + reservePersonMaxLength: '预约人不能超过64个字符', + reserveTel: '预约电话', + reserveTelPlaceholder: '必填,请填写预约电话', + reserveTelRequired: '预约电话不能为空', + reserveTelMaxLength: '预约电话不能超过11个字符', + payWay: '支付方式', + payWayPlaceholder: '请选择支付方式', + payWayRequired: '支付方式不能为空', + cash: '现金', + wechat: '微信', + alipay: '支付宝', + reserveQuantity: '预约数量', + reserveQuantityPlaceholder: '请选择预约数量', + unit: '个', + receivableAmount: '应收金额', + receivableAmountPlaceholder: '必填,请填写应收金额', + receivableAmountRequired: '应收金额不能为空', + receivedAmount: '实收金额', + receivedAmountPlaceholder: '必填,请填写实收金额', + receivedAmountRequired: '实收金额不能为空', + reserveDate: '预约日期', + reserveDatePlaceholder: '必填,请选择预约日期', + reserveDateRequired: '预约日期不能为空', + reserveTime: '预约时间', + reserveTimePlaceholder: '必填,请选择预约时间', + hour: '时', + remark: '备注', + remarkPlaceholder: '必填,请填写备注', + remarkRequired: '备注不能为空', + confirmDelete: '确定删除预约就餐?' + } + } +} \ No newline at end of file diff --git a/src/views/scm/reserveDiningManageList.vue b/src/views/scm/reserveDiningManageList.vue new file mode 100644 index 0000000..9c9d719 --- /dev/null +++ b/src/views/scm/reserveDiningManageList.vue @@ -0,0 +1,295 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/reserveOrderLang.js b/src/views/scm/reserveOrderLang.js new file mode 100644 index 0000000..fa83213 --- /dev/null +++ b/src/views/scm/reserveOrderLang.js @@ -0,0 +1,74 @@ +export const messages = { + en: { + reserveOrder: { + diningOrder: 'Dining Order', + serviceOrder: 'Service Order', + searchCondition: 'Search Condition', + selectAppointmentTime: 'Select Appointment Time', + selectAppointmentPerson: 'Select Appointment Person', + selectAppointmentPhone: 'Select Appointment Phone', + selectStatus: 'Select Status', + allStatus: 'All Status', + successStatus: 'Success', + failStatus: 'Failed', + waitAuditStatus: 'Wait Audit', + waitPayStatus: 'Wait Pay', + inputName: 'Input Name', + orderId: 'Order ID', + goodsName: 'Goods Name', + appointmentPerson: 'Appointment Person', + appointmentPhone: 'Appointment Phone', + appointmentDate: 'Appointment Date', + appointmentTime: 'Appointment Time', + hour: 'hour', + unit: 'unit', + receivableAmount: 'Receivable Amount', + receivedAmount: 'Received Amount', + payWay: 'Pay Way', + status: 'Status', + createTime: 'Create Time', + remark: 'Remark', + cancelAppointment: 'Cancel Appointment', + confirmCancel: 'Confirm to cancel this appointment?', + cancelSuccess: 'Cancel success', + cancelError: 'Cancel failed', + fetchError: 'Fetch data failed' + } + }, + zh: { + reserveOrder: { + diningOrder: '就餐订单', + serviceOrder: '服务订单', + searchCondition: '查询条件', + selectAppointmentTime: '请选择预约时间', + selectAppointmentPerson: '请选择预约人', + selectAppointmentPhone: '请选择预约电话', + selectStatus: '请选择状态', + allStatus: '全部状态', + successStatus: '预约成功', + failStatus: '预约失败', + waitAuditStatus: '待审核', + waitPayStatus: '待支付', + inputName: '请输入名称', + orderId: '订单编号', + goodsName: '名称', + appointmentPerson: '预约人', + appointmentPhone: '预约电话', + appointmentDate: '预约日期', + appointmentTime: '预约时间', + hour: '时', + unit: '个', + receivableAmount: '应收金额', + receivedAmount: '实收金额', + payWay: '支付方式', + status: '状态', + createTime: '预约时间', + remark: '备注', + cancelAppointment: '取消预约', + confirmCancel: '确定要取消此预约吗?', + cancelSuccess: '取消成功', + cancelError: '取消失败', + fetchError: '获取数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/reserveOrderList.vue b/src/views/scm/reserveOrderList.vue new file mode 100644 index 0000000..ad14f2a --- /dev/null +++ b/src/views/scm/reserveOrderList.vue @@ -0,0 +1,221 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/reserveParamsManageLang.js b/src/views/scm/reserveParamsManageLang.js new file mode 100644 index 0000000..858c2bb --- /dev/null +++ b/src/views/scm/reserveParamsManageLang.js @@ -0,0 +1,104 @@ +export const messages = { + en: { + reserveParamsManage: { + search: { + title: 'Search Conditions', + namePlaceholder: 'Please enter parameter name' + }, + list: { + title: 'Reservation Parameters' + }, + table: { + name: 'Parameter Name', + paramWay: 'Reservation Method', + startTime: 'Start Time', + maxQuantity: 'Max Quantity', + hoursMaxQuantity: 'Quantity Per Time', + operation: 'Operation' + }, + day: 'Day', + week: 'Week', + dayUnit: 'th', + hour: 'o\'clock', + setTime: 'Set Time', + deleteTitle: 'Delete Confirmation', + deleteConfirm: 'Warning', + deleteTip: 'Are you sure to delete this reservation parameter? This operation cannot be undone!', + setTimeTitle: 'Set Open Time', + selectStatus: 'Select Status', + canReserve: 'Available', + cannotReserve: 'Unavailable', + addTitle: 'Add Reservation Parameter', + editTitle: 'Edit Reservation Parameter', + name: 'Parameter Name', + namePlaceholder: 'Please enter parameter name', + nameRequired: 'Parameter name is required', + paramWay: 'Reservation Method', + paramWayPlaceholder: 'Please select reservation method', + paramWayRequired: 'Reservation method is required', + days: 'Days', + weekdays: 'Weekdays', + startTime: 'Start Time', + startTimePlaceholder: 'Please select start time', + startTimeRequired: 'Start time is required', + maxQuantity: 'Max Quantity', + maxQuantityPlaceholder: 'Please enter max quantity', + maxQuantityRequired: 'Max quantity is required', + hoursMaxQuantity: 'Quantity Per Time', + hoursMaxQuantityPlaceholder: 'Please enter quantity per time', + hoursMaxQuantityRequired: 'Quantity per time is required', + fetchError: 'Failed to fetch reservation parameters' + } + }, + zh: { + reserveParamsManage: { + search: { + title: '查询条件', + namePlaceholder: '请输入参数名称' + }, + list: { + title: '预约参数' + }, + table: { + name: '参数名称', + paramWay: '预约方式', + startTime: '开始时间', + maxQuantity: '预约次数', + hoursMaxQuantity: '预约数量', + operation: '操作' + }, + day: '日', + week: '周', + dayUnit: '日', + hour: '点', + setTime: '设置时间', + deleteTitle: '删除确认', + deleteConfirm: '警告', + deleteTip: '确定删除该预约参数吗?此操作不可撤销!', + setTimeTitle: '设置开放时间', + selectStatus: '选择状态', + canReserve: '可预约', + cannotReserve: '不可预约', + addTitle: '添加预约参数', + editTitle: '编辑预约参数', + name: '参数名称', + namePlaceholder: '请输入参数名称', + nameRequired: '参数名称不能为空', + paramWay: '预约方式', + paramWayPlaceholder: '请选择预约方式', + paramWayRequired: '预约方式不能为空', + days: '日', + weekdays: '工作日', + startTime: '开始时间', + startTimePlaceholder: '请选择开始时间', + startTimeRequired: '开始时间不能为空', + maxQuantity: '预约次数', + maxQuantityPlaceholder: '请输入预约次数', + maxQuantityRequired: '预约次数不能为空', + hoursMaxQuantity: '预约数量', + hoursMaxQuantityPlaceholder: '请输入预约数量', + hoursMaxQuantityRequired: '预约数量不能为空', + fetchError: '获取预约参数失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/reserveParamsManageList.vue b/src/views/scm/reserveParamsManageList.vue new file mode 100644 index 0000000..3fb5bf7 --- /dev/null +++ b/src/views/scm/reserveParamsManageList.vue @@ -0,0 +1,173 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/reserveServiceManageLang.js b/src/views/scm/reserveServiceManageLang.js new file mode 100644 index 0000000..be4f40e --- /dev/null +++ b/src/views/scm/reserveServiceManageLang.js @@ -0,0 +1,134 @@ +export const messages = { + en: { + reserveServiceManage: { + searchCondition: 'Search Condition', + goodsIdPlaceholder: 'Please enter service ID', + goodsNamePlaceholder: 'Please enter service name', + statePlaceholder: 'Please select status', + stateOffShelf: 'Off Shelf', + stateOnShelf: 'On Shelf', + reserveService: 'Reserve Service', + addService: 'Add Service', + serviceCover: 'Service Cover', + nameAndId: 'Name(ID)', + params: 'Parameters', + reserveWay: 'Reserve Way', + day: 'Day', + week: 'Week', + reserveCount: 'Reserve Count', + reserveQuantity: 'Reserve Quantity', + doorFee: 'Door Fee', + validity: 'Validity', + reserveStartTime: 'Reserve Start Time', + sort: 'Sort', + state: 'Status', + offShelf: 'Off Shelf', + onShelf: 'On Shelf', + addCatalog: 'Add Catalog', + addCatalogFirst: 'Please add catalog first' + }, + addReserveServicePerson: { + reserveService: 'Reserve Service', + personName: 'Reserve Person', + personNamePlaceholder: 'Required, please enter reserve person', + personTel: 'Reserve Tel', + personTelPlaceholder: 'Required, please enter reserve tel', + payWay: 'Payment Way', + payWayPlaceholder: 'Please select payment way', + cash: 'Cash', + wechat: 'WeChat', + alipay: 'Alipay', + receivableAmount: 'Receivable Amount', + receivableAmountPlaceholder: 'Required, please enter receivable amount', + receivedAmount: 'Received Amount', + receivedAmountPlaceholder: 'Required, please enter received amount', + appointmentTime: 'Appointment Time', + appointmentTimePlaceholder: 'Required, please select appointment time', + openTime: 'Open Time', + openTimePlaceholder: 'Required, please select open time', + hour: ' o\'clock', + remark: 'Remark', + remarkPlaceholder: 'Required, please enter remark', + personNameRequired: 'Reserve person is required', + personNameMaxLength: 'Reserve person cannot exceed 64 characters', + personTelRequired: 'Reserve tel is required', + personTelMaxLength: 'Reserve tel cannot exceed 11 characters', + appointmentTimeRequired: 'Appointment time is required', + receivableAmountRequired: 'Receivable amount is required', + receivedAmountRequired: 'Received amount is required', + payWayRequired: 'Payment way is required', + remarkRequired: 'Remark is required', + openTimeRequired: 'Open time is required' + }, + deleteReserveDining: { + confirmTitle: 'Please confirm your operation!', + confirmContent: 'Confirm to delete reserve service' + } + }, + zh: { + reserveServiceManage: { + searchCondition: '查询条件', + goodsIdPlaceholder: '请输入服务ID', + goodsNamePlaceholder: '请输入服务名称', + statePlaceholder: '请选择状态', + stateOffShelf: '未上架', + stateOnShelf: '上架', + reserveService: '预约服务', + addService: '添加服务', + serviceCover: '服务封面', + nameAndId: '名称(编号)', + params: '参数', + reserveWay: '预约方式', + day: '日', + week: '周', + reserveCount: '预约次数', + reserveQuantity: '预约数量', + doorFee: '上门费', + validity: '有效期', + reserveStartTime: '开始预约时间', + sort: '排序', + state: '状态', + offShelf: '未上架', + onShelf: '上架', + addCatalog: '添加目录', + addCatalogFirst: '请先添加目录' + }, + addReserveServicePerson: { + reserveService: '预约服务', + personName: '预约人', + personNamePlaceholder: '必填,请填写预约人', + personTel: '预约电话', + personTelPlaceholder: '必填,请填写预约电话', + payWay: '支付方式', + payWayPlaceholder: '请选择支付方式', + cash: '现金', + wechat: '微信', + alipay: '支付宝', + receivableAmount: '应收金额', + receivableAmountPlaceholder: '必填,请填写应收金额', + receivedAmount: '实收金额', + receivedAmountPlaceholder: '必填,请填写实收金额', + appointmentTime: '预约日期', + appointmentTimePlaceholder: '必填,请选择预约日期', + openTime: '预约时间', + openTimePlaceholder: '必填,请选择预约时间', + hour: '时', + remark: '备注', + remarkPlaceholder: '必填,请填写备注', + personNameRequired: '预约人不能为空', + personNameMaxLength: '预约人不能超过64个字符', + personTelRequired: '预约电话不能为空', + personTelMaxLength: '预约电话不能超过11个字符', + appointmentTimeRequired: '预约时间不能为空', + receivableAmountRequired: '应收金额不能为空', + receivedAmountRequired: '实收金额不能为空', + payWayRequired: '支付方式不能为空', + remarkRequired: '备注不能为空', + openTimeRequired: '预约时间不能为空' + }, + deleteReserveDining: { + confirmTitle: '请确认您的操作!', + confirmContent: '确定删除预约服务' + } + } +} \ No newline at end of file diff --git a/src/views/scm/reserveServiceManageList.vue b/src/views/scm/reserveServiceManageList.vue new file mode 100644 index 0000000..bc153cf --- /dev/null +++ b/src/views/scm/reserveServiceManageList.vue @@ -0,0 +1,274 @@ + + + + + \ No newline at end of file