编写设置更新

This commit is contained in:
wcq 2023-10-07 17:00:17 +08:00
parent e0d5391c76
commit 278c078c5c
18 changed files with 641 additions and 1973 deletions

View File

@ -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 = {};

View File

@ -1,6 +1,6 @@
{
"Version": "4.5.0",
"Title": "评级系统",
"Title": "维德评级",
"FixedHeader": true,
"HiddenSideBar": false,
"MultiTagsCache": false,

View File

@ -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

View File

@ -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);

View File

@ -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
// }
// }
// ]
};

View File

@ -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",

View File

@ -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";

View File

@ -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'

View File

@ -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'

View File

@ -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"

View File

@ -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";

View File

@ -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"

View File

@ -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({

View File

@ -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>

View File

@ -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
}