业务管理,系统管理
This commit is contained in:
@@ -94,7 +94,7 @@
|
|||||||
>
|
>
|
||||||
<el-form :model="formData" label-width="120px" :rules="rules" ref="ruleFormRef">
|
<el-form :model="formData" label-width="120px" :rules="rules" ref="ruleFormRef">
|
||||||
<el-form-item label="名称:" prop="name">
|
<el-form-item label="名称:" prop="name">
|
||||||
<el-input v-model="formData.name" placeholder="请输入名称"></el-input>
|
<el-input v-model="formData.name" placeholder="请输入名称" maxlength="32" show-word-limit @input="handleInput"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="IP:" prop="ip" class="top">
|
<el-form-item label="IP:" prop="ip" class="top">
|
||||||
<el-input v-model="formData.ip" placeholder="请输入Ip"></el-input>
|
<el-input v-model="formData.ip" placeholder="请输入Ip"></el-input>
|
||||||
@@ -332,14 +332,31 @@ const tableStore = new TableStore({
|
|||||||
})
|
})
|
||||||
// 点击行
|
// 点击行
|
||||||
const currentChangeEvent = () => {
|
const currentChangeEvent = () => {
|
||||||
|
// 确保 tableRef 和当前记录存在
|
||||||
|
if (!tableRef.value || !tableRef.value.getRef().getCurrentRecord()) {
|
||||||
|
loading.value = false;
|
||||||
|
dataSource.value = [];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
loading.value = true
|
loading.value = true
|
||||||
dataSource.value = []
|
dataSource.value = []
|
||||||
nodeDeviceTree({
|
nodeDeviceTree({
|
||||||
nodeId: tableRef.value.getRef().getCurrentRecord().id
|
nodeId: tableRef.value.getRef().getCurrentRecord().id
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
dataSource.value = res.data.processDeviceList.filter(item => (item.name = item.processNo + ''))
|
// 检查返回的数据是否存在且不为空
|
||||||
|
if (res.data && res.data.processDeviceList) {
|
||||||
|
dataSource.value = res.data.processDeviceList.filter(item => (item.name = item.processNo + ''))
|
||||||
|
} else {
|
||||||
|
dataSource.value = []
|
||||||
|
}
|
||||||
|
loading.value = false
|
||||||
|
}).catch(() => {
|
||||||
|
// 添加错误处理,确保 loading 状态也能关闭
|
||||||
|
dataSource.value = []
|
||||||
loading.value = false
|
loading.value = false
|
||||||
})
|
})
|
||||||
|
|
||||||
// const row = tableRef.value.getRef().getCurrentRecord()
|
// const row = tableRef.value.getRef().getCurrentRecord()
|
||||||
}
|
}
|
||||||
const treeRef = ref()
|
const treeRef = ref()
|
||||||
@@ -444,6 +461,10 @@ const resetForm = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleInput = (val: string) => {
|
||||||
|
formData.value.name = val.replace(/\s+/g, '')
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
|
|||||||
@@ -54,6 +54,7 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="right: 0; position: absolute; overflow: hidden">
|
<el-form-item style="right: 0; position: absolute; overflow: hidden">
|
||||||
|
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<LocationInformation style="width: 16px; margin-right: 8px; color: #396" />
|
<LocationInformation style="width: 16px; margin-right: 8px; color: #396" />
|
||||||
<span style="font-size: 16px; font-weight: bold; color: #396">当前操作节点:</span>
|
<span style="font-size: 16px; font-weight: bold; color: #396">当前操作节点:</span>
|
||||||
@@ -2353,6 +2354,9 @@ const next = async () => {
|
|||||||
// 撤销
|
// 撤销
|
||||||
const black = () => {
|
const black = () => {
|
||||||
pageStatus.value = 1
|
pageStatus.value = 1
|
||||||
|
busBarIndex.value = '0'
|
||||||
|
deviceIndex.value = '0';
|
||||||
|
lineIndex.value = '0';
|
||||||
}
|
}
|
||||||
// 确认提交
|
// 确认提交
|
||||||
const onsubmit = () => {
|
const onsubmit = () => {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||||
<el-form-item label="名称:" class="top" prop="name">
|
<el-form-item label="名称:" class="top" prop="name" >
|
||||||
<el-input v-model="form.name"></el-input>
|
<el-input v-model="form.name" ></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="计算值:" class="top">
|
<el-form-item label="计算值:" class="top">
|
||||||
<el-input v-model="form.value"></el-input>
|
<el-input v-model="form.value"></el-input>
|
||||||
@@ -118,5 +118,6 @@ const submit = async () => {
|
|||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
defineExpose({ open })
|
defineExpose({ open })
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||||
<el-form-item label="名称" prop="name">
|
<el-form-item label="名称" prop="name">
|
||||||
<el-input v-model="form.name"></el-input>
|
<el-input v-model="form.name" maxlength="32" show-word-limit @input="handleInput"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="编码" class="top" prop="code">
|
<el-form-item label="编码" class="top" prop="code">
|
||||||
<el-input v-model="form.code"></el-input>
|
<el-input v-model="form.code"></el-input>
|
||||||
@@ -112,5 +112,9 @@ const submit = async () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleInput = (value: string) => {
|
||||||
|
form.name = value.replace(/[^\d]/g, '')
|
||||||
|
}
|
||||||
|
|
||||||
defineExpose({ open })
|
defineExpose({ open })
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules">
|
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||||
<el-form-item label="字典名称:" prop="name">
|
<el-form-item label="字典名称:" prop="name">
|
||||||
<el-input v-model="form.name" placeholder="请输入字典名称"></el-input>
|
<el-input v-model="form.name" placeholder="请输入字典名称" maxlength="32" show-word-limit @input="handleInput"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="序号:" prop="sort" class="top">
|
<el-form-item label="序号:" prop="sort" class="top">
|
||||||
<el-input v-model="form.sort" placeholder="请输入序号"></el-input>
|
<el-input v-model="form.sort" placeholder="请输入序号"></el-input>
|
||||||
@@ -33,6 +33,7 @@ import { ElMessage } from 'element-plus'
|
|||||||
import { useAdminInfo } from '@/stores/adminInfo'
|
import { useAdminInfo } from '@/stores/adminInfo'
|
||||||
import { dicAdd, dicUpdate } from '@/api/system-boot/dic'
|
import { dicAdd, dicUpdate } from '@/api/system-boot/dic'
|
||||||
|
|
||||||
|
const formRef = ref()
|
||||||
const adminInfo = useAdminInfo()
|
const adminInfo = useAdminInfo()
|
||||||
const tableStore = inject('tableStore') as TableStore
|
const tableStore = inject('tableStore') as TableStore
|
||||||
// do not use same name with ref
|
// do not use same name with ref
|
||||||
@@ -69,14 +70,23 @@ const open = (text: string, data?: anyObj) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const submit = async () => {
|
const submit = async () => {
|
||||||
if (form.id) {
|
formRef.value.validate(async (valid: boolean) => {
|
||||||
await dicUpdate(form)
|
if (valid) {
|
||||||
} else {
|
if (form.id) {
|
||||||
await dicAdd(form)
|
await dicUpdate(form)
|
||||||
}
|
} else {
|
||||||
ElMessage.success('保存成功')
|
await dicAdd(form)
|
||||||
tableStore.index()
|
}
|
||||||
dialogVisible.value = false
|
ElMessage.success('保存成功')
|
||||||
|
tableStore.index()
|
||||||
|
dialogVisible.value = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleInput = (val: string) => {
|
||||||
|
form.name = val.replace(/\s+/g, '')
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ open })
|
defineExpose({ open })
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog draggable width="600px" v-model="dialogVisible" :title="title">
|
<el-dialog draggable width="600px" v-model="dialogVisible" :title="title">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<el-form :inline="false" :model="form" label-width="auto" class="form-one">
|
<el-form :inline="false" :model="form" label-width="auto" :rules="rules" class="form-one" ref="formRef">
|
||||||
<el-form-item label="上级菜单">
|
<el-form-item label="上级菜单" prop="pid">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
v-model="form.pid"
|
v-model="form.pid"
|
||||||
clearable
|
clearable
|
||||||
@@ -11,16 +11,16 @@
|
|||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="菜单名称">
|
<el-form-item label="菜单名称" prop="name">
|
||||||
<el-input v-model="form.name" placeholder="请输入菜单名称" />
|
<el-input v-model="form.name" placeholder="请输入菜单名称" maxlength="32" show-word-limit @input="handleInput"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="图标">
|
<el-form-item label="图标" prop="icon">
|
||||||
<IconSelector v-model="form.icon" placeholder="请选择图标" />
|
<IconSelector v-model="form.icon" placeholder="请选择图标" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="菜单路由">
|
<el-form-item label="菜单路由" prop="path">
|
||||||
<el-input v-model="form.path" placeholder="请输入菜单名称" />
|
<el-input v-model="form.path" placeholder="请输入菜单路由" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="组件路径">
|
<el-form-item label="组件路径" prop="routeName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.routeName"
|
v-model="form.routeName"
|
||||||
placeholder="请输入组件路径,如/src/views/auth/audit/index.vue或auth/audit"
|
placeholder="请输入组件路径,如/src/views/auth/audit/index.vue或auth/audit"
|
||||||
@@ -53,6 +53,7 @@ import { updateMenu, addMenu } from '@/api/systerm'
|
|||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'auth/menu/popupMenu'
|
name: 'auth/menu/popupMenu'
|
||||||
})
|
})
|
||||||
|
|
||||||
const emits = defineEmits<{
|
const emits = defineEmits<{
|
||||||
(e: 'init'): void
|
(e: 'init'): void
|
||||||
}>()
|
}>()
|
||||||
@@ -75,7 +76,7 @@ const form: any = reactive({
|
|||||||
sort: 100,
|
sort: 100,
|
||||||
type: 0
|
type: 0
|
||||||
})
|
})
|
||||||
|
const formRef = ref()
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
const title = ref('新增菜单')
|
const title = ref('新增菜单')
|
||||||
const open = (text: string, data: anyObj) => {
|
const open = (text: string, data: anyObj) => {
|
||||||
@@ -99,21 +100,35 @@ const open = (text: string, data: anyObj) => {
|
|||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
}
|
}
|
||||||
const submit = async () => {
|
const submit = async () => {
|
||||||
|
formRef.value.validate(async (valid: boolean) => {
|
||||||
|
if (valid) {
|
||||||
|
if(form.pid === ''||form.pid === null){
|
||||||
|
form.pid = '0'
|
||||||
|
}
|
||||||
|
|
||||||
if(form.pid === ''||form.pid === null){
|
if (form.id) {
|
||||||
form.pid = '0'
|
await updateMenu(form)
|
||||||
}
|
} else {
|
||||||
|
form.code = 'menu'
|
||||||
|
let obj = JSON.parse(JSON.stringify(form))
|
||||||
|
delete obj.id
|
||||||
|
await addMenu(obj)
|
||||||
|
}
|
||||||
|
emits('init')
|
||||||
|
dialogVisible.value = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
if (form.id) {
|
}
|
||||||
await updateMenu(form)
|
|
||||||
} else {
|
const rules = {
|
||||||
form.code = 'menu'
|
name: [{ required: true, message: '请输入菜单名称', trigger: 'blur' }],
|
||||||
let obj = JSON.parse(JSON.stringify(form))
|
path: [{ required: true, message: '请输入菜单路由', trigger: 'blur' }],
|
||||||
delete obj.id
|
routeName: [{ required: true, message: '请输入组件路径', trigger: 'blur' }],
|
||||||
await addMenu(obj)
|
}
|
||||||
}
|
|
||||||
emits('init')
|
const handleInput = (val: string) => {
|
||||||
dialogVisible.value = false
|
form.name = val.replace(/\s+/g, '').replace(/\//g, '')
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ open })
|
defineExpose({ open })
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||||
<el-form-item label="角色名称" required>
|
<el-form-item label="角色名称" prop="name">
|
||||||
<el-input v-model="form.name" placeholder="请输入菜单名称" maxlength="32" show-word-limit @input="handleInput"/>
|
<el-input v-model="form.name" placeholder="请输入菜单名称" maxlength="32" show-word-limit @input="handleInput"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="角色编码">
|
<el-form-item label="角色编码" prop="code">
|
||||||
<el-input v-model="form.code" placeholder="请输入菜单名称" />
|
<el-input v-model="form.code" placeholder="请输入菜单名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="角色描述">
|
<el-form-item label="角色描述">
|
||||||
@@ -61,10 +61,9 @@ const open = (text: string, data?: anyObj) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const submit = async () => {
|
const submit = async () => {
|
||||||
// 先进行表单验证
|
formRef.value.validate(async (valid: boolean) => {
|
||||||
try {
|
if (valid) {
|
||||||
await formRef.value.validate()
|
if (form.id) {
|
||||||
if (form.id) {
|
|
||||||
await update(form)
|
await update(form)
|
||||||
} else {
|
} else {
|
||||||
form.type = adminInfo.$state.userType + 1
|
form.type = adminInfo.$state.userType + 1
|
||||||
@@ -73,10 +72,8 @@ const submit = async () => {
|
|||||||
ElMessage.success('保存成功')
|
ElMessage.success('保存成功')
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
} catch (error) {
|
}
|
||||||
// 验证失败,Element Plus 会自动显示错误信息
|
})
|
||||||
console.log('表单验证失败:', error)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleInput = (val: string) => {
|
const handleInput = (val: string) => {
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
v-model="tableStore.table.params.searchValue"
|
v-model="tableStore.table.params.searchValue"
|
||||||
clearable
|
clearable
|
||||||
placeholder="仅根据用户名/登录名"
|
placeholder="仅根据用户名/登录名"
|
||||||
|
maxlength="10"
|
||||||
|
show-word-limit
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@@ -195,6 +197,9 @@ const tableStore = new TableStore({
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
resetCallback: () => {
|
||||||
|
tableStore.table.params.searchValue = ''
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||||
<el-form :model="form" class="form-two" label-width="auto" :rules="rules">
|
<el-form :model="form" class="form-two" label-width="auto" :rules="rules" ref="formRef">
|
||||||
<el-form-item label="用户名" prop="name">
|
<el-form-item label="用户名" prop="name">
|
||||||
<el-input v-model="form.name" placeholder="请输入昵称" />
|
<el-input v-model="form.name" placeholder="请输入昵称" maxlength="16" show-word-limit @input="handleInput('name', $event)"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="登录名" prop="loginName">
|
<el-form-item label="登录名" prop="loginName">
|
||||||
<el-input v-model="form.loginName" placeholder="请输入登录名" />
|
<el-input v-model="form.loginName" placeholder="请输入登录名" maxlength="16" show-word-limit @input="handleInput('loginName', $event)"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="默认密码" prop="password" v-if="title === '新增用户'">
|
<el-form-item label="默认密码" prop="password" v-if="title === '新增用户'">
|
||||||
<el-input v-model="form.password" placeholder="请输入密码" disabled />
|
<el-input v-model="form.password" placeholder="请输入密码" disabled />
|
||||||
@@ -104,7 +104,7 @@ import { roleList } from '@/api/user-boot/role'
|
|||||||
import { add, edit } from '@/api/user-boot/user'
|
import { add, edit } from '@/api/user-boot/user'
|
||||||
import { useAdminInfo } from '@/stores/adminInfo'
|
import { useAdminInfo } from '@/stores/adminInfo'
|
||||||
import Area from '@/components/form/area/index.vue'
|
import Area from '@/components/form/area/index.vue'
|
||||||
|
const formRef = ref()
|
||||||
const adminInfo = useAdminInfo()
|
const adminInfo = useAdminInfo()
|
||||||
const tableStore = inject('tableStore') as TableStore
|
const tableStore = inject('tableStore') as TableStore
|
||||||
// do not use same name with ref
|
// do not use same name with ref
|
||||||
@@ -240,19 +240,32 @@ const open = (text: string, data?: anyObj) => {
|
|||||||
form.type = adminInfo.$state.userType + 1
|
form.type = adminInfo.$state.userType + 1
|
||||||
}
|
}
|
||||||
const submit = async () => {
|
const submit = async () => {
|
||||||
let obj = JSON.parse(JSON.stringify(form))
|
formRef.value.validate(async (valid: boolean) => {
|
||||||
obj.limitTime = obj.limitTime.join('-')
|
if (valid) {
|
||||||
delete obj.password
|
let obj = JSON.parse(JSON.stringify(form))
|
||||||
if (form.id) {
|
obj.limitTime = obj.limitTime.join('-')
|
||||||
await edit(obj)
|
delete obj.password
|
||||||
ElMessage.success('修改成功')
|
if (form.id) {
|
||||||
} else {
|
await edit(obj)
|
||||||
form.type = adminInfo.$state.userType + 1
|
ElMessage.success('修改成功')
|
||||||
await add(obj)
|
} else {
|
||||||
ElMessage.success('新增成功')
|
form.type = adminInfo.$state.userType + 1
|
||||||
|
await add(obj)
|
||||||
|
ElMessage.success('新增成功')
|
||||||
|
}
|
||||||
|
tableStore.index()
|
||||||
|
dialogVisible.value = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleInput = (field: keyof typeof form, value: string) => {
|
||||||
|
// 过滤空格
|
||||||
|
const filteredValue = value.replace(/\s/g, '')
|
||||||
|
if (filteredValue !== value) {
|
||||||
|
form[field] = filteredValue as never
|
||||||
}
|
}
|
||||||
tableStore.index()
|
|
||||||
dialogVisible.value = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const changeValue = () => {}
|
const changeValue = () => {}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ const submit = () => {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
updateDevType(form).then(res => {
|
updateDevType(form).then(res => {
|
||||||
ElMessage.success('新增成功')
|
ElMessage.success('编辑成功')
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
emit('submit')
|
emit('submit')
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user