diff --git a/src/api/scm/supplierCouponApi.js b/src/api/scm/supplierCouponApi.js new file mode 100644 index 0000000..b501be5 --- /dev/null +++ b/src/api/scm/supplierCouponApi.js @@ -0,0 +1,101 @@ +import request from '@/utils/request' + +// 获取供应商列表 +export function getSupplierList(params) { + return new Promise((resolve, reject) => { + request({ + url: '/supplier.listSupplier', + method: 'get', + params + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to get supplier list')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 获取优惠券列表 +export function getSupplierCouponList(params) { + return new Promise((resolve, reject) => { + request({ + url: '/supplierCoupon.listSupplierCoupon', + method: 'get', + params + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to get coupon list')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 添加优惠券 +export function addSupplierCoupon(data) { + return new Promise((resolve, reject) => { + request({ + url: '/supplierCoupon.saveSupplierCoupon', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to add coupon')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 更新优惠券 +export function updateSupplierCoupon(data) { + return new Promise((resolve, reject) => { + request({ + url: '/supplierCoupon.updateSupplierCoupon', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to update coupon')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除优惠券 +export function deleteSupplierCoupon(data) { + return new Promise((resolve, reject) => { + request({ + url: '/supplierCoupon.deleteSupplierCoupon', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to delete coupon')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/supplierCouponBuyApi.js b/src/api/scm/supplierCouponBuyApi.js new file mode 100644 index 0000000..2eb97ea --- /dev/null +++ b/src/api/scm/supplierCouponBuyApi.js @@ -0,0 +1,29 @@ +import request from '@/utils/request' + +/** + * 获取优惠券购买记录列表 + * @param {Object} params 查询参数 + * @returns {Promise} 包含优惠券购买记录列表的Promise + */ +export function getSupplierCouponBuyList(params) { + return new Promise((resolve, reject) => { + request({ + url: '/supplierCoupon.listSupplierCouponBuy', + method: 'get', + params + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve({ + data: res.data, + total: res.total, + records: res.records + }) + } else { + reject(new Error(res.msg || 'Failed to get coupon purchase records')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/scm/addSupplierCoupon.vue b/src/components/scm/addSupplierCoupon.vue new file mode 100644 index 0000000..e58154e --- /dev/null +++ b/src/components/scm/addSupplierCoupon.vue @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/scm/deleteSupplierCoupon.vue b/src/components/scm/deleteSupplierCoupon.vue new file mode 100644 index 0000000..3a27a97 --- /dev/null +++ b/src/components/scm/deleteSupplierCoupon.vue @@ -0,0 +1,45 @@ + + + {{ $t('supplierCoupon.deleteConfirm') }} + + + + + \ No newline at end of file diff --git a/src/components/scm/editSupplierCoupon.vue b/src/components/scm/editSupplierCoupon.vue new file mode 100644 index 0000000..56daf70 --- /dev/null +++ b/src/components/scm/editSupplierCoupon.vue @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js index f178b1e..a59d50b 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -110,6 +110,8 @@ import { messages as couponPoolManageMessages } from '../views/account/couponPoo import { messages as couponDetailManageMessages } from '../views/account/couponDetailManageLang' import { messages as supplierTypeManageMessages } from '../views/scm/supplierTypeManageLang' import { messages as supplierManageMessages } from '../views/scm/supplierManageLang' +import { messages as supplierCouponMessages } from '../views/scm/supplierCouponLang' +import { messages as supplierCouponBuyMessages } from '../views/scm/supplierCouponBuyLang' Vue.use(VueI18n) @@ -224,6 +226,8 @@ const messages = { ...couponDetailManageMessages.en, ...supplierTypeManageMessages.en, ...supplierManageMessages.en, + ...supplierCouponMessages.en, + ...supplierCouponBuyMessages.en, }, zh: { ...loginMessages.zh, @@ -334,6 +338,8 @@ const messages = { ...couponDetailManageMessages.zh, ...supplierTypeManageMessages.zh, ...supplierManageMessages.zh, + ...supplierCouponMessages.zh, + ...supplierCouponBuyMessages.zh, } } diff --git a/src/router/index.js b/src/router/index.js index 87fa079..bec7722 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -532,9 +532,19 @@ const routes = [ component: () => import('@/views/scm/supplierTypeManageList.vue') }, { - path:'/pages/scm/supplierManage', - name:'/pages/scm/supplierManage', + path: '/pages/scm/supplierManage', + name: '/pages/scm/supplierManage', component: () => import('@/views/scm/supplierManageList.vue') + }, + { + path: '/pages/scm/supplierCoupon', + name: '/pages/scm/supplierCoupon', + component: () => import('@/views/scm/supplierCouponList.vue') + }, + { + path:'/pages/scm/supplierCouponBuy', + name:'/pages/scm/supplierCouponBuy', + component: () => import('@/views/scm/supplierCouponBuyList.vue') }, // 其他子路由可以在这里添加 ] diff --git a/src/views/scm/supplierCouponBuyLang.js b/src/views/scm/supplierCouponBuyLang.js new file mode 100644 index 0000000..5198cda --- /dev/null +++ b/src/views/scm/supplierCouponBuyLang.js @@ -0,0 +1,68 @@ +export const messages = { + en: { + supplierCouponBuy: { + searchTitle: 'Query Conditions', + listTitle: 'Coupon Purchase Records', + placeholder: { + buyId: 'Order Number', + couponId: 'Coupon ID', + name: 'Name', + supplierName: 'Supplier', + storeName: 'Store Name', + objName: 'Community Name', + createUserTel: 'Contact Info', + createUserName: 'Buyer' + }, + table: { + buyId: 'ID', + couponName: 'Coupon', + name: 'Name', + supplierName: 'Supplier', + quantity: 'Quantity', + valuePrice: 'Price', + storeName: 'Store Name', + objName: 'Community Name', + createUserTel: 'Contact', + createUserName: 'Buyer', + remark: 'Remark' + }, + fetchError: 'Failed to fetch coupon purchase records' + }, + common: { + search: 'Search' + } + }, + zh: { + supplierCouponBuy: { + searchTitle: '查询条件', + listTitle: '优惠券购买记录', + placeholder: { + buyId: '请填写订单号', + couponId: '请填写优惠券编号', + name: '请填写名称', + supplierName: '请填写供应商', + storeName: '请填写商户名称', + objName: '请填写小区名称', + createUserTel: '请填写联系方式', + createUserName: '请填写购买人' + }, + table: { + buyId: '编号', + couponName: '优惠券', + name: '名称', + supplierName: '供应商', + quantity: '购买数量', + valuePrice: '售价', + storeName: '商户名称', + objName: '小区名称', + createUserTel: '联系方式', + createUserName: '购买人', + remark: '备注' + }, + fetchError: '获取优惠券购买记录失败' + }, + common: { + search: '查询' + } + } +} \ No newline at end of file diff --git a/src/views/scm/supplierCouponBuyList.vue b/src/views/scm/supplierCouponBuyList.vue new file mode 100644 index 0000000..ab577f5 --- /dev/null +++ b/src/views/scm/supplierCouponBuyList.vue @@ -0,0 +1,165 @@ + + + + + + {{ $t('supplierCouponBuy.searchTitle') }} + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('supplierCouponBuy.listTitle') }} + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/scm/supplierCouponLang.js b/src/views/scm/supplierCouponLang.js new file mode 100644 index 0000000..00061ed --- /dev/null +++ b/src/views/scm/supplierCouponLang.js @@ -0,0 +1,56 @@ +export const messages = { + en: { + supplierCoupon: { + title: 'Supplier Coupon Management', + searchConditions: 'Search Conditions', + couponInfo: 'Coupon Information', + name: 'Name', + businessId: 'Business ID', + supplier: 'Supplier', + thirdPartyId: 'Third-party ID', + price: 'Price', + remark: 'Remark', + operation: 'Operation', + add: 'Add', + edit: 'Edit', + delete: 'Delete', + confirm: 'Confirm', + cancel: 'Cancel', + deleteConfirm: 'Are you sure to delete this coupon?', + deleteTitle: 'Confirm Operation', + required: 'Required', + addTitle: 'Add Coupon', + editTitle: 'Edit Coupon', + search: 'Search', + noData: 'No data', + supplierRequired: 'Please select a supplier first' + } + }, + zh: { + supplierCoupon: { + title: '供应商优惠券管理', + searchConditions: '查询条件', + couponInfo: '优惠券信息', + name: '名称', + businessId: '业务ID', + supplier: '供应商', + thirdPartyId: '三方ID', + price: '售价', + remark: '备注', + operation: '操作', + add: '添加', + edit: '修改', + delete: '删除', + confirm: '确认', + cancel: '取消', + deleteConfirm: '确定删除优惠券?', + deleteTitle: '请确认您的操作', + required: '必填', + addTitle: '添加优惠券', + editTitle: '修改优惠券', + search: '查询', + noData: '暂无数据', + supplierRequired: '请先选择供应商' + } + } +} \ No newline at end of file diff --git a/src/views/scm/supplierCouponList.vue b/src/views/scm/supplierCouponList.vue new file mode 100644 index 0000000..9c5cc2d --- /dev/null +++ b/src/views/scm/supplierCouponList.vue @@ -0,0 +1,242 @@ + + + + + + + + + + {{ supplier.supplierName }} + + + + + + + + + {{ $t('supplierCoupon.searchConditions') }} + + + + + + + + + + + + + + {{ $t('supplierCoupon.search') }} + + + + + + + + {{ $t('supplierCoupon.couponInfo') }} + + {{ $t('supplierCoupon.add') }} + + + + + + + + + + + + + + {{ $t('supplierCoupon.edit') }} + + + {{ $t('supplierCoupon.delete') }} + + + + + + + + + + + + + + + + + + + + \ No newline at end of file
{{ $t('supplierCoupon.deleteConfirm') }}