Compare commits
24 Commits
ca7077caf6
...
f341ba4d3c
Author | SHA1 | Date | |
---|---|---|---|
|
f341ba4d3c | ||
|
3938a78db2 | ||
|
2871961582 | ||
|
a9ca98036c | ||
|
922b9edfcb | ||
|
c825216063 | ||
|
f70c8dcee2 | ||
|
db3b8285d1 | ||
|
d66664b3d4 | ||
|
a0ecfed693 | ||
|
8eee46d85c | ||
|
3f3faaca9b | ||
|
e83df37616 | ||
|
d883b860ac | ||
|
be978f2e9f | ||
|
663c8b3824 | ||
|
05e6c2c2df | ||
|
057a980982 | ||
|
7883e3161d | ||
|
0275cb6dd7 | ||
|
e1d2305ddd | ||
|
79f011fe17 | ||
|
1ce3343578 | ||
|
1cf286b057 |
5
.env
5
.env
@ -18,3 +18,8 @@ VITE_APP_DOCALERT_ENABLE=true
|
|||||||
|
|
||||||
# 百度统计
|
# 百度统计
|
||||||
VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc
|
VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc
|
||||||
|
|
||||||
|
# 默认账户密码
|
||||||
|
VITE_APP_DEFAULT_LOGIN_TENANT = 芋道源码
|
||||||
|
VITE_APP_DEFAULT_LOGIN_USERNAME = admin
|
||||||
|
VITE_APP_DEFAULT_LOGIN_PASSWORD = admin123
|
||||||
|
21
README.md
21
README.md
@ -54,17 +54,16 @@
|
|||||||
|
|
||||||
推荐 VS Code 开发,配合插件如下:
|
推荐 VS Code 开发,配合插件如下:
|
||||||
|
|
||||||
| 插件名 | 功能 |
|
| 插件名 | 功能 |
|
||||||
|-------------------------------|--------------------------|
|
|-------------------------------|---------------------|
|
||||||
| TypeScript Vue Plugin (Volar) | 用于 TypeScript 的 Vue 插件 |
|
| Vue - Official | Vue 与 TypeScript 支持 |
|
||||||
| Vue Language Features (Volar) | Vue3.0 语法支持 |
|
| unocss | unocss for vscode |
|
||||||
| unocss | unocss for vscode |
|
| Iconify IntelliSense | Iconify 预览和搜索 |
|
||||||
| Iconify IntelliSense | Iconify 预览和搜索 |
|
| i18n Ally | 国际化智能提示 |
|
||||||
| i18n Ally | 国际化智能提示 |
|
| Stylelint | Css 格式化 |
|
||||||
| Stylelint | Css 格式化 |
|
| Prettier | 代码格式化 |
|
||||||
| Prettier | 代码格式化 |
|
| ESLint | 脚本代码检查 |
|
||||||
| ESLint | 脚本代码检查 |
|
| DotENV | env 文件高亮 |
|
||||||
| DotENV | env 文件高亮 |
|
|
||||||
|
|
||||||
## 🔥 后端架构
|
## 🔥 后端架构
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ const updateFlowType = (flowType) => {
|
|||||||
conditionExpression: null
|
conditionExpression: null
|
||||||
})
|
})
|
||||||
bpmnInstances().modeling.updateProperties(toRaw(bpmnElementSource.value), {
|
bpmnInstances().modeling.updateProperties(toRaw(bpmnElementSource.value), {
|
||||||
default: bpmnElement.value
|
default: toRaw(bpmnElement.value)
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -109,6 +109,14 @@ export const PayChannelEnum = {
|
|||||||
code: 'wx_app',
|
code: 'wx_app',
|
||||||
name: '微信 APP 支付'
|
name: '微信 APP 支付'
|
||||||
},
|
},
|
||||||
|
WX_NATIVE: {
|
||||||
|
code: 'wx_native',
|
||||||
|
name: '微信 Native 支付'
|
||||||
|
},
|
||||||
|
WX_WAP: {
|
||||||
|
code: 'wx_wap',
|
||||||
|
name: '微信 WAP 网站支付'
|
||||||
|
},
|
||||||
WX_BAR: {
|
WX_BAR: {
|
||||||
code: 'wx_bar',
|
code: 'wx_bar',
|
||||||
name: '微信条码支付'
|
name: '微信条码支付'
|
||||||
|
@ -313,7 +313,7 @@ export const fenToYuan = (price: string | number): string => {
|
|||||||
*/
|
*/
|
||||||
export const calculateRelativeRate = (value?: number, reference?: number) => {
|
export const calculateRelativeRate = (value?: number, reference?: number) => {
|
||||||
// 防止除0
|
// 防止除0
|
||||||
if (!reference) return 0
|
if (!reference || reference == 0) return 0
|
||||||
|
|
||||||
return ((100 * ((value || 0) - reference)) / reference).toFixed(0)
|
return ((100 * ((value || 0) - reference)) / reference).toFixed(0)
|
||||||
}
|
}
|
||||||
|
@ -184,9 +184,9 @@ const loginData = reactive({
|
|||||||
captchaEnable: import.meta.env.VITE_APP_CAPTCHA_ENABLE,
|
captchaEnable: import.meta.env.VITE_APP_CAPTCHA_ENABLE,
|
||||||
tenantEnable: import.meta.env.VITE_APP_TENANT_ENABLE,
|
tenantEnable: import.meta.env.VITE_APP_TENANT_ENABLE,
|
||||||
loginForm: {
|
loginForm: {
|
||||||
tenantName: '芋道源码',
|
tenantName: import.meta.env.VITE_APP_DEFAULT_LOGIN_TENANT || '',
|
||||||
username: 'admin',
|
username: import.meta.env.VITE_APP_DEFAULT_LOGIN_USERNAME || '',
|
||||||
password: 'admin123',
|
password: import.meta.env.VITE_APP_DEFAULT_LOGIN_PASSWORD || '',
|
||||||
captchaVerification: '',
|
captchaVerification: '',
|
||||||
rememberMe: true // 默认记录我。如果不需要,可手动修改
|
rememberMe: true // 默认记录我。如果不需要,可手动修改
|
||||||
}
|
}
|
||||||
|
@ -36,9 +36,9 @@
|
|||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="审批结果" prop="result">
|
<el-form-item label="审批结果" prop="status">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.result"
|
v-model="queryParams.status"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请选择审批结果"
|
placeholder="请选择审批结果"
|
||||||
@ -81,7 +81,7 @@
|
|||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list">
|
<el-table v-loading="loading" :data="list">
|
||||||
<el-table-column align="center" label="申请编号" prop="id" />
|
<el-table-column align="center" label="申请编号" prop="id" />
|
||||||
<el-table-column align="center" label="状态" prop="result">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value="scope.row.status" />
|
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value="scope.row.status" />
|
||||||
</template>
|
</template>
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
ref="permissionListRef"
|
ref="permissionListRef"
|
||||||
:biz-id="contract.id!"
|
:biz-id="contract.id!"
|
||||||
:biz-type="BizTypeEnum.CRM_CONTRACT"
|
:biz-type="BizTypeEnum.CRM_CONTRACT"
|
||||||
:show-action="false"
|
:show-action="!permissionListRef?.isPool || false"
|
||||||
@quit-team="close"
|
@quit-team="close"
|
||||||
/>
|
/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
@ -186,7 +186,7 @@ const getOrderCountTrendComparison = async (
|
|||||||
dates.push(item.value.date)
|
dates.push(item.value.date)
|
||||||
if (series.length === 2) {
|
if (series.length === 2) {
|
||||||
series[0].data.push(fenToYuan(item?.value?.orderPayPrice || 0)) // 当前金额
|
series[0].data.push(fenToYuan(item?.value?.orderPayPrice || 0)) // 当前金额
|
||||||
series[1].data.push(fenToYuan(item?.value?.orderPayCount || 0)) // 当前数量
|
series[1].data.push(item?.value?.orderPayCount || 0) // 当前数量
|
||||||
} else {
|
} else {
|
||||||
series[0].data.push(fenToYuan(item?.reference?.orderPayPrice || 0)) // 对照金额
|
series[0].data.push(fenToYuan(item?.reference?.orderPayPrice || 0)) // 对照金额
|
||||||
series[1].data.push(fenToYuan(item?.value?.orderPayPrice || 0)) // 当前金额
|
series[1].data.push(fenToYuan(item?.value?.orderPayPrice || 0)) // 当前金额
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
:model="formData"
|
:model="formData"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
label-width="80px"
|
label-width="80px"
|
||||||
|
@keydown.enter.prevent="submitForm"
|
||||||
>
|
>
|
||||||
<el-form-item label="属性名称" prop="name">
|
<el-form-item label="属性名称" prop="name">
|
||||||
<el-input v-model="formData.name" placeholder="请输入名称" />
|
<el-input v-model="formData.name" placeholder="请输入名称" />
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
<el-table-column label="appId" align="center" prop="appId" width="180" />
|
<el-table-column label="appId" align="center" prop="appId" width="180" />
|
||||||
<el-table-column label="服务器地址(URL)" align="center" prop="appId" width="360">
|
<el-table-column label="服务器地址(URL)" align="center" prop="appId" width="360">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ 'http://服务端地址/mp/open/' + scope.row.appId }}
|
{{ 'http://服务端地址/admin-api/mp/open/' + scope.row.appId }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="二维码" align="center" prop="qrCodeUrl">
|
<el-table-column label="二维码" align="center" prop="qrCodeUrl">
|
||||||
|
@ -80,7 +80,8 @@
|
|||||||
:http-request="keyContentUpload"
|
:http-request="keyContentUpload"
|
||||||
>
|
>
|
||||||
<el-button type="primary">
|
<el-button type="primary">
|
||||||
<Icon icon="ep:upload" class="mr-5px" /> 点击上传
|
<Icon icon="ep:upload" class="mr-5px" />
|
||||||
|
点击上传
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -120,7 +121,8 @@
|
|||||||
:http-request="privateKeyContentUpload"
|
:http-request="privateKeyContentUpload"
|
||||||
>
|
>
|
||||||
<el-button type="primary">
|
<el-button type="primary">
|
||||||
<Icon icon="ep:upload" class="mr-5px" /> 点击上传
|
<Icon icon="ep:upload" class="mr-5px" />
|
||||||
|
点击上传
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -148,7 +150,8 @@
|
|||||||
:http-request="privateCertContentUpload"
|
:http-request="privateCertContentUpload"
|
||||||
>
|
>
|
||||||
<el-button type="primary">
|
<el-button type="primary">
|
||||||
<Icon icon="ep:upload" class="mr-5px" /> 点击上传
|
<Icon icon="ep:upload" class="mr-5px" />
|
||||||
|
点击上传
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -310,7 +313,7 @@ const pemFileBeforeUpload = (file) => {
|
|||||||
/**
|
/**
|
||||||
* 读取 apiclient_key.pem 到 privateKeyContent 字段
|
* 读取 apiclient_key.pem 到 privateKeyContent 字段
|
||||||
*/
|
*/
|
||||||
const privateKeyContentUpload = (event) => {
|
const privateKeyContentUpload = async (event) => {
|
||||||
const readFile = new FileReader()
|
const readFile = new FileReader()
|
||||||
readFile.onload = (e: any) => {
|
readFile.onload = (e: any) => {
|
||||||
formData.value.config.privateKeyContent = e.target.result
|
formData.value.config.privateKeyContent = e.target.result
|
||||||
@ -321,7 +324,7 @@ const privateKeyContentUpload = (event) => {
|
|||||||
/**
|
/**
|
||||||
* 读取 apiclient_cert.pem 到 privateCertContent 字段
|
* 读取 apiclient_cert.pem 到 privateCertContent 字段
|
||||||
*/
|
*/
|
||||||
const privateCertContentUpload = (event) => {
|
const privateCertContentUpload = async (event) => {
|
||||||
const readFile = new FileReader()
|
const readFile = new FileReader()
|
||||||
readFile.onload = (e: any) => {
|
readFile.onload = (e: any) => {
|
||||||
formData.value.config.privateCertContent = e.target.result
|
formData.value.config.privateCertContent = e.target.result
|
||||||
@ -332,7 +335,7 @@ const privateCertContentUpload = (event) => {
|
|||||||
/**
|
/**
|
||||||
* 读取 apiclient_cert.p12 到 keyContent 字段
|
* 读取 apiclient_cert.p12 到 keyContent 字段
|
||||||
*/
|
*/
|
||||||
const keyContentUpload = (event) => {
|
const keyContentUpload = async (event) => {
|
||||||
const readFile = new FileReader()
|
const readFile = new FileReader()
|
||||||
readFile.onload = (e: any) => {
|
readFile.onload = (e: any) => {
|
||||||
formData.value.config.keyContent = e.target.result.split(',')[1]
|
formData.value.config.keyContent = e.target.result.split(',')[1]
|
||||||
|
@ -45,10 +45,17 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" />搜索 </el-button>
|
<el-button @click="handleQuery">
|
||||||
<el-button @click="resetQuery"> <Icon icon="ep:refresh" class="mr-5px" />重置 </el-button>
|
<Icon icon="ep:search" class="mr-5px" />
|
||||||
|
搜索
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="resetQuery">
|
||||||
|
<Icon icon="ep:refresh" class="mr-5px" />
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['pay:app:create']">
|
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['pay:app:create']">
|
||||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
<Icon icon="ep:plus" class="mr-5px" />
|
||||||
|
新增
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@ -70,12 +77,17 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="支付宝配置" align="center">
|
<el-table-column label="支付宝配置" align="center">
|
||||||
<el-table-column :label="PayChannelEnum.ALIPAY_APP.name" align="center">
|
<el-table-column
|
||||||
|
:label="channel.name"
|
||||||
|
align="center"
|
||||||
|
v-for="channel in alipayChannels"
|
||||||
|
:key="channel.code"
|
||||||
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
type="success"
|
type="success"
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.ALIPAY_APP.code)"
|
v-if="isChannelExists(scope.row.channelCodes, channel.code)"
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_APP.code)"
|
@click="openChannelForm(scope.row, channel.code)"
|
||||||
circle
|
circle
|
||||||
>
|
>
|
||||||
<Icon icon="ep:check" />
|
<Icon icon="ep:check" />
|
||||||
@ -84,87 +96,7 @@
|
|||||||
v-else
|
v-else
|
||||||
type="danger"
|
type="danger"
|
||||||
circle
|
circle
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_APP.code)"
|
@click="openChannelForm(scope.row, channel.code)"
|
||||||
>
|
|
||||||
<Icon icon="ep:close" />
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :label="PayChannelEnum.ALIPAY_PC.name" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
type="success"
|
|
||||||
circle
|
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.ALIPAY_PC.code)"
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_PC.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:check" />
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
circle
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_PC.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:close" />
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :label="PayChannelEnum.ALIPAY_WAP.name" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
type="success"
|
|
||||||
circle
|
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.ALIPAY_WAP.code)"
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_WAP.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:check" />
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
circle
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_WAP.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:close" />
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :label="PayChannelEnum.ALIPAY_QR.name" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
type="success"
|
|
||||||
circle
|
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.ALIPAY_QR.code)"
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_QR.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:check" />
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
circle
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_QR.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:close" />
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :label="PayChannelEnum.ALIPAY_BAR.name" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
type="success"
|
|
||||||
circle
|
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.ALIPAY_BAR.code)"
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_BAR.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:check" />
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
circle
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.ALIPAY_BAR.code)"
|
|
||||||
>
|
>
|
||||||
<Icon icon="ep:close" />
|
<Icon icon="ep:close" />
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -172,13 +104,18 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="微信配置" align="center">
|
<el-table-column label="微信配置" align="center">
|
||||||
<el-table-column :label="PayChannelEnum.WX_LITE.name" align="center">
|
<el-table-column
|
||||||
|
:label="channel.name"
|
||||||
|
align="center"
|
||||||
|
v-for="channel in wxChannels"
|
||||||
|
:key="channel.code"
|
||||||
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
type="success"
|
type="success"
|
||||||
|
v-if="isChannelExists(scope.row.channelCodes, channel.code)"
|
||||||
|
@click="openChannelForm(scope.row, channel.code)"
|
||||||
circle
|
circle
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.WX_LITE.code)"
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.WX_LITE.code)"
|
|
||||||
>
|
>
|
||||||
<Icon icon="ep:check" />
|
<Icon icon="ep:check" />
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -186,67 +123,7 @@
|
|||||||
v-else
|
v-else
|
||||||
type="danger"
|
type="danger"
|
||||||
circle
|
circle
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.WX_LITE.code)"
|
@click="openChannelForm(scope.row, channel.code)"
|
||||||
>
|
|
||||||
<Icon icon="ep:close" />
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :label="PayChannelEnum.WX_PUB.name" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
type="success"
|
|
||||||
circle
|
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.WX_PUB.code)"
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.WX_PUB.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:check" />
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
circle
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.WX_PUB.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:close" />
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :label="PayChannelEnum.WX_APP.name" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
type="success"
|
|
||||||
circle
|
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.WX_APP.code)"
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.WX_APP.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:check" />
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
circle
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.WX_APP.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:close" />
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column :label="PayChannelEnum.WX_BAR.name" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
type="success"
|
|
||||||
circle
|
|
||||||
v-if="isChannelExists(scope.row.channelCodes, PayChannelEnum.WX_BAR.code)"
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.WX_BAR.code)"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:check" />
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
circle
|
|
||||||
@click="openChannelForm(scope.row, PayChannelEnum.WX_BAR.code)"
|
|
||||||
>
|
>
|
||||||
<Icon icon="ep:close" />
|
<Icon icon="ep:close" />
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -338,12 +215,11 @@
|
|||||||
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
||||||
import * as AppApi from '@/api/pay/app'
|
import * as AppApi from '@/api/pay/app'
|
||||||
import AppForm from './components/AppForm.vue'
|
import AppForm from './components/AppForm.vue'
|
||||||
import { PayChannelEnum } from '@/utils/constants'
|
import { CommonStatusEnum, PayChannelEnum } from '@/utils/constants'
|
||||||
import AlipayChannelForm from './components/channel/AlipayChannelForm.vue'
|
import AlipayChannelForm from './components/channel/AlipayChannelForm.vue'
|
||||||
import WeixinChannelForm from './components/channel/WeixinChannelForm.vue'
|
import WeixinChannelForm from './components/channel/WeixinChannelForm.vue'
|
||||||
import MockChannelForm from './components/channel/MockChannelForm.vue'
|
import MockChannelForm from './components/channel/MockChannelForm.vue'
|
||||||
import WalletChannelForm from './components/channel/WalletChannelForm.vue'
|
import WalletChannelForm from './components/channel/WalletChannelForm.vue'
|
||||||
import { CommonStatusEnum } from '@/utils/constants'
|
|
||||||
|
|
||||||
defineOptions({ name: 'PayApp' })
|
defineOptions({ name: 'PayApp' })
|
||||||
|
|
||||||
@ -365,6 +241,23 @@ const queryParams = reactive({
|
|||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
|
|
||||||
|
const alipayChannels = [
|
||||||
|
PayChannelEnum.ALIPAY_APP,
|
||||||
|
PayChannelEnum.ALIPAY_PC,
|
||||||
|
PayChannelEnum.ALIPAY_WAP,
|
||||||
|
PayChannelEnum.ALIPAY_QR,
|
||||||
|
PayChannelEnum.ALIPAY_BAR
|
||||||
|
]
|
||||||
|
|
||||||
|
const wxChannels = [
|
||||||
|
PayChannelEnum.WX_LITE,
|
||||||
|
PayChannelEnum.WX_PUB,
|
||||||
|
PayChannelEnum.WX_APP,
|
||||||
|
PayChannelEnum.WX_NATIVE,
|
||||||
|
PayChannelEnum.WX_WAP,
|
||||||
|
PayChannelEnum.WX_BAR,
|
||||||
|
]
|
||||||
|
|
||||||
/** 查询列表 */
|
/** 查询列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
|
@ -147,7 +147,7 @@ const handlePay = (row: any) => {
|
|||||||
name: 'PayCashier',
|
name: 'PayCashier',
|
||||||
query: {
|
query: {
|
||||||
id: row.payOrderId,
|
id: row.payOrderId,
|
||||||
returnUrl: encodeURIComponent('/pay/demo-order?id=' + row.id)
|
returnUrl: encodeURIComponent('/pay/demo/order?id=' + row.id)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
3
types/env.d.ts
vendored
3
types/env.d.ts
vendored
@ -14,6 +14,9 @@ interface ImportMetaEnv {
|
|||||||
readonly VITE_DEV: string
|
readonly VITE_DEV: string
|
||||||
readonly VITE_APP_CAPTCHA_ENABLE: string
|
readonly VITE_APP_CAPTCHA_ENABLE: string
|
||||||
readonly VITE_APP_TENANT_ENABLE: string
|
readonly VITE_APP_TENANT_ENABLE: string
|
||||||
|
readonly VITE_APP_DEFAULT_LOGIN_TENANT: string
|
||||||
|
readonly VITE_APP_DEFAULT_LOGIN_USERNAME: string
|
||||||
|
readonly VITE_APP_DEFAULT_LOGIN_PASSWORD: string
|
||||||
readonly VITE_APP_DOCALERT_ENABLE: string
|
readonly VITE_APP_DOCALERT_ENABLE: string
|
||||||
readonly VITE_BASE_URL: string
|
readonly VITE_BASE_URL: string
|
||||||
readonly VITE_UPLOAD_URL: string
|
readonly VITE_UPLOAD_URL: string
|
||||||
|
Loading…
Reference in New Issue
Block a user