<template>
|
<LoadingLayout :loading="isLoading">
|
<ProForm :model="form" ref="dialogForm" label-width="120px">
|
<div class="configure-dialog-form-title">通道配置</div>
|
<ProFormItemV2
|
v-for="(item, index) in enabledElectronSignSettings"
|
:label="item.accessName"
|
:key="item.access"
|
prop="electronSignAccesses"
|
required
|
>
|
<ProFormSwitch
|
v-model="form.electronSignAccesses[index]"
|
:active-value="Number(item.access)"
|
:inactive-value="null"
|
></ProFormSwitch>
|
</ProFormItemV2>
|
</ProForm>
|
</LoadingLayout>
|
</template>
|
|
<script setup lang="ts">
|
import { FormInstance } from 'element-plus';
|
import { ProForm, ProFormItemV2, ProFormSwitch, LoadingLayout } from '@bole-core/components';
|
import * as enterpriseServices from '@/services/api/enterprise';
|
import { useQuery } from '@tanstack/vue-query';
|
import { useEnabledElectronSignSettings } from '@/hooks';
|
|
defineOptions({
|
name: 'ElectronicConfigureView',
|
});
|
|
type Props = {
|
id: string;
|
};
|
|
const props = withDefaults(defineProps<Props>(), {});
|
|
const dialogForm = ref<FormInstance>();
|
|
const { enabledElectronSignSettings, invalidateQueries } = useEnabledElectronSignSettings({
|
all: true,
|
});
|
|
const form = reactive({
|
electronSignAccesses: [] as EnumElectronSignAccess[],
|
});
|
|
const EnumElectronSignAccessList = computed(() =>
|
Object.values(EnumElectronSignAccess)
|
.filter(Number)
|
.map((x) => Number(x))
|
);
|
|
const { isLoading } = useQuery({
|
queryKey: ['enterpriseServices/getEnterpriseElectronSignSetting', props.id],
|
queryFn: async () => {
|
return await enterpriseServices.getEnterpriseElectronSignSetting({
|
id: props.id,
|
});
|
},
|
onSuccess(data) {
|
form.electronSignAccesses = EnumElectronSignAccessList.value.map((value) =>
|
data.electronSignAccesses.includes(value) ? value : null
|
);
|
},
|
});
|
|
async function createOrEditFlexEnterpriseSignSetting() {
|
try {
|
if (!dialogForm.value) return;
|
const valid = await dialogForm.value.validate();
|
if (!valid) return;
|
let params: API.SetEnterpriseElectronSignSettingCommand = {
|
id: props.id,
|
electronSignAccesses: form.electronSignAccesses.filter(Boolean),
|
};
|
let res = await enterpriseServices.setEnterpriseElectronSignSetting(params);
|
invalidateQueries();
|
return res;
|
} catch (error) {}
|
}
|
|
defineExpose({
|
onConfirm: createOrEditFlexEnterpriseSignSetting,
|
});
|
</script>
|
|
<style lang="scss" scoped>
|
@use '@/style/common.scss' as *;
|
|
.configure-dialog-form-title {
|
margin-bottom: 10px;
|
font-size: 15px;
|
font-weight: bold;
|
line-height: 36px;
|
}
|
</style>
|