|
@@ -0,0 +1,152 @@
|
|
|
+<template>
|
|
|
+ <CusDialog
|
|
|
+ :show="show"
|
|
|
+ :title="titleCpt"
|
|
|
+ @onClose="$emit('update:show', false)"
|
|
|
+ width="600px"
|
|
|
+ height="auto"
|
|
|
+ @onSubmit="onSubmit"
|
|
|
+ :loading="state.loading"
|
|
|
+ >
|
|
|
+ <div class="__cus-dialog-form">
|
|
|
+ <CusForm ref="ref_form" label-width="80px">
|
|
|
+ <CusFormColumn
|
|
|
+ :span="24"
|
|
|
+ required
|
|
|
+ label="名称"
|
|
|
+ v-model:param="state.form.themeName"
|
|
|
+ />
|
|
|
+ <CusFormColumn
|
|
|
+ :span="24"
|
|
|
+ required
|
|
|
+ label="类别"
|
|
|
+ v-model:param="state.form.themeType"
|
|
|
+ link="select"
|
|
|
+ :options="DictionaryStore.themeTypeList"
|
|
|
+ :disabled="transfer.mode !== 'add'"
|
|
|
+ />
|
|
|
+ <CusFormColumn
|
|
|
+ :span="24"
|
|
|
+ required
|
|
|
+ label="状态"
|
|
|
+ v-model:param="state.form.themeState"
|
|
|
+ link="select"
|
|
|
+ :options="DictionaryStore.themeStatusList"
|
|
|
+ />
|
|
|
+ <template v-if="state.form.themeType && state.form.themeType != '1'">
|
|
|
+ <CusFormColumn
|
|
|
+ :span="24"
|
|
|
+ required
|
|
|
+ label="URL"
|
|
|
+ v-model:param="state.form.themeUrl"
|
|
|
+ :disabled="state.form.themeType == '2'"
|
|
|
+ />
|
|
|
+ <template v-if="state.form.themeType == '2'">
|
|
|
+ <CusFormColumn
|
|
|
+ :span="24"
|
|
|
+ required
|
|
|
+ label="参数"
|
|
|
+ v-model:param="state.form.themeParam"
|
|
|
+ link="select"
|
|
|
+ multiple
|
|
|
+ filterable
|
|
|
+ allow-create
|
|
|
+ default-first-option
|
|
|
+ :reserve-keyword="false"
|
|
|
+ :options="[]"
|
|
|
+ static
|
|
|
+ placeholder="请输入参数,按回车保存"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ <template v-else-if="state.form.themeType == '3'">
|
|
|
+ <CusFormColumn
|
|
|
+ :span="24"
|
|
|
+ required
|
|
|
+ label="参数"
|
|
|
+ v-model:param="state.form.themeParam"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </CusForm>
|
|
|
+ </div>
|
|
|
+ </CusDialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+import {computed, getCurrentInstance, nextTick, reactive, ref, watch} from "vue";
|
|
|
+import {useDictionaryStore} from "@/stores";
|
|
|
+import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
+import {sysThemeAdd, sysThemeFind, sysThemeUpdate} from "@/api/modules/manage/theme";
|
|
|
+
|
|
|
+const emit = defineEmits(['update:show', 'refresh'])
|
|
|
+const {proxy} = getCurrentInstance()
|
|
|
+const DictionaryStore = useDictionaryStore()
|
|
|
+const props = defineProps({
|
|
|
+ show: {default: false},
|
|
|
+ transfer: {}
|
|
|
+ })
|
|
|
+const state: any = reactive({
|
|
|
+ detail: {},
|
|
|
+ form: {},
|
|
|
+ loading: false
|
|
|
+})
|
|
|
+const ref_form = ref()
|
|
|
+const titleCpt = computed(() => {
|
|
|
+ let t = '全局系统级主题样式配置'
|
|
|
+ return t
|
|
|
+})
|
|
|
+const onSubmit = () => {
|
|
|
+ ref_form.value.submit().then(() => {
|
|
|
+ ElMessageBox.confirm("是否提交?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ } as any).then(() => {
|
|
|
+ state.loading = true
|
|
|
+ const params = JSON.parse(JSON.stringify(state.detail))
|
|
|
+ params.themeParam = JSON.stringify(state.form)
|
|
|
+ sysThemeUpdate(params).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ ElMessage.success('配置成功!')
|
|
|
+ emit('update:show', false)
|
|
|
+ emit('refresh')
|
|
|
+ } else {
|
|
|
+ ElMessage.error(res.msg)
|
|
|
+ }
|
|
|
+ state.loading = false
|
|
|
+ })
|
|
|
+ }).catch(() => {})
|
|
|
+ }).catch((e) => {
|
|
|
+ ElMessage({
|
|
|
+ message: e[0].message,
|
|
|
+ grouping: true,
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+const initDetail = () => {
|
|
|
+ state.loading = true
|
|
|
+ sysThemeFind(props.transfer.id).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ state.detail = res.data
|
|
|
+ state.form = state.detail.themeParam ? JSON.parse(state.detail.themeParam) : {
|
|
|
+
|
|
|
+ }
|
|
|
+ state.loading = false
|
|
|
+ } else {
|
|
|
+ ElMessage.error(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+watch(() => props.show, (n) => {
|
|
|
+ if (n) {
|
|
|
+ initDetail()
|
|
|
+ nextTick(() => {
|
|
|
+ ref_form.value.reset()
|
|
|
+ })
|
|
|
+ }
|
|
|
+})
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+</style>
|