Commit 755912ad by 周海峰

Merge branch 'master' of https://code.palacesun.com/wuchao/nse-ui

parents c71137e9 0a79756d
import request from '@/utils/request'
/**
* 资产库 - 查询用户列表
* @param {*} query
* @returns
*/
export function queryUser(query) {
return request({
url: '/console/user/queryAll',
method: 'get',
params: query
})
}
/**
* 资产库 - 查询列表
* @param {*} query
* @returns
*/
export function queryAll(query) {
return request({
url: '/core/datasystem/queryAll',
method: 'get',
params: query
})
}
/**
* 资产库 - 数据源明细
* @param {*} query
* @returns
*/
export function initEdit(query) {
return request({
url: '/core/datasystem/initEdit',
method: 'get',
params: query
})
}
/**
* 资产库 - 查询数据库版本
* @param {*} query
* @returns
*/
export function queryDatadis(query) {
return request({
url: '/core/datadis/queryAll',
method: 'get',
params: query
})
}
/**
* 资产库 - 数据库版本检测
* @param {*} data
* @returns
*/
export function checkVersion(data) {
return request({
url: '/core/datasystem/checkVersion',
method: 'post',
data: data
})
}
/**
* 资产库 - 测试数据源名称是否重复
* @param {*} data
* @returns
*/
export function checkRepeatName(data) {
return request({
url: '/core/datasystem/checkRepeatName',
method: 'post',
data: data
})
}
/**
* 资产库 - 测试连接
* @param {*} data
* @returns
*/
export function testConnect(data) {
return request({
url: '/core/datasystem/testConnect',
method: 'post',
data: data
})
}
/**
* 资产库 - 新增修改接口
* @param {*} data
* @returns
*/
export function add(data) {
return request({
url: '/core/datasystem/add',
method: 'post',
data: data
})
}
/**
* 资产库 - 关联检测
* @param {*} data
* @returns
*/
export function checkDatasystemUsed(data) {
return request({
url: '/core/datasystem/checkDatasystemUsed',
method: 'post',
data: data
})
}
/**
* 资产库 - 删除数据源
* @param {*} data
* @returns
*/
export function del(data) {
return request({
url: '/core/datasystem/del',
method: 'post',
data: data
})
}
/**
* 资产库 - 查询字符编码
* @param {*} query
* @returns
*/
export function queryCharset(query) {
return request({
url: '/core/datasystem/queryCharset',
method: 'get',
params: query
})
}
\ No newline at end of file
import request from '@/utils/request'
/**
* 项目列表
* @param {*} query
* @returns
*/
export function selectDataProject(data) {
return request({
url: '/core/tdataproject/selectDataProject',
method: 'post',
data: data
})
}
import request from '@/utils/request'
/**
* 知识库 - 查询字典类型
* @param {*} query
* @returns
*/
export function dictinaryTypes(query) {
return request({
url: '/core/dictionary/getDictinaryTypes',
method: 'get',
params: query
})
}
/**
* 知识库 - 查询table数据
* @param {*} data
* @returns
*/
export function query(data) {
return request({
url: '/core/dictionary/query',
method: 'post',
data: data
})
}
/**
* 知识库 - 检测分类名称是否存在
* @param {*} query
* @returns
*/
export function checkNameExitType(query) {
return request({
url: '/core/dictionary/checkNameExitType',
method: 'get',
params: query
})
}
/**
* 知识库 - 添加修改分类
* @param {*} data
* @returns
*/
export function addDictionaryType(data) {
return request({
url: '/core/dictionary/addDictionaryType',
method: 'post',
data: data
})
}
/**
* 知识库 - 查询分类详情
* @param {*} data
* @returns
*/
export function initEditType(data) {
return request({
url: '/core/dictionary/initEditType',
method: 'post',
data: data
})
}
/**
* 知识库 - 删除分类
* @param {*} data
* @returns
*/
export function delDictionaryType(data) {
return request({
url: '/core/dictionary/delDictionaryType',
method: 'post',
data: data
})
}
/**
* 知识库 - 添加修改值
* @param {*} data
* @returns
*/
export function add(data) {
return request({
url: '/core/dictionary/add',
method: 'post',
data: data
})
}
/**
* 知识库 - 删除值
* @param {*} data
* @returns
*/
export function delValue(data) {
return request({
url: '/core/dictionary/del',
method: 'post',
data: data
})
}
...@@ -34,8 +34,8 @@ function onSearch() { ...@@ -34,8 +34,8 @@ function onSearch() {
// 重置 // 重置
function onReset(formRef: FormInstance) { function onReset(formRef: FormInstance) {
queryForm.value.projectName = '' queryForm.value.proName = ''
queryForm.value.remark = '' queryForm.value.note = ''
emit('reset', formRef) emit('reset', formRef)
} }
...@@ -49,16 +49,16 @@ function onReset(formRef: FormInstance) { ...@@ -49,16 +49,16 @@ function onReset(formRef: FormInstance) {
:model="queryForm" :model="queryForm"
@search="onSearch" @search="onSearch"
@reset="onReset"> @reset="onReset">
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="proName">
<el-input <el-input
v-model="queryForm.projectName" v-model="queryForm.proName"
placeholder="请输入项目名称" placeholder="请输入项目名称"
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="note">
<el-input <el-input
v-model="queryForm.remark" v-model="queryForm.note"
placeholder="请输入备注" placeholder="请输入备注"
clearable clearable
/> />
......
<script setup name="ProjectManageList"> <script setup name="ProjectManageList">
import { getCurrentInstance, reactive, ref, toRefs } from 'vue' import { getCurrentInstance, reactive, ref, toRefs,onMounted } from 'vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import QueryForm from './QueryForm.vue' import QueryForm from './QueryForm.vue'
import ProjectEditDialog from './ProjectEditDialog.vue' import ProjectEditDialog from './ProjectEditDialog.vue'
...@@ -7,10 +7,29 @@ import DownloadPluginDialog from './DownloadPluginDialog.vue' ...@@ -7,10 +7,29 @@ import DownloadPluginDialog from './DownloadPluginDialog.vue'
import ExportDialog from './ExportDialog.vue' import ExportDialog from './ExportDialog.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import {changeRoute} from '@/utils/switchRoute' import {changeRoute} from '@/utils/switchRoute'
import {
selectDataProject
} from '@/api/project'
import useAppStore from '@/store/modules/app'
const appStore = useAppStore()
const projectAttr = ['数据源', '数据域', '发现规则'];
const router = useRouter() const router = useRouter()
const emit = defineEmits(['page']) const emit = defineEmits(['page'])
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const loginUser = {
tsysUser: {
id: appStore.userInfo.user.id,
username: appStore.userInfo.user.username
}
}
function onReset(formQuery) { function onReset(formQuery) {
console.log('onReset') console.log('onReset')
formQuery.resetFields() formQuery.resetFields()
...@@ -21,44 +40,49 @@ function onQuery() { ...@@ -21,44 +40,49 @@ function onQuery() {
} }
// 搜索按钮操作 // 搜索按钮操作
function handleQuery() { function handleQuery() {
queryParams.value.pageNum = 1 queryParams.value.page = 1
getList() getList()
} }
const data = reactive({ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, page: 1,
pageSize: 8, everypage: 8,
projectName: '', proName: '',
remark: '' note: ''
} }
}) })
// 表格数据 // 表格数据
const { queryParams } = toRefs(data) const { queryParams } = toRefs(data)
const tableList = ref([ const tableList = ref([
{ // {
id: '1', // id: '1',
projectName: '若依配测系统1', // proName: '若依配测系统1',
datasource: 'MySQL', // datasource: 'MySQL',
domain: '电商', // domain: '电商',
findRule: '自动发现' // findRule: '自动发现'
}, // },
{ // {
id: '2', // id: '2',
projectName: '若依配测系统2', // proName: '若依配测系统2',
datasource: 'Oracle', // datasource: 'Oracle',
domain: '金融', // domain: '金融',
findRule: '手动配置' // findRule: '手动配置'
}, // },
{ // {
id: '3', // id: '3',
projectName: '若依配测系统3', // proName: '若依配测系统3',
datasource: 'SQL Server', // datasource: 'SQL Server',
domain: '医疗', // domain: '医疗',
findRule: '规则匹配' // findRule: '规则匹配'
} // }
]) ])
const total = ref(3) const total = ref(3)
...@@ -68,9 +92,45 @@ function getList() { ...@@ -68,9 +92,45 @@ function getList() {
loading.value = true loading.value = true
setTimeout(() => { selectDataProject({
loginUser:loginUser,
everypage:queryParams.value.everypage,
note:queryParams.value.note,
page:queryParams.value.page,
proName:queryParams.value.proName,
}).then(res=>{
tableList.value = res.data.map(item => {
let arrs = []
projectAttr.forEach((name, index) => {
if (index === 0) {
arrs.push({
label: name,
value: item.list[0].s
})
} else if (index === 1){
arrs.push({
label: name,
value: item.list[3].s
})
} else if (index === 2) {
arrs.push({
label: name,
value: item.list[6] && item.list[6].s ? item.list[6].s : 0
})
}
})
item.list = arrs
return item;
});
total.value = res.totalCount;
loading.value = false loading.value = false
}, 3000); console.log('tableList.value',tableList.value)
})
// setTimeout(() => {
// loading.value = false
// }, 3000);
} }
...@@ -140,12 +200,12 @@ const handleImportProject = (project) => { ...@@ -140,12 +200,12 @@ const handleImportProject = (project) => {
} }
// 导出项目 // 导出项目
const handleExportProject = (project) => { const handleExportProject = (project) => {
// ElMessage.success(`开始导出项目 "${project.projectName}"`) // ElMessage.success(`开始导出项目 "${project.proName}"`)
openExportDialog(project) openExportDialog(project)
} }
// 下载插件 // 下载插件
const handleDownloadPlugin = (project) => { const handleDownloadPlugin = (project) => {
// ElMessage.success(`开始下载 "${project.projectName}" 的插件`) // ElMessage.success(`开始下载 "${project.proName}" 的插件`)
currentProjectId.value = project.id // 假设项目对象中有id字段 currentProjectId.value = project.id // 假设项目对象中有id字段
downloadDialogVisible.value = true downloadDialogVisible.value = true
console.log(123) console.log(123)
...@@ -161,7 +221,7 @@ const handleSubmit = (formData) => { ...@@ -161,7 +221,7 @@ const handleSubmit = (formData) => {
// 模拟新增 // 模拟新增
const newProject = { const newProject = {
id: tableList.value.length + 1, id: tableList.value.length + 1,
projectName: formData.projectName, proName: formData.proName,
datasource: '待配置', datasource: '待配置',
domain: '待配置', domain: '待配置',
findRule: '待配置' findRule: '待配置'
...@@ -173,7 +233,7 @@ const handleSubmit = (formData) => { ...@@ -173,7 +233,7 @@ const handleSubmit = (formData) => {
// 模拟编辑 // 模拟编辑
const index = tableList.value.findIndex(p => p.id === currentProject.value.id) const index = tableList.value.findIndex(p => p.id === currentProject.value.id)
if (index !== -1) { if (index !== -1) {
tableList.value[index].projectName = formData.projectName tableList.value[index].proName = formData.proName
ElMessage.success('编辑项目成功') ElMessage.success('编辑项目成功')
} }
} }
...@@ -207,7 +267,9 @@ const handleBackup = (projectId) => { ...@@ -207,7 +267,9 @@ const handleBackup = (projectId) => {
console.log('备份项目:', projectId) console.log('备份项目:', projectId)
} }
onMounted(()=>{
handleQuery()
})
</script> </script>
<template> <template>
...@@ -239,7 +301,7 @@ const handleBackup = (projectId) => { ...@@ -239,7 +301,7 @@ const handleBackup = (projectId) => {
<el-card shadow="always"> <el-card shadow="always">
<template #header> <template #header>
<div class="flex-container justify-between align-center"> <div class="flex-container justify-between align-center">
{{ item.projectName }} {{ item.project }}
<el-dropdown placement="bottom-end" @command="(command) => handleCommandProject(command, item)"> <el-dropdown placement="bottom-end" @command="(command) => handleCommandProject(command, item)">
<el-button type="primary" icon="Operation"> <el-button type="primary" icon="Operation">
操作 操作
...@@ -258,18 +320,11 @@ const handleBackup = (projectId) => { ...@@ -258,18 +320,11 @@ const handleBackup = (projectId) => {
</div> </div>
</template> </template>
<div class="item-content flex-container align-center"> <div class="item-content flex-container align-center" v-for="(x,y) in item.list">
<div class="label">数据源:</div> <div class="label">{{x.label}}:</div>
<div class="value flex1">{{ item.datasource }}</div> <div class="value flex1">{{x.value}}</div>
</div>
<div class="item-content flex-container align-center">
<div class="label">数据域:</div>
<div class="value flex1">{{ item.domain }}</div>
</div>
<div class="item-content flex-container align-center">
<div class="label">发现规则:</div>
<div class="value flex1">{{ item.findRule }}</div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
...@@ -277,8 +332,8 @@ const handleBackup = (projectId) => { ...@@ -277,8 +332,8 @@ const handleBackup = (projectId) => {
<pagination <pagination
v-show="total > 0" v-show="total > 0"
:total="total" :total="total"
v-model:page="queryParams.pageNum" v-model:page="queryParams.page"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.everypage"
@pagination="getList" @pagination="getList"
/> />
</div> </div>
......
...@@ -89,16 +89,18 @@ const collapseAdd = (item) => { ...@@ -89,16 +89,18 @@ const collapseAdd = (item) => {
// 删除事件 // 删除事件
const collapseDelete = (item) => { const collapseDelete = (item) => {
console.log('删除事件', item) console.log('删除事件', item)
const { name } = item
delData.value = item delData.value = item
modalData.show = true modalData.show = true
modalData.icon = 'error' modalData.icon = 'error'
modalData.text = '确认删除[' + item.name + ']?' modalData.text = '确认删除[' + name + ']?'
} }
// 删除回调 // 删除回调
const modalConfirm = () => { const modalConfirm = () => {
const { id } = delData.value
const data = { const data = {
relationid: delData.value.id relationid: id
} }
del(data).then(res => { del(data).then(res => {
const { flag } = res const { flag } = res
...@@ -133,9 +135,10 @@ const getQueryenc = () => { ...@@ -133,9 +135,10 @@ const getQueryenc = () => {
queryenc({}).then((res) => { queryenc({}).then((res) => {
const { data } = res; const { data } = res;
encryptionList.value = data.map((item) => { encryptionList.value = data.map((item) => {
const { encryption_name, id } = item;
return { return {
value: item.id, value: id,
label: item.encryption_name, label: encryption_name,
}; };
}); });
}); });
......
...@@ -108,9 +108,10 @@ const getQuerysec = () => { ...@@ -108,9 +108,10 @@ const getQuerysec = () => {
querysec({ encryption_id: form.value.encryption_id }).then((res) => { querysec({ encryption_id: form.value.encryption_id }).then((res) => {
const { data } = res; const { data } = res;
secretkeyList.value = data.map((item) => { secretkeyList.value = data.map((item) => {
const { id, secret_key_name } = item;
return { return {
value: item.id, value: id,
label: item.secret_key_name, label: secret_key_name,
}; };
}); });
}); });
......
<script setup name="Dictionary"> <script setup name="Dictionary">
import { onMounted, ref, toRefs } from 'vue' import { onMounted, ref, toRefs } from 'vue'
import { Split } from 'view-ui-plus'; import { Split } from 'view-ui-plus';
import { ElMessage } from "element-plus";
import ModalPop from "@/components/EditPop/ModalPop.vue" import ModalPop from "@/components/EditPop/ModalPop.vue"
import AddClass from './modules/AddClass.vue' // 分类 import AddClass from './modules/AddClass.vue' // 分类
import AddValue from './modules/AddValue.vue' // 值 import AddValue from './modules/AddValue.vue' // 值
import uploadModule from './modules/uploadModule.vue' // 上传模块 import uploadModule from './modules/uploadModule.vue' // 上传模块
import { dictinaryTypes, query, delDictionaryType, delValue } from '@/api/ruleConfig/dictionary'
const splitNum = ref(0.31) // 左右分割比例 const splitNum = ref(0.31) // 左右分割比例
const data = reactive({ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageno: 1,
pageSize: 10, pagesize: 10,
}, typecode: '',
addClassForm: { typename: '',
name: "", value: '',
parvalue: ''
}, },
addValueForm: { addClassForm: {},
name: "", addValueForm: {},
} delData: {}
}); });
const { addClassForm, addValueForm, queryParams } = toRefs(data); const { addClassForm, addValueForm, queryParams, delData } = toRefs(data);
const total = ref(4) const classList = ref([])
const modalData = reactive({ const modalData = reactive({
show: false, show: false,
text: '', text: '',
...@@ -40,28 +44,10 @@ const modalPopData = reactive({ ...@@ -40,28 +44,10 @@ const modalPopData = reactive({
operation: '' operation: ''
}) })
const tableData = ref([ const tableData = reactive({
{ list: [],
date: '2016-05-02', total: 0
name: '王小虎', })
address: '上海市普陀区金沙江路 1518 弄',
},
{
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄',
},
{
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄',
},
{
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄',
},
])
// 新增关闭 // 新增关闭
...@@ -72,9 +58,8 @@ const modalPopCancel = () => { ...@@ -72,9 +58,8 @@ const modalPopCancel = () => {
// 新增/编辑 分类 // 新增/编辑 分类
const addClassClick = (type, item) => { const addClassClick = (type, item) => {
modalPopData.operation = type modalPopData.operation = type
if (modalPopData.operation === 'add') { if (modalPopData.operation === 'edit') {
addClassForm.value = {} addClassForm.value = item
} else if (modalPopData.operation === 'edit') {
} }
modalPopData.title = '字典分类' modalPopData.title = '字典分类'
modalPopData.type = 'class' modalPopData.type = 'class'
...@@ -85,8 +70,11 @@ const addClassClick = (type, item) => { ...@@ -85,8 +70,11 @@ const addClassClick = (type, item) => {
const addValueClick = (type, item) => { const addValueClick = (type, item) => {
modalPopData.operation = type modalPopData.operation = type
if (modalPopData.operation === 'add') { if (modalPopData.operation === 'add') {
addValueForm.value = {} addValueForm.value = {
typecode: queryParams.value.typecode,
}
} else if (modalPopData.operation === 'edit') { } else if (modalPopData.operation === 'edit') {
addValueForm.value = item
} }
modalPopData.title = '字典数据' modalPopData.title = '字典数据'
modalPopData.type = 'value' modalPopData.type = 'value'
...@@ -95,45 +83,81 @@ const addValueClick = (type, item) => { ...@@ -95,45 +83,81 @@ const addValueClick = (type, item) => {
// 删除值 // 删除值
const valueDelete = (item) => { const valueDelete = (item) => {
console.log('删除值', item) const { value } = item
delData.value = item
modalData.type = 'value' modalData.type = 'value'
modalData.icon = 'error' modalData.icon = 'error'
modalData.text = '删除后无法恢复,是否确认删除[' + item.name + ']?' modalData.text = '删除后无法恢复,是否确认删除[' + value + ']?'
modalData.show = true modalData.show = true
} }
// 删除分类 // 删除分类
const classDelete = (item) => { const classDelete = (item) => {
console.log('删除分类事件', item) const { value } = item
delData.value = item
modalData.type = 'class' modalData.type = 'class'
modalData.icon = 'error' modalData.icon = 'error'
modalData.text = '删除后无法恢复,是否确认删除[' + item.name + ']?' modalData.text = '删除后无法恢复,是否确认删除[' + value + ']?'
modalData.show = true modalData.show = true
} }
// 提示回调 // 提示回调
const modalConfirm = () => { const modalConfirm = () => {
if (modalData.type === 'class') { if (modalData.type === 'class') {
console.log('删除分类确认') const { value, text } = delData.value
const data = {
dictionaryTypeCode: value,
dictionaryTypeName: text
}
delDictionaryType(data).then(res => {
const { flag } = res
if (flag) {
ElMessage.success('删除成功')
} else {
ElMessage.error('删除失败')
}
if (value === queryParams.value.typecode) {
getData()
}else{
getData('class')
}
})
} else if (modalData.type === 'value') { } else if (modalData.type === 'value') {
console.log('删除值确认') const { id, name } = delData.value
const data = {
dicId: id,
dicName: name
}
delValue(data).then(res => {
const { flag } = res
if (flag) {
ElMessage.success('删除成功')
} else {
ElMessage.error('删除失败')
}
getTableData()
})
} }
modalData.show = false modalData.show = false
} }
// 分类查看 // 分类查看
const classView = (item) => { const classView = (item) => {
// editDomainForm.value = item if(queryParams.value.typecode === item.value) return
queryParams.value.typecode = item.value
queryParams.value.typename = item.text
getTableData()
} }
// 新增确认 // 新增确认
const AddDomainConfirm = (item) => { const AddDomainConfirm = (item) => {
if (modalPopData.type === 'class') { if (modalPopData.type === 'class') {
console.log('新增分类确认', item) getData('class')
} else if (modalPopData.type === 'value') { } else if (modalPopData.type === 'value') {
console.log('新增值确认', item) getTableData()
} else if (modalPopData.type === 'upload') { } else if (modalPopData.type === 'upload') {
console.log('导入', item) console.log('导入', item)
getTableData()
} }
modalPopData.show = false modalPopData.show = false
} }
...@@ -145,13 +169,39 @@ const importClick = () => { ...@@ -145,13 +169,39 @@ const importClick = () => {
modalPopData.show = true modalPopData.show = true
} }
// 获取分类名称
const getClassName = (value) => {
const item = classList.value.find(item => item.value === value)
return item? item.text : ''
}
// 获取列表数据 // 获取列表数据
const getList = () => { const getData = (type) => {
dictinaryTypes({}).then(res => {
const { data } = res;
classList.value = data
if (classList.value.length <= 0) return
if (type === 'class') {
getTableData()
}else {
queryParams.value.typecode = classList.value[0].value
queryParams.value.typename = classList.value[0].text
getTableData()
}
})
}
// 获取列表table数据
const getTableData = () => {
query(queryParams.value).then(res => {
const { data } = res;
tableData.list = data.list
tableData.total = data.total
})
} }
onMounted(() => { onMounted(() => {
getData()
}) })
</script> </script>
...@@ -171,13 +221,14 @@ onMounted(() => { ...@@ -171,13 +221,14 @@ onMounted(() => {
</div> </div>
<div style="width: 100%;flex: 1;overflow: auto;"> <div style="width: 100%;flex: 1;overflow: auto;">
<el-scrollbar> <el-scrollbar>
<div class="left_item" @click="classView"> <div class="left_item" :class="queryParams.typecode === item.value ? 'active' : ''"
<span>单姓1(1)</span> v-for="(item, index) in classList" :key="index" @click="classView(item)">
<span>{{ item.text }}{{ item.value }}</span>
<div class="left_item_btn"> <div class="left_item_btn">
<el-icon :size="16" @click.stop="addClassClick('edit')"> <el-icon :size="16" @click.stop="addClassClick('edit', item)">
<edit /> <edit />
</el-icon> </el-icon>
<el-icon :size="16" style="margin-left: 10px;" @click.stop="classDelete"> <el-icon :size="16" style="margin-left: 10px;" @click.stop="classDelete(item)">
<delete /> <delete />
</el-icon> </el-icon>
</div> </div>
...@@ -190,9 +241,9 @@ onMounted(() => { ...@@ -190,9 +241,9 @@ onMounted(() => {
<div class="right"> <div class="right">
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<el-form-item label="值:"> <el-form-item label="值:">
<el-input placeholder="" v-model="input3" class="input-with-select"> <el-input placeholder="" v-model="queryParams.value" class="input-with-select">
<template #append> <template #append>
<el-button icon="Search"></el-button> <el-button icon="Search" @click="getTableData"></el-button>
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
...@@ -202,28 +253,26 @@ onMounted(() => { ...@@ -202,28 +253,26 @@ onMounted(() => {
<el-button icon="Plus" type="primary" @click="addValueClick('add')">新增值</el-button> <el-button icon="Plus" type="primary" @click="addValueClick('add')">新增值</el-button>
</div> </div>
</div> </div>
<el-table :data="tableData" stripe style="width: 100%;flex:1;"> <el-table :data="tableData.list" stripe style="width: 100%;flex:1;">
<el-table-column prop="date" label="分类" align="center"></el-table-column> <el-table-column prop="date" label="分类" align="center">
<el-table-column prop="name" label="分类编码" align="center"></el-table-column> <template #default="scope">
<el-table-column prop="address" label="值" align="center"></el-table-column> {{ getClassName(scope.row.typecode) }}
<el-table-column prop="address" label="名称" align="center"></el-table-column> </template>
<el-table-column prop="address" label="父值" align="center"></el-table-column> </el-table-column>
<el-table-column prop="typecode" label="分类编码" align="center"></el-table-column>
<el-table-column prop="value" label="值" align="center"></el-table-column>
<el-table-column prop="name" label="名称" align="center"></el-table-column>
<el-table-column prop="parentvalue" label="父值" align="center"></el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="primary" link @click="addValueClick('edit')">编辑</el-button> <el-button type="primary" link @click="addValueClick('edit',scope.row)">编辑</el-button>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<el-button type="danger" link @click="valueDelete">删除</el-button> <el-button type="danger" link @click="valueDelete(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination v-show="tableData.total>0" :total="tableData.total" :isTextShow="true"
v-show="total>0" v-model:page="queryParams.pageno" v-model:limit="queryParams.pagesize" @pagination="getTableData" />
:total="total"
:isTextShow="true"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</div> </div>
</template> </template>
</Split> </Split>
...@@ -236,10 +285,10 @@ onMounted(() => { ...@@ -236,10 +285,10 @@ onMounted(() => {
<!-- 新增分类 / 新增值 --> <!-- 新增分类 / 新增值 -->
<ModalPop :width="'600'" v-model="modalPopData.show" :title="modalPopData.title" @cancel="modalPopCancel"> <ModalPop :width="'600'" v-model="modalPopData.show" :title="modalPopData.title" @cancel="modalPopCancel">
<template #content> <template #content>
<AddClass v-model="addClassForm" :type="modalPopData.operation" @cancel="modalPopCancel" @confirm="AddDomainConfirm" <AddClass :itemData="addClassForm" :type="modalPopData.operation" @cancel="modalPopCancel"
v-if="modalPopData.type === 'class'" /> @confirm="AddDomainConfirm" v-if="modalPopData.type === 'class'" />
<AddValue v-model="addValueForm" :type="modalPopData.operation" @cancel="modalPopCancel" @confirm="AddDomainConfirm" <AddValue :itemData="addValueForm" :type="modalPopData.operation" :classDict="classList" @cancel="modalPopCancel"
v-if="modalPopData.type === 'value'" /> @confirm="AddDomainConfirm" v-if="modalPopData.type === 'value'" />
<uploadModule @cancel="modalPopCancel" @confirm="AddDomainConfirm" v-if="modalPopData.type === 'upload'" /> <uploadModule @cancel="modalPopCancel" @confirm="AddDomainConfirm" v-if="modalPopData.type === 'upload'" />
</template> </template>
</ModalPop> </ModalPop>
...@@ -294,7 +343,7 @@ onMounted(() => { ...@@ -294,7 +343,7 @@ onMounted(() => {
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
:deep(.el-table .el-table__header-wrapper th){ :deep(.el-table .el-table__header-wrapper th) {
background-color: #e9f5fe !important; background-color: #e9f5fe !important;
color: #2c9ef7; color: #2c9ef7;
} }
......
<script setup lang="ts" name="AddClass"> <script setup lang="ts" name="AddClass">
import { onMounted, reactive, ref, toRefs, watch } from "vue"; import { onMounted, reactive, ref, toRefs, watch } from "vue";
import type { FormInstance } from "element-plus";
import { ElMessage } from "element-plus";
import { checkNameExitType, addDictionaryType, initEditType } from '@/api/ruleConfig/dictionary'
const props = defineProps<{ const props = defineProps<{
modelValue: boolean; itemData: boolean;
type: string; type: string;
}>(); }>();
const emit = defineEmits(["update:modelValue", 'cancel','confirm']); const emit = defineEmits(["cancel", "confirm"]);
const data = reactive({ const data = reactive({
rules: {}, form: <any>{
id: "",
remark: "",
typename: "",
},
rules: {
typename: [
{
required: true,
message: "请输入字典分类名称",
trigger: ["blur"],
},
],
},
}); });
const { rules } = toRefs(data); const { form, rules } = toRefs(data);
const formRef = ref<FormInstance>();
// 重置
const reset = () => {
form.value = {
id: "",
remark: "",
typename: "",
};
};
// 取消 // 取消
const cancel = () => { const cancel = () => {
if (props.type === 'edit') { emit("cancel");
};
}else if (props.type === 'add') { const confirm = () => {
formRef.value?.validate((valid) => {
if (valid) {
getcheckNameExitType()
} else {
}
});
};
// 检验数据域名称
const getcheckNameExitType = () => {
const data = {
typename: form.value.typename
}
checkNameExitType(data).then(res => {
const { flag, data } = res
if (flag) {
addDictionaryTypeFun()
} }
emit('cancel') })
} }
const confirm = () => { // 添加数据域
if (props.type === 'edit') { const addDictionaryTypeFun = () => {
addDictionaryType({dictionaryType: form.value}).then(res => {
const { flag } = res
if (flag) {
ElMessage.success(props.type === "add" ? "新增成功" : "修改成功");
emit("confirm");
reset()
} }
emit('confirm') })
} }
const getInitEditType = (id) => {
initEditType({ typeId: id }).then(res => {
const { flag, data } = res
const { tConsoleDictionarytype } = data
const { id, remark, typename } = tConsoleDictionarytype
if (flag) {
form.value.id = id
form.value.remark = remark
form.value.typename = typename
}
})
}
watch(
() => props.itemData,
(newVal) => {
if (props.type === "edit" && props.itemData) {
const { id } = JSON.parse(JSON.stringify(props.itemData));
getInitEditType(id)
}
},
{ deep: true, immediate: true }
);
</script> </script>
<template> <template>
<div> <div>
<el-form ref="formRef" :model="modelValue" label-width="100px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="字典分类" required> <el-form-item label="字典分类" prop="typename" required>
<el-input v-model="modelValue.name" placeholder="请输入字典分类"></el-input> <el-input v-model="form.typename" placeholder="请输入字典分类"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="备注"> <el-form-item label="备注">
<el-input type="textarea" v-model="modelValue.name" placeholder="请输入备注" rows="2" maxlength="200" show-word-limit></el-input> <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" rows="2" maxlength="200"
show-word-limit></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="btn"> <div class="btn">
...@@ -57,4 +129,9 @@ const confirm = () => { ...@@ -57,4 +129,9 @@ const confirm = () => {
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
:deep(.el-form-item__error) {
left: auto;
right: 30px;
top: 24%;
}
</style> </style>
\ No newline at end of file
<script setup lang="ts" name="AddValue"> <script setup lang="ts" name="AddValue">
import { onMounted, reactive, ref, toRefs, watch } from "vue"; import { onMounted, reactive, ref, toRefs, watch } from "vue";
import type { FormInstance } from "element-plus";
import { ElMessage } from "element-plus";
import { add } from "@/api/ruleConfig/dictionary";
const props = defineProps<{ const props = defineProps<{
modelValue: boolean; itemData: boolean;
type: string; type: string;
classDict: any;
}>(); }>();
const emit = defineEmits(["update:modelValue", 'cancel', 'confirm']); const emit = defineEmits(["cancel", "confirm"]);
const data = reactive({ const data = reactive({
rules: {}, form: <any>{
id: null,
name: "",
parentid: "",
parentvalue: "",
typecode: "",
typename: "",
value: "",
},
rules: {
value: [
{
required: true,
message: "请输入值",
trigger: ["blur"],
},
],
},
}); });
const { rules } = toRefs(data); const { form, rules } = toRefs(data);
const formRef = ref<FormInstance>();
const classDictList = ref<any[]>([]);
// 重置
const reset = () => {
form.value = {
id: null,
name: "",
parentid: "",
parentvalue: "",
typecode: "",
typename: "",
value: "",
};
};
// 取消 // 取消
const cancel = () => { const cancel = () => {
if (props.type === 'edit') { emit("cancel");
};
} else if (props.type === 'add') {
}
emit('cancel')
}
const confirm = () => { const confirm = () => {
if (props.type === 'edit') { formRef.value?.validate((valid) => {
if (valid) {
} else if (props.type === 'add') { addFunc();
} else {
}
});
};
// 添加数据域
const addFunc = () => {
add({ dictionary: form.value }).then((res) => {
const { flag } = res;
if (flag) {
ElMessage.success(props.type === "add" ? "新增成功" : "修改成功");
emit("confirm");
reset();
} }
emit('confirm') });
} };
watch(
() => props.itemData,
(newVal) => {
if (props.itemData) {
const data = JSON.parse(JSON.stringify(props.itemData))
form.value = {...form.value, ...data}
}
},
{ deep: true, immediate: true }
);
watch(
() => props.classDict,
(newVal) => {
classDictList.value = props.classDict;
},
{ deep: true, immediate: true }
);
</script> </script>
<template> <template>
<div> <div>
<el-form ref="formRef" :model="modelValue" label-width="70px" :disabled="readOnly"> <el-form ref="formRef" :model="form" :rules="rules" label-width="70px">
<el-form-item label="字典分类"> <el-form-item label="字典分类">
<el-select v-model="modelValue.name" v-if="!readOnly" placeholder="请选择字典分类"> <el-select v-model="form.typecode" placeholder="请选择字典分类">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in classDictList" :key="item.value" :label="item.text" :value="item.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="值" required> <el-form-item label="值" prop="value" required>
<el-input v-model="modelValue.name" placeholder="请输入值"></el-input> <el-input v-model="form.value" placeholder="请输入值"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="名称" required> <el-form-item label="名称">
<el-input v-model="modelValue.name" placeholder="请输入名称"></el-input> <el-input v-model="form.name" placeholder="请输入名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="父值" required> <el-form-item label="父值">
<el-input v-model="modelValue.name" placeholder="请输入父值"></el-input> <el-input v-model="form.parentvalue" placeholder="请输入父值"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="btn"> <div class="btn">
...@@ -68,4 +129,9 @@ const confirm = () => { ...@@ -68,4 +129,9 @@ const confirm = () => {
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
:deep(.el-form-item__error) {
left: auto;
right: 30px;
top: 24%;
}
</style> </style>
\ No newline at end of file
...@@ -99,33 +99,33 @@ const collapseAdd = (item) => { ...@@ -99,33 +99,33 @@ const collapseAdd = (item) => {
// 删除发现规则 // 删除发现规则
const collapseDelete = (item) => { const collapseDelete = (item) => {
console.log('删除发现规则', item) const { name } = item
delData.value = item delData.value = item
modalData.type = 'rules' modalData.type = 'rules'
modalData.cancel = true modalData.cancel = true
modalData.icon = 'error' modalData.icon = 'error'
modalData.text = '删除后无法恢复,是否确认删除[' + item.name + ']?' modalData.text = '删除后无法恢复,是否确认删除[' + name + ']?'
modalData.show = true modalData.show = true
} }
// 删除数据域 // 删除数据域
const collapseMainDeletion = (item) => { const collapseMainDeletion = (item) => {
console.log('删除数据域事件', item) const { dataarea } = item
delData.value = item delData.value = item
modalData.type = 'domain' modalData.type = 'domain'
modalData.cancel = false modalData.cancel = false
modalData.icon = 'error' modalData.icon = 'error'
modalData.text = '删除后无法恢复,是否确认删除[' + item.dataarea + ']?' modalData.text = '删除后无法恢复,是否确认删除[' + dataarea + ']?'
modalData.show = true modalData.show = true
} }
// 提示回调 // 提示回调
const modalConfirm = () => { const modalConfirm = () => {
if (modalData.type === 'domain') { if (modalData.type === 'domain') {
console.log('删除数据域确认') const { id, dataarea } = delData.value
const data = { const data = {
areaid: delData.value.id, areaid: id,
areaname: delData.value.dataarea areaname: dataarea
} }
delDataArea(data).then(res => { delDataArea(data).then(res => {
const { flag } = res const { flag } = res
...@@ -137,11 +137,11 @@ const modalConfirm = () => { ...@@ -137,11 +137,11 @@ const modalConfirm = () => {
} }
}) })
} else if (modalData.type === 'rules') { } else if (modalData.type === 'rules') {
console.log('删除发现规则确认') const { ruleid, name, tid } = delData.value
const data = { const data = {
ruleid: delData.value.ruleid, ruleid: ruleid,
rulename: delData.value.name, rulename: name,
tid: delData.value.tid tid: tid
} }
delRule(data).then(res => { delRule(data).then(res => {
const { flag } = res const { flag } = res
...@@ -153,10 +153,10 @@ const modalConfirm = () => { ...@@ -153,10 +153,10 @@ const modalConfirm = () => {
} }
}) })
} else if (modalData.type === 'default') { } else if (modalData.type === 'default') {
console.log('设置默认项') const { ruleid, name } = delData.value
const data = { const data = {
ruleid: delData.value.ruleid, ruleid: ruleid,
rulename: delData.value.name, rulename: name,
} }
setdefault(data).then(res => { setdefault(data).then(res => {
const { flag } = res const { flag } = res
...@@ -192,21 +192,20 @@ const collapseChange = (item) => { ...@@ -192,21 +192,20 @@ const collapseChange = (item) => {
// 发现规则设置默认项 // 发现规则设置默认项
const collapseDefault = (item) => { const collapseDefault = (item) => {
const { name } = item
delData.value = item delData.value = item
modalData.type = 'default' modalData.type = 'default'
modalData.cancel = false modalData.cancel = false
modalData.icon = 'error' modalData.icon = 'error'
modalData.text = '确定设置[' + item.name + ']为默认规则?' modalData.text = '确定设置[' + name + ']为默认规则?'
modalData.show = true modalData.show = true
} }
// 新增确认 // 新增确认
const AddFormConfirm = (item) => { const AddFormConfirm = (item) => {
if (modalPopData.type === 'domain') { if (modalPopData.type === 'domain') {
console.log('新增数据域确认', item)
getCollapse() getCollapse()
} else if (modalPopData.type === 'rules') { } else if (modalPopData.type === 'rules') {
console.log('新增发现规则确认', item)
getCollapse() getCollapse()
} }
modalPopData.show = false modalPopData.show = false
......
...@@ -31,9 +31,16 @@ const readOnly = ref(true); ...@@ -31,9 +31,16 @@ const readOnly = ref(true);
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
watch( watch(
() => [props.type, props.itemData], () => props.type,
(newVal) => { (newVal) => {
readOnly.value = props.type === 'edit' ? true : false; readOnly.value = props.type === 'edit' ? true : false;
},
{ deep: true, immediate: true }
);
watch(
() => props.itemData,
(newVal) => {
if (props.type === 'edit' && props.itemData) { if (props.type === 'edit' && props.itemData) {
form.value = JSON.parse(JSON.stringify(props.itemData)) form.value = JSON.parse(JSON.stringify(props.itemData))
} }
...@@ -127,4 +134,9 @@ const addDataAreaFun = () => { ...@@ -127,4 +134,9 @@ const addDataAreaFun = () => {
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
:deep(.el-form-item__error) {
left: auto;
right: 30px;
top: 24%;
}
</style> </style>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论