diff --git a/src/api/app/app-menu.ts b/src/api/app/app-menu.ts
new file mode 100644
index 0000000..67c8057
--- /dev/null
+++ b/src/api/app/app-menu.ts
@@ -0,0 +1,40 @@
+import request from "/@/utils/request"
+
+export function fetchList(query?: Object) {
+ return request({
+ url: "/app/app-menu/page",
+ method: "get",
+ params: query,
+ })
+}
+
+export function addObj(obj?: Object) {
+ return request({
+ url: "/app/app-menu",
+ method: "post",
+ data: obj,
+ })
+}
+
+export function getObj(id?: string) {
+ return request({
+ url: "/app/app-menu/" + id,
+ method: "get",
+ })
+}
+
+export function delObjs(ids?: Object) {
+ return request({
+ url: "/app/app-menu",
+ method: "delete",
+ data: ids,
+ })
+}
+
+export function putObj(obj?: Object) {
+ return request({
+ url: "/app/app-menu",
+ method: "put",
+ data: obj,
+ })
+}
diff --git a/src/api/login/index.ts b/src/api/login/index.ts
index 828f1f4..f09033a 100644
--- a/src/api/login/index.ts
+++ b/src/api/login/index.ts
@@ -1,171 +1,170 @@
-import request from '/@/utils/request';
-import {Session} from '/@/utils/storage';
-import {validateNull} from '/@/utils/validate';
-import {useUserInfo} from '/@/stores/userInfo';
-import other from '/@/utils/other';
+import request from "/@/utils/request"
+import { Session } from "/@/utils/storage"
+import { validateNull } from "/@/utils/validate"
+import { useUserInfo } from "/@/stores/userInfo"
+import other from "/@/utils/other"
/**
* https://www.ietf.org/rfc/rfc6749.txt
* OAuth 协议 4.3.1 要求格式为 form 而不是 JSON 注意!
*/
-const FORM_CONTENT_TYPE = 'application/x-www-form-urlencoded';
+const FORM_CONTENT_TYPE = "application/x-www-form-urlencoded"
// 登录方式
export enum LoginTypeEnum {
PASSWORD,
MOBILE,
REGISTER,
- EXPIRE
+ EXPIRE,
}
// 登录错误信息
export enum LoginErrorEnum {
- CREDENTIALS_EXPIRED = 'credentials_expired'// 密码过期
+ CREDENTIALS_EXPIRED = "credentials_expired", // 密码过期
}
-
/**
* 登录
* @param data
*/
export const login = (data: any) => {
- const basicAuth = 'Basic ' + window.btoa(import.meta.env.VITE_OAUTH2_PASSWORD_CLIENT);
- Session.set('basicAuth', basicAuth);
+ const basicAuth = "Basic " + window.btoa(import.meta.env.VITE_OAUTH2_PASSWORD_CLIENT)
+ Session.set("basicAuth", basicAuth)
// 密码加密
- const encPassword = other.encryption(data.password, import.meta.env.VITE_PWD_ENC_KEY);
- const { username, randomStr, code, grant_type, scope } = data;
+ const encPassword = other.encryption(data.password, import.meta.env.VITE_PWD_ENC_KEY)
+ const { username, randomStr, code, grant_type, scope } = data
return request({
- url: '/auth/oauth2/token',
- method: 'post',
+ url: "/auth/oauth2/token",
+ method: "post",
params: { username, randomStr, code, grant_type, scope },
data: { password: encPassword },
headers: {
skipToken: true,
Authorization: basicAuth,
- 'Content-Type': FORM_CONTENT_TYPE,
+ "Content-Type": FORM_CONTENT_TYPE,
},
- });
-};
+ })
+}
export const loginByMobile = (mobile: any, code: any) => {
- const grant_type = 'mobile';
- const scope = 'server';
- const basicAuth = 'Basic ' + window.btoa(import.meta.env.VITE_OAUTH2_MOBILE_CLIENT);
- Session.set('basicAuth', basicAuth);
+ const grant_type = "mobile"
+ const scope = "server"
+ const basicAuth = "Basic " + window.btoa(import.meta.env.VITE_OAUTH2_MOBILE_CLIENT)
+ Session.set("basicAuth", basicAuth)
return request({
- url: '/auth/oauth2/token',
+ url: "/auth/oauth2/token",
headers: {
skipToken: true,
Authorization: basicAuth,
- 'Content-Type': FORM_CONTENT_TYPE,
+ "Content-Type": FORM_CONTENT_TYPE,
},
- method: 'post',
- params: { mobile: 'SMS@' + mobile, code: code, grant_type, scope },
- });
-};
+ method: "post",
+ params: { mobile: "SMS@" + mobile, code: code, grant_type, scope },
+ })
+}
export const loginBySocial = (state: string, code: string) => {
- const grant_type = 'mobile';
- const scope = 'server';
- const basicAuth = 'Basic ' + window.btoa(import.meta.env.VITE_OAUTH2_SOCIAL_CLIENT);
- Session.set('basicAuth', basicAuth);
+ const grant_type = "mobile"
+ const scope = "server"
+ const basicAuth = "Basic " + window.btoa(import.meta.env.VITE_OAUTH2_SOCIAL_CLIENT)
+ Session.set("basicAuth", basicAuth)
return request({
- url: '/auth/oauth2/token',
+ url: "/auth/oauth2/token",
headers: {
skipToken: true,
Authorization: basicAuth,
- 'Content-Type': FORM_CONTENT_TYPE,
+ "Content-Type": FORM_CONTENT_TYPE,
},
- method: 'post',
- params: { mobile: state + '@' + code, code: code, grant_type, scope },
- });
-};
+ method: "post",
+ params: { mobile: state + "@" + code, code: code, grant_type, scope },
+ })
+}
export const sendMobileCode = (mobile: string) => {
return request({
- url: '/admin/sysMessage/send/smsCode',
- method: 'get',
- params: { mobile }
- });
-};
+ url: "/admin/sysMessage/send/smsCode",
+ method: "get",
+ params: { mobile },
+ })
+}
export const refreshTokenApi = (refresh_token: string) => {
- const grant_type = 'refresh_token';
- const scope = 'server';
+ const grant_type = "refresh_token"
+ const scope = "server"
// 获取当前选中的 basic 认证信息
- const basicAuth = Session.get('basicAuth');
+ const basicAuth = Session.get("basicAuth")
return request({
- url: '/auth/oauth2/token',
+ url: "/auth/oauth2/token",
headers: {
skipToken: true,
Authorization: basicAuth,
- 'Content-Type': FORM_CONTENT_TYPE,
+ "Content-Type": FORM_CONTENT_TYPE,
},
- method: 'post',
+ method: "post",
params: { refresh_token, grant_type, scope },
- });
-};
+ })
+}
/**
* 校验令牌,若有效期小于半小时自动续期
* @param refreshLock
*/
export const checkToken = (refreshTime: number, refreshLock: boolean) => {
- const basicAuth = Session.get('basicAuth');
+ const basicAuth = Session.get("basicAuth")
request({
- url: '/auth/token/check_token',
+ url: "/auth/token/check_token",
headers: {
skipToken: true,
Authorization: basicAuth,
- 'Content-Type': FORM_CONTENT_TYPE,
+ "Content-Type": FORM_CONTENT_TYPE,
},
- method: 'get',
+ method: "get",
params: { token: Session.getToken() },
})
.then((response) => {
if (validateNull(response) || response.code === 1) {
- clearInterval(refreshTime);
- return;
+ clearInterval(refreshTime)
+ return
}
- const expire = Date.parse(response.data.expiresAt);
+ const expire = Date.parse(response.data.expiresAt)
if (expire) {
- const expiredPeriod = expire - new Date().getTime();
+ const expiredPeriod = expire - new Date().getTime()
//小于半小时自动续约
if (expiredPeriod <= 30 * 60 * 1000) {
if (!refreshLock) {
- refreshLock = true;
+ refreshLock = true
useUserInfo()
.refreshToken()
.catch(() => {
- clearInterval(refreshTime);
- });
- refreshLock = false;
+ clearInterval(refreshTime)
+ })
+ refreshLock = false
}
}
}
})
.catch(() => {
// 发生异常关闭定时器
- clearInterval(refreshTime);
- });
-};
+ clearInterval(refreshTime)
+ })
+}
/**
* 获取用户信息
*/
export const getUserInfo = () => {
return request({
- url: '/admin/user/info',
- method: 'get',
- });
-};
+ url: "/admin/user/info",
+ method: "get",
+ })
+}
export const logout = () => {
return request({
- url: '/auth/token/logout',
- method: 'delete',
- });
-};
+ url: "/auth/token/logout",
+ method: "delete",
+ })
+}
diff --git a/src/api/thirdparty/third-pay-order.ts b/src/api/thirdparty/third-pay-order.ts
new file mode 100644
index 0000000..a0f007e
--- /dev/null
+++ b/src/api/thirdparty/third-pay-order.ts
@@ -0,0 +1,40 @@
+import request from "/@/utils/request"
+
+export function fetchList(query?: Object) {
+ return request({
+ url: "/third/third-pay-order/page",
+ method: "get",
+ params: query,
+ })
+}
+
+export function addObj(obj?: Object) {
+ return request({
+ url: "/third/third-pay-order",
+ method: "post",
+ data: obj,
+ })
+}
+
+export function getObj(id?: string) {
+ return request({
+ url: "/third/third-pay-order/" + id,
+ method: "get",
+ })
+}
+
+export function delObjs(ids?: Object) {
+ return request({
+ url: "/third/third-pay-order",
+ method: "delete",
+ data: ids,
+ })
+}
+
+export function putObj(obj?: Object) {
+ return request({
+ url: "/third/third-pay-order",
+ method: "put",
+ data: obj,
+ })
+}
diff --git a/src/components/Select/SelectHard.vue b/src/components/Select/SelectHard.vue
index 50cea9c..7d57e39 100644
--- a/src/components/Select/SelectHard.vue
+++ b/src/components/Select/SelectHard.vue
@@ -1,18 +1,8 @@
- e && getOptions()"
- @change="change"
- >
+ e && getOptions()"
+ :multiple="multiple" @change="change">
{{ v.name }}
@@ -40,6 +30,7 @@ const props = withDefaults(
clearable?: boolean
autoFirst?: boolean
apiParams?: any
+ multiple?: boolean
}>(),
{
placeholder: "请选择",
@@ -47,6 +38,7 @@ const props = withDefaults(
clearable: true,
autoFirst: false,
apiParams: {},
+ multiple: false,
},
)
diff --git a/src/utils/formatMoney.ts b/src/utils/formatMoney.ts
index cf21e1b..fc54c07 100644
--- a/src/utils/formatMoney.ts
+++ b/src/utils/formatMoney.ts
@@ -9,6 +9,12 @@ export function displayPrice(price: any, suffix: string = "元", fixed = 2) {
return (parsedNumber / 100.0).toFixed(fixed) + suffix
}
+export function displayYuanToYuan(price: any, suffix: string = "元", fixed = 2) {
+ if (typeof price === "undefined") return "0.00" + suffix
+ const parsedNumber = typeof price === "string" ? parseFloat(price) : price
+ return parsedNumber.toFixed(fixed) + suffix
+}
+
export function displayWeight(price: any, fixed = 2) {
if (typeof price === "undefined") return "0"
const parsedNumber = typeof price === "string" ? parseFloat(price) : price
diff --git a/src/utils/other.ts b/src/utils/other.ts
index 7c0068e..7ffb98c 100644
--- a/src/utils/other.ts
+++ b/src/utils/other.ts
@@ -300,6 +300,7 @@ export function postDownBlobFile(url: any, data: any, fileName: string) {
descs: data?.descs ?? [],
},
data,
+ timeout: 360 * 1000,
})
.then((response) => {
handleBlobFile(response, fileName)
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 1c38dd7..b66285f 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -1,8 +1,8 @@
import axios, {AxiosInstance, AxiosResponse, InternalAxiosRequestConfig} from 'axios';
-import { Session } from '/@/utils/storage';
-import { useMessageBox } from '/@/hooks/message';
-import qs from 'qs';
-import other from './other';
+import { Session } from "/@/utils/storage"
+import { useMessageBox } from "/@/hooks/message"
+import qs from "qs"
+import other from "./other"
/**
* 创建并配置一个 Axios 实例对象
@@ -10,12 +10,12 @@ import other from './other';
const service: AxiosInstance = axios.create({
baseURL: import.meta.env.VITE_API_URL,
timeout: 50000, // 全局超时时间
- paramsSerializer: {
- serialize: (params: any) => {
- return qs.stringify(params, {arrayFormat: 'repeat'});
- }
- }
-});
+ paramsSerializer: {
+ serialize: (params: any) => {
+ return qs.stringify(params, { arrayFormat: "repeat" })
+ },
+ },
+})
/**
* Axios请求拦截器,对请求进行处理
@@ -25,39 +25,38 @@ const service: AxiosInstance = axios.create({
* @param config AxiosRequestConfig对象,包含请求配置信息
*/
service.interceptors.request.use(
-
(config: InternalAxiosRequestConfig) => {
// 统一增加Authorization请求头, skipToken 跳过增加token
- const token = Session.getToken();
+ const token = Session.getToken()
if (token && !config.headers?.skipToken) {
- config.headers![CommonHeaderEnum.AUTHORIZATION] = `Bearer ${token}`;
+ config.headers![CommonHeaderEnum.AUTHORIZATION] = `Bearer ${token}`
}
// 统一增加TENANT-ID请求头
- const tenantId = Session.getTenant();
+ const tenantId = Session.getTenant()
if (tenantId) {
- config.headers![CommonHeaderEnum.TENANT_ID] = tenantId;
+ config.headers![CommonHeaderEnum.TENANT_ID] = tenantId
}
// 请求报文加密
if (config.headers![CommonHeaderEnum.ENC_FLAG]) {
- const enc = other.encryption(JSON.stringify(config.data), import.meta.env.VITE_PWD_ENC_KEY);
+ const enc = other.encryption(JSON.stringify(config.data), import.meta.env.VITE_PWD_ENC_KEY)
config.data = {
encryption: enc,
- };
+ }
}
// 自动适配单体和微服务架构不同的URL
- config.url = other.adaptationUrl(config.url);
+ config.url = other.adaptationUrl(config.url)
// 处理完毕,返回config对象
- return config;
+ return config
},
(error) => {
// 对请求错误进行处理
- return Promise.reject(error);
- }
-);
+ return Promise.reject(error)
+ },
+)
/**
* 响应拦截器处理函数
@@ -66,55 +65,56 @@ service.interceptors.request.use(
*/
const handleResponse = (response: AxiosResponse
) => {
if (response.data.code === 1) {
- throw response.data;
+ throw response.data
}
// 针对密文返回解密
if (response.data.encryption) {
- const originData = JSON.parse(other.decryption(response.data.encryption, import.meta.env.VITE_PWD_ENC_KEY));
- response.data = originData;
- return response.data;
+ const originData = JSON.parse(other.decryption(response.data.encryption, import.meta.env.VITE_PWD_ENC_KEY))
+ response.data = originData
+ return response.data
}
- return response.data;
-};
+ return response.data
+}
/**
* 添加 Axios 的响应拦截器,用于全局响应结果处理
*/
service.interceptors.response.use(handleResponse, (error) => {
- const status = Number(error.response.status) || 200;
+ const status = Number(error.response.status) || 200
if (status === 423) {
- return Promise.reject({msg:'"演示环境,仅供预览"'});
+ return Promise.reject({ msg: '"演示环境,仅供预览"' })
}
if (status === 424) {
useMessageBox()
- .confirm('令牌状态已过期,请点击重新登录')
+ .confirm("令牌状态已过期,请点击重新登录")
.then(() => {
- Session.clear(); // 清除浏览器全部临时缓存
- window.location.href = '/'; // 去登录页
- return;
- });
+ Session.clear() // 清除浏览器全部临时缓存
+ window.location.href = "/" // 去登录页
+ return
+ })
}
if (status === 426) {
useMessageBox()
- .confirm('租户状态已过期,请联系管理员')
+ .confirm("租户状态已过期,请联系管理员")
.then(() => {
- Session.clear(); // 清除浏览器全部临时缓存
- return;
- });
+ Session.clear() // 清除浏览器全部临时缓存
+ return
+ })
}
- return Promise.reject(error.response.data);
-});
+ return Promise.reject(error.response.data)
+})
// 常用header
export enum CommonHeaderEnum {
- 'TENANT_ID' = 'TENANT-ID',
- 'ENC_FLAG' = 'Enc-Flag',
- 'AUTHORIZATION' = 'Authorization',
+ "TENANT_ID" = "TENANT-ID",
+ "ENC_FLAG" = "Enc-Flag",
+ "AUTHORIZATION" = "Authorization",
}
// 导出 axios 实例
-export default service;
+export default service
+
diff --git a/src/views/admin/system/menu/index.vue b/src/views/admin/system/menu/index.vue
index 1c44795..7d0ff0f 100644
--- a/src/views/admin/system/menu/index.vue
+++ b/src/views/admin/system/menu/index.vue
@@ -4,7 +4,8 @@
-
+
@@ -16,34 +17,22 @@
-
+
{{ $t("common.addBtn") }}
-
+
-
-
-
+
+
+
@@ -63,26 +52,23 @@
关闭
-
+
-
+
{{ $t("common.addBtn") }}
- {{ $t("common.editBtn") }}
+ {{ $t("common.editBtn") }}
-
+
-
+
{{ $t("common.delBtn") }}
@@ -210,7 +196,7 @@ const tableList = computed(() => {
const restoreExpandedRows = async () => {
await nextTick()
if (!tableRef.value || expandedRowIds.value.size === 0) return
-
+
// 递归加载并展开节点
const loadAndExpandRows = async (list: any[]) => {
for (const row of list || []) {
@@ -228,7 +214,7 @@ const restoreExpandedRows = async () => {
console.error('加载子节点失败:', error)
}
}
-
+
// 展开该节点
try {
tableRef.value.toggleRowExpansion(row, true)
@@ -237,7 +223,7 @@ const restoreExpandedRows = async () => {
} catch (error) {
console.error('展开节点失败:', error)
}
-
+
// 如果有子节点,递归处理
if (row.children && row.children.length > 0) {
await loadAndExpandRows(row.children)
@@ -245,7 +231,7 @@ const restoreExpandedRows = async () => {
}
}
}
-
+
await loadAndExpandRows(state.dataList)
}
@@ -291,6 +277,7 @@ const handleDelete = async (row: any) => {
:v-deep(.el-table .el-table__row .cell) {
display: flex;
}
+
:v-deep(.el-table .el-table__row .cell .el-table__expand-icon .el-icon) {
width: 20px;
height: 20px;
diff --git a/src/views/biz/app/app-menu/form.vue b/src/views/biz/app/app-menu/form.vue
new file mode 100644
index 0000000..4936a73
--- /dev/null
+++ b/src/views/biz/app/app-menu/form.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 排序
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/biz/app/app-menu/index.vue b/src/views/biz/app/app-menu/index.vue
new file mode 100644
index 0000000..574856e
--- /dev/null
+++ b/src/views/biz/app/app-menu/index.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("common.queryBtn") }}
+
+
+ {{ $t("common.resetBtn") }}
+
+
+
+
+
+
+
+ 新 增
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/supermarketerp/purchaseManagement/smErpCgDd/form.vue b/src/views/supermarketerp/purchaseManagement/smErpCgDd/form.vue
index d6d2fa8..59db56b 100644
--- a/src/views/supermarketerp/purchaseManagement/smErpCgDd/form.vue
+++ b/src/views/supermarketerp/purchaseManagement/smErpCgDd/form.vue
@@ -13,12 +13,8 @@
经办人:
-
+
关联补货申请:
@@ -26,7 +22,8 @@
货商:
-
+
备注:
@@ -43,90 +40,65 @@
-
+
-
+
-
+
-
+
商品选择
- 删除选中
+ 删除选中
清空数据
-
+
{{ row.productName }}
- {{ row.erpSpuId && state.erpSpuSimpleAll.find((item: any) => item.id === row.erpSpuId)?.productName }}
+ {{row.erpSpuId && state.erpSpuSimpleAll.find((item: any) => item.id ===
+ row.erpSpuId)?.productName }}
-
+
- {{ row.unit ?? row.erpUnitVos?.find((item: any) => item.id == row.unitId)?.unit }}
+ {{row.unit ?? row.erpUnitVos?.find((item: any) => item.id ==
+ row.unitId)?.unit }}
请选择
@@ -150,7 +122,8 @@
{{ displayPrice(row.quantity * parseFloat(row.purchasePrice)) }}
- {{ displayPrice(Number(row.erpUnitVos?.find((item: any) => item.id == row.unitId)?.purchasePrice) * row.quantity) }}
+ {{displayPrice(Number(row.erpUnitVos?.find((item: any) => item.id ==
+ row.unitId)?.purchasePrice) * row.quantity) }}
@@ -179,12 +152,8 @@
-
+
@@ -403,19 +372,19 @@ const { formValidate, submitData } = useSmProcessFormAction()
const onContinueAdd = async () => {
console.log("baseDataForm", baseDataForm)
console.log("state.editableTableData", state.editableTableData)
- ;(await formValidate(baseDataFormRef, editableTableRef, state.editableTableData.length)) &&
- (await submitData(baseDataForm, cgPlanSpuItems, loading, putObj, addObj)) &&
- clearData()
+ ; (await formValidate(baseDataFormRef, editableTableRef, state.editableTableData.length)) &&
+ (await submitData(baseDataForm, cgPlanSpuItems, loading, putObj, addObj)) &&
+ clearData()
}
// 点击保存
const onSave = async () => {
console.log("baseDataForm", baseDataForm)
console.log("state.editableTableData", state.editableTableData)
- ;(await formValidate(baseDataFormRef, editableTableRef, state.editableTableData.length)) &&
- (await submitData(baseDataForm, cgPlanSpuItems, loading, putObj, addObj)) &&
- clearData() &&
- emit("close")
+ ; (await formValidate(baseDataFormRef, editableTableRef, state.editableTableData.length)) &&
+ (await submitData(baseDataForm, cgPlanSpuItems, loading, putObj, addObj)) &&
+ clearData() &&
+ emit("close")
}
// 清空填写的数据 返回 true
diff --git a/src/views/supermarketerp/purchaseManagement/smErpCgInventory/form.vue b/src/views/supermarketerp/purchaseManagement/smErpCgInventory/form.vue
index cb31019..0cb7204 100644
--- a/src/views/supermarketerp/purchaseManagement/smErpCgInventory/form.vue
+++ b/src/views/supermarketerp/purchaseManagement/smErpCgInventory/form.vue
@@ -22,7 +22,8 @@
-->
货商:
-
+
备注:
@@ -33,10 +34,12 @@
-
+
-
+
-
+
-
+
@@ -72,32 +77,20 @@
清空数据
-
+ ]" :merge-footer-items="[{ row: 0, col: 2, rowspan: 1, colspan: 4 }]" @checkbox-all="" @checkbox-change=""
+ size="mini" align="center">
{{ row.productName }}
- {{ row.erpSpuId && erpSpuSimpleAll.find((item: any) => item.id === row.erpSpuId)?.productName }}
+ {{row.erpSpuId && erpSpuSimpleAll.find((item: any) => item.id ===
+ row.erpSpuId)?.productName }}
- {{ supermarket_nature.find((item: any) => item.value == row.productNature)?.label || "" }}
+ {{supermarket_nature.find((item: any) => item.value == row.productNature)?.label || ""}}
-
-
+
+
@@ -148,14 +134,10 @@
-
-
+
+
@@ -190,13 +172,8 @@
{{ row?.selectedUnitObj?.totalAmount }}
-
+
{{ total.totalAmount }}元
@@ -433,19 +410,19 @@ const { formValidate, submitData } = useSmProcessFormAction()
const onContinueAdd = async () => {
console.log("baseDataForm", baseDataForm)
console.log("vxeTableData.value", vxeTableData.value)
- ;(await formValidate(baseFormRef, vxeTableRef, vxeTableData.value.length)) &&
- (await submitData(baseDataForm, settledTableItems.value, loading, putObj, addObj)) &&
- clearData()
+ ; (await formValidate(baseFormRef, vxeTableRef, vxeTableData.value.length)) &&
+ (await submitData(baseDataForm, settledTableItems.value, loading, putObj, addObj)) &&
+ clearData()
}
// 点击保存
const onSave = async () => {
console.log("baseDataForm", baseDataForm)
console.log("vxeTableData.value", vxeTableData.value)
- ;(await formValidate(baseFormRef, vxeTableRef, vxeTableData.value.length)) &&
- (await submitData(baseDataForm, settledTableItems.value, loading, putObj, addObj)) &&
- clearData() &&
- emit("close")
+ ; (await formValidate(baseFormRef, vxeTableRef, vxeTableData.value.length)) &&
+ (await submitData(baseDataForm, settledTableItems.value, loading, putObj, addObj)) &&
+ clearData() &&
+ emit("close")
}
// 清空数据
diff --git a/src/views/thirdparty/third-pay-order/form.vue b/src/views/thirdparty/third-pay-order/form.vue
new file mode 100644
index 0000000..651ab6b
--- /dev/null
+++ b/src/views/thirdparty/third-pay-order/form.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/thirdparty/third-pay-order/index.vue b/src/views/thirdparty/third-pay-order/index.vue
new file mode 100644
index 0000000..1ad23a6
--- /dev/null
+++ b/src/views/thirdparty/third-pay-order/index.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+ 新 增
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/wallet/wallet-setting/components/xfj/components/xfj-edit-table.vue b/src/views/wallet/wallet-setting/components/xfj/components/xfj-edit-table.vue
new file mode 100644
index 0000000..c154e79
--- /dev/null
+++ b/src/views/wallet/wallet-setting/components/xfj/components/xfj-edit-table.vue
@@ -0,0 +1,99 @@
+
+
+
{{ title }}配置
+
+
+
+
+ {{ row.name }}
+
+
+
+
+ {{ displayYuanToYuan(row.basePrice) }}
+
+
+
+
+
+
+
+ {{ row.extraPer }}倍
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 用户在
+ {{ title }}
+ 购买
+ 所有菜品
+ (不包含特色菜)
+ 超过
+ {{ displayYuanToYuan(row.basePrice) }}
+ 超过部分
+
+
+ 所有菜品
+ (不包含特色菜)
+
+
将收取
+
{{ row.extraPer }}倍
+
额外金额
+
+
+ 不额外收费
+
+
+
+
+
+
+
+
diff --git a/src/views/wallet/wallet-setting/components/xfj/index.vue b/src/views/wallet/wallet-setting/components/xfj/index.vue
new file mode 100644
index 0000000..a8d75ed
--- /dev/null
+++ b/src/views/wallet/wallet-setting/components/xfj/index.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/wallet/wallet-setting/index.vue b/src/views/wallet/wallet-setting/index.vue
index c536aa1..eaea42c 100644
--- a/src/views/wallet/wallet-setting/index.vue
+++ b/src/views/wallet/wallet-setting/index.vue
@@ -1,14 +1,12 @@
@@ -31,6 +30,7 @@ const ExtraPrice = defineAsyncComponent(() => import("./components/extra-price/i
const ThirdZy = defineAsyncComponent(() => import("./components/third-zy/index.vue"))
const UserSetting = defineAsyncComponent(() => import("./components/user/index.vue"))
const WalletRecharge = defineAsyncComponent(() => import("./components/wallet-recharge/index.vue"))
+const Xfj = defineAsyncComponent(() => import("./components/xfj/index.vue"))
const data = {
tabList: [
@@ -42,8 +42,22 @@ const data = {
{ id: 60, label: "正元同步配置" },
{ id: 70, label: "用户同步配置" },
{ id: 80, label: "批量申请/扣款发票配置" },
+ { id: 90, label: "消费机配置" },
],
}
const activeName = ref(data.tabList[0].id)
+
+