基于vue3.0和element-plus的组件库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

80 lines
2.6 KiB

<template>
<SearchRow :title="t('config.title')" :del="false" :add="false" @query="query"></SearchRow>
<ListTable @query="query" :props="props" :example="example" :page="true" :data="result">
<template #action="{ row }">
<TableAction @modify="modify(row)" :del="false">
</TableAction>
</template>
</ListTable>
<el-dialog :title="t('base.modify') + t('config.name')" v-model="flag.modify" :close-on-click-modal="false"
top="15vh" width="40%" @keydown.enter.native="confirm">
<ModifyForm ref="form" :param="config" :rules="rules" :items="items" @confirm="confirm" :width="100"
@cancel="flag.modify = false">
</ModifyForm>
</el-dialog>
</template>
<script lang="ts" setup>
import { useStore } from "vuex";
import { reactive, onMounted, ref } from "vue";
import { Api, ListTable, SearchRow, NoobInput, TableAction, NoobSelect, NoobButton, ModifyForm, Element, PageResult, PageExample } from "noob-mengyxu";
import { useI18n } from "vue3-i18n";
const { t } = useI18n();
const { state, commit, dispatch } = useStore();
const { list, set } = Api.config;
const { SimpleRequired } = Element;
const result = ref(new PageResult());
const example = reactive<any>(new PageExample());
const flag = reactive({
modify: false,
})
const form = ref();
const config = ref<any>();
const props = [
// { i18n: 'config.prop.0', code: 'cfgKey', width: 120 },
{ i18n: 'config.prop.1', code: 'cfgName', width: 120 },
{ i18n: 'config.prop.2', code: 'cfgValue', width: 120 },
// { i18n: 'config.prop.3', code: 'cfgType', width: 120 },
{ i18n: 'config.prop.4', code: 'cfgDesc', width: 180 },
// { i18n: 'config.prop.5', code: 'cfgStatus', width: 180, dict: 'active_status' },
{ i18n: 'config.prop.6', code: 'updateTime', width: 180 },
{ i18n: 'config.prop.7', code: 'updateUser', width: 180, },
{ i18n: 'config.prop.8', code: 'action', slot: true, width: 120, fixed: 'right' }
]
const rules = {
cfgValue: [new SimpleRequired('config.prop.2')]
}
const items = [
{ i18n: 'config.prop.2', code: 'cfgValue' },
{ i18n: 'config.prop.4', code: 'cfgDesc' },
];
const query = () => {
flag.modify = false;
list(example).then((rsp: any) => result.value = rsp)
}
const modify = row => {
config.value = JSON.parse(JSON.stringify(row))
form.value?.clearValidate();
flag.modify = true;
}
const confirm = () => {
set(config.value).then(query)
}
onMounted(() => {
query();
dispatch("getDictMap", ['active_status'])
});
</script>
<style lang="scss" scoped>
//@import url(); css</style>