diff --git a/src/api/account/shopMerchant.ts b/src/api/account/shopMerchant.ts index 561e836..b2739c0 100644 --- a/src/api/account/shopMerchant.ts +++ b/src/api/account/shopMerchant.ts @@ -1,10 +1,11 @@ import request from "@/utils/request"; -import { Account_BaseUrl } from "@/api/config"; +import { Account_BaseUrl, Order_BaseUrl } from "@/api/config"; const baseURL = Account_BaseUrl + "/admin/shopMerchant"; +const orderURL = Order_BaseUrl + "/admin/shopMerchant"; const API = { get(shopId: string | number) { return request({ - url: `${baseURL}`, + url: `${orderURL}`, method: "get", params: { shopId: shopId @@ -14,7 +15,7 @@ const API = { edit(shopId: string | number, data: shopMerchantType) { delete data.id return request({ - url: `${baseURL}`, + url: `${orderURL}`, method: "put", data: { ...data, shopId }, }); diff --git a/src/api/account/shopUser.ts b/src/api/account/shopUser.ts index 25faf3c..883bfa3 100644 --- a/src/api/account/shopUser.ts +++ b/src/api/account/shopUser.ts @@ -71,7 +71,16 @@ const API = { method: "get", params }); - } + }, + // 导出 + export(params: any) { + return request({ + url: `${baseURL}/export`, + method: "get", + params, + responseType: 'blob' + }); + }, } export default API; export interface getRequest { diff --git a/src/api/common/index.ts b/src/api/common/index.ts new file mode 100644 index 0000000..eeac0be --- /dev/null +++ b/src/api/common/index.ts @@ -0,0 +1,166 @@ +import request from "@/utils/request"; + +/** + * 获取所有地域 + * @param params + * @returns + */ +export const getRegion = () => { + return request({ + url: `/system/admin/common/region`, + method: "get" + }); +} + +/** + * 获取所有银行 + * @param params + * @returns + */ +export const getBankInfo = (params: Object) => { + return request({ + url: `/system/admin/common/bankInfo`, + method: "get", + params + }); +} + +/** + * 类目信息表 + * @returns + */ +export const getCategory = () => { + return request({ + url: `/system/admin/common/category`, + method: "get" + }); +} + +interface getBankBranchListParams { + bankAliceCode?: string; + cityCode?: string; +} +/** + * 获取所有支行 + * @params + * bankAliceCode 银行别名code bankAliasCode 从 /system/admin/common/bankInfo 获取 + * cityCode 市编码 wxProvinceCode 从 /system/admin/common/region 获取 + * @returns + */ +export const getBankBranchList = (params: getBankBranchListParams) => { + return request({ + url: `/order/admin/data/entryManager/bankBranchList`, + method: "get", + params + }); +} + +/** + * 申请进件 + * @data Object + * @returns + */ +export const entryManagerPost = (data: Object) => { + return request({ + url: `/order/admin/data/entryManager`, + method: "post", + data + }); +} + +/** + * 申请进件 + * @data { + * url string 图片地址 + * type string 可选 + * IdCard 身份证 + * BankCard 银行卡 + * BusinessLicense 营业执照 + * } + * @returns + */ +export const getInfoByImg = (params: Object) => { + return request({ + url: `/order/admin/data/entryManager/getInfoByImg`, + method: "get", + params + }); +} + +/** + * 获取进件信息详情 + * @data { shopId } + * @returns + */ +export const entryManagerDetail = (params: Object) => { + return request({ + url: `/order/admin/data/entryManager`, + method: "get", + params + }); +} + +/** + * 获取进件列表 + * @data { params } + * @returns + */ +export const entryManagerList = (params: Object) => { + return request({ + url: `/order/admin/data/entryManager/list`, + method: "get", + params + }); +} + +/** + * 主动查询进件信息状态 + * @data { params } + * @returns + */ +export const queryEntry = (params: Object) => { + return request({ + url: `/order/admin/data/entryManager/queryEntry`, + method: "get", + params + }); +} + +/** + * 商户支付信息获取 + * @data { params } + * @returns + */ +export const shopMerchantGet = (params: Object) => { + return request({ + url: `/order/admin/shopMerchant`, + method: "get", + params + }); +} + +/** + * 商户支付信息修改 修改聚合支付信息 + * @data { params } + * @returns + */ +export const shopMerchantPut = (data: Object) => { + return request({ + url: `/order/admin/shopMerchant`, + method: "put", + data + }); +} + +/** + * 获取当前店铺的主店进件信息 + * @data { params } + * @returns + */ +export const getMainMerchant = (params: Object) => { + return request({ + url: `/order/admin/shopMerchant/getMainMerchant`, + method: "get", + params + }); +} diff --git a/src/api/coup/group.js b/src/api/coup/group.js index 4fccbd6..e843ced 100644 --- a/src/api/coup/group.js +++ b/src/api/coup/group.js @@ -10,7 +10,7 @@ export function searchstorestatus(type) { return request_php({ method: "post", headers: { - clint_type: type + 'ClintType': type }, url: "/meituan/searchstorestatus" }); @@ -79,7 +79,7 @@ export function getuisdk(data) { return request_php({ method: "post", headers: { - clint_type: 2 + 'ClintType': 2 }, url: "/douyin/getuisdk", data, @@ -214,7 +214,7 @@ export function thirdPartyCoupon_bindUrl(data) { return request_php({ method: "post", headers: { - clint_type: 1 + 'ClintType': 1 }, url: "/meituan/getuisdkurl", data, diff --git a/src/api/coupon/index.js b/src/api/coupon/index.js index b713bf5..86f0091 100644 --- a/src/api/coupon/index.js +++ b/src/api/coupon/index.js @@ -801,6 +801,68 @@ export function attendanceDetail(params) { }); } +// 分享奖励基础:新增/修改 +export function shareBasePost(data) { + return request({ + url: `${Market_BaseUrl}/admin/shareBase`, + method: 'POST', + data + }); +} + +// 分享奖励基础 查询 +export function shareBaseGet(params) { + return request({ + url: `${Market_BaseUrl}/admin/shareBase`, + method: 'GET', + params + }); +} + +// 轮播图配置:新增/修改 +export function shareCarouselPost(data) { + return request({ + url: `${Market_BaseUrl}/admin/carousel`, + method: 'POST', + data + }); +} + +// 分享轮播图配置 +export function shareCarouselGet(params) { + return request({ + url: `${Market_BaseUrl}/admin/carousel`, + method: 'GET', + params + }); +} + +// 分享 轮播图配置 删除 +export function shareCarouselDel(id) { + return request({ + url: `${Market_BaseUrl}/admin/carousel/${id}`, + method: 'DELETE' + }); +} + +// 全民股东群聊 配置信息获取 +export function disGroupGet(params) { + return request({ + url: `${Market_BaseUrl}/admin/disGroup`, + method: 'get', + params + }); +} + +// 全民股东群聊:新增/修改 +export function disGroupPost(data) { + return request({ + url: `${Market_BaseUrl}/admin/disGroup`, + method: 'POST', + data + }); +} + diff --git a/src/api/order/pay.ts b/src/api/order/pay.ts index 57419ae..9879f16 100644 --- a/src/api/order/pay.ts +++ b/src/api/order/pay.ts @@ -3,7 +3,6 @@ import { Order_BaseUrl } from "@/api/config"; const baseURL = Order_BaseUrl + "/pay"; const Api = { // h5支付 - h5Pay(data: h5PayRequest) { return request({ url: `${baseURL}/h5Pay`, @@ -67,7 +66,6 @@ const Api = { params }); }, - }; export default Api; diff --git a/src/api/order/sale-summary.ts b/src/api/order/sale-summary.ts index 72f386d..d885d7f 100644 --- a/src/api/order/sale-summary.ts +++ b/src/api/order/sale-summary.ts @@ -26,7 +26,6 @@ const Api = { method: "get", params, responseType: 'blob' - }); }, }; diff --git a/src/api/product/commonUnits.ts b/src/api/product/commonUnits.ts index e4576ef..3a6809e 100644 --- a/src/api/product/commonUnits.ts +++ b/src/api/product/commonUnits.ts @@ -51,6 +51,15 @@ const AuthAPI = { method: "delete", }); }, + // 导出常用单位 + exportUnits(params: any) { + return request({ + url: `${baseURL}/export`, + method: "get", + params, + responseType: 'blob' + }); + } }; diff --git a/src/api/product/index.ts b/src/api/product/index.ts index 2facf1e..ae3d34c 100644 --- a/src/api/product/index.ts +++ b/src/api/product/index.ts @@ -181,6 +181,15 @@ const AuthAPI = { method: "get", params, }); + }, + // 导出商品 + exportProducts(params: any) { + return request({ + url: `${baseURL}/export`, + method: "get", + params, + responseType: 'blob' + }); } }; diff --git a/src/api/product/productclassification.ts b/src/api/product/productclassification.ts index c6b87d2..0010ada 100644 --- a/src/api/product/productclassification.ts +++ b/src/api/product/productclassification.ts @@ -48,7 +48,15 @@ const AuthAPI = { method: "delete", }); }, - + // 导出商品分类 + exportCategories(params: any) { + return request({ + url: `${baseURL}/export`, + method: "get", + params, + responseType: 'blob' + }); + } }; diff --git a/src/assets/applocation/fxpz.png b/src/assets/applocation/fxpz.png new file mode 100644 index 0000000..47c1f3e Binary files /dev/null and b/src/assets/applocation/fxpz.png differ diff --git a/src/components/AddressSelect/index.vue b/src/components/AddressSelect/index.vue new file mode 100644 index 0000000..448a345 --- /dev/null +++ b/src/components/AddressSelect/index.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/components/Upload/SingleImageUpload.vue b/src/components/Upload/SingleImageUpload.vue index c9795a1..74f7035 100644 --- a/src/components/Upload/SingleImageUpload.vue +++ b/src/components/Upload/SingleImageUpload.vue @@ -172,12 +172,12 @@ const onError = (error: any) => { position: relative; overflow: hidden; cursor: pointer; - border: 1px var(--el-border-color) solid; - border-radius: 5px; + // border: 1px var(--el-border-color) solid; + // border-radius: 5px; - &:hover { - border-color: var(--el-color-primary); - } + // &:hover { + // border-color: var(--el-color-primary); + // } &__delete-btn { position: absolute; diff --git a/src/components/selectCoupon/index.vue b/src/components/selectCoupon/index.vue new file mode 100644 index 0000000..ddaa258 --- /dev/null +++ b/src/components/selectCoupon/index.vue @@ -0,0 +1,34 @@ + + \ No newline at end of file diff --git a/src/utils/index.ts b/src/utils/index.ts index bce4c8f..7eea652 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -111,8 +111,16 @@ export function downloadFile(obj: BlobPart, name: string, suffix: string, useUni const link = document.createElement("a"); link.style.display = "none"; link.href = url; - const newFilename = useUnix ? (parseTime(new Date(), undefined) + "-") : '' + name.trim() - const fileName = newFilename + "." + suffix; + // 期望行为: + // - 当 useUnix 为 true 且传入 name 时:`${timestamp}-${name}` + // - 当 useUnix 为 true 且 name 为空时:仅 `${timestamp}`(不带多余的 `-`) + // - 当 useUnix 为 false:使用传入的 name(如为空则回退到时间戳) + const safeName = (name || "").trim(); + const timeStamp = parseTime(new Date(), undefined); + const fileBase = useUnix + ? (safeName ? `${timeStamp}-${safeName}` : timeStamp) + : (safeName || timeStamp); + const fileName = fileBase + "." + suffix; link.setAttribute("download", fileName); document.body.appendChild(link); link.click(); @@ -299,4 +307,18 @@ export function includesString(target, searchStr, options = {}) { // 4. 执行包含判断 return processedTarget.includes(processedSearch); -} \ No newline at end of file +} + +/** + * 校验手机号码(中国大陆) + * - 支持 11 位手机号,号段 13x-19x + * @param {string} phone + * @returns {boolean} + */ +export function isValidMobile(phone: string): boolean { + if (!phone && phone !== 0) return false; + const s = String(phone).trim(); + // 中国大陆手机号正则:以1开头,第二位3-9,后面9位数字,总共11位 + const mobileRegex = /^1[3-9]\d{9}$/; + return mobileRegex.test(s); +} diff --git a/src/utils/request.ts b/src/utils/request.ts index 651dc5e..33e9e8a 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -91,7 +91,7 @@ service.interceptors.response.use( return; } ElMessage.error(formatErrorMsg(msg || "Error")); - return Promise.reject(new Error(formatErrorMsg(msg || "Error"))); + return Promise.reject(response.data); }, async (error: any) => { diff --git a/src/views/applyments/applyment_in.vue b/src/views/applyments/applyment_in.vue new file mode 100644 index 0000000..7fb03bc --- /dev/null +++ b/src/views/applyments/applyment_in.vue @@ -0,0 +1,915 @@ + + + + + + \ No newline at end of file diff --git a/src/views/applyments/components/selectAddress.vue b/src/views/applyments/components/selectAddress.vue new file mode 100644 index 0000000..310e0f1 --- /dev/null +++ b/src/views/applyments/components/selectAddress.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/src/views/applyments/components/selectBank.vue b/src/views/applyments/components/selectBank.vue new file mode 100644 index 0000000..983ae09 --- /dev/null +++ b/src/views/applyments/components/selectBank.vue @@ -0,0 +1,145 @@ + + + + + \ No newline at end of file diff --git a/src/views/applyments/components/selectCategory.vue b/src/views/applyments/components/selectCategory.vue new file mode 100644 index 0000000..b2dad83 --- /dev/null +++ b/src/views/applyments/components/selectCategory.vue @@ -0,0 +1,43 @@ + + + \ No newline at end of file diff --git a/src/views/applyments/components/selectShopsDialog.vue b/src/views/applyments/components/selectShopsDialog.vue new file mode 100644 index 0000000..5a8a1ec --- /dev/null +++ b/src/views/applyments/components/selectShopsDialog.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file diff --git a/src/views/applyments/components/singCodeDialog.vue b/src/views/applyments/components/singCodeDialog.vue new file mode 100644 index 0000000..f6421ba --- /dev/null +++ b/src/views/applyments/components/singCodeDialog.vue @@ -0,0 +1,63 @@ + + + + + \ No newline at end of file diff --git a/src/views/applyments/index.vue b/src/views/applyments/index.vue new file mode 100644 index 0000000..7480463 --- /dev/null +++ b/src/views/applyments/index.vue @@ -0,0 +1,312 @@ + + + + + + \ No newline at end of file diff --git a/src/views/applyments/select_shop.vue b/src/views/applyments/select_shop.vue new file mode 100644 index 0000000..75f97ad --- /dev/null +++ b/src/views/applyments/select_shop.vue @@ -0,0 +1,71 @@ + + + + + + \ No newline at end of file diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 40357d4..d41322b 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -70,12 +70,11 @@ const env = process.env.NODE_ENV // DEV-START const accountList = reactive([ { username: "admin", type: 'primary', label: 'admin' }, - { username: "19191703856", type: 'warning', label: '喜气洋洋' }, + { username: "18049104914", type: 'warning', label: '东风的店铺' }, { username: "19107220837", type: 'danger', label: '快乐时光店铺' }, - { username: "18199991111", type: 'success', label: '草莓加盟主店可直接管理' }, - { username: "18821670757", type: 'primary', label: '强盛集团' }, - { username: "19107220837", type: 'warning', label: '万维时光' }, - { username: "19112345678", type: 'success', label: '酸橘子·云贵小馆' }, + // { username: "18199991111", type: 'success', label: '草莓加盟主店可直接管理' }, + { username: "18821670757", type: 'success', label: '高歌的小店' }, + { username: "191123456", type: 'primary', label: '酸橘子' }, ]); // 快捷模拟登录 diff --git a/src/views/marketing_center/data.js b/src/views/marketing_center/data.js index 4fc62de..97a6473 100644 --- a/src/views/marketing_center/data.js +++ b/src/views/marketing_center/data.js @@ -32,10 +32,10 @@ export const newMenus = [ intro: '协助商家拉来新客户,拓展客户群体', childrenList: [ { - name: "分销", + name: "全民股东", icon: "zhcz", pathName: "distribution_page", - intro: "用户成为业务员,可促进消费" + intro: "用户成为股东,可促进消费" }, { name: "套餐推广", @@ -55,6 +55,12 @@ export const newMenus = [ pathName: "group_booking", intro: "拼团" }, + { + name: "分享配置", + icon: "fxpz", + pathName: "share_setting", + intro: "商家可配置用户分享后可获得的奖励" + }, ] }, { diff --git a/src/views/marketing_center/distribution_page/components/addUserDialog.vue b/src/views/marketing_center/distribution_page/components/addUserDialog.vue index 52909e9..815903b 100644 --- a/src/views/marketing_center/distribution_page/components/addUserDialog.vue +++ b/src/views/marketing_center/distribution_page/components/addUserDialog.vue @@ -128,7 +128,8 @@ function submitHandle() { // 过滤条件 function isDistribtion(str) { let s = str.split('_') - return s[1] + let shopId = s[0] + return s[1] && shopId == localStorage.getItem('shopId') ? 1 : 0 } const selectUser = ref([]) diff --git a/src/views/marketing_center/distribution_page/components/groupSetting.vue b/src/views/marketing_center/distribution_page/components/groupSetting.vue new file mode 100644 index 0000000..b5d76eb --- /dev/null +++ b/src/views/marketing_center/distribution_page/components/groupSetting.vue @@ -0,0 +1,290 @@ + + + + + \ No newline at end of file diff --git a/src/views/marketing_center/distribution_page/components/setting.vue b/src/views/marketing_center/distribution_page/components/setting.vue index c2f1989..07b5af1 100644 --- a/src/views/marketing_center/distribution_page/components/setting.vue +++ b/src/views/marketing_center/distribution_page/components/setting.vue @@ -135,8 +135,8 @@ *分成比例
- +
@@ -204,7 +204,7 @@ const levelConfigListObj = ref({ name: '', // 名称 inviteCount: '', // 有效人数 costAmount: '', // 消费金额 - levelOneCommission: '', // 一级分销比例 + commission: '', // 一级分销比例 levelTwoCommission: '', // 二级分销比例 }) const form = ref({ @@ -281,7 +281,7 @@ const rules = ref({ callback(new Error(tips)) return } - if (item.levelOneCommission === '' || item.levelOneCommission == 0) { + if (item.commission === '' || item.commission == 0) { tips = `请输入${index + 1}级的分成比例` callback(new Error(tips)) return diff --git a/src/views/marketing_center/distribution_page/index.vue b/src/views/marketing_center/distribution_page/index.vue index 8c15d35..df922e0 100644 --- a/src/views/marketing_center/distribution_page/index.vue +++ b/src/views/marketing_center/distribution_page/index.vue @@ -1,7 +1,7 @@ - - -