Browse Source

Merge branch 'milestone-20250913-现金管理' of http://39.101.133.168:8807/huangqizhen/gold-vue into milestone-20250913-现金管理

zhangyong/milestone-20250913-现金管理
ZhangYong 1 month ago
parent
commit
f10c1ba990
  1. 29
      src/views/home.vue
  2. 144
      src/views/moneyManage/executor/executor.vue
  3. 274
      src/views/moneyManage/refundDetail/refundCharge.vue
  4. 217
      src/views/moneyManage/refundDetail/refundFinance.vue
  5. 234
      src/views/moneyManage/refundDetail/refundHeader.vue
  6. 133
      src/views/moneyManage/refundDetail/refundService.vue

29
src/views/home.vue

@ -10,6 +10,29 @@ import { storeToRefs } from 'pinia'
import { filterMenu, getRoutePath } from "@/utils/menuUtils.js"; import { filterMenu, getRoutePath } from "@/utils/menuUtils.js";
import SettingsIcon from '@/assets/blue.png'; import SettingsIcon from '@/assets/blue.png';
// 使import.meta.globSVG
const icons = import.meta.glob('@/assets/SvgIcons/*.svg', { eager: true })
//
const getIconPath = (menuName) => {
// key
const possibleKeys = [
`@/assets/SvgIcons/${menuName}.svg`,
`./SvgIcons/${menuName}.svg`,
`/src/assets/SvgIcons/${menuName}.svg`
]
// icons
for (const key of possibleKeys) {
if (icons[key]) {
const iconModule = icons[key]
// default
return iconModule.default || iconModule
}
}
}
// ----------------------------------- // -----------------------------------
@ -87,7 +110,6 @@ function findBestMatch(menuList, path) {
return bestMatch || path // fallback return bestMatch || path // fallback
} }
// require
@ -156,7 +178,7 @@ function logout() {
<el-sub-menu v-if="menu.children && menu.children.length > 0" :index="menu.id.toString()"> <el-sub-menu v-if="menu.children && menu.children.length > 0" :index="menu.id.toString()">
<template #title> <template #title>
<img <img
:src="`/src/assets/SvgIcons/${menu.menuName}.svg`"
:src="getIconPath(menu.menuName)"
:alt="`${menu.menuName}图标`" :alt="`${menu.menuName}图标`"
style="width: 4vh; height: 4vh; margin-right: 4px;" style="width: 4vh; height: 4vh; margin-right: 4px;"
> >
@ -197,7 +219,7 @@ function logout() {
<!-- 无子菜单的一级菜单 --> <!-- 无子菜单的一级菜单 -->
<el-menu-item v-else :index="getRoutePath(menu)"> <el-menu-item v-else :index="getRoutePath(menu)">
<img <img
:src="`@/assets/SvgIcons/${menu.menuName}.svg`"
:src="getIconPath(menu.menuName)"
:alt="`${menu.menuName}图标`" :alt="`${menu.menuName}图标`"
style="width: 4vh; height: 4vh; margin-right: 4px;" style="width: 4vh; height: 4vh; margin-right: 4px;"
> >
@ -211,6 +233,7 @@ function logout() {
<div class="settings-container"> <div class="settings-container">
<el-dropdown placement="top-start"> <el-dropdown placement="top-start">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<!-- 暂时使用静态路径确保设置图标正常显示 -->
<img src="@/assets/SvgIcons/设置.svg" alt="设置" style="width: 4vh; height: 4vh" /> <img src="@/assets/SvgIcons/设置.svg" alt="设置" style="width: 4vh; height: 4vh" />
<span>设置中心</span> <span>设置中心</span>
<el-icon class="arrow-icon"> <el-icon class="arrow-icon">

144
src/views/moneyManage/executor/executor.vue

@ -15,12 +15,12 @@
</div> </div>
<div class="search"> <div class="search">
<el-text size="large" style="width:4vw;">产品名称</el-text> <el-text size="large" style="width:4vw;">产品名称</el-text>
<el-input v-model="searchForm.goodsName" placeholder="请输入产品名称" style="width:9vw;" clearable />
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" />
</div> </div>
<div class="search"> <div class="search">
<el-text size="large" style="width:4vw;">退款币种</el-text> <el-text size="large" style="width:4vw;">退款币种</el-text>
<el-select v-model="searchForm.payType" style="width:9vw;"> <el-select v-model="searchForm.payType" style="width:9vw;">
<el-option v-for="item in payments" :key="item" :label="item" :value="item" />
<el-option v-for="item in currencies" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
</div> </div>
@ -47,8 +47,8 @@
<div> <div>
<el-button type="primary" @click="getRefund">查询</el-button> <el-button type="primary" @click="getRefund">查询</el-button>
<el-button type="editRow" @click="reset">重置</el-button> <el-button type="editRow" @click="reset">重置</el-button>
<el-button type="warning">导出excel</el-button>
<el-button type="primary">查看导出列表</el-button>
<!-- <el-button type="warning">导出excel</el-button>
<el-button type="primary">查看导出列表</el-button> -->
</div> </div>
</div> </div>
</el-card> </el-card>
@ -58,7 +58,7 @@
<el-table-column type="index" label="序号" width="60" fixed="left" /> <el-table-column type="index" label="序号" width="60" fixed="left" />
<el-table-column prop="name" label="Homily ID" width="120" fixed="left" /> <el-table-column prop="name" label="Homily ID" width="120" fixed="left" />
<el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip /> <el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="market" label="所属地区" width="120" />
<el-table-column prop="goodsName" label="产品名称" width="120" /> <el-table-column prop="goodsName" label="产品名称" width="120" />
<el-table-column prop="goodNum" label="产品数量" width="120" /> <el-table-column prop="goodNum" label="产品数量" width="120" />
<el-table-column prop="refundType" label="退款方式" width="120"> <el-table-column prop="refundType" label="退款方式" width="120">
@ -287,8 +287,9 @@ const submitRefund = async function () {
refundCurrency: editForm.value.refundCurrency, refundCurrency: editForm.value.refundCurrency,
refundAmount: editForm.value.refundAmount, refundAmount: editForm.value.refundAmount,
refundChannels: editForm.value.refundChannels, refundChannels: editForm.value.refundChannels,
status: 41
status: 41,
auditId: editRow.value.auditId,
executor: adminData.value.account
} }
const result = await API({ const result = await API({
url: '/Money/executor', url: '/Money/executor',
@ -387,6 +388,7 @@ const channelOptions = ref([{
label: 'Ipay88-Link平台' label: 'Ipay88-Link平台'
} }
]) ])
const currencies = ref([ const currencies = ref([
{ {
value: '新币', value: '新币',
@ -453,7 +455,135 @@ const customUpload = async (options) => {
ElMessage.error(`上传失败: ${error.msg || error.message || '网络异常'}`) ElMessage.error(`上传失败: ${error.msg || error.message || '网络异常'}`)
} }
} }
const productList = [
{
"value": "金币产品",
"label": "金币产品",
"children": [
{
"value": "金币充值",
"label": "金币充值",
}
]
},
{
"value": "软件产品",
"label": "软件产品",
"children": [
{
"value": "美股",
"label": "美股",
"children": [
{
"value": "美股软件",
"label": "美股软件"
}
]
},
{
"value": "港股",
"label": "港股",
"children": [
{
"value": "港股软件",
"label": "港股软件"
}
]
},
{
"value": "A股",
"label": "A股",
"children": [
{
"value": "A股软件",
"label": "A股软件"
}
]
},
{
"value": "新加坡股",
"label": "新加坡股",
"children": [
{
"value": "新加坡股软件",
"label": "新加坡股软件"
}
]
},
{
"value": "马股",
"label": "马股",
"children": [
{
"value": "马股软件",
"label": "马股软件"
}
]
},
{
"value": "日本股",
"label": "日本股",
"children": [
{
"value": "日本股软件",
"label": "日本股软件"
}
]
},
{
"value": "泰股",
"label": "泰股",
"children": [
{
"value": "泰股软件",
"label": "泰股软件"
}
]
},
{
"value": "越南股",
"label": "越南股",
"children": [
{
"value": "越南股软件",
"label": "越南股软件"
}
]
},
{
"value": "印尼股",
"label": "印尼股",
"children": [
{
"value": "印尼股软件",
"label": "印尼股软件"
}
]
},
{
"value": "韩国股",
"label": "韩国股",
"children": [
{
"value": "韩国股软件",
"label": "韩国股软件"
}
]
},
{
"value": "台湾股",
"label": "台湾股",
"children": [
{
"value": "台湾股软件",
"label": "台湾股软件"
}
]
}
]
},
]
onMounted(() => { onMounted(() => {
console.log('???????????????????', adminData.value) console.log('???????????????????', adminData.value)
getRefund() getRefund()

274
src/views/moneyManage/refundDetail/refundCharge.vue

@ -16,7 +16,7 @@
</div> </div>
<div class="item1"> <div class="item1">
<el-text size="large" style="width:4vw;">产品名称</el-text> <el-text size="large" style="width:4vw;">产品名称</el-text>
<el-input v-model="searchForm.goodsName" placeholder="请输入产品名称" style="width:9vw;" clearable />
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" />
</div> </div>
<div class="item1"> <div class="item1">
<el-text size="large" style="width:4vw;">订单状态</el-text> <el-text size="large" style="width:4vw;">订单状态</el-text>
@ -35,7 +35,8 @@
<div class="item2"> <div class="item2">
<el-text size="large" style="width:4vw;">支付方式</el-text> <el-text size="large" style="width:4vw;">支付方式</el-text>
<el-select v-model="searchForm.payType" style="width:9vw;"> <el-select v-model="searchForm.payType" style="width:9vw;">
<el-option v-for="item in channelOptions" :key="item.value" :label="item.label" :value="item.value" />
<el-option v-for="item in channelOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select> </el-select>
</div> </div>
<div class="item2" style="width: 28.5vw;"> <div class="item2" style="width: 28.5vw;">
@ -58,7 +59,7 @@
<el-table-column type="index" label="序号" width="60" fixed="left" /> <el-table-column type="index" label="序号" width="60" fixed="left" />
<el-table-column prop="name" label="Homily ID" width="120" fixed="left" /> <el-table-column prop="name" label="Homily ID" width="120" fixed="left" />
<el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip /> <el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="market" label="所属地区" width="120" />
<el-table-column prop="goodsName" label="产品名称" width="120" /> <el-table-column prop="goodsName" label="产品名称" width="120" />
<el-table-column prop="goodNum" label="产品数量" width="120" /> <el-table-column prop="goodNum" label="产品数量" width="120" />
<el-table-column prop="refundType" label="退款方式" width="120"> <el-table-column prop="refundType" label="退款方式" width="120">
@ -66,22 +67,22 @@
{{ scope.row.refundType === 1 ? '部分退款' : '全部退款' }} {{ scope.row.refundType === 1 ? '部分退款' : '全部退款' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="submitterName" label="提交人" width="120" />
<el-table-column prop="areaServise" label="提交人" width="120" />
<el-table-column prop="refundReason" label="退款理由" width="120" /> <el-table-column prop="refundReason" label="退款理由" width="120" />
<el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip /> <el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip />
<el-table-column prop="status" label="订单状态" width="120"> <el-table-column prop="status" label="订单状态" width="120">
<template #default="scope"> <template #default="scope">
{{ {{
[20,30, 40].includes(scope.row.status) ? '审核中' :
[22,32].includes(scope.row.status) ? '审核驳回' :
scope.row.status === 41 ? '退款完成' : scope.row.status
[20, 30, 40].includes(scope.row.status) ? '审核中' :
[22, 32].includes(scope.row.status) ? '审核驳回' :
scope.row.status === 41 ? '退款完成' : scope.row.status
}} }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="operation" label="操作" fixed="right" width="100px" >
<el-table-column prop="operation" label="操作" fixed="right" width="100px">
<template #default="scope"> <template #default="scope">
<div class="operation"> <div class="operation">
<el-button v-if="scope.row.status === 20" type="primary" text @click="showAudit(scope.row)">
<el-button v-if="scope.row.status === 20" type="primary" text @click="showAudit(scope.row)">
审核 审核
</el-button> </el-button>
<el-button v-else type="primary" text @click="showStep(scope.row)"> <el-button v-else type="primary" text @click="showStep(scope.row)">
@ -145,7 +146,8 @@
</div> </div>
<div class="center-item"> <div class="center-item">
<el-text style="width:4vw;">转账凭证</el-text> <el-text style="width:4vw;">转账凭证</el-text>
<img v-if="auditRow.voucher" :src="auditRow.voucher" style="width: 100%; height: 100%; object-fit: cover;">
<img v-if="auditRow.voucher" :src="auditRow.voucher"
style="width: 80px; height: 80px; object-fit: cover;">
<div v-else> <div v-else>
无转账凭证 无转账凭证
</div> </div>
@ -220,7 +222,7 @@
<el-step title="提交人"> <el-step title="提交人">
<template #title> <template #title>
<div>提交人<br>你是死的</div>
<div>提交人<br>{{ submitterName }}</div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 1" src="@/assets/images/待审核.png" alt="步骤图标" <img v-if="currentStep === 1" src="@/assets/images/待审核.png" alt="步骤图标"
@ -230,7 +232,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="地区财务">
<el-step>
<template #title>
<div>地区财务<br>{{ areaFinance }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 2" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 2" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -241,7 +246,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="地区负责人">
<el-step>
<template #title>
<div>地区负责人<br>{{ areaCharge }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -252,7 +260,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="总部财务">
<el-step>
<template #title>
<div>总部财务<br>{{ headFinance }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 4" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 4" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -263,7 +274,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="指定执行人">
<el-step>
<template #title>
<div>指定执行人<br>{{ executor }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -294,7 +308,7 @@ import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menu
const currentStep = ref(0)// const currentStep = ref(0)//
const searchForm = ref({ const searchForm = ref({
jwcode: '', jwcode: '',
markets:[]
markets: []
}) })
const addForm = ref({ const addForm = ref({
remark: '' remark: ''
@ -310,6 +324,11 @@ const pagination = ref({
const showAudit2 = ref(false) const showAudit2 = ref(false)
const tableData = ref([]) const tableData = ref([])
const showSteps = ref(false) const showSteps = ref(false)
const submitterName = ref('')//
const areaFinance = ref('')//
const areaCharge = ref('')//
const headFinance = ref('')//
const executor = ref('')//
const uploadRef = ref(null) const uploadRef = ref(null)
const currencies = ref([ const currencies = ref([
{ {
@ -399,22 +418,22 @@ const channelOptions = ref([{
} }
]) ])
const statusList = ref([ const statusList = ref([
{
value: 20,
label: '待审核',
},
{
value: '审核通过',
label: '审核通过'
},
{
value: '审核驳回',
label: '审核驳回'
},
{
value: 41,
label: '退款完成'
}
{
value: 20,
label: '待审核',
},
{
value: '审核通过',
label: '审核通过'
},
{
value: '审核驳回',
label: '审核驳回'
},
{
value: 41,
label: '退款完成'
}
]) ])
// //
const getRefund = async function () { const getRefund = async function () {
@ -423,11 +442,11 @@ const getRefund = async function () {
return return
} }
try { try {
searchForm.value.statuses = [20,22,30,32,40,41] //
if(searchForm.value.statuses === '审核通过'){
statuses = [30,40]
}else if(searchForm.value.statuses === '审核驳回'){
statuses = [22,32]
searchForm.value.statuses = [20, 22, 30, 32, 40, 41] //
if (searchForm.value.statuses === '审核通过') {
statuses = [30, 40]
} else if (searchForm.value.statuses === '审核驳回') {
statuses = [22, 32]
} }
const params = { const params = {
pageNum: pagination.value.pageNum, pageNum: pagination.value.pageNum,
@ -471,7 +490,8 @@ const handlePass = async function () {
id: auditRow.value.id, id: auditRow.value.id,
status: 30, status: 30,
rejectReason: addForm.value.remark, rejectReason: addForm.value.remark,
adminId: adminData.value.id
areaCharge: adminData.value.adminName,
auditId: auditRow.value.auditId
} }
const result = await API({ const result = await API({
url: '/Money/review', url: '/Money/review',
@ -497,7 +517,8 @@ const handleReject = async function () {
id: auditRow.value.id, id: auditRow.value.id,
status: 22, status: 22,
rejectReason: addForm.value.remark, rejectReason: addForm.value.remark,
adminId: adminData.value.id
areaCharge: adminData.value.adminName,
auditId: auditRow.value.auditId
} }
const result = await API({ const result = await API({
url: '/Money/review', url: '/Money/review',
@ -514,24 +535,168 @@ const handleReject = async function () {
} }
const showStep = function (row) { const showStep = function (row) {
if (!hasMenuPermission(menuTree.value, permissionMapping.refundChargeProgShow)) { if (!hasMenuPermission(menuTree.value, permissionMapping.refundChargeProgShow)) {
ElMessage.error('无此权限')
return
}
if (row.areaService !== null || row.areaService !== '') {
currentStep.value = 1
}
if (row.areaFinance !== null || row.areaFinance !== '') {
currentStep.value = 2
}
if (row.areaCharge !== null || row.areaCharge !== '') {
currentStep.value = 3
ElMessage.error('无此权限');
return;
} }
if (row.headFinance !== null || row.headFinance !== '') {
currentStep.value = 4
console.log("row", row)
currentStep.value = 1;
if (row.status === 41) {
executor.value = row.executorName
currentStep.value = 6;
} else {
if (row.areaServise !== null && row.areaServise !== '') {
submitterName.value = row.areaServise
console.log(submitterName.value)
currentStep.value = 2;
}
if (row.areaFinance !== null && row.areaFinance !== '') {
areaFinance.value = row.areaFinance
console.log(areaFinance.value)
currentStep.value = 3;
}
if (row.areaCharge !== null && row.areaCharge !== '') {
areaCharge.value = row.areaCharge
console.log(areaCharge.value)
currentStep.value = 4;
}
if (row.headFinance !== null && row.headFinance !== '') {
headFinance.value = row.headFinance
console.log(headFinance.value)
currentStep.value = 5;
}
} }
console.log("看看顺序到哪了",currentStep.value)
showSteps.value = true
console.log("当前步骤:", currentStep.value);
showSteps.value = true;
} }
const productList = [
{
"value": "金币产品",
"label": "金币产品",
"children": [
{
"value": "金币充值",
"label": "金币充值",
}
]
},
{
"value": "软件产品",
"label": "软件产品",
"children": [
{
"value": "美股",
"label": "美股",
"children": [
{
"value": "美股软件",
"label": "美股软件"
}
]
},
{
"value": "港股",
"label": "港股",
"children": [
{
"value": "港股软件",
"label": "港股软件"
}
]
},
{
"value": "A股",
"label": "A股",
"children": [
{
"value": "A股软件",
"label": "A股软件"
}
]
},
{
"value": "新加坡股",
"label": "新加坡股",
"children": [
{
"value": "新加坡股软件",
"label": "新加坡股软件"
}
]
},
{
"value": "马股",
"label": "马股",
"children": [
{
"value": "马股软件",
"label": "马股软件"
}
]
},
{
"value": "日本股",
"label": "日本股",
"children": [
{
"value": "日本股软件",
"label": "日本股软件"
}
]
},
{
"value": "泰股",
"label": "泰股",
"children": [
{
"value": "泰股软件",
"label": "泰股软件"
}
]
},
{
"value": "越南股",
"label": "越南股",
"children": [
{
"value": "越南股软件",
"label": "越南股软件"
}
]
},
{
"value": "印尼股",
"label": "印尼股",
"children": [
{
"value": "印尼股软件",
"label": "印尼股软件"
}
]
},
{
"value": "韩国股",
"label": "韩国股",
"children": [
{
"value": "韩国股软件",
"label": "韩国股软件"
}
]
},
{
"value": "台湾股",
"label": "台湾股",
"children": [
{
"value": "台湾股软件",
"label": "台湾股软件"
}
]
}
]
},
]
const hideReject = function () { const hideReject = function () {
showReject.value = false showReject.value = false
addForm.value.remark = '' addForm.value.remark = ''
@ -563,6 +728,7 @@ onMounted(() => {
:deep(.el-table__header th) { :deep(.el-table__header th) {
background-color: #F3FAFE !important; background-color: #F3FAFE !important;
} }
.condition { .condition {
width: 82vw; width: 82vw;
display: flex; display: flex;

217
src/views/moneyManage/refundDetail/refundFinance.vue

@ -16,7 +16,7 @@
</div> </div>
<div class="item1"> <div class="item1">
<el-text size="large" style="width:4vw;">产品名称</el-text> <el-text size="large" style="width:4vw;">产品名称</el-text>
<el-input v-model="searchForm.goodsName" placeholder="请输入产品名称" style="width:9vw;" clearable />
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" />
</div> </div>
<div class="item1"> <div class="item1">
<el-text size="large" style="width:4vw;">订单状态</el-text> <el-text size="large" style="width:4vw;">订单状态</el-text>
@ -59,7 +59,7 @@
<el-table-column type="index" label="序号" width="60" fixed="left" /> <el-table-column type="index" label="序号" width="60" fixed="left" />
<el-table-column prop="jwcode" label="Homily ID" width="120" fixed="left" /> <el-table-column prop="jwcode" label="Homily ID" width="120" fixed="left" />
<el-table-column prop="name" label="姓名" width="120" fixed="left" show-overflow-tooltip /> <el-table-column prop="name" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="market" label="所属地区" width="120" />
<el-table-column prop="activity" label="活动名称" width="120px" show-overflow-tooltip /> <el-table-column prop="activity" label="活动名称" width="120px" show-overflow-tooltip />
<el-table-column prop="goodsName" label="产品名称" width="120" /> <el-table-column prop="goodsName" label="产品名称" width="120" />
<el-table-column prop="goodNum" label="产品数量" width="120" /> <el-table-column prop="goodNum" label="产品数量" width="120" />
@ -68,7 +68,7 @@
{{ scope.row.refundType === 1 ? '部分退款' : '全部退款' }} {{ scope.row.refundType === 1 ? '部分退款' : '全部退款' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="submitterName" label="提交人" width="120" />
<el-table-column prop="areaServise" label="提交人" width="120" />
<el-table-column prop="refundReason" label="退款理由" width="120" /> <el-table-column prop="refundReason" label="退款理由" width="120" />
<el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip /> <el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip />
<el-table-column prop="status" label="订单状态" width="120"> <el-table-column prop="status" label="订单状态" width="120">
@ -150,7 +150,7 @@
<div class="center-item"> <div class="center-item">
<el-text style="width:4vw;">转账凭证</el-text> <el-text style="width:4vw;">转账凭证</el-text>
<img v-if="auditRow.voucher" :src="auditRow.voucher" <img v-if="auditRow.voucher" :src="auditRow.voucher"
style="width: 100%; height: 100%; object-fit: cover;">
style="width: 80px; height: 80px; object-fit: cover;">
<div v-else> <div v-else>
无转账凭证 无转账凭证
</div> </div>
@ -225,7 +225,7 @@
<el-step title="提交人"> <el-step title="提交人">
<template #title> <template #title>
<div>提交人<br>你是死的</div>
<div>提交人<br>{{ submitterName }}</div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 1" src="@/assets/images/待审核.png" alt="步骤图标" <img v-if="currentStep === 1" src="@/assets/images/待审核.png" alt="步骤图标"
@ -235,7 +235,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="地区财务">
<el-step>
<template #title>
<div>地区财务<br>{{ areaFinance }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 2" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 2" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -246,7 +249,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="地区负责人">
<el-step>
<template #title>
<div>地区负责人<br>{{ areaCharge }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -257,7 +263,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="总部财务">
<el-step>
<template #title>
<div>总部财务<br>{{ headFinance }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 4" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 4" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -268,7 +277,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="指定执行人">
<el-step>
<template #title>
<div>指定执行人<br>{{ executor }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -320,6 +332,11 @@ const showAudit = ref(false)
const auditRow = ref({})// const auditRow = ref({})//
const showSteps = ref(false) const showSteps = ref(false)
const uploadRef = ref(null) const uploadRef = ref(null)
const submitterName = ref('')//
const areaFinance = ref('')//
const areaCharge = ref('')//
const headFinance = ref('')//
const executor = ref('')//
const payments = ref([{ const payments = ref([{
value: '银行转账', value: '银行转账',
label: '银行转账' label: '银行转账'
@ -452,10 +469,11 @@ const handlePass = async function () {
const params = { const params = {
id: auditRow.value.id, id: auditRow.value.id,
status: 20, status: 20,
adminId: adminData.value.id
areaFinance: adminData.value.adminName,
auditId: auditRow.value.auditId
} }
const result = await API({ const result = await API({
url: '/Money/finalReview',
url: '/Money/review',
data: params data: params
}) })
if (result.code === 200) { if (result.code === 200) {
@ -478,7 +496,8 @@ const handleReject = async function () {
id: auditRow.value.id, id: auditRow.value.id,
status: 12, status: 12,
rejectReason: addForm.value.remark, rejectReason: addForm.value.remark,
adminId: adminData.value.id
areaFinance: adminData.value.adminName,
auditId: auditRow.value.auditId
} }
const result = await API({ const result = await API({
url: '/Money/finalReview', url: '/Money/finalReview',
@ -580,25 +599,169 @@ const channelOptions = ref([{
label: 'Ipay88-Link平台' label: 'Ipay88-Link平台'
} }
]) ])
const productList = [
{
"value": "金币产品",
"label": "金币产品",
"children": [
{
"value": "金币充值",
"label": "金币充值",
}
]
},
{
"value": "软件产品",
"label": "软件产品",
"children": [
{
"value": "美股",
"label": "美股",
"children": [
{
"value": "美股软件",
"label": "美股软件"
}
]
},
{
"value": "港股",
"label": "港股",
"children": [
{
"value": "港股软件",
"label": "港股软件"
}
]
},
{
"value": "A股",
"label": "A股",
"children": [
{
"value": "A股软件",
"label": "A股软件"
}
]
},
{
"value": "新加坡股",
"label": "新加坡股",
"children": [
{
"value": "新加坡股软件",
"label": "新加坡股软件"
}
]
},
{
"value": "马股",
"label": "马股",
"children": [
{
"value": "马股软件",
"label": "马股软件"
}
]
},
{
"value": "日本股",
"label": "日本股",
"children": [
{
"value": "日本股软件",
"label": "日本股软件"
}
]
},
{
"value": "泰股",
"label": "泰股",
"children": [
{
"value": "泰股软件",
"label": "泰股软件"
}
]
},
{
"value": "越南股",
"label": "越南股",
"children": [
{
"value": "越南股软件",
"label": "越南股软件"
}
]
},
{
"value": "印尼股",
"label": "印尼股",
"children": [
{
"value": "印尼股软件",
"label": "印尼股软件"
}
]
},
{
"value": "韩国股",
"label": "韩国股",
"children": [
{
"value": "韩国股软件",
"label": "韩国股软件"
}
]
},
{
"value": "台湾股",
"label": "台湾股",
"children": [
{
"value": "台湾股软件",
"label": "台湾股软件"
}
]
}
]
},
]
const showStep = function (row) { const showStep = function (row) {
if (!hasMenuPermission(menuTree.value, permissionMapping.refundFinanceProgShow)) { if (!hasMenuPermission(menuTree.value, permissionMapping.refundFinanceProgShow)) {
ElMessage.error('无此权限')
return
}
if (row.areaService !== null || row.areaService !== '') {
currentStep.value = 1
ElMessage.error('无此权限');
return;
} }
if (row.areaFinance !== null || row.areaFinance !== '') {
currentStep.value = 2
}
if (row.areaCharge !== null || row.areaCharge !== '') {
currentStep.value = 3
}
if (row.headFinance !== null || row.headFinance !== '') {
currentStep.value = 4
console.log("row", row)
currentStep.value = 1;
if (row.status === 41) {
executor.value = row.executorName
currentStep.value = 6;
} else {
if (row.areaServise !== null && row.areaServise !== '') {
submitterName.value = row.areaServise
console.log(submitterName.value)
currentStep.value = 2;
}
if (row.areaFinance !== null && row.areaFinance !== '') {
areaFinance.value = row.areaFinance
console.log(areaFinance.value)
currentStep.value = 3;
}
if (row.areaCharge !== null && row.areaCharge !== '') {
areaCharge.value = row.areaCharge
console.log(areaCharge.value)
currentStep.value = 4;
}
if (row.headFinance !== null && row.headFinance !== '') {
headFinance.value = row.headFinance
console.log(headFinance.value)
currentStep.value = 5;
}
} }
console.log("看看顺序到哪了",currentStep.value)
showSteps.value = true
console.log("当前步骤:", currentStep.value);
showSteps.value = true;
} }
const showAudit2 = function (row) { const showAudit2 = function (row) {
auditRow.value = row auditRow.value = row

234
src/views/moneyManage/refundDetail/refundHeader.vue

@ -16,7 +16,7 @@
</div> </div>
<div class="item1"> <div class="item1">
<el-text size="large" style="width:4vw;">产品名称</el-text> <el-text size="large" style="width:4vw;">产品名称</el-text>
<el-input v-model="searchForm.goodsName" placeholder="请输入产品名称" style="width:9vw;" clearable />
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" />
</div> </div>
<div class="item1"> <div class="item1">
<el-text size="large" style="width:4vw;">订单状态</el-text> <el-text size="large" style="width:4vw;">订单状态</el-text>
@ -35,7 +35,8 @@
<div class="item2"> <div class="item2">
<el-text size="large" style="width:4vw;">支付方式</el-text> <el-text size="large" style="width:4vw;">支付方式</el-text>
<el-select v-model="searchForm.payType" style="width:9vw;"> <el-select v-model="searchForm.payType" style="width:9vw;">
<el-option v-for="item in channelOptions" :key="item.value" :label="item.label" :value="item.value" />
<el-option v-for="item in channelOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select> </el-select>
</div> </div>
<div class="item2" style="width: 28.5vw;"> <div class="item2" style="width: 28.5vw;">
@ -58,7 +59,7 @@
<el-table-column type="index" label="序号" width="60" fixed="left" /> <el-table-column type="index" label="序号" width="60" fixed="left" />
<el-table-column prop="name" label="Homily ID" width="120" fixed="left" /> <el-table-column prop="name" label="Homily ID" width="120" fixed="left" />
<el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip /> <el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="market" label="所属地区" width="120" />
<el-table-column prop="goodsName" label="产品名称" width="120" /> <el-table-column prop="goodsName" label="产品名称" width="120" />
<el-table-column prop="goodNum" label="产品数量" width="120" /> <el-table-column prop="goodNum" label="产品数量" width="120" />
<el-table-column prop="refundType" label="退款方式" width="120"> <el-table-column prop="refundType" label="退款方式" width="120">
@ -66,15 +67,15 @@
{{ scope.row.refundType === 1 ? '部分退款' : '全部退款' }} {{ scope.row.refundType === 1 ? '部分退款' : '全部退款' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="submitterName" label="提交人" width="120" />
<el-table-column prop="areaServise" label="提交人" width="120" />
<el-table-column prop="refundReason" label="退款理由" width="120" /> <el-table-column prop="refundReason" label="退款理由" width="120" />
<el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip /> <el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip />
<el-table-column prop="status" label="订单状态" width="120"> <el-table-column prop="status" label="订单状态" width="120">
<template #default="scope"> <template #default="scope">
{{ {{
[30, 40].includes(scope.row.status) ? '审核中' : [30, 40].includes(scope.row.status) ? '审核中' :
scope.row.status === 32 ? '审核驳回' :
scope.row.status === 41 ? '退款完成' : scope.row.status
scope.row.status === 32 ? '审核驳回' :
scope.row.status === 41 ? '退款完成' : scope.row.status
}} }}
</template> </template>
</el-table-column> </el-table-column>
@ -145,7 +146,8 @@
</div> </div>
<div class="center-item"> <div class="center-item">
<el-text style="width:4vw;">转账凭证</el-text> <el-text style="width:4vw;">转账凭证</el-text>
<img v-if="auditRow.voucher" :src="auditRow.voucher" style="width: 100%; height: 100%; object-fit: cover;">
<img v-if="auditRow.voucher" :src="auditRow.voucher"
style="width: 80px; height: 80px; object-fit: cover;">
<div v-else> <div v-else>
无转账凭证 无转账凭证
</div> </div>
@ -230,7 +232,7 @@
<el-step title="提交人"> <el-step title="提交人">
<template #title> <template #title>
<div>提交人<br>你是死的</div>
<div>提交人<br>{{ submitterName }}</div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 1" src="@/assets/images/待审核.png" alt="步骤图标" <img v-if="currentStep === 1" src="@/assets/images/待审核.png" alt="步骤图标"
@ -240,7 +242,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="地区财务">
<el-step>
<template #title>
<div>地区财务<br>{{ areaFinance }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 2" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 2" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -251,7 +256,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="地区负责人">
<el-step>
<template #title>
<div>地区负责人<br>{{ areaCharge }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -262,7 +270,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="总部财务">
<el-step>
<template #title>
<div>总部财务<br>{{ headFinance }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 4" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 4" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -273,7 +284,10 @@
</template> </template>
</el-step> </el-step>
<el-step title="指定执行人">
<el-step>
<template #title>
<div>指定执行人<br>{{ executor }}</div>
</template>
<template #icon> <template #icon>
<img v-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="步骤图标" <img v-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="步骤图标"
style="width: 30px; height: 30px;"> style="width: 30px; height: 30px;">
@ -323,6 +337,11 @@ const showAudit2 = ref(false)
const tableData = ref([]) const tableData = ref([])
const showSteps = ref(false) const showSteps = ref(false)
const uploadRef = ref(null) const uploadRef = ref(null)
const submitterName = ref('')//
const areaFinance = ref('')//
const areaCharge = ref('')//
const headFinance = ref('')//
const executor = ref('')//
const currencies = ref([ const currencies = ref([
{ {
value: '新币', value: '新币',
@ -501,10 +520,11 @@ const handlePass = async function () {
id: auditRow.value.id, id: auditRow.value.id,
executor: addForm.value.executor, executor: addForm.value.executor,
status: 40, status: 40,
adminId: adminData.value.id
headFinance: adminData.value.adminName,
auditId: auditRow.value.auditId
} }
const result = await API({ const result = await API({
url: '/Money/review',
url: '/Money/finalReview',
data: params data: params
}) })
if (result.code === 200) { if (result.code === 200) {
@ -527,10 +547,11 @@ const handleReject = async function () {
id: auditRow.value.id, id: auditRow.value.id,
status: 32, status: 32,
rejectReason: addForm.value.remark, rejectReason: addForm.value.remark,
adminId: adminData.value.id
headFinance: adminData.value.adminName,
auditId: auditRow.value.auditId
} }
const result = await API({ const result = await API({
url: '/Money/review',
url: '/Money/finalReview',
data: params data: params
}) })
if (result.code === 200) { if (result.code === 200) {
@ -555,24 +576,168 @@ const reset = function () {
} }
const showStep = function (row) { const showStep = function (row) {
if (!hasMenuPermission(menuTree.value, permissionMapping.refundHeaderProgShow)) { if (!hasMenuPermission(menuTree.value, permissionMapping.refundHeaderProgShow)) {
ElMessage.error('无此权限')
return
}
if (row.areaService !== null || row.areaService !== '') {
currentStep.value = 1
}
if (row.areaFinance !== null || row.areaFinance !== '') {
currentStep.value = 2
ElMessage.error('无此权限');
return;
} }
if (row.areaCharge !== null || row.areaCharge !== '') {
currentStep.value = 3
}
if (row.headFinance !== null || row.headFinance !== '') {
currentStep.value = 4
console.log("row", row)
currentStep.value = 1;
if (row.status === 41) {
executor.value = row.executorName
currentStep.value = 6;
} else {
if (row.areaServise !== null && row.areaServise !== '') {
submitterName.value = row.areaServise
console.log(submitterName.value)
currentStep.value = 2;
}
if (row.areaFinance !== null && row.areaFinance !== '') {
areaFinance.value = row.areaFinance
console.log(areaFinance.value)
currentStep.value = 3;
}
if (row.areaCharge !== null && row.areaCharge !== '') {
areaCharge.value = row.areaCharge
console.log(areaCharge.value)
currentStep.value = 4;
}
if (row.headFinance !== null && row.headFinance !== '') {
headFinance.value = row.headFinance
console.log(headFinance.value)
currentStep.value = 5;
}
} }
console.log("看看顺序到哪了",currentStep.value)
showSteps.value = true
console.log("当前步骤:", currentStep.value);
showSteps.value = true;
} }
const productList = [
{
"value": "金币产品",
"label": "金币产品",
"children": [
{
"value": "金币充值",
"label": "金币充值",
}
]
},
{
"value": "软件产品",
"label": "软件产品",
"children": [
{
"value": "美股",
"label": "美股",
"children": [
{
"value": "美股软件",
"label": "美股软件"
}
]
},
{
"value": "港股",
"label": "港股",
"children": [
{
"value": "港股软件",
"label": "港股软件"
}
]
},
{
"value": "A股",
"label": "A股",
"children": [
{
"value": "A股软件",
"label": "A股软件"
}
]
},
{
"value": "新加坡股",
"label": "新加坡股",
"children": [
{
"value": "新加坡股软件",
"label": "新加坡股软件"
}
]
},
{
"value": "马股",
"label": "马股",
"children": [
{
"value": "马股软件",
"label": "马股软件"
}
]
},
{
"value": "日本股",
"label": "日本股",
"children": [
{
"value": "日本股软件",
"label": "日本股软件"
}
]
},
{
"value": "泰股",
"label": "泰股",
"children": [
{
"value": "泰股软件",
"label": "泰股软件"
}
]
},
{
"value": "越南股",
"label": "越南股",
"children": [
{
"value": "越南股软件",
"label": "越南股软件"
}
]
},
{
"value": "印尼股",
"label": "印尼股",
"children": [
{
"value": "印尼股软件",
"label": "印尼股软件"
}
]
},
{
"value": "韩国股",
"label": "韩国股",
"children": [
{
"value": "韩国股软件",
"label": "韩国股软件"
}
]
},
{
"value": "台湾股",
"label": "台湾股",
"children": [
{
"value": "台湾股软件",
"label": "台湾股软件"
}
]
}
]
},
]
const showAudit = function (row) { const showAudit = function (row) {
auditRow.value = row auditRow.value = row
showAudit2.value = true showAudit2.value = true
@ -589,9 +754,11 @@ onMounted(() => {
:deep(.el-table__body td) { :deep(.el-table__body td) {
background-color: #F3FAFE !important; background-color: #F3FAFE !important;
} }
:deep(.el-table__header th) { :deep(.el-table__header th) {
background-color: #F3FAFE !important; background-color: #F3FAFE !important;
} }
.condition { .condition {
width: 82vw; width: 82vw;
display: flex; display: flex;
@ -662,11 +829,6 @@ onMounted(() => {
width: 60%; width: 60%;
height: 35vh; height: 35vh;
.image {
width: 4vw !important;
height: 4vw !important;
}
:deep(.el-upload--picture-card) { :deep(.el-upload--picture-card) {
width: 4vw !important; width: 4vw !important;
height: 4vw !important; height: 4vw !important;

133
src/views/moneyManage/refundDetail/refundService.vue

@ -17,7 +17,7 @@
</div> </div>
<div class="item1"> <div class="item1">
<el-text size="large" style="width:4vw;">产品名称</el-text> <el-text size="large" style="width:4vw;">产品名称</el-text>
<el-input v-model="searchForm.goodsName" placeholder="请输入产品名称" style="width:9vw;" clearable />
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" />
</div> </div>
<div class="item1"> <div class="item1">
<el-text size="large" style="width:4vw;" multiple>订单状态</el-text> <el-text size="large" style="width:4vw;" multiple>订单状态</el-text>
@ -58,7 +58,7 @@
<el-table-column type="index" label="序号" width="60" fixed="left" /> <el-table-column type="index" label="序号" width="60" fixed="left" />
<el-table-column prop="jwcode" label="Homily ID" width="120" fixed="left" /> <el-table-column prop="jwcode" label="Homily ID" width="120" fixed="left" />
<el-table-column prop="name" label="姓名" width="120" fixed="left" show-overflow-tooltip /> <el-table-column prop="name" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="market" label="所属地区" width="120" />
<el-table-column prop="activity" label="活动名称" width="120px" show-overflow-tooltip /> <el-table-column prop="activity" label="活动名称" width="120px" show-overflow-tooltip />
<el-table-column prop="goodsName" label="产品名称" width="120" /> <el-table-column prop="goodsName" label="产品名称" width="120" />
<el-table-column prop="goodNum" label="产品数量" width="120" /> <el-table-column prop="goodNum" label="产品数量" width="120" />
@ -526,6 +526,135 @@ const channelOptions = ref([{
label: 'Ipay88-Link平台' label: 'Ipay88-Link平台'
} }
]) ])
const productList = [
{
"value": "金币产品",
"label": "金币产品",
"children": [
{
"value": "金币充值",
"label": "金币充值",
}
]
},
{
"value": "软件产品",
"label": "软件产品",
"children": [
{
"value": "美股",
"label": "美股",
"children": [
{
"value": "美股软件",
"label": "美股软件"
}
]
},
{
"value": "港股",
"label": "港股",
"children": [
{
"value": "港股软件",
"label": "港股软件"
}
]
},
{
"value": "A股",
"label": "A股",
"children": [
{
"value": "A股软件",
"label": "A股软件"
}
]
},
{
"value": "新加坡股",
"label": "新加坡股",
"children": [
{
"value": "新加坡股软件",
"label": "新加坡股软件"
}
]
},
{
"value": "马股",
"label": "马股",
"children": [
{
"value": "马股软件",
"label": "马股软件"
}
]
},
{
"value": "日本股",
"label": "日本股",
"children": [
{
"value": "日本股软件",
"label": "日本股软件"
}
]
},
{
"value": "泰股",
"label": "泰股",
"children": [
{
"value": "泰股软件",
"label": "泰股软件"
}
]
},
{
"value": "越南股",
"label": "越南股",
"children": [
{
"value": "越南股软件",
"label": "越南股软件"
}
]
},
{
"value": "印尼股",
"label": "印尼股",
"children": [
{
"value": "印尼股软件",
"label": "印尼股软件"
}
]
},
{
"value": "韩国股",
"label": "韩国股",
"children": [
{
"value": "韩国股软件",
"label": "韩国股软件"
}
]
},
{
"value": "台湾股",
"label": "台湾股",
"children": [
{
"value": "台湾股软件",
"label": "台湾股软件"
}
]
}
]
},
]
const reset = function () { const reset = function () {
searchForm.value = { searchForm.value = {
jwcode: '' jwcode: ''

Loading…
Cancel
Save