From f52d2b069f8b94095c6e0149be57b5a95a3b5c22 Mon Sep 17 00:00:00 2001 From: wuxw <928255095@qq.com> Date: Sat, 28 Jun 2025 14:22:44 +0800 Subject: [PATCH] 积分功能开发中 --- src/api/scm/couponPropertyPoolDetailApi.js | 42 ++++++++++++++++++++++++++++++++++++++++++ src/api/scm/couponPropertyUserDetailApi.js | 33 +++++++++++++++++++++++++++++++++ src/api/scm/couponPropertyUserManageApi.js | 17 +++++++++++++++++ src/api/scm/integralConfigManageApi.js | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/scm/integralGiftDetailManageApi.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/scm/integralRuleApi.js | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/AddCouponRuleFee.vue | 69 +++++++++++++++++++-------------------------------------------------- src/components/scm/CouponRuleCpps.vue | 101 +++++++++++++++++++++++++---------------------------------------------------------------------------- src/components/scm/CouponRuleDiv.vue | 55 +++++++++++++++++++++++++++++++++++-------------------- src/components/scm/CouponRuleFees.vue | 34 +++++++++++++++------------------- src/components/scm/DeleteCouponRuleFee.vue | 18 +++++------------- src/components/scm/addIntegralConfig.vue | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/addIntegralRule.vue | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/addIntegralRuleConfig.vue | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/addIntegralRuleFee.vue | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/deleteCouponPropertyPoolDetail.vue | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/deleteIntegralConfig.vue | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/deleteIntegralRule.vue | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/deleteIntegralRuleConfig.vue | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/deleteIntegralRuleFee.vue | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/editIntegralConfig.vue | 187 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/editIntegralRule.vue | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/editIntegralRuleFee.vue | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/integralRuleConfig.vue | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/integralRuleDiv.vue | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/scm/integralRuleFees.vue | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/i18n/scmI18n.js | 20 +++++++++++++++++++- src/router/scmRouter.js | 36 +++++++++++++++++++++++++++++++++--- src/views/scm/couponPropertyPoolDetailLang.js | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/couponPropertyPoolDetailList.vue | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/couponPropertyUserDetailLang.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/couponPropertyUserDetailList.vue | 254 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/couponPropertyUserManageLang.js | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/couponPropertyUserManageList.vue | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/couponRuleList.vue | 51 ++++++++++++++++----------------------------------- src/views/scm/integralConfigManageLang.js | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/integralConfigManageList.vue | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/integralGiftDetailManageLang.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/integralGiftDetailManageList.vue | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/integralRuleLang.js | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/scm/integralRuleList.vue | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 41 files changed, 3731 insertions(+), 217 deletions(-) create mode 100644 src/api/scm/couponPropertyPoolDetailApi.js create mode 100644 src/api/scm/couponPropertyUserDetailApi.js create mode 100644 src/api/scm/couponPropertyUserManageApi.js create mode 100644 src/api/scm/integralConfigManageApi.js create mode 100644 src/api/scm/integralGiftDetailManageApi.js create mode 100644 src/api/scm/integralRuleApi.js create mode 100644 src/components/scm/addIntegralConfig.vue create mode 100644 src/components/scm/addIntegralRule.vue create mode 100644 src/components/scm/addIntegralRuleConfig.vue create mode 100644 src/components/scm/addIntegralRuleFee.vue create mode 100644 src/components/scm/deleteCouponPropertyPoolDetail.vue create mode 100644 src/components/scm/deleteIntegralConfig.vue create mode 100644 src/components/scm/deleteIntegralRule.vue create mode 100644 src/components/scm/deleteIntegralRuleConfig.vue create mode 100644 src/components/scm/deleteIntegralRuleFee.vue create mode 100644 src/components/scm/editIntegralConfig.vue create mode 100644 src/components/scm/editIntegralRule.vue create mode 100644 src/components/scm/editIntegralRuleFee.vue create mode 100644 src/components/scm/integralRuleConfig.vue create mode 100644 src/components/scm/integralRuleDiv.vue create mode 100644 src/components/scm/integralRuleFees.vue create mode 100644 src/views/scm/couponPropertyPoolDetailLang.js create mode 100644 src/views/scm/couponPropertyPoolDetailList.vue create mode 100644 src/views/scm/couponPropertyUserDetailLang.js create mode 100644 src/views/scm/couponPropertyUserDetailList.vue create mode 100644 src/views/scm/couponPropertyUserManageLang.js create mode 100644 src/views/scm/couponPropertyUserManageList.vue create mode 100644 src/views/scm/integralConfigManageLang.js create mode 100644 src/views/scm/integralConfigManageList.vue create mode 100644 src/views/scm/integralGiftDetailManageLang.js create mode 100644 src/views/scm/integralGiftDetailManageList.vue create mode 100644 src/views/scm/integralRuleLang.js create mode 100644 src/views/scm/integralRuleList.vue diff --git a/src/api/scm/couponPropertyPoolDetailApi.js b/src/api/scm/couponPropertyPoolDetailApi.js new file mode 100644 index 0000000..836ebb0 --- /dev/null +++ b/src/api/scm/couponPropertyPoolDetailApi.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取优惠券赠送记录列表 +export function listCouponPropertyPoolDetail(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/couponProperty.listCouponPropertyPoolDetail', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 退回优惠券 +export function deleteCouponPropertyPoolDetail(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/couponProperty.deleteCouponPropertyPoolDetail', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/couponPropertyUserDetailApi.js b/src/api/scm/couponPropertyUserDetailApi.js new file mode 100644 index 0000000..aa2bd5b --- /dev/null +++ b/src/api/scm/couponPropertyUserDetailApi.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +// 获取优惠券使用记录列表 +export function listCouponPropertyUserDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.listCouponPropertyUserDetail', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 核销优惠券 +export function writeOffCouponPropertyUser(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.writeOffCouponPropertyUser', + 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/couponPropertyUserManageApi.js b/src/api/scm/couponPropertyUserManageApi.js new file mode 100644 index 0000000..9f9e379 --- /dev/null +++ b/src/api/scm/couponPropertyUserManageApi.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +// 获取业主优惠券列表 +export function listCouponPropertyUser(params) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.listCouponPropertyUser', + 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/integralConfigManageApi.js b/src/api/scm/integralConfigManageApi.js new file mode 100644 index 0000000..a39c7da --- /dev/null +++ b/src/api/scm/integralConfigManageApi.js @@ -0,0 +1,82 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取积分标准列表 +export function listIntegralConfig(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/integral.listIntegralConfig', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加积分标准 +export function saveIntegralConfig(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/integral.saveIntegralConfig', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新积分标准 +export function updateIntegralConfig(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/integral.updateIntegralConfig', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除积分标准 +export function deleteIntegralConfig(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/integral.deleteIntegralConfig', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/integralGiftDetailManageApi.js b/src/api/scm/integralGiftDetailManageApi.js new file mode 100644 index 0000000..7f6cd36 --- /dev/null +++ b/src/api/scm/integralGiftDetailManageApi.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +/** + * 查询积分赠送明细列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function listIntegralGiftDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.listIntegralGiftDetail', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 添加积分赠送明细 + * @param {Object} data 添加数据 + * @returns {Promise} + */ +export function addIntegralGiftDetail(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.saveIntegralGiftDetail', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 删除积分赠送明细 + * @param {String} detailId 明细ID + * @returns {Promise} + */ +export function deleteIntegralGiftDetail(detailId) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.deleteIntegralGiftDetail', + method: 'post', + data: { detailId } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/integralRuleApi.js b/src/api/scm/integralRuleApi.js new file mode 100644 index 0000000..f25088c --- /dev/null +++ b/src/api/scm/integralRuleApi.js @@ -0,0 +1,222 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 积分规则相关API +export function listIntegralRule(params) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.listIntegralRule', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +export function saveIntegralRule(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.saveIntegralRule', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +export function updateIntegralRule(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.updateIntegralRule', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +export function deleteIntegralRule(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.deleteIntegralRule', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 积分标准配置相关API +export function listIntegralRuleConfig(params) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.listIntegralRuleConfig', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +export function saveIntegralRuleConfig(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.saveIntegralRuleConfig', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +export function deleteIntegralRuleConfig(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.deleteIntegralRuleConfig', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 积分标准池相关API +export function listIntegralConfig(params) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.listIntegralConfig', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 缴费时间相关API +export function listIntegralRuleFee(params) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.listIntegralRuleFee', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +export function saveIntegralRuleFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.saveIntegralRuleFee', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +export function updateIntegralRuleFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.updateIntegralRuleFee', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +export function deleteIntegralRuleFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/integral.deleteIntegralRuleFee', + 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/components/scm/AddCouponRuleFee.vue b/src/components/scm/AddCouponRuleFee.vue index 3a974c4..592fe1b 100644 --- a/src/components/scm/AddCouponRuleFee.vue +++ b/src/components/scm/AddCouponRuleFee.vue @@ -1,64 +1,32 @@ - - - - - + + + + + - - - + + + - - - + - - - + - + {{ $t('common.cancel') }} {{ $t('common.confirm') }} @@ -154,8 +122,9 @@ export default { .el-dialog { .el-form { padding: 0 20px; - - .el-select, .el-date-picker { + + .el-select, + .el-date-picker { width: 100%; } } diff --git a/src/components/scm/CouponRuleCpps.vue b/src/components/scm/CouponRuleCpps.vue index 72887ce..3f7ade9 100644 --- a/src/components/scm/CouponRuleCpps.vue +++ b/src/components/scm/CouponRuleCpps.vue @@ -1,91 +1,46 @@ - - + + {{ $t('common.query') }} - + {{ $t('common.add') }} - - + + - + - + - + - + - + {{ $t('common.edit') }} - + {{ $t('common.delete') }} - + - - - + + + @@ -103,14 +58,9 @@ export default { EditCouponRuleCpps, DeleteCouponRuleCpps }, - props: { - ruleId: { - type: String, - required: true - } - }, data() { return { + ruleId:'', loading: false, tableData: [], pagination: { @@ -120,15 +70,14 @@ export default { } } }, - watch: { - ruleId() { - this.getList() - } - }, methods: { + open(ruleId){ + this.ruleId = ruleId + this.getList() + }, async getList() { if (!this.ruleId) return - + this.loading = true try { const params = { @@ -178,12 +127,12 @@ export default { .coupon-rule-cpps { .operation-row { margin-bottom: 20px; - + .query-btn { margin-right: 10px; } } - + .el-pagination { margin-top: 20px; text-align: right; diff --git a/src/components/scm/CouponRuleDiv.vue b/src/components/scm/CouponRuleDiv.vue index a17f917..0fc8221 100644 --- a/src/components/scm/CouponRuleDiv.vue +++ b/src/components/scm/CouponRuleDiv.vue @@ -1,26 +1,33 @@ - - - {{ $t('common.add') }} - {{ $t('common.edit') }} - {{ $t('common.delete') }} - + + + + {{ $t('common.add') }} + {{ $t('common.edit') }} + {{ $t('common.delete') }} + - + - - - {{ node.label }} - - - + + + {{ node.label }} + + + + + + + \ No newline at end of file diff --git a/src/components/scm/addIntegralRule.vue b/src/components/scm/addIntegralRule.vue new file mode 100644 index 0000000..73af768 --- /dev/null +++ b/src/components/scm/addIntegralRule.vue @@ -0,0 +1,84 @@ + + + + + + + + + + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/addIntegralRuleConfig.vue b/src/components/scm/addIntegralRuleConfig.vue new file mode 100644 index 0000000..378b7b0 --- /dev/null +++ b/src/components/scm/addIntegralRuleConfig.vue @@ -0,0 +1,106 @@ + + + + + + + + + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/addIntegralRuleFee.vue b/src/components/scm/addIntegralRuleFee.vue new file mode 100644 index 0000000..e4eb6e1 --- /dev/null +++ b/src/components/scm/addIntegralRuleFee.vue @@ -0,0 +1,114 @@ + + + + + + + + + + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/deleteCouponPropertyPoolDetail.vue b/src/components/scm/deleteCouponPropertyPoolDetail.vue new file mode 100644 index 0000000..399a40f --- /dev/null +++ b/src/components/scm/deleteCouponPropertyPoolDetail.vue @@ -0,0 +1,56 @@ + + + + {{ $t('couponPropertyPoolDetail.delete.confirmText') }} + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + + + \ No newline at end of file diff --git a/src/components/scm/deleteIntegralConfig.vue b/src/components/scm/deleteIntegralConfig.vue new file mode 100644 index 0000000..a39651a --- /dev/null +++ b/src/components/scm/deleteIntegralConfig.vue @@ -0,0 +1,79 @@ + + + + + + + + {{ $t('common.cancel') }} + + + {{ $t('common.confirm') }} + + + + + + + + \ No newline at end of file diff --git a/src/components/scm/deleteIntegralRule.vue b/src/components/scm/deleteIntegralRule.vue new file mode 100644 index 0000000..0145b2b --- /dev/null +++ b/src/components/scm/deleteIntegralRule.vue @@ -0,0 +1,52 @@ + + + + {{ $t('integralRule.deleteConfirm') }} + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/deleteIntegralRuleConfig.vue b/src/components/scm/deleteIntegralRuleConfig.vue new file mode 100644 index 0000000..d55918b --- /dev/null +++ b/src/components/scm/deleteIntegralRuleConfig.vue @@ -0,0 +1,54 @@ + + + + {{ $t('integralRule.deleteConfigConfirm') }} + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/deleteIntegralRuleFee.vue b/src/components/scm/deleteIntegralRuleFee.vue new file mode 100644 index 0000000..62775f0 --- /dev/null +++ b/src/components/scm/deleteIntegralRuleFee.vue @@ -0,0 +1,58 @@ + + + + {{ $t('integralRule.deleteFeeConfirm') }} + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/editIntegralConfig.vue b/src/components/scm/editIntegralConfig.vue new file mode 100644 index 0000000..aabe4cd --- /dev/null +++ b/src/components/scm/editIntegralConfig.vue @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.cancel') }} + + + {{ $t('common.confirm') }} + + + + + + \ No newline at end of file diff --git a/src/components/scm/editIntegralRule.vue b/src/components/scm/editIntegralRule.vue new file mode 100644 index 0000000..d8eaba3 --- /dev/null +++ b/src/components/scm/editIntegralRule.vue @@ -0,0 +1,93 @@ + + + + + + + + + + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/editIntegralRuleFee.vue b/src/components/scm/editIntegralRuleFee.vue new file mode 100644 index 0000000..802b830 --- /dev/null +++ b/src/components/scm/editIntegralRuleFee.vue @@ -0,0 +1,123 @@ + + + + + + + + + + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/integralRuleConfig.vue b/src/components/scm/integralRuleConfig.vue new file mode 100644 index 0000000..f1eeee1 --- /dev/null +++ b/src/components/scm/integralRuleConfig.vue @@ -0,0 +1,131 @@ + + + + + + {{ $t('common.query') }} + {{ $t('common.add') }} + + + + + + + + + + + + + + {{ $t('common.delete') }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/scm/integralRuleDiv.vue b/src/components/scm/integralRuleDiv.vue new file mode 100644 index 0000000..7180ccd --- /dev/null +++ b/src/components/scm/integralRuleDiv.vue @@ -0,0 +1,106 @@ + + + + + + + {{ $t('common.add') }} + {{ $t('common.edit') }} + {{ $t('common.delete') }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/scm/integralRuleFees.vue b/src/components/scm/integralRuleFees.vue new file mode 100644 index 0000000..30cb883 --- /dev/null +++ b/src/components/scm/integralRuleFees.vue @@ -0,0 +1,141 @@ + + + + + + {{ $t('common.query') }} + {{ $t('common.add') }} + + + + + + + + + {{ scope.row.payStartTime }} ~ {{ scope.row.payEndTime }} + + + + + {{ $t('common.edit') }} + {{ $t('common.delete') }} + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/i18n/scmI18n.js b/src/i18n/scmI18n.js index e424a5d..2ade806 100644 --- a/src/i18n/scmI18n.js +++ b/src/i18n/scmI18n.js @@ -1,6 +1,12 @@ import { messages as couponMarketMessages } from '../views/scm/couponMarketLang' import { messages as couponPropertyPoolManageMessages } from '../views/scm/couponPropertyPoolManageLang' import { messages as couponRuleMessages } from '../views/scm/couponRuleLang' +import { messages as couponPropertyPoolDetailMessages } from '../views/scm/couponPropertyPoolDetailLang' +import { messages as couponPropertyUserManageMessages } from '../views/scm/couponPropertyUserManageLang' +import { messages as couponPropertyUserDetailMessages } from '../views/scm/couponPropertyUserDetailLang' +import { messages as integralConfigManageMessages } from '../views/scm/integralConfigManageLang' +import { messages as integralRuleMessages } from '../views/scm/integralRuleLang' +import { messages as integralGiftDetailManageMessages } from '../views/scm/integralGiftDetailManageLang' export const messages = { en: { @@ -8,10 +14,22 @@ export const messages = { ...couponMarketMessages.en, ...couponPropertyPoolManageMessages.en, ...couponRuleMessages.en, - }, + ...couponPropertyPoolDetailMessages.en, + ...couponPropertyUserManageMessages.en, + ...couponPropertyUserDetailMessages.en, + ...integralConfigManageMessages.en, + ...integralRuleMessages.en, + ...integralGiftDetailManageMessages.en, + }, zh: { ...couponMarketMessages.zh, ...couponPropertyPoolManageMessages.zh, ...couponRuleMessages.zh, + ...couponPropertyPoolDetailMessages.zh, + ...couponPropertyUserManageMessages.zh, + ...couponPropertyUserDetailMessages.zh, + ...integralConfigManageMessages.zh, + ...integralRuleMessages.zh, + ...integralGiftDetailManageMessages.zh, } } \ No newline at end of file diff --git a/src/router/scmRouter.js b/src/router/scmRouter.js index 664d93a..6e798e4 100644 --- a/src/router/scmRouter.js +++ b/src/router/scmRouter.js @@ -10,8 +10,38 @@ export default [ component: () => import('@/views/scm/couponPropertyPoolManageList.vue') }, { - path:'/pages/scm/couponRule', - name:'/pages/scm/couponRule', + path: '/pages/scm/couponRule', + name: '/pages/scm/couponRule', component: () => import('@/views/scm/couponRuleList.vue') - }, + }, + { + path: '/pages/scm/couponPropertyPoolDetail', + name: '/pages/scm/couponPropertyPoolDetail', + component: () => import('@/views/scm/couponPropertyPoolDetailList.vue') + }, + { + path: '/pages/scm/couponPropertyUserManage', + name: '/pages/scm/couponPropertyUserManage', + component: () => import('@/views/scm/couponPropertyUserManageList.vue') + }, + { + path: '/pages/scm/couponPropertyUserDetail', + name: '/pages/scm/couponPropertyUserDetail', + component: () => import('@/views/scm/couponPropertyUserDetailList.vue') + }, + { + path: '/pages/scm/integralConfigManage', + name: '/pages/scm/integralConfigManage', + component: () => import('@/views/scm/integralConfigManageList.vue') + }, + { + path: '/pages/scm/integralRule', + name: '/pages/scm/integralRule', + component: () => import('@/views/scm/integralRuleList.vue') + }, + { + path: '/pages/scm/integralGiftDetailManage', + name: '/pages/scm/integralGiftDetailManage', + component: () => import('@/views/scm/integralGiftDetailManageList.vue') + }, ] \ No newline at end of file diff --git a/src/views/scm/couponPropertyPoolDetailLang.js b/src/views/scm/couponPropertyPoolDetailLang.js new file mode 100644 index 0000000..edbdce7 --- /dev/null +++ b/src/views/scm/couponPropertyPoolDetailLang.js @@ -0,0 +1,88 @@ +export const messages = { + en: { + couponPropertyPoolDetail: { + search: { + title: 'Search Conditions', + cppId: 'Coupon ID', + couponName: 'Coupon Name', + fromType: 'Source Type', + fromTypePlaceholder: 'Please select source type', + fromType1: 'Purchased from coupon market', + fromType2: 'Self-made', + userName: 'User Name', + tel: 'Phone Number', + toType: 'Usage Type', + toTypePlaceholder: 'Please select usage type', + toType1: 'Shopping', + toType2: 'Maintenance Coupon', + toType3: 'Parking Coupon' + }, + list: { + title: 'Gift Records' + }, + table: { + cppId: 'ID', + couponName: 'Coupon Name', + value: 'Face Value', + sendCount: 'Quantity', + unit: 'piece', + userName: 'User Name', + tel: 'Phone Number', + createTime: 'Gift Time' + }, + btn: { + return: 'Return' + }, + delete: { + title: 'Confirm Operation', + confirmText: 'Are you sure to return this coupon?', + success: 'Return successfully', + error: 'Return failed' + }, + fetchError: 'Failed to fetch data' + } + }, + zh: { + couponPropertyPoolDetail: { + search: { + title: '查询条件', + cppId: '优惠券编号', + couponName: '优惠券名称', + fromType: '来源方式', + fromTypePlaceholder: '请选择来源方式', + fromType1: '优惠券市场购买', + fromType2: '自己制作', + userName: '用户名称', + tel: '手机号', + toType: '用途', + toTypePlaceholder: '请选择用途', + toType1: '购物', + toType2: '维修券', + toType3: '停车券' + }, + list: { + title: '赠送记录' + }, + table: { + cppId: '编号', + couponName: '优惠券名称', + value: '面值', + sendCount: '数量', + unit: '张', + userName: '用户名称', + tel: '手机号', + createTime: '赠送时间' + }, + btn: { + return: '退回' + }, + delete: { + title: '确认操作', + confirmText: '确定退回优惠券吗?', + success: '退回成功', + error: '退回失败' + }, + fetchError: '获取数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/couponPropertyPoolDetailList.vue b/src/views/scm/couponPropertyPoolDetailList.vue new file mode 100644 index 0000000..b179ea3 --- /dev/null +++ b/src/views/scm/couponPropertyPoolDetailList.vue @@ -0,0 +1,177 @@ + + + + + + {{ $t('couponPropertyPoolDetail.search.title') }} + + + + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('couponPropertyPoolDetail.list.title') }} + + + + + + + + {{ scope.row.sendCount }}{{ $t('couponPropertyPoolDetail.table.unit') }} + + + + + + + + + {{ $t('couponPropertyPoolDetail.btn.return') }} + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/scm/couponPropertyUserDetailLang.js b/src/views/scm/couponPropertyUserDetailLang.js new file mode 100644 index 0000000..a844bdd --- /dev/null +++ b/src/views/scm/couponPropertyUserDetailLang.js @@ -0,0 +1,48 @@ +export const messages = { + en: { + couponPropertyUser: { + scanPlaceholder: 'Please scan with barcode scanner', + verify: 'Verify', + verifyResult: 'Verification Result', + verifyTime: 'Verification Time', + couponName: 'Coupon Name', + faceValue: 'Face Value', + userName: 'User Name', + phone: 'Phone', + purpose: 'Purpose', + searchCondition: 'Search Conditions', + couponNamePlaceholder: 'Please enter coupon name', + userNamePlaceholder: 'Please enter user name', + phonePlaceholder: 'Please enter phone number', + usageRecord: 'Coupon Usage Records', + serialNumber: 'No.', + usageTime: 'Usage Time', + scanTip: 'Please scan first', + verifySuccess: 'Verification successful', + fetchError: 'Failed to fetch data' + } + }, + zh: { + couponPropertyUser: { + scanPlaceholder: '请扫码枪扫码核销', + verify: '核销', + verifyResult: '核销结果', + verifyTime: '核销时间', + couponName: '优惠券名称', + faceValue: '面值', + userName: '用户名称', + phone: '手机号', + purpose: '用途', + searchCondition: '查询条件', + couponNamePlaceholder: '请填写优惠券名称', + userNamePlaceholder: '请填写用户名称', + phonePlaceholder: '请填写手机号', + usageRecord: '优惠券使用记录', + serialNumber: '编号', + usageTime: '使用时间', + scanTip: '请先扫码', + verifySuccess: '核销成功', + fetchError: '获取数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/couponPropertyUserDetailList.vue b/src/views/scm/couponPropertyUserDetailList.vue new file mode 100644 index 0000000..b27f711 --- /dev/null +++ b/src/views/scm/couponPropertyUserDetailList.vue @@ -0,0 +1,254 @@ + + + + + + + + + + + + + {{ $t('couponPropertyUser.verify') }} + + + + + + + {{ $t('couponPropertyUser.verifyResult') }}: + {{ order.remark }} + + + {{ $t('couponPropertyUser.verifyTime') }}: + {{ order.createTime }} + + + {{ $t('couponPropertyUser.couponName') }}: + {{ order.couponName }} + + + {{ $t('couponPropertyUser.faceValue') }}: + {{ order.value }} + + + {{ $t('couponPropertyUser.userName') }}: + {{ order.userName }} + + + {{ $t('couponPropertyUser.phone') }}: + {{ order.tel }} + + + {{ $t('couponPropertyUser.purpose') }}: + {{ order.toTypeName }} + + + + + + + + + + {{ $t('couponPropertyUser.searchCondition') }} + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + {{ $t('couponPropertyUser.usageRecord') }} + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/scm/couponPropertyUserManageLang.js b/src/views/scm/couponPropertyUserManageLang.js new file mode 100644 index 0000000..a13438c --- /dev/null +++ b/src/views/scm/couponPropertyUserManageLang.js @@ -0,0 +1,84 @@ +export const messages = { + en: { + couponPropertyUserManage: { + search: { + title: 'Search Conditions', + couponId: 'Coupon ID', + couponName: 'Coupon Name', + validityDay: 'Validity Day', + userName: 'User Name', + tel: 'Phone Number', + toType: 'Usage', + selectToType: 'Select Usage', + shopping: 'Shopping', + payment: 'Payment', + repair: 'Repair Coupon', + parking: 'Parking Coupon', + state: 'Status', + selectState: 'Select Status', + unused: 'Unused', + used: 'Used' + }, + list: { + title: 'Owner Coupons' + }, + table: { + couponId: 'ID', + couponName: 'Coupon Name', + value: 'Face Value', + validityDay: 'Validity', + userName: 'User Name', + tel: 'Phone', + toType: 'Usage', + quantity: 'Quantity', + sheet: 'Sheet', + state: 'Status', + startTime: 'Effective Time', + unused: 'Unused', + used: 'Used' + }, + fetchError: 'Failed to fetch coupon data' + } + }, + zh: { + couponPropertyUserManage: { + search: { + title: '查询条件', + couponId: '优惠券编号', + couponName: '优惠券名称', + validityDay: '有效期', + userName: '用户名称', + tel: '手机号', + toType: '用途', + selectToType: '选择用途', + shopping: '购物', + payment: '缴费', + repair: '维修劵', + parking: '停车劵', + state: '状态', + selectState: '请选择状态', + unused: '未使用', + used: '已使用' + }, + list: { + title: '业主优惠券' + }, + table: { + couponId: '编号', + couponName: '优惠券名称', + value: '面值', + validityDay: '有效期', + userName: '用户名称', + tel: '手机号', + toType: '用途', + quantity: '数量', + sheet: '张', + state: '状态', + startTime: '生效时间', + unused: '未使用', + used: '已使用' + }, + fetchError: '获取优惠券数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/couponPropertyUserManageList.vue b/src/views/scm/couponPropertyUserManageList.vue new file mode 100644 index 0000000..3d3c99e --- /dev/null +++ b/src/views/scm/couponPropertyUserManageList.vue @@ -0,0 +1,179 @@ + + + + + + {{ $t('couponPropertyUserManage.search.title') }} + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('couponPropertyUserManage.list.title') }} + + + + + + + + + + + + + {{ scope.row.stock }}{{ $t('couponPropertyUserManage.table.sheet') }} + + + + + {{ scope.row.state === '1001' ? $t('couponPropertyUserManage.table.unused') : + $t('couponPropertyUserManage.table.used') }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/scm/couponRuleList.vue b/src/views/scm/couponRuleList.vue index caf3fb1..22cac54 100644 --- a/src/views/scm/couponRuleList.vue +++ b/src/views/scm/couponRuleList.vue @@ -6,26 +6,23 @@ - + {{ currentCouponRule.ruleName }} {{ currentCouponRule.remark }} - - + - + - + - - - + @@ -33,9 +30,7 @@ import CouponRuleDiv from '@/components/scm/CouponRuleDiv' import CouponRuleCpps from '@/components/scm/CouponRuleCpps' import CouponRuleFees from '@/components/scm/CouponRuleFees' -import AddCouponRule from '@/components/scm/AddCouponRule' -import EditCouponRule from '@/components/scm/EditCouponRule' -import DeleteCouponRule from '@/components/scm/DeleteCouponRule' + export default { name: 'CouponRuleList', @@ -43,9 +38,7 @@ export default { CouponRuleDiv, CouponRuleCpps, CouponRuleFees, - AddCouponRule, - EditCouponRule, - DeleteCouponRule + }, data() { return { @@ -60,30 +53,18 @@ export default { methods: { handleSwitchCouponRule(rule) { this.currentCouponRule = rule + this.handleTabClick(this.activeTab) }, + handleTabClick(tab) { - this.activeTab = tab.name - }, - handleSuccess() { - this.$refs.couponRuleDiv.refreshList() + this.activeTab = tab + let _that = this; + setTimeout(function(){ + _that.$refs[tab].open(_that.currentCouponRule.ruleId) + },500) }, - openAddModal() { - this.$refs.addCouponRule.open() - }, - openEditModal() { - if (!this.currentCouponRule.ruleId) { - this.$message.warning(this.$t('couponRule.selectRuleFirst')) - return - } - this.$refs.editCouponRule.open(this.currentCouponRule) - }, - openDeleteModal() { - if (!this.currentCouponRule.ruleId) { - this.$message.warning(this.$t('couponRule.selectRuleFirst')) - return - } - this.$refs.deleteCouponRule.open(this.currentCouponRule) - } + + } } diff --git a/src/views/scm/integralConfigManageLang.js b/src/views/scm/integralConfigManageLang.js new file mode 100644 index 0000000..b857214 --- /dev/null +++ b/src/views/scm/integralConfigManageLang.js @@ -0,0 +1,142 @@ +export const messages = { + en: { + integralConfigManage: { + search: { + title: 'Search Conditions', + configNamePlaceholder: 'Please enter standard name' + }, + list: { + title: 'Points Standard' + }, + table: { + configName: 'Standard Name', + computingFormula: 'Calculation Formula', + squarePrice: 'Amount/Month', + additionalAmount: 'Points', + scale: 'Rounding' + }, + form: { + configName: 'Standard Name', + configNamePlaceholder: 'Required, please enter standard name', + computingFormula: 'Calculation Formula', + computingFormulaPlaceholder: 'Required, please select calculation formula', + amount: 'Amount', + amountPlaceholder: 'Required, please enter amount', + month: 'Month', + monthPlaceholder: 'Required, please enter month', + points: 'Points', + pointsPlaceholder: 'Required, please enter points', + scale: 'Rounding', + scalePlaceholder: 'Required, please select rounding' + }, + formula: { + fullAmount: 'Full amount give points', + fullMonth: 'Full month give points' + }, + scale: { + roundUp: 'Round up', + roundDown: 'Round down' + }, + validate: { + configIdRequired: 'Points standard cannot be empty', + configNameRequired: 'Standard name cannot be empty', + configNameMaxLength: 'Standard name cannot exceed 100 characters', + computingFormulaRequired: 'Calculation formula cannot be empty', + squarePriceRequired: 'Amount/month cannot be empty', + squarePriceMaxLength: 'Amount/month cannot exceed 12 characters', + additionalAmountRequired: 'Points cannot be empty', + additionalAmountMaxLength: 'Points cannot exceed 12 characters', + scaleRequired: 'Rounding cannot be empty' + }, + message: { + addSuccess: 'Add points standard successfully', + addFailed: 'Add points standard failed', + editSuccess: 'Edit points standard successfully', + editFailed: 'Edit points standard failed', + deleteSuccess: 'Delete points standard successfully', + deleteFailed: 'Delete points standard failed', + fetchError: 'Failed to get points standard data' + }, + add: { + title: 'Add Points Standard' + }, + edit: { + title: 'Edit Points Standard' + }, + delete: { + title: 'Delete Points Standard', + confirmMessage: 'Are you sure to delete this points standard?' + } + } + }, + zh: { + integralConfigManage: { + search: { + title: '查询条件', + configNamePlaceholder: '请输入标准名称' + }, + list: { + title: '积分标准' + }, + table: { + configName: '标准名称', + computingFormula: '计算公式', + squarePrice: '金额/月', + additionalAmount: '赠送积分', + scale: '进位' + }, + form: { + configName: '标准名称', + configNamePlaceholder: '必填,请填写标准名称', + computingFormula: '计算公式', + computingFormulaPlaceholder: '必填,请选择计算公式', + amount: '金额', + amountPlaceholder: '必填,请填写金额', + month: '月份', + monthPlaceholder: '必填,请填写月份', + points: '积分', + pointsPlaceholder: '必填,请填写积分', + scale: '进位', + scalePlaceholder: '必填,请选择进位' + }, + formula: { + fullAmount: '满(金额)送积分', + fullMonth: '满(月)送积分' + }, + scale: { + roundUp: '向上取整', + roundDown: '向下取整' + }, + validate: { + configIdRequired: '积分标准不能为空', + configNameRequired: '标准名称不能为空', + configNameMaxLength: '标准名称不能超过100个字符', + computingFormulaRequired: '计算公式不能为空', + squarePriceRequired: '金额/月不能为空', + squarePriceMaxLength: '金额/月不能超过12个字符', + additionalAmountRequired: '积分不能为空', + additionalAmountMaxLength: '积分不能超过12个字符', + scaleRequired: '进位不能为空' + }, + message: { + addSuccess: '添加积分标准成功', + addFailed: '添加积分标准失败', + editSuccess: '修改积分标准成功', + editFailed: '修改积分标准失败', + deleteSuccess: '删除积分标准成功', + deleteFailed: '删除积分标准失败', + fetchError: '获取积分标准数据失败' + }, + add: { + title: '添加积分标准' + }, + edit: { + title: '修改积分标准' + }, + delete: { + title: '删除积分标准', + confirmMessage: '确定删除该积分标准吗?' + } + } + } +} \ No newline at end of file diff --git a/src/views/scm/integralConfigManageList.vue b/src/views/scm/integralConfigManageList.vue new file mode 100644 index 0000000..8a52d04 --- /dev/null +++ b/src/views/scm/integralConfigManageList.vue @@ -0,0 +1,154 @@ + + + + + + {{ $t('integralConfigManage.search.title') }} + + + + + + + + {{ $t('common.search') }} + + + + + + + + + {{ $t('integralConfigManage.list.title') }} + + {{ $t('common.add') }} + + + + + + + + + + + + + {{ $t('common.edit') }} + + + {{ $t('common.delete') }} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/scm/integralGiftDetailManageLang.js b/src/views/scm/integralGiftDetailManageLang.js new file mode 100644 index 0000000..904af72 --- /dev/null +++ b/src/views/scm/integralGiftDetailManageLang.js @@ -0,0 +1,50 @@ +export const messages = { + en: { + integralGiftDetailManage: { + search: { + title: 'Search Conditions', + detailId: 'Record ID', + userNameLike: 'User Name', + tel: 'Phone Number' + }, + list: { + title: 'Gift Records' + }, + table: { + detailId: 'Record ID', + acctName: 'Account Name', + configName: 'Standard Name', + ruleName: 'Rule Name', + quantity: 'Points Quantity', + userName: 'User Name', + tel: 'Phone Number', + createTime: 'Gift Time' + }, + fetchError: 'Failed to fetch gift records' + } + }, + zh: { + integralGiftDetailManage: { + search: { + title: '查询条件', + detailId: '记录编号', + userNameLike: '用户名称', + tel: '手机号' + }, + list: { + title: '赠送记录' + }, + table: { + detailId: '记录编号', + acctName: '账户名称', + configName: '标准名称', + ruleName: '规则名称', + quantity: '积分数量', + userName: '用户名称', + tel: '手机号', + createTime: '赠送时间' + }, + fetchError: '获取赠送记录失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/integralGiftDetailManageList.vue b/src/views/scm/integralGiftDetailManageList.vue new file mode 100644 index 0000000..61b0718 --- /dev/null +++ b/src/views/scm/integralGiftDetailManageList.vue @@ -0,0 +1,144 @@ + + + + + + {{ $t('integralGiftDetailManage.search.title') }} + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + + {{ $t('integralGiftDetailManage.list.title') }} + + + + + + + + + + + + + + + {{ $t('common.detail') }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/scm/integralRuleLang.js b/src/views/scm/integralRuleLang.js new file mode 100644 index 0000000..7c837ea --- /dev/null +++ b/src/views/scm/integralRuleLang.js @@ -0,0 +1,108 @@ +export const messages = { + en: { + integralRule: { + addTitle: 'Add Integral Rule', + editTitle: 'Edit Integral Rule', + deleteTitle: 'Delete Integral Rule', + deleteConfirm: 'Are you sure to delete this integral rule?', + ruleName: 'Rule Name', + ruleNamePlaceholder: 'Please enter rule name', + ruleNameRequired: 'Rule name is required', + ruleNameMaxLength: 'Rule name cannot exceed 64 characters', + remark: 'Remark', + remarkPlaceholder: 'Please enter remark', + remarkRequired: 'Remark is required', + remarkMaxLength: 'Remark cannot exceed 512 characters', + ruleIdRequired: 'Rule ID is required', + selectRule: 'Please select a rule first', + + // Config related + addConfigTitle: 'Add Integral Config', + configId: 'Config ID', + configName: 'Config Name', + configPlaceholder: 'Please select config', + configRequired: 'Config is required', + deleteConfigConfirm: 'Are you sure to delete this config?', + computingFormula: 'Computing Formula', + squarePrice: 'Square Price', + additionalAmount: 'Additional Amount', + scale: 'Scale', + + // Fee related + addFeeTitle: 'Add Payment Time', + editFeeTitle: 'Edit Payment Time', + feeId: 'Fee ID', + payTimeRange: 'Payment Time Range', + payStartTime: 'Start Time', + payStartTimePlaceholder: 'Select start time', + payStartTimeRequired: 'Start time is required', + payEndTime: 'End Time', + payEndTimePlaceholder: 'Select end time', + payEndTimeRequired: 'End time is required', + payEndTimeAfterStart: 'End time must be after start time', + deleteFeeConfirm: 'Are you sure to delete this payment time?', + feeIdRequired: 'Fee ID is required', + + // Tab names + integralRuleConfig: 'Integral Standard', + integralRuleFee: 'Payment Time', + + // Messages + fetchError: 'Failed to fetch data', + selectRuleFirst: 'Please select a rule first' + } + }, + zh: { + integralRule: { + addTitle: '添加积分规则', + editTitle: '编辑积分规则', + deleteTitle: '删除积分规则', + deleteConfirm: '确定删除该积分规则吗?', + ruleName: '规则名称', + ruleNamePlaceholder: '请输入规则名称', + ruleNameRequired: '规则名称不能为空', + ruleNameMaxLength: '规则名称不能超过64个字符', + remark: '备注', + remarkPlaceholder: '请输入备注', + remarkRequired: '备注不能为空', + remarkMaxLength: '备注不能超过512个字符', + ruleIdRequired: '规则ID不能为空', + selectRule: '请先选择规则', + + // Config related + addConfigTitle: '添加积分标准', + configId: '配置ID', + configName: '配置名称', + configPlaceholder: '请选择配置', + configRequired: '配置不能为空', + deleteConfigConfirm: '确定删除该配置吗?', + computingFormula: '计算公式', + squarePrice: '单价', + additionalAmount: '固定积分', + scale: '进位', + + // Fee related + addFeeTitle: '添加缴费时间', + editFeeTitle: '编辑缴费时间', + feeId: '费用ID', + payTimeRange: '缴费时间范围', + payStartTime: '开始时间', + payStartTimePlaceholder: '选择开始时间', + payStartTimeRequired: '开始时间不能为空', + payEndTime: '结束时间', + payEndTimePlaceholder: '选择结束时间', + payEndTimeRequired: '结束时间不能为空', + payEndTimeAfterStart: '结束时间必须晚于开始时间', + deleteFeeConfirm: '确定删除该缴费时间吗?', + feeIdRequired: '费用ID不能为空', + + // Tab names + integralRuleConfig: '积分标准', + integralRuleFee: '缴费时间', + + // Messages + fetchError: '获取数据失败', + selectRuleFirst: '请先选择规则' + } + } +} \ No newline at end of file diff --git a/src/views/scm/integralRuleList.vue b/src/views/scm/integralRuleList.vue new file mode 100644 index 0000000..3ec592e --- /dev/null +++ b/src/views/scm/integralRuleList.vue @@ -0,0 +1,111 @@ + + + + + + + + + + {{ integralRuleInfo.curIntegralRule.ruleName }} + {{ integralRuleInfo.curIntegralRule.remark }} + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- libgit2 0.21.4
{{ $t('couponPropertyPoolDetail.delete.confirmText') }}
{{ $t('integralRule.deleteConfirm') }}
{{ $t('integralRule.deleteConfigConfirm') }}
{{ $t('integralRule.deleteFeeConfirm') }}