feat(区域配置页): 新增两个可修改“值”的身份

This commit is contained in:
hzj 2025-09-25 18:48:43 +08:00
parent db7bc0a97b
commit 1158fac5a7

View File

@ -1,6 +1,5 @@
<template> <template>
<div class="app-container-assist"> <div class="app-container-assist">
<div class="filter-container"> <div class="filter-container">
<el-select <el-select
v-model="listQuery.sysOrigin" v-model="listQuery.sysOrigin"
@ -15,11 +14,21 @@
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
> >
<span style="float: left;"> <sys-origin-icon :icon="item.value" :desc="item.value" /></span> <span style="float: left;">
<sys-origin-icon :icon="item.value" :desc="item.value"
/></span>
<span style="float: left;margin-left:10px">{{ item.label }}</span> <span style="float: left;margin-left:10px">{{ item.label }}</span>
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="listQuery.regionId" v-loading="loading" clearable style="width:150px;" class="filter-item" placeholder="请选择" @change="handleSearch"> <el-select
v-model="listQuery.regionId"
v-loading="loading"
clearable
style="width:150px;"
class="filter-item"
placeholder="请选择"
@change="handleSearch"
>
<el-option <el-option
v-for="(item, index) in regions" v-for="(item, index) in regions"
:key="index" :key="index"
@ -35,7 +44,12 @@
class="filter-item" class="filter-item"
@change="handleSearch" @change="handleSearch"
> >
<el-option v-for="(item) in regionAssistTypes" :key="item.value" :label="item.name" :value="item.value" /> <el-option
v-for="item in regionAssistTypes"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select> </el-select>
<el-button <el-button
class="filter-item" class="filter-item"
@ -80,8 +94,12 @@
<i class="el-icon-more" /> <i class="el-icon-more" />
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="handleUpdate(scope.row)">修改</el-dropdown-item> <el-dropdown-item @click.native="handleUpdate(scope.row)"
<el-dropdown-item @click.native="handleDelete(scope.row)">删除</el-dropdown-item> >修改</el-dropdown-item
>
<el-dropdown-item @click.native="handleDelete(scope.row)"
>删除</el-dropdown-item
>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
@ -89,7 +107,7 @@
</el-table> </el-table>
<el-drawer <el-drawer
:title="textOptTitle + '('+listQuery.sysOrigin+')'" :title="textOptTitle + '(' + listQuery.sysOrigin + ')'"
:visible.sync="formVisible" :visible.sync="formVisible"
:before-close="handleClose" :before-close="handleClose"
:close-on-press-escape="false" :close-on-press-escape="false"
@ -111,13 +129,25 @@
class="filter-item" class="filter-item"
:disabled="form.id !== ''" :disabled="form.id !== ''"
> >
<el-option v-for="(item) in regionAssistTypes" :key="item.value" :label="item.name" :value="item.value" /> <el-option
v-for="item in regionAssistTypes"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item prop="regionId" label="区域"> <el-form-item prop="regionId" label="区域">
<el-select v-model="form.regionId" v-loading="loading" style="width:100%;" class="filter-item" placeholder="请选择" :disabled="form.id !== ''"> <el-select
v-model="form.regionId"
v-loading="loading"
style="width:100%;"
class="filter-item"
placeholder="请选择"
:disabled="form.id !== ''"
>
<el-option <el-option
v-for="(item, index) in regions" v-for="(item, index) in regions"
:key="index" :key="index"
@ -127,28 +157,55 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item v-if="'DIAMOND_EXCHANGE_GOLD' === form.type" label-width="110px"> <el-form-item
<el-input v-model="form.data" v-number placeholder="钻石兑换金币比例(%)" /> v-if="'DIAMOND_EXCHANGE_GOLD' === form.type"
label-width="110px"
>
<el-input
v-model="form.data"
v-number
placeholder="钻石兑换金币比例(%)"
/>
</el-form-item> </el-form-item>
<el-form-item v-if="'MIN_EXCHANGE_DIAMOND' === form.type" label-width="110px"> <el-form-item
<el-input v-model="form.data" v-number placeholder="钻石起兑最小数量" /> v-if="'MIN_EXCHANGE_DIAMOND' === form.type"
label-width="110px"
>
<el-input
v-model="form.data"
v-number
placeholder="钻石起兑最小数量"
/>
</el-form-item> </el-form-item>
<el-form-item v-if="'WITHDRAW_PROPORTION_TIPS' === form.type" label-width="0"> <el-form-item
v-if="'WITHDRAW_PROPORTION_TIPS' === form.type"
label-width="0"
>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label=">=美元"> <el-form-item label=">=美元">
<el-input v-model="data.start" v-number placeholder="大于等于多少美元" /> <el-input
v-model="data.start"
v-number
placeholder="大于等于多少美元"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="<=美元"> <el-form-item label="<=美元">
<el-input v-model="data.end" v-number placeholder="小于等于多少美元" /> <el-input
v-model="data.end"
v-number
placeholder="小于等于多少美元"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="1$:金币"> <el-form-item label="1$:金币">
<el-input v-model="data.value" placeholder="1$可获得金币数量" /> <el-input
v-model="data.value"
placeholder="1$可获得金币数量"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
@ -158,20 +215,34 @@
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item v-if="'COIN_SELLER_WITHDRAW_PROPORTION_TIPS' === form.type" label-width="0"> <el-form-item
v-if="'COIN_SELLER_WITHDRAW_PROPORTION_TIPS' === form.type"
label-width="0"
>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label=">=美元"> <el-form-item label=">=美元">
<el-input v-model="data.start" v-number placeholder="大于等于多少美元" /> <el-input
v-model="data.start"
v-number
placeholder="大于等于多少美元"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="<=美元"> <el-form-item label="<=美元">
<el-input v-model="data.end" v-number placeholder="小于等于多少美元" /> <el-input
v-model="data.end"
v-number
placeholder="小于等于多少美元"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="1$:金币"> <el-form-item label="1$:金币">
<el-input v-model="data.value" placeholder="1$可获得金币数量" /> <el-input
v-model="data.value"
placeholder="1$可获得金币数量"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
@ -181,20 +252,34 @@
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item v-if="'WITHDRAW_PROPORTION_DIAMOND_TIPS' === form.type" label-width="0"> <el-form-item
v-if="'WITHDRAW_PROPORTION_DIAMOND_TIPS' === form.type"
label-width="0"
>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label=">=钻石"> <el-form-item label=">=钻石">
<el-input v-model="data.start" v-number placeholder="大于等于多少钻石" /> <el-input
v-model="data.start"
v-number
placeholder="大于等于多少钻石"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="<=钻石"> <el-form-item label="<=钻石">
<el-input v-model="data.end" v-number placeholder="小于等于多少钻石" /> <el-input
v-model="data.end"
v-number
placeholder="小于等于多少钻石"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="1钻石:金币"> <el-form-item label="1钻石:金币">
<el-input v-model="data.value" placeholder="1钻石可获得金币数量" /> <el-input
v-model="data.value"
placeholder="1钻石可获得金币数量"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
@ -204,20 +289,34 @@
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item v-if="'WITHDRAW_PROPORTION_DIAMOND_USD_TIPS' === form.type" label-width="0"> <el-form-item
v-if="'WITHDRAW_PROPORTION_DIAMOND_USD_TIPS' === form.type"
label-width="0"
>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label=">=钻石"> <el-form-item label=">=钻石">
<el-input v-model="data.start" v-number placeholder="大于等于多少钻石" /> <el-input
v-model="data.start"
v-number
placeholder="大于等于多少钻石"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="<=钻石"> <el-form-item label="<=钻石">
<el-input v-model="data.end" v-number placeholder="小于等于多少钻石" /> <el-input
v-model="data.end"
v-number
placeholder="小于等于多少钻石"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="1$:钻石"> <el-form-item label="1$:钻石">
<el-input v-model="data.value" placeholder="1美金需要多少钻石数量" /> <el-input
v-model="data.value"
placeholder="1美金需要多少钻石数量"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
@ -228,22 +327,53 @@
</el-form-item> </el-form-item>
<el-form-item label-width="0"> <el-form-item label-width="0">
<el-col v-if="'RESIDUE_TARGET_EXCHANGE_PROPORTION' === form.type" :md="12" :sm="24"> <el-col
<el-form-item :label="(form.data > 0 ? form.data : '?') + '目标=1美元$'" prop="data"> v-if="'RESIDUE_TARGET_EXCHANGE_PROPORTION' === form.type"
<el-input v-model="form.data" v-number placeholder="目标数量" /> :md="12"
:sm="24"
>
<el-form-item
:label="(form.data > 0 ? form.data : '?') + '目标=1美元$'"
prop="data"
>
<el-input
v-model="form.data"
v-number
placeholder="目标数量"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col <el-col
v-if="'ROOM_CONTRIBUTION_ACTIVITY_RATIO' === form.type || 'GIFT_TO_OWN_GOLD_RATIO' === form.type || 'GIFT_TO_OTHER_GOLD_RATIO' === form.type || 'HOST_TERMINATION_FEE' === form.type || 'WITHDRAWAL_COMMISSION_RATIO' === form.type || 'GIFT_TO_OTHER_DIAMOND_RATIO'=== form.type || 'GIFT_TO_OTHER_DIAMOND_RATIO_AGENCY' === form.type v-if="
||'GIFT_TO_OWN_GOLD_RATIO_AGENCY' === form.type||'GIFT_TO_OTHER_GOLD_RATIO_AGENCY' === form.type ||'GIFT_TARGET_RATIO' === form.type" 'ROOM_CONTRIBUTION_ACTIVITY_RATIO' === form.type ||
'GIFT_TO_OWN_GOLD_RATIO' === form.type ||
'GIFT_TO_OTHER_GOLD_RATIO' === form.type ||
'HOST_TERMINATION_FEE' === form.type ||
'WITHDRAWAL_COMMISSION_RATIO' === form.type ||
'GIFT_TO_OTHER_DIAMOND_RATIO' === form.type ||
'GIFT_TO_OTHER_DIAMOND_RATIO_AGENCY' === form.type ||
'GIFT_TO_OWN_GOLD_RATIO_AGENCY' === form.type ||
'GIFT_TO_OTHER_GOLD_RATIO_AGENCY' === form.type ||
'GIFT_TARGET_RATIO' === form.type ||
'GIFT_TO_OTHER_GOLD_RATIO_NORMAL' === form.type ||
'GIFT_TO_OWN_GOLD_RATIO_NORMAL' === form.type
"
:md="12" :md="12"
:sm="24"> :sm="24"
>
<el-form-item label="值" prop="data"> <el-form-item label="值" prop="data">
<el-input v-model="form.data" v-number placeholder="请输入内容" /> <el-input
v-model="form.data"
v-number
placeholder="请输入内容"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item v-if="'ROOM_CONTRIBUTION_ACTIVITY_RATIO' === form.type" label-width="0"> <el-form-item
v-if="'ROOM_CONTRIBUTION_ACTIVITY_RATIO' === form.type"
label-width="0"
>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="图片"> <el-form-item label="图片">
<upload-image <upload-image
@ -261,27 +391,32 @@
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
<script> <script>
import { regionAssistConfigTable, updateRegionAssistConfig, addRegionAssistConfig, deleteRegionAssistConfig, regionConfigTable } from '@/api/sys' import {
import { regionAssistTypes } from '@/constant/type' regionAssistConfigTable,
import { mapGetters } from 'vuex' updateRegionAssistConfig,
addRegionAssistConfig,
deleteRegionAssistConfig,
regionConfigTable
} from "@/api/sys";
import { regionAssistTypes } from "@/constant/type";
import { mapGetters } from "vuex";
function getFormData() { function getFormData() {
return { return {
id: '', id: "",
sysOrigin: '', sysOrigin: "",
regionId: '', regionId: "",
type: '', type: "",
data: '', data: "",
imgUrl: '' imgUrl: ""
} };
} }
export default { export default {
name: 'RegionAssistConfig', name: "RegionAssistConfig",
data() { data() {
return { return {
list: [], list: [],
@ -289,158 +424,192 @@ export default {
regions: [], regions: [],
loading: false, loading: false,
listQuery: { listQuery: {
sysOrigin: 'HALAR', sysOrigin: "HALAR",
type: '', type: "",
regionId: '' regionId: ""
}, },
formVisible: false, formVisible: false,
textOptTitle: '', textOptTitle: "",
form: getFormData(), form: getFormData(),
submitLoading: false, submitLoading: false,
rules: { rules: {
regionId: [ regionId: [{ required: true, message: "请选择区域", trigger: "blur" }],
{ required: true, message: '请选择区域', trigger: 'blur' } type: [{ required: true, message: "请选择业务类型", trigger: "blur" }],
], data: [{ required: true, message: "请填写值", trigger: "blur" }]
type: [
{ required: true, message: '请选择业务类型', trigger: 'blur' }
],
data: [
{ required: true, message: '请填写值', trigger: 'blur' }
]
}, },
data: {}, data: {},
listLoading: true listLoading: true
} };
}, },
// //
directives: { directives: {
number: { number: {
bind(el) { bind(el) {
el.addEventListener('input', (e) => { el.addEventListener("input", e => {
e.target.value = e.target.value e.target.value = e.target.value
.replace(/[^0-9.]/g, '') .replace(/[^0-9.]/g, "")
.replace(/(\..*)\./g, '$1'); .replace(/(\..*)\./g, "$1");
}); });
} }
} }
}, },
computed: { computed: {
...mapGetters(['permissionsSysOriginPlatforms']) ...mapGetters(["permissionsSysOriginPlatforms"])
}, },
created() { created() {
this.listRegion() this.listRegion();
this.renderData() this.renderData();
}, },
methods: { methods: {
renderData() { renderData() {
const that = this const that = this;
that.listLoading = true that.listLoading = true;
regionAssistConfigTable(that.listQuery).then(res => { regionAssistConfigTable(that.listQuery).then(res => {
const { body } = res const { body } = res;
that.list = body that.list = body;
that.listLoading = false that.listLoading = false;
}) });
}, },
handleSearch() { handleSearch() {
this.renderData() this.renderData();
}, },
handleSysOriginSearch() { handleSysOriginSearch() {
this.listRegion() this.listRegion();
this.renderData() this.renderData();
}, },
listRegion() { listRegion() {
const that = this const that = this;
that.loading = true that.loading = true;
regionConfigTable({ 'sysOrigin': that.listQuery.sysOrigin }).then(res => { regionConfigTable({ sysOrigin: that.listQuery.sysOrigin })
that.regions = res.body || [] .then(res => {
that.loading = false that.regions = res.body || [];
}).catch(er => { that.loading = false;
that.loading = false })
}) .catch(er => {
that.loading = false;
});
}, },
submitForm() { submitForm() {
const that = this const that = this;
if (that.form.type === 'WITHDRAW_PROPORTION_TIPS' ||that.form.type==='COIN_SELLER_WITHDRAW_PROPORTION_TIPS' || that.form.type === 'WITHDRAW_PROPORTION_DIAMOND_TIPS' || that.form.type === 'WITHDRAW_PROPORTION_DIAMOND_USD_TIPS') { if (
that.form.data = JSON.stringify(that.data) that.form.type === "WITHDRAW_PROPORTION_TIPS" ||
that.form.type === "COIN_SELLER_WITHDRAW_PROPORTION_TIPS" ||
that.form.type === "WITHDRAW_PROPORTION_DIAMOND_TIPS" ||
that.form.type === "WITHDRAW_PROPORTION_DIAMOND_USD_TIPS"
) {
that.form.data = JSON.stringify(that.data);
} }
that.$refs.form.validate(valid => { that.$refs.form.validate(valid => {
if (valid) { if (valid) {
that.submitLoading = true that.submitLoading = true;
that.form.sysOrigin = that.listQuery.sysOrigin that.form.sysOrigin = that.listQuery.sysOrigin;
if (that.form.id) { if (that.form.id) {
updateRegionAssistConfig(that.form).then(res => { updateRegionAssistConfig(that.form)
that.submitLoading = false .then(res => {
that.formVisible = false that.submitLoading = false;
that.form = getFormData() that.formVisible = false;
that.renderData() that.form = getFormData();
}).catch(er => { that.renderData();
that.submitLoading = false })
console.error(er) .catch(er => {
this.$emit('fail') that.submitLoading = false;
}) console.error(er);
return this.$emit("fail");
});
return;
} }
addRegionAssistConfig(that.form).then(res => { addRegionAssistConfig(that.form)
that.submitLoading = false .then(res => {
that.formVisible = false that.submitLoading = false;
that.form = getFormData() that.formVisible = false;
that.renderData() that.form = getFormData();
}).catch(er => { that.renderData();
that.submitLoading = false })
console.error(er) .catch(er => {
}) that.submitLoading = false;
console.error(er);
});
} else { } else {
console.error('error submit!!') console.error("error submit!!");
return false return false;
} }
}) });
}, },
handleClose() { handleClose() {
this.formVisible = false this.formVisible = false;
}, },
handleCreate() { handleCreate() {
this.formVisible = true this.formVisible = true;
this.textOptTitle = '添加' this.textOptTitle = "添加";
this.form = getFormData() this.form = getFormData();
}, },
getDesc(row) { getDesc(row) {
if (row.type === 'WITHDRAW_PROPORTION_TIPS'|| row.type === 'COIN_SELLER_WITHDRAW_PROPORTION_TIPS') { if (
const obj = JSON.parse(row.data) row.type === "WITHDRAW_PROPORTION_TIPS" ||
return '(1$ : ' + obj.value + ') 范围:' + obj.start + '~' + obj.end + ' 提示:' + obj.text row.type === "COIN_SELLER_WITHDRAW_PROPORTION_TIPS"
) {
const obj = JSON.parse(row.data);
return (
"(1$ : " +
obj.value +
") 范围:" +
obj.start +
"~" +
obj.end +
" 提示:" +
obj.text
);
} }
if (row.type === 'WITHDRAW_PROPORTION_DIAMOND_TIPS' || row.type === 'WITHDRAW_PROPORTION_DIAMOND_USD_TIPS') { if (
const obj = JSON.parse(row.data) row.type === "WITHDRAW_PROPORTION_DIAMOND_TIPS" ||
return '(1钻石 : ' + obj.value + ') 范围:' + obj.start + '~' + obj.end + ' 提示:' + obj.text row.type === "WITHDRAW_PROPORTION_DIAMOND_USD_TIPS"
) {
const obj = JSON.parse(row.data);
return (
"(1钻石 : " +
obj.value +
") 范围:" +
obj.start +
"~" +
obj.end +
" 提示:" +
obj.text
);
} }
return row.data return row.data;
}, },
handleUpdate(row) { handleUpdate(row) {
this.textOptTitle = '修改' this.textOptTitle = "修改";
this.formVisible = true this.formVisible = true;
const resForm = Object.assign({}, row) const resForm = Object.assign({}, row);
this.form = resForm this.form = resForm;
if (resForm.type === 'WITHDRAW_PROPORTION_TIPS' ||resForm.type==='COIN_SELLER_WITHDRAW_PROPORTION_TIPS' || row.type === 'WITHDRAW_PROPORTION_DIAMOND_TIPS' || row.type === 'WITHDRAW_PROPORTION_DIAMOND_USD_TIPS') { if (
this.data = JSON.parse(resForm.data) resForm.type === "WITHDRAW_PROPORTION_TIPS" ||
resForm.type === "COIN_SELLER_WITHDRAW_PROPORTION_TIPS" ||
row.type === "WITHDRAW_PROPORTION_DIAMOND_TIPS" ||
row.type === "WITHDRAW_PROPORTION_DIAMOND_USD_TIPS"
) {
this.data = JSON.parse(resForm.data);
} }
}, },
handleDelete(row) { handleDelete(row) {
const that = this const that = this;
that.$confirm('确认删除吗?', '提示', { that
type: 'warning' .$confirm("确认删除吗?", "提示", {
}).then(() => { type: "warning"
that.listLoading = true
deleteRegionAssistConfig(row.id).then((res) => {
that.listLoading = false
that.$message.success('删除成功')
that.renderData()
}) })
}).catch(() => { .then(() => {
that.listLoading = true;
}) deleteRegionAssistConfig(row.id).then(res => {
that.listLoading = false;
that.$message.success("删除成功");
that.renderData();
});
})
.catch(() => {});
} }
} }
} };
</script> </script>