diff --git a/src/components/MoneyManage/ProductSelect.vue b/src/components/MoneyManage/ProductSelect.vue index af9e29b..cf6b963 100644 --- a/src/components/MoneyManage/ProductSelect.vue +++ b/src/components/MoneyManage/ProductSelect.vue @@ -137,7 +137,7 @@ watch(selectedValue, (newVal) => { const AIProduct = ['AI机构追踪', 'AI机构出击', 'AI机构资金', 'AI机构活跃度','AI机构探测神器'] const superProduct = ['超级机构透视', '超级机构伏击', '超级机构猎杀', '超级机构脉搏', '超级机构罗盘','超级机构探测神器'] -const InfoFee = ['静态信息费', '博股会员'] +const InfoFee = ['静态信息费', '博股会员','HC信息费'] const menuData = [ { name: '美股', diff --git a/src/components/dialogs/changePassword.vue b/src/components/dialogs/changePassword.vue index 729fe75..d0577e0 100644 --- a/src/components/dialogs/changePassword.vue +++ b/src/components/dialogs/changePassword.vue @@ -114,7 +114,7 @@ const changePassword = async function () { // 延迟跳转,确保用户看到成功消息 setTimeout(() => { - router.push('/PasswordSuccess'); + router.push('/PasswordSuccess'); // push跳转,留下历史记录,replace跳转,不留下历史记录 }, 1000); }else if (result.code === 0){ ElMessage.error('原密码错误,请重新输入') diff --git a/src/views/moneyManage/receiveDetail/receiveFinance.vue b/src/views/moneyManage/receiveDetail/receiveFinance.vue index 6b9130b..28361f7 100644 --- a/src/views/moneyManage/receiveDetail/receiveFinance.vue +++ b/src/views/moneyManage/receiveDetail/receiveFinance.vue @@ -267,7 +267,6 @@ - @@ -340,13 +339,13 @@ - 仅支持.jpg .png格式文件≤ 1 MB + 仅支持.jpg .png格式文件≤ 2 MB + maxlength="100" show-word-limit /> - +
@@ -447,7 +446,7 @@ - 仅支持.jpg .png格式文件≤ 1 MB + 仅支持.jpg .png格式文件≤ 2 MB
@@ -457,10 +456,9 @@
- - + @@ -470,7 +468,7 @@ - + @@ -969,6 +967,7 @@ const reset = () => { searchData.value = {}; // 重置页码 pageInfo.value.pageNum = 1; + getTime.value = [] getlist(); }; @@ -1117,11 +1116,11 @@ const submitEditForm = async () => { url: '/cashCollection/complete', data: { orderCode: editFormData.value.orderCode, - handlingCharge: editFormData.value.handlingCharge * 100, // 转为分单位 + handlingCharge: editFormData.value.handlingCharge * 100 || null, // 转为分单位 paymentCurrency: CurrencyForId(editFormData.value.paymentCurrency), paymentAmount: editFormData.value.paymentAmount * 100, // 转为分单位 receivedCurrency: CurrencyForId(editFormData.value.receivedCurrency), - receivedAmount: editFormData.value.receivedAmount * 100, // 转为分单位 + receivedAmount: editFormData.value.receivedAmount * 100 || null, // 转为分单位 receivedTime: editFormData.value.receivedTime, receivedRemark: editFormData.value.receivedRemark || '' } @@ -1245,16 +1244,15 @@ onMounted(async () => { // 初始化加载地区财务订单数据 await getlist(); - // 菜单权限校验(确保地区财务权限) - if (!hasMenuPermission(menuTree.value, 67)) { - ElMessageBox.alert( - '您暂无该页面操作权限,请联系管理员', - '权限提示', - { type: 'error' } - ).then(() => { - window.history.back(); - }); - } + // if (!hasMenuPermission(menuTree.value, 67)) { + // ElMessageBox.alert( + // '您暂无该页面操作权限,请联系管理员', + // '权限提示', + // { type: 'error' } + // ).then(() => { + // window.history.back(); + // }); + // } //背景预加载 const bgImg = new Image(); bgImg.src = '/src/assets/receive-recall.png'; diff --git a/src/views/moneyManage/receiveDetail/receiveHead.vue b/src/views/moneyManage/receiveDetail/receiveHead.vue index 77bea24..a1dff3f 100644 --- a/src/views/moneyManage/receiveDetail/receiveHead.vue +++ b/src/views/moneyManage/receiveDetail/receiveHead.vue @@ -301,7 +301,7 @@ - 仅支持.jpg .png格式文件≤ 1 MB + 仅支持.jpg .png格式文件≤ 2 MB
@@ -944,11 +944,11 @@ const submitEditForm = async () => { url: '/cashCollection/complete', data: { orderCode: editFormData.value.orderCode, - handlingCharge: editFormData.value.handlingCharge * 100, // 转为分单位 + handlingCharge: editFormData.value.handlingCharge * 100 || null, // 转为分单位 paymentCurrency: CurrencyForId(editFormData.value.paymentCurrency), paymentAmount: editFormData.value.paymentAmount * 100, // 转为分单位 receivedCurrency: CurrencyForId(editFormData.value.receivedCurrency), - receivedAmount: editFormData.value.receivedAmount * 100, // 转为分单位 + receivedAmount: editFormData.value.receivedAmount * 100 || null, // 转为分单位 receivedTime: editFormData.value.receivedTime, receivedRemark: editFormData.value.receivedRemark || '' } diff --git a/src/views/moneyManage/receiveDetail/receiveManage.vue b/src/views/moneyManage/receiveDetail/receiveManage.vue index 6b9130b..28361f7 100644 --- a/src/views/moneyManage/receiveDetail/receiveManage.vue +++ b/src/views/moneyManage/receiveDetail/receiveManage.vue @@ -267,7 +267,6 @@
- @@ -340,13 +339,13 @@ - 仅支持.jpg .png格式文件≤ 1 MB + 仅支持.jpg .png格式文件≤ 2 MB + maxlength="100" show-word-limit /> - +
@@ -447,7 +446,7 @@ - 仅支持.jpg .png格式文件≤ 1 MB + 仅支持.jpg .png格式文件≤ 2 MB
@@ -457,10 +456,9 @@
- - + @@ -470,7 +468,7 @@ - + @@ -969,6 +967,7 @@ const reset = () => { searchData.value = {}; // 重置页码 pageInfo.value.pageNum = 1; + getTime.value = [] getlist(); }; @@ -1117,11 +1116,11 @@ const submitEditForm = async () => { url: '/cashCollection/complete', data: { orderCode: editFormData.value.orderCode, - handlingCharge: editFormData.value.handlingCharge * 100, // 转为分单位 + handlingCharge: editFormData.value.handlingCharge * 100 || null, // 转为分单位 paymentCurrency: CurrencyForId(editFormData.value.paymentCurrency), paymentAmount: editFormData.value.paymentAmount * 100, // 转为分单位 receivedCurrency: CurrencyForId(editFormData.value.receivedCurrency), - receivedAmount: editFormData.value.receivedAmount * 100, // 转为分单位 + receivedAmount: editFormData.value.receivedAmount * 100 || null, // 转为分单位 receivedTime: editFormData.value.receivedTime, receivedRemark: editFormData.value.receivedRemark || '' } @@ -1245,16 +1244,15 @@ onMounted(async () => { // 初始化加载地区财务订单数据 await getlist(); - // 菜单权限校验(确保地区财务权限) - if (!hasMenuPermission(menuTree.value, 67)) { - ElMessageBox.alert( - '您暂无该页面操作权限,请联系管理员', - '权限提示', - { type: 'error' } - ).then(() => { - window.history.back(); - }); - } + // if (!hasMenuPermission(menuTree.value, 67)) { + // ElMessageBox.alert( + // '您暂无该页面操作权限,请联系管理员', + // '权限提示', + // { type: 'error' } + // ).then(() => { + // window.history.back(); + // }); + // } //背景预加载 const bgImg = new Image(); bgImg.src = '/src/assets/receive-recall.png'; diff --git a/src/views/moneyManage/receiveDetail/receiveService.vue b/src/views/moneyManage/receiveDetail/receiveService.vue index fcdc3a3..c4a319c 100644 --- a/src/views/moneyManage/receiveDetail/receiveService.vue +++ b/src/views/moneyManage/receiveDetail/receiveService.vue @@ -66,7 +66,6 @@
-
添加收款
@@ -201,7 +200,7 @@ - +
@@ -213,13 +212,15 @@
永久金币: -
免费金币: -
@@ -266,9 +267,9 @@ 取消 确定 + type="primary" @click="throttledhandleAddForm" :disabled="ifAddDone">确定 编辑 + type="primary" @click="throttledhandleEditForm" :disabled="ifReAddDone">编辑 @@ -381,12 +382,23 @@
ps:请在退款理由表明用户的退款需求。
- 重置 + 取消 提交
+ + + +
+ {{ rejectReason }} +
+
+ 确定 +
+
@@ -405,7 +417,7 @@ import { hasMenuPermission } from '@/utils/menuTreePermission.js' import _ from 'lodash' // 导入客服相关规则和静态数据 import { addFormRule } from './utils/recriveFormRules.js' -import { productList, MarketNameForId, CurrencyForId, marketList, statusList, numUnitList } from './utils/staticData.js' +import { productList, MarketNameForId, CurrencyForId, marketList, statusList } from './utils/staticData.js' // ===================== 基础状态管理(仅保留客服相关) ===================== const adminStore = useAdminStore(); @@ -414,6 +426,11 @@ const adminData = ref({}) // 管理员信息 const tableData = ref([]) // 表格数据 const total = ref(0) // 总条数 const pageInfo = ref({ pageSize: 10, pageNum: 1 }) // 分页信息 +const numUnitList = ref(['年', '月']) + +//防止重复点击状态管理 +const ifAddDone = ref(false) +const ifReAddDone = ref(false) // 角色标识:固定为客服(删除财务、总部财务、超级管理员标识) const kefu = ref(true) @@ -441,6 +458,16 @@ const reset = () => { getlist() } +const rejectReasonVisible = ref(false) +const rejectReason = ref('') +const closeRejectForm = () => { + rejectReasonVisible.value = false +} +const openRejectReason = (reason) => { + rejectReason.value = reason + rejectReasonVisible.value = true +} + // 时间选择器变更(原代码声明未实现,保留空函数避免报错) const handleDatePickerChange = () => { } // 日期禁用(原代码声明未实现,保留空函数避免报错) @@ -529,13 +556,17 @@ const ifGold = () => { addFormData.value.goodNum = 0 } else { isGold.value = false - const selectItems = ["AI机构追踪", "AI机构出击", "AI机构资金", "AI机构活跃度", "超级机构透视", "超级机构伏击", "超级机构猎杀", "超级机构脉搏", "超级机构罗盘", 'HC信息费'] + numUnitList.value = ['个', '年', '月'] + const selectItems = ["AI机构追踪", "AI机构出击", "AI机构资金", "AI机构活跃度", "超级机构透视", "超级机构伏击", "超级机构猎杀", "超级机构脉搏", "超级机构罗盘", 'HC信息费', 'HC信息费', 'AI机构探测神器', '超级机构探测神器'] if (selectItems.includes(addFormData.value.goodsName)) { addFormData.value.numUnit = '' + numUnitList.value = ['年', '月'] } else if (addFormData.value.goodsName == '静态信息费') { addFormData.value.numUnit = '年' + numUnitList.value = ['年'] } else { addFormData.value.numUnit = '个' + numUnitList.value = ['个'] } } } @@ -549,6 +580,12 @@ const ifGroup = () => { } else if (addFormData.value.payType === 'Ipay88-链接收款') { isGroup.value = true addFormData.value.receivedMarket = '马来西亚' + } else if (addFormData.value.payType === 'E-Transfer') { + isGroup.value = true + addFormData.value.receivedMarket = '加拿大' + } else if (addFormData.value.payType === 'Grabpay' || addFormData.value.payType === 'Nets' || addFormData.value.payType === 'Paypal') { + isGroup.value = true + addFormData.value.receivedMarket = '新加坡' } else { isGroup.value = false } @@ -561,12 +598,12 @@ const jwcodeSeachMarket = async () => { url: '/cashCollection/getNameAndMarket', data: addFormData.value.jwcode }) - if(result.code == 200){ + if (result.code == 200) { ElMessage.success('客户信息查询成功') addFormData.value.market = result.data.market addFormData.value.marketName = result.data.marketName addFormData.value.name = result.data.name - }else{ + } else { ElMessage.error('客户不存在') } } catch (error) { @@ -580,7 +617,9 @@ const openAddForm = (row) => { if (row?.jwcode) { // 编辑模式 addOrEdit.value = 2 - addFormData.value = { ...row } + addFormData.value = { + ...row, + } jwcodeSeachMarket() ifGold() } else { @@ -599,15 +638,56 @@ const closeAddForm = () => { isGold.value = false addFormRef.value?.resetFields(); } - +const testGold = () => { + // 转换为数字(处理字符串类型的数字) + if (addFormData.value.goodsName == '金币充值') { + if (addFormData.value.permanentGold == null) { + addFormData.value.permanentGold = 0 + } + if (addFormData.value.freeGold == null) { + addFormData.value.freeGold = 0 + } + const permanentGold = Number(addFormData.value.permanentGold); + const freeNum = Number(addFormData.value.freeGold); + // 正则:仅允许0-999999的正整数(包括0) + const reg = /^[0-9]{1,6}$/; + if (!reg.test(permanentGold) || permanentGold < 0) { + return { valid: false, message: '请检查永久金币格式' }; + } + if (!reg.test(freeNum) || freeNum < 0) { + return { valid: false, message: '请检查免费金币格式' }; + } + if (permanentGold == 0 && freeNum == 0) { + return { valid: false, message: '永久金币或免费金币不能同为0' }; + } + } + return { valid: true }; +} // 客服新增收款 const handleAddForm = async () => { try { await addFormRef.value.validate(); + if (!testGold().valid) { + ElMessage.error(testGold().message); + return; + } + //单独校验产品数量 + if (!isGold.value) { + if (!addFormData.value.goodNum) { + ElMessage.error('请输入产品数量'); + return; + } + const positiveIntReg = /^[1-9]\d*$/; + if (!positiveIntReg.test(addFormData.value.goodNum)) { + ElMessage.error('产品数量必须为正整数'); + return; + } + } // 处理时间格式 if (addFormData.value.payTime) { addFormData.value.payTime = moment(addFormData.value.payTime).format('YYYY-MM-DD HH:mm:ss') } + ifAddDone.value = true const result = await request({ url: '/cashCollection/add', data: { @@ -627,19 +707,39 @@ const handleAddForm = async () => { getlist() closeAddForm() } + ifAddDone.value = false } catch (error) { console.log('新增报错:', error); ElMessage.error('请完善表单信息后提交'); + ifAddDone.value = false } } // 客服编辑收款(撤回后重新提交) const handleEditForm = async () => { try { + await addFormRef.value.validate(); + if (!testGold().valid) { + ElMessage.error(testGold().message); + return; + } + //单独校验产品数量 + if (!isGold.value) { + if (!addFormData.value.goodNum) { + ElMessage.error('请输入产品数量'); + return; + } + const positiveIntReg = /^[1-9]\d*$/; + if (!positiveIntReg.test(addFormData.value.goodNum)) { + ElMessage.error('产品数量必须为正整数'); + return; + } + } // 处理时间格式 if (addFormData.value.payTime) { addFormData.value.payTime = moment(addFormData.value.payTime).format('YYYY-MM-DD HH:mm:ss') } + ifReAddDone.value = true const result = await request({ url: '/cashCollection/reSubmit', data: { @@ -650,7 +750,7 @@ const handleEditForm = async () => { goodNum: addFormData.value.goodNum || 0, paymentCurrency: CurrencyForId(addFormData.value.paymentCurrency) || '', receivedMarket: MarketNameForId(addFormData.value.receivedMarket) || '', - paymentAmount: (addFormData.value.paymentAmount) * 100 + paymentAmount: (addFormData.value.paymentAmount) * 100, } }) if (result.code == 200) { @@ -658,14 +758,16 @@ const handleEditForm = async () => { getlist() closeAddForm() } + ifReAddDone.value = false } catch (error) { console.log(error); + ifReAddDone.value = false } } // 付款币种和支付方式选项(客服专用) const customOptions = ref(['美元(USD)', '港币(HKD)', '新币(SGD)', '马币(MYR)', '泰铢(THB)', '加币(CAD)', '越南盾(VDN)', '韩元(KRW)']) -const paytypeOptions = ref(["Stripe-链接收款", "PaymentAsia-链接收款", "Ipay88-链接收款", "银行转账", "刷卡", "现金", "支票", "Grabpay", "Nets", "E-Transfer", "Paypal"]) +const paytypeOptions = ref(["Stripe-链接收款", "PaymentAsia-链接收款", "Ipay88-链接收款", "Grabpay", "Nets", "E-Transfer", "Paypal", "银行转账", "刷卡", "现金", "支票"]) const MoneyAddressOptions = ref(['马来西亚', '香港', '新加坡', '泰国', '越南HCM', '加拿大']) const handleCurrencyChange = (option) => { console.log('选中的币种:', option); @@ -828,7 +930,12 @@ const submitRefund = async () => { try { if (refundFormData.value.refundModel == 0) { refundFormData.value.partRefundGold = refundFormData.value.permanentGold, - refundFormData.value.partRefundFree = refundFormData.value.freeGold + refundFormData.value.partRefundFree = refundFormData.value.freeGold + } else if (refundFormData.value.refundModel == 1) { + if (refundFormData.value.partRefundGold > refundFormData.value.permanentGold || refundFormData.value.partRefundFree > refundFormData.value.freeGold) { + ElMessage.error('退款金额不能大于订单金额') + return + } } const result = await request({ url: '/Money/add', @@ -861,13 +968,6 @@ const submitRefund = async () => { } } -// 查看驳回理由 -const openRejectReason = (reason) => { - ElMessageBox.alert(reason, '驳回理由', { - confirmButtonText: '确认', - customClass: 'reject-reason-box', - }) -} // ===================== 初始化与节流 ===================== // 节流处理(防止重复提交) @@ -1174,14 +1274,14 @@ onMounted(async () => { background-color: #E5EBFE !important; } -// 驳回理由弹窗样式 .reject-reason-box { - --el-message-box-height: 500px; + width: 80%; + padding: 20px; } -.reject-reason-box .el-message-box__content { - max-height: 350px; - overflow-y: auto; - white-space: pre-wrap; +.rejectBtn { + margin-top: 20px; + display: flex; + justify-content: flex-end; } \ No newline at end of file diff --git a/src/views/moneyManage/receiveDetail/utils/recriveFormRules.js b/src/views/moneyManage/receiveDetail/utils/recriveFormRules.js index 24906d4..27152fa 100644 --- a/src/views/moneyManage/receiveDetail/utils/recriveFormRules.js +++ b/src/views/moneyManage/receiveDetail/utils/recriveFormRules.js @@ -24,30 +24,6 @@ export const addFormRule = { goodNum: [ { required: true, message: '请输入产品数量', trigger: 'blur' }, ], - // 永久金币:纯数字(非必填,可按需调整) - permanentGold: [ - { - validator: (rule, value, callback) => { - if (value && !/^\d+$/.test(value)) { - callback(new Error('请输入纯数字')); - } else { - callback(); - } - }, trigger: 'blur' - } - ], - // 免费金币:纯数字(非必填,可按需调整) - freeGold: [ - { - validator: (rule, value, callback) => { - if (value && !/^\d+$/.test(value)) { - callback(new Error('请输入纯数字')); - } else { - callback(); - } - }, trigger: 'blur' - } - ], // 付款币种:必填 paymentCurrency: [ { required: true, message: '请选择付款币种', trigger: 'change' } @@ -57,16 +33,22 @@ export const addFormRule = { { required: true, message: '请输入付款金额', trigger: 'blur' }, { validator: (rule, value, callback) => { - if (!/^\d+$/.test(value)) { - callback(new Error('请输入纯数字')); - } else if (value.length >= 8) { - callback(new Error('付款金额不能超过7位数字')); - } else if (Number(value) === 0) { - callback(new Error('付款金额不能为0')); + // 匹配非负数字(支持整数或最多2位小数) + const reg = /^\d+(\.\d{1,2})?$/; + if (!reg.test(value)) { + callback(new Error('请输入有效的金额(最多2位小数)')); } else { - callback(); + const num = Number(value); + if (num === 0) { + callback(new Error('付款金额不能为0')); + } else if (num > 9999999) { // 限制最大值为9999999(7位整数) + callback(new Error('付款金额不能超过9999999')); + } else { + callback(); + } } - }, trigger: 'blur' + }, + trigger: 'blur' } ], // 支付方式:必填 @@ -82,25 +64,21 @@ export const addFormRule = { { required: true, message: '请选择付款时间', trigger: 'change' } ] }; - -//填手续费校验规则 export const editFormRule = { - // 到账金额:最大6位(整数部分最多4位,小数2位),支持两位小数 - receivedAmount: [ - { required: true, message: '请输入到账金额', trigger: 'blur' }, - { - pattern: /^\d{1,6}(\.\d{1,2})?$/, - message: '请检查到账金额格式', - trigger: 'blur' - } - ], - // 手续费:同到账金额规则 - handlingCharge: [ - { required: true, message: '请输入手续费', trigger: 'blur' }, - { - pattern: /^\d{1,6}(\.\d{1,2})?$/, - message: '请检查手续费格式', - trigger: 'blur' - } - ], + // 到账金额:正数,整数部分最多6位,小数部分最多2位(支持纯小数如 0.1、0.99) + receivedAmount: [ + { + pattern: /^(0\.\d{1,2}|[1-9]\d{0,5}(\.\d{1,2})?)$/, // 修正:添加 / 包裹正则 + message: '请检查到账金额格式', + trigger: 'blur' + } + ], + // 手续费:正数,整数部分最多6位,小数部分最多2位(不支持纯0开头的小数如 0.1,需从1开始) + handlingCharge: [ + { + pattern: /^\d{1,6}(\.\d{1,2})?$/, // 注意:此正则允许 0 开头(如 0123 不符合整数规范) + message: '整数部分最多6位,小数部分最多2位', + trigger: 'blur' + } + ], }; \ No newline at end of file diff --git a/src/views/moneyManage/receiveDetail/utils/staticData.js b/src/views/moneyManage/receiveDetail/utils/staticData.js index 54fb915..0f2c098 100644 --- a/src/views/moneyManage/receiveDetail/utils/staticData.js +++ b/src/views/moneyManage/receiveDetail/utils/staticData.js @@ -21,110 +21,99 @@ export const productList = [ "value": "美股", "label": "美股", "children": [ - { - "value": "美股软件", - "label": "美股软件" - } + { "value": "美股软件", "label": "美股软件" }, + { "value": "美股金卡", "label": "美股金卡" }, + { "value": "美股套餐", "label": "美股套餐" } ] }, { "value": "港股", "label": "港股", "children": [ - { - "value": "港股软件", - "label": "港股软件" - } + { "value": "港股软件", "label": "港股软件" }, + { "value": "港股金卡", "label": "港股金卡" }, + { "value": "港股套餐", "label": "港股套餐" } ] }, { "value": "A股", "label": "A股", "children": [ - { - "value": "A股软件", - "label": "A股软件" - } + { "value": "A股软件", "label": "A股软件" }, + { "value": "A股金卡", "label": "A股金卡" }, + { "value": "A股套餐", "label": "A股套餐" } ] }, { "value": "新加坡股", "label": "新加坡股", "children": [ - { - "value": "新加坡股软件", - "label": "新加坡股软件" - } + { "value": "新加坡股软件", "label": "新加坡股软件" }, + { "value": "新加坡股金卡", "label": "新加坡股金卡" }, + { "value": "新加坡股套餐", "label": "新加坡股套餐" } ] }, { "value": "马股", "label": "马股", "children": [ - { - "value": "马股软件", - "label": "马股软件" - } + { "value": "马股软件", "label": "马股软件" }, + { "value": "马股金卡", "label": "马股金卡" }, + { "value": "马股套餐", "label": "马股套餐" } ] }, { "value": "日本股", "label": "日本股", "children": [ - { - "value": "日本股软件", - "label": "日本股软件" - } + { "value": "日本股软件", "label": "日本股软件" }, + { "value": "日本股金卡", "label": "日本股金卡" }, + { "value": "日本股套餐", "label": "日本股套餐" } ] }, { "value": "泰股", "label": "泰股", "children": [ - { - "value": "泰股软件", - "label": "泰股软件" - } + { "value": "泰股软件", "label": "泰股软件" }, + { "value": "泰股金卡", "label": "泰股金卡" }, + { "value": "泰股套餐", "label": "泰股套餐" } ] }, { "value": "越南股", "label": "越南股", "children": [ - { - "value": "越南股软件", - "label": "越南股软件" - } + { "value": "越南股软件", "label": "越南股软件" }, + { "value": "越南股金卡", "label": "越南股金卡" }, + { "value": "越南股套餐", "label": "越南股套餐" } ] }, { "value": "印尼股", "label": "印尼股", "children": [ - { - "value": "印尼股软件", - "label": "印尼股软件" - } + { "value": "印尼股软件", "label": "印尼股软件" }, + { "value": "印尼股金卡", "label": "印尼股金卡" }, + { "value": "印尼股套餐", "label": "印尼股套餐" } ] }, { "value": "韩国股", "label": "韩国股", "children": [ - { - "value": "韩国股软件", - "label": "韩国股软件" - } + { "value": "韩国股软件", "label": "韩国股软件" }, + { "value": "韩国股金卡", "label": "韩国股金卡" }, + { "value": "韩国股套餐", "label": "韩国股套餐" } ] }, { "value": "台湾股", "label": "台湾股", "children": [ - { - "value": "台湾股软件", - "label": "台湾股软件" - } + { "value": "台湾股软件", "label": "台湾股软件" }, + { "value": "台湾股金卡", "label": "台湾股金卡" }, + { "value": "台湾股套餐", "label": "台湾股套餐" } ] } ] @@ -148,6 +137,10 @@ export const productList = [ { "value": "AI机构活跃度", "label": "AI机构活跃度" + }, + { + "value": "AI机构探测神器", + "label": "AI机构探测神器" } ] }, @@ -174,6 +167,10 @@ export const productList = [ { "value": "超级机构罗盘", "label": "超级机构罗盘" + }, + { + "value": "超级机构探测神器", + "label": "超级机构探测神器" } ] }, @@ -188,6 +185,10 @@ export const productList = [ { "value": "博股会员", "label": "博股会员" + }, + { + "value": "HC信息费", + "label": "HC信息费" } ] }