编写设置更新
This commit is contained in:
parent
e0d5391c76
commit
278c078c5c
|
@ -8,7 +8,7 @@
|
|||
name="viewport"
|
||||
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"
|
||||
/>
|
||||
<title>评级系统</title>
|
||||
<title>维德评级</title>
|
||||
<link rel="icon" href="/favicon2.ico" />
|
||||
<script>
|
||||
window.process = {};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"Version": "4.5.0",
|
||||
"Title": "评级系统",
|
||||
"Title": "维德评级",
|
||||
"FixedHeader": true,
|
||||
"HiddenSideBar": false,
|
||||
"MultiTagsCache": false,
|
||||
|
|
|
@ -12,7 +12,7 @@ import zhCn from "element-plus/lib/locale/lang/zh-cn";
|
|||
import {ReDialog} from "@/components/ReDialog";
|
||||
import {api} from "@/api/api";
|
||||
import {handleAsyncRoutes, initRouter} from "@/router/utils";
|
||||
import {spost} from "@/api/smebiz";
|
||||
import {spost} from "src/api/common";
|
||||
import {useUserStore} from "@/store/modules/user";
|
||||
import {storageLocal} from "@pureadmin/utils";
|
||||
import {usePermissionStoreHook} from "@/store/modules/permission";
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -12,6 +12,7 @@ import Calendar from "@iconify-icons/ep/calendar";
|
|||
import Avatar from "@iconify-icons/ep/avatar";
|
||||
import DataAnalysis from "@iconify-icons/ep/data-analysis";
|
||||
import Edit from "@iconify-icons/ep/edit";
|
||||
import Setting from "@iconify-icons/ep/setting";
|
||||
|
||||
addIcon("homeFilled", HomeFilled);
|
||||
addIcon("calendar", Calendar);
|
||||
|
@ -20,3 +21,4 @@ addIcon("informationLine", InformationLine);
|
|||
addIcon("lollipop", Lollipop);
|
||||
addIcon("dataAnalysis", DataAnalysis);
|
||||
addIcon("edit", Edit);
|
||||
addIcon("setting", Setting);
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
export default {
|
||||
path: "/system",
|
||||
name: "系统设置",
|
||||
component: () => import("@/views/system/setting.vue"),
|
||||
meta: {
|
||||
title: "系统设置",
|
||||
// 通过设置showParent为true,显示父级
|
||||
showParent: true,
|
||||
keepAlive: true,
|
||||
icon: "setting",
|
||||
meta: {
|
||||
rank:1,
|
||||
roles:[1]
|
||||
}
|
||||
}
|
||||
// children: [
|
||||
// {
|
||||
// path: "/manage/company_data",
|
||||
// name: "company_data",
|
||||
// component: () => import("@/views/rate/companyDataManage.vue"),
|
||||
// meta: {
|
||||
// title: "企业数据管理",
|
||||
// // 通过设置showParent为true,显示父级
|
||||
// showParent: true,
|
||||
// keepAlive: true
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// path: "/manage/rate",
|
||||
// name: "rate",
|
||||
// component: () => import("@/views/rate/rateManage.vue"),
|
||||
// meta: {
|
||||
// title: "信誉评级管理",
|
||||
// // 通过设置showParent为true,显示父级
|
||||
// showParent: true,
|
||||
// keepAlive: true
|
||||
// }
|
||||
// }
|
||||
// ]
|
||||
};
|
|
@ -45,7 +45,7 @@ import { ElMessage } from "element-plus";
|
|||
import { onMounted, ref } from "vue";
|
||||
import ApplyBar from "@/views/dashboard/components/ApplyBar.vue";
|
||||
import RateLevelPie from "@/views/dashboard/components/RateLevelPie.vue";
|
||||
import { spost, st } from "@/api/smebiz";
|
||||
import { spost, st } from "src/api/common";
|
||||
|
||||
defineOptions({
|
||||
name: "dashboard",
|
||||
|
|
|
@ -285,7 +285,7 @@ import {ElMessage} from "element-plus";
|
|||
import FileUploadMd from "@/components/EditTabel/fileUploadMd.vue";
|
||||
import dayjs from "dayjs";
|
||||
import {formatDatetime} from "@/utils/format";
|
||||
import {sapi, spost, st} from "@/api/smebiz";
|
||||
import {sapi, spost, st} from "src/api/common";
|
||||
import {downloadByUrl} from "@pureadmin/utils";
|
||||
import SheetPlus from "@/wcq-components/SheetPlus/SheetPlus.vue";
|
||||
import FormTablePlus from "@/wcq-components/FormTablePlus/FormTablePlus.vue";
|
||||
|
|
|
@ -116,7 +116,7 @@ import {WarningFilled, View} from '@element-plus/icons-vue'
|
|||
import FileUploadMd from "@/components/EditTabel/fileUploadMd.vue";
|
||||
import dayjs from "dayjs";
|
||||
import {formatDatetime} from "@/utils/format";
|
||||
import {spost, st} from "@/api/smebiz";
|
||||
import {spost, st} from "src/api/common";
|
||||
import {downloadByUrl} from "@pureadmin/utils";
|
||||
import {getToken} from "@/utils/auth";
|
||||
import VueOfficeDocx from '@vue-office/docx'
|
||||
|
|
|
@ -409,7 +409,7 @@ import {WarningFilled, View} from '@element-plus/icons-vue'
|
|||
import FileUploadMd from "@/components/EditTabel/fileUploadMd.vue";
|
||||
import dayjs from "dayjs";
|
||||
import {formatDatetime} from "@/utils/format";
|
||||
import {spost, st} from "@/api/smebiz";
|
||||
import {spost, st} from "src/api/common";
|
||||
import {downloadByUrl} from "@pureadmin/utils";
|
||||
import {getToken} from "@/utils/auth";
|
||||
import VueOfficeDocx from '@vue-office/docx'
|
||||
|
|
|
@ -11,7 +11,7 @@ import {RateServe} from "@/views/smebiz/types";
|
|||
import {api} from "@/api/api";
|
||||
import {ElMessage} from "element-plus";
|
||||
import {useMultiTagsStoreHook} from "@/store/modules/multiTags";
|
||||
import {spost, st} from "@/api/smebiz";
|
||||
import {spost, st} from "src/api/common";
|
||||
|
||||
defineOptions({
|
||||
name: "examineWorkPage"
|
||||
|
|
|
@ -103,7 +103,7 @@ import ExamineWork from "@/views/smebiz/components/ExamineWork.vue";
|
|||
import RateWork from "@/views/smebiz/components/RateWork.vue";
|
||||
import {useRouter} from "vue-router";
|
||||
import {useMultiTagsStoreHook} from "@/store/modules/multiTags";
|
||||
import {spost, st} from "@/api/smebiz";
|
||||
import {spost, st} from "src/api/common";
|
||||
import dayjs from "dayjs";
|
||||
import {formatDatetime} from "../../utils/format";
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import {api} from "@/api/api";
|
|||
import {ElMessage} from "element-plus";
|
||||
import {useMultiTagsStoreHook} from "@/store/modules/multiTags";
|
||||
import RateWork from "@/views/smebiz/components/RateWork.vue";
|
||||
import {spost, st} from "@/api/smebiz";
|
||||
import {spost, st} from "src/api/common";
|
||||
|
||||
defineOptions({
|
||||
name: "rateWorkPage"
|
||||
|
|
|
@ -25,7 +25,7 @@ import {RateServe} from "@/views/smebiz/types";
|
|||
import {ElMessage, TabsPaneContext} from "element-plus";
|
||||
import RateWork from "@/views/smebiz/components/RateWork.vue";
|
||||
import ExamineWork from "@/views/smebiz/components/ExamineWork.vue";
|
||||
import {spost, st} from "@/api/smebiz";
|
||||
import {spost, st} from "src/api/common";
|
||||
import RateFlow from "@/views/smebiz/components/RateFlow.vue";
|
||||
|
||||
defineOptions({
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
<template>
|
||||
<div class="flex flex-col" style="height: 100%;">
|
||||
<el-table
|
||||
class="flex-1 edit-table"
|
||||
:data="tableData"
|
||||
border
|
||||
:span-method="objectSpanMethod"
|
||||
height="100%">
|
||||
<el-table-column align="center" label="类目" prop="section" width="200"/>
|
||||
<el-table-column align="center" label="项" prop="option"/>
|
||||
<el-table-column align="center" label="值" prop="value">
|
||||
<template #default="scope">
|
||||
<el-input size="small" v-model="scope.row.value" placeholder="请输入值"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" width="140">
|
||||
<template #default="scope">
|
||||
<el-button size="small" type="primary" @click="()=>updateItem(scope.row)">保存</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {spost, st} from "@/api/common";
|
||||
import {ElMessage, ElTable} from "element-plus";
|
||||
import {computed, onMounted, ref} from "vue";
|
||||
|
||||
|
||||
interface SettingItem {
|
||||
section: string,
|
||||
option: string,
|
||||
value: string
|
||||
}
|
||||
|
||||
interface SettingData {
|
||||
[key: string]: { [key: string]: string }
|
||||
}
|
||||
|
||||
const data = ref<SettingData>({})
|
||||
const tableData = computed<SettingItem[]>(() => {
|
||||
const temp: SettingItem[] = []
|
||||
Object.keys(data.value).forEach(section => {
|
||||
const items = data.value[section]
|
||||
Object.keys(items).forEach(option => {
|
||||
const value = items[option]
|
||||
temp.push({section, option, value})
|
||||
})
|
||||
})
|
||||
return temp
|
||||
})
|
||||
|
||||
const sectionIndex = computed<{ [key: number]: number }>(() => {
|
||||
const sectionFirstIndex: { [key: string]: { count: number, index?: number } } = {}
|
||||
Object.keys(data.value).filter(section => data.value[section]).forEach(section => {
|
||||
sectionFirstIndex[section] = {count: Object.keys(data.value[section]).length}
|
||||
})
|
||||
for (let i = 0; i < tableData.value.length; i++) {
|
||||
const section = tableData.value[i].section
|
||||
if (sectionFirstIndex[section].index === undefined) {
|
||||
sectionFirstIndex[section].index = i
|
||||
}
|
||||
}
|
||||
const temp = {}
|
||||
Object.keys(sectionFirstIndex).forEach(section => {
|
||||
const {count, index} = sectionFirstIndex[section]
|
||||
temp[index] = count
|
||||
})
|
||||
return temp
|
||||
})
|
||||
|
||||
const objectSpanMethod = ({
|
||||
row,
|
||||
column,
|
||||
rowIndex,
|
||||
columnIndex,
|
||||
}) => {
|
||||
if (columnIndex === 0) {
|
||||
const count = sectionIndex.value[rowIndex]
|
||||
if (count) {
|
||||
return {
|
||||
rowspan: count,
|
||||
colspan: 1,
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
rowspan: 0,
|
||||
colspan: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function getSettingData() {
|
||||
const res = await spost('/wd-rating/system/setting/get')
|
||||
const {error} = res
|
||||
if (error) {
|
||||
ElMessage.warning(error.detail.toString())
|
||||
} else {
|
||||
data.value = res.data.data
|
||||
}
|
||||
}
|
||||
|
||||
async function updateItem(row: SettingItem) {
|
||||
const {section, option, value} = row
|
||||
const res = await spost('/wd-rating/system/setting/update_item', {section, option, value})
|
||||
const {error} = res
|
||||
if (error) {
|
||||
ElMessage.warning(error.detail.toString())
|
||||
} else {
|
||||
ElMessage.success("更新成功")
|
||||
await getSettingData()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async function update() {
|
||||
const newData: SettingData = {}
|
||||
tableData.value.forEach(item => {
|
||||
if (!newData[item.section]) {
|
||||
newData[item.section] = {}
|
||||
}
|
||||
newData[item.section][item.option] = item.value
|
||||
})
|
||||
const res = await spost('/wd-rating/system/setting/update', {data: newData})
|
||||
const {error} = res
|
||||
if (error) {
|
||||
ElMessage.warning(error.detail.toString())
|
||||
} else {
|
||||
ElMessage.success("更新成功")
|
||||
await getSettingData()
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getSettingData()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
|
@ -45,7 +45,7 @@ export default ({command, mode}: ConfigEnv): UserConfigExport => {
|
|||
// 本地跨域代理 https://cn.vitejs.dev/config/server-options.html#server-proxy
|
||||
proxy: {
|
||||
"/wd-rating/": {
|
||||
target: "http://127.0.0.1:8008",
|
||||
target: "http://127.0.0.1:8021",
|
||||
// target: "http://122.9.155.209",
|
||||
changeOrigin: true
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue