CloudGamingAdmin/admin-client/src/views/Apps/Ext/T_App_Configs/Info.vue
2024-12-04 14:22:48 +08:00

267 lines
8.3 KiB
Vue

<script lang="ts" setup>
import { reactive, ref } from "vue";
import { FormInstance } from "ant-design-vue";
import Tools from "@/core/utils/Tools";
import T_App_ConfigService from "@/services/apps/Ext/T_App_ConfigService";
import MonacoEditor from "@/core/components/MonacoEditor.vue";
//定义组件事件
const props = defineProps<{ onSuccess: () => void }>();
const state = reactive({
vm: {
id: "",
form: {} as any,
},
visible: false,
loading: false,
});
//表单实例
const refForm = ref<FormInstance>();
//向父级导出 函数
defineExpose({
/**
* 打开表单初始化
* @param key
*/
open: (key: string = "") => {
state.visible = true;
if (state.visible) {
state.vm.id = key;
}
refForm.value?.resetFields();
//初始化表单数据
state.loading = true;
T_App_ConfigService.findForm(key).then((res) => {
state.loading = false;
if (res.code != 200) return;
if (res.data.form.id == 0) {
res.data.form.configType = 1;
// res.data.form.actionId = 0;
res.data.form.isEnabled = true;
}
if (res.data.form.configValue == null) {
res.data.form.configValue = "";
}
if (res.data.form.isEnabled == null) {
res.data.form.isEnabled = false;
}
state.vm = res.data;
});
},
});
/**
*保存数据
*/
function save() {
refForm.value?.validate().then(async () => {
try {
state.loading = true;
const result = await T_App_ConfigService.saveForm(
state.vm.id,
state.vm.form
);
state.loading = false;
if (result.code != 200) return;
Tools.message.success("操作成功!");
props.onSuccess();
state.visible = false;
} catch (error) {
state.loading = false;
}
});
}
var xxx = "32132132";
var x = [
{ configType: 3, value: 1, lable: "游戏配置-玩游戏统一消耗费用" },
{ configType: 7, value: 1, lable: "审核配置" },
{ configType: 8, value: 1, lable: "用户协议配置" },
{ configType: 8, value: 2, lable: "隐私协议配置" },
];
const querySearch = (queryString: string, cb: any) => {
// call callback function to return suggestions
if (state.vm.form.configType != 0) {
var c = x.filter((it) => it.configType == state.vm.form.configType);
cb(c);
return;
}
cb([]);
};
</script>
<template>
<a-modal
v-model:open="state.visible"
:title="state.vm.id ? '编辑' : '新建'"
centered
@ok="state.visible = false"
:maskClosable="false"
:width="900"
>
<template #footer>
<a-button type="primary" :loading="state.loading" @click="save()">
提交</a-button
>
<a-button @click="state.visible = false">关闭</a-button>
</template>
<a-spin :spinning="state.loading">
<a-form ref="refForm" layout="vertical" :model="state.vm.form">
<a-row :gutter="[16, 0]">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item
label="配置名称"
name="name"
:rules="[{ required: true, message: '请输入', trigger: 'blur' }]"
>
<a-input
v-model:value="state.vm.form.name"
placeholder="请输入"
/>
</a-form-item>
</a-col>
<a-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
<a-form-item label="配置类型" name="configType">
<h-common-select
code="appconfigManage_type"
v-model="state.vm.form.configType"
:ShowAll="false"
:defaultValue="1"
/>
</a-form-item>
</a-col>
<a-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
<a-form-item label="配置ID" name="configId" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
<el-autocomplete
style=""
v-model="state.vm.form.configId"
:fetch-suggestions="querySearch"
clearable
class="inline-input"
placeholder=""
>
<template #default="{ item }">
<span class="link">[{{ item.value }}]{{ item.lable }}</span>
</template>
</el-autocomplete>
</a-form-item>
</a-col>
<a-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6">
<a-form-item label="渠道号" name="channelId">
<a-input
v-model:value="state.vm.form.channelId"
placeholder="请输入"
/>
</a-form-item>
</a-col>
<a-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6">
<a-form-item label="平台类型" name="plat">
<h-common-select
code="platform"
v-model="state.vm.form.plat"
:ShowAll="true"
defaultValue=""
/>
</a-form-item>
</a-col>
<a-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6">
<a-form-item label="app版本号" name="appVersion">
<a-tooltip
placement="bottomLeft"
title="1.0.1表示app等于1.0.1版本, +1.0.1表示app大于1.0.1的版本,-1.0.1表示app小于1.0.1版本"
>
<a-input
v-model:value="state.vm.form.appVersion"
placeholder="请输入"
/>
</a-tooltip>
</a-form-item>
</a-col>
<a-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6">
<a-form-item label="是否启用" name="isEnabled">
<a-radio-group
v-model:value="state.vm.form.isEnabled"
name="isEnabled"
>
<a-radio :value="false">否</a-radio>
<a-radio :value="true">是</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<a-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
<a-form-item label="配置值类型" name="actionId">
<h-common-select
code="appconfigManage_action"
v-model="state.vm.form.actionId"
:defaultValue="0"
/>
</a-form-item>
</a-col>
<a-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6">
<a-form-item label="州" name="continent">
<a-input
v-model:value="state.vm.form.continent"
placeholder="请输入"
/>
</a-form-item>
</a-col>
<a-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6">
<a-form-item label="国家" name="countryName">
<a-input
v-model:value="state.vm.form.countryName"
placeholder="请输入"
/>
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="配置值" name="configValue">
<a-textarea
v-if="state.vm.form.actionId == 0"
v-model:value="state.vm.form.configValue"
placeholder=""
:auto-size="{ minRows: 10, maxRows: 10 }"
/>
<h-image-btn
v-if="state.vm.form.actionId == 1"
v-model="state.vm.form.configValue"
/>
<MonacoEditor
v-if="state.vm.form.actionId == 3"
v-model:model-value="state.vm.form.configValue"
></MonacoEditor>
<WangEditor
v-if="state.vm.form.actionId == 2"
v-model:html="state.vm.form.configValue"
domainName="http://localhost:5600"
previewDomainName="http://localhost:5600"
:height="200"
/>
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="备注" name="desc">
<a-input
v-model:value="state.vm.form.desc"
placeholder="请输入"
/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
</a-modal>
</template>
<style>
.monaco-editor {
width: 100%;
height: 200px;
}
</style>