@@ -1,315 +1,315 @@
< template >
< div class = "default-main" >
< TableHeader ref = "TableHeaderRef" >
< template # select >
< el-form-item label = "项目名称" >
< el-input
style = "width: 200px"
placeholder = "请输入项目名称"
v-model = "tableStore.table.params.projectName"
clearable
maxlength = "32"
show -word -limit
> < / el-input >
< / el-form-item >
< el-form-item label = "所在地市" >
< el-select v-model = "tableStore.table.params.city" clearable placeholder="请选择所在地市" >
< el -option
v-for = "item in areaOptionList"
:key = "item.id"
:label = "item.name"
:value = "item.name"
> < / el-option >
< / el-select >
< / el-form-item >
< / template >
< template # operation >
< el-button icon = "el-icon-Plus" type = "primary" @click ="addFormModel" > 新增 < / el -button >
< el-button icon = "el-icon-Delete" type = "primary" @click ="deleteEven" > 删除 < / el -button >
<!-- < el-button icon = "el-icon-Download" type = "primary" @click ="exportExcelTemplate" :loading = "loading" >
模板下载
< / el-button >
< el-button icon = "el-icon-Upload" type = "primary" @click ="importUserData" > 批量导入 < / el -button > -- >
< / template >
< / TableHeader >
< Table ref = "tableRef" / >
< el-dialog title = "详情" width = "60%" v-model = "dialogShow" v-if="dialogShow" >
< DetailInfo :id = "userId" :openType = "'sourcesOfInterference'" > < / DetailInfo >
< / el-dialog >
<!-- 批量导入 -- >
< sensitive-user-popup ref = "sensitiveUserPopup" / >
<!-- 查看详情 detail 新增 / 修改 create -- >
< addForm ref = "addForms" @onSubmit ="tableStore.index()" :openType = "'sourcesOfInterference'" > < / addForm >
< / div >
< / template >
< script setup lang = "ts" >
import { ref , onMounted , provide , nextTick , watch } from 'vue'
import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { ElMessage , ElMessageBox } from 'element-plus'
import addForm from './components/addForm.vue'
import SensitiveUserPopup from './components/sensitiveUserPopup.vue'
import { useDictData } from '@/stores/dictData'
import { useRouter } from 'vue-router'
import { downloadSensitiveReportTemplate } from '@/api/supervision-boot/userReport/form'
import DetailInfo from './components/detail.vue'
import { cancelFormData , getUserReportById } from '@/api/supervision-boot/interfere/index'
import { deleteUserReport } from '@/api/supervision-boot/delete/index'
const addForms = ref ( )
const dictData = useDictData ( )
const sensitiveUserPopup = ref ( )
const TableHeaderRef = ref ( )
const loading = ref ( false )
const areaOptionList = dictData . getBasicData ( 'jibei_area' )
const { push , options , currentRoute } = useRouter ( )
import { useAdminInfo } from '@/stores/adminInfo'
defineOptions ( {
name : 'BusinessAdministrator/TerminalManagement/userLedger'
} )
//获取登陆用户姓名和部门
const adminInfo = useAdminInfo ( )
const tableStore = new TableStore ( {
url : '/supervision-boot/userReport/getUserLedgerPage' ,
// publicHeight: 65,
method : 'POST' ,
column : [
{
width : '60' ,
type : 'checkbox'
} ,
{
title : '序号' ,
width : 80 ,
formatter : ( row : any ) => {
return ( tableStore . table . params . pageNum - 1 ) * tableStore . table . params . pageSize + row . rowIndex + 1
}
} ,
{ field : 'city' , title : '所在地市' , minWidth : 80 } ,
{ field : 'substation' , title : '厂站名称' , minWidth : 100 } ,
{ field : 'projectName' , title : '项目名称' , minWidth : 170 } ,
{
field : 'userType' ,
title : '用户性质' ,
minWidth : 150 ,
formatter : ( obj : any ) => {
const userType = obj . row . userType
return getUserTypeName ( userType )
}
} ,
// { field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{ field : 'ratePower' , title : '装机容量(MW)' , minWidth : 130 } ,
{
field : 'createBy' ,
title : '创建人' ,
minWidth : 80 ,
formatter : ( row : any ) => {
return dictData . state . userList . filter ( item => item . id == row . cellValue ) [ 0 ] ? . name
}
} ,
{
title : '操作' ,
minWidth : 150 ,
fixed : 'right' ,
render : 'buttons' ,
buttons : [
{
name : 'productSetting' ,
title : '详细信息' ,
type : 'primary' ,
icon : 'el-icon-EditPen' ,
render : 'basicButton' ,
click : row => {
lookInfo ( row . id )
}
} ,
{
name : 'edit' ,
title : '编辑' ,
type : 'primary' ,
icon : 'el-icon-Open' ,
render : 'basicButton' ,
disabled : row => {
return ! ( row . status == 0 )
} ,
click : row => {
addForms . value . filterUsers ( [ 6 ] )
addForms . value . open ( {
title : '编辑' ,
row : row
} )
}
} ,
]
}
] ,
beforeSearchFun : ( ) => {
tableStore . table . params . orgNo = tableStore . table . params . deptIndex
}
} )
tableStore . table . params . city = ''
tableStore . table . params . orgId = adminInfo . $state . deptId
tableStore . table . params . projectName = ''
tableStore . table . params . loadType = ''
tableStore . table . params . userName = ''
tableStore . table . params . relationUserName = ''
tableStore . table . params . aisFileUpload = ''
const userId = ref ( )
const dialogShow = ref ( false )
const lookInfo = ( id : string ) => {
userId . value = id
dialogShow . value = true
}
provide ( 'tableStore' , tableStore )
onMounted ( ( ) => {
tableStore . index ( )
} )
// 禁止点击
const checkboxConfig = reactive ( {
checkMethod : ( { row } ) => {
return adminInfo . roleCode . includes ( 'delete_info' )
? true
: row . createBy == adminInfo . $state . id && row . status == 0
}
} )
const deleteEven = ( ) => {
if ( tableStore . table . selection . length == 0 ) {
ElMessage ( {
type : 'warning' ,
message : '请选择要删除的数据'
} )
} else {
ElMessageBox . confirm ( '此操作将永久删除, 是否继续?' , '提示' , {
confirmButtonText : '确定' ,
cancelButtonText : '取消' ,
type : 'warning'
} ) . then ( ( ) => {
deleteUserReport ( tableStore . table . selection . map ( item => item . id ) ) . then ( res => {
ElMessage ( {
type : 'success' ,
message : '删除成功!'
} )
tableStore . index ( )
} )
} )
}
}
/**取消流程操作*/
const cancelLeave = async ( row : any ) => {
// 二次确认
const { value } = await ElMessageBox . prompt ( '请输入取消原因' , '取消流程' , {
confirmButtonText : '确定' ,
cancelButtonText : '取消' ,
inputType : 'textarea' ,
inputPattern : /^[\s\S]*.*\S[\s\S]*$/ , // 判断非空,且非空格
inputErrorMessage : '取消原因不能为空'
} )
// 发起取消
let data = {
id : row . id ,
processInstanceId : row . processInstanceId ,
dataType : 1 ,
reason : value
}
await cancelFormData ( data )
ElMessage . success ( '取消成功' )
// 加载数据
tableStore . index ( )
}
// 新增
const addFormModel = ( ) => {
addForms . value . filterUsers ( [ 6 ] )
setTimeout ( ( ) => {
addForms . value . open ( {
title : '用户档案录入'
} )
} )
}
/**获取用户性质*/
const getUserTypeName = ( userType : any ) => {
if ( userType === 0 ) {
return '新建电网工程'
}
if ( userType === 1 ) {
return '扩建电网工程'
}
if ( userType === 2 ) {
return '新建非线性负荷用户'
}
if ( userType === 3 ) {
return '扩建非线性负荷用户'
}
if ( userType === 4 ) {
return '新建新能源发电站'
}
if ( userType === 5 ) {
return '扩建新能源发电站'
}
if ( userType === 6 ) {
return '敏感及重要用户'
}
return '新建电网工程'
}
//导出模板
const exportExcelTemplate = async ( ) => {
loading . value = true
await downloadSensitiveReportTemplate ( ) . then ( ( res : any ) => {
let blob = new Blob ( [ res ] , {
type : 'application/vnd.ms-excel'
} )
const url = window . URL . createObjectURL ( blob )
const link = document . createElement ( 'a' )
link . href = url
link . download = '干扰源用户台账模板'
document . body . appendChild ( link )
link . click ( )
link . remove ( )
} )
await setTimeout ( ( ) => {
loading . value = false
} , 0 )
}
//批量导入用户数据
const importUserData = ( ) => {
sensitiveUserPopup . value . open ( '导入干扰源用户' )
}
const props = defineProps ( { id : { type : String , default : 'null' } } )
watch (
( ) => props . id ,
async ( newValue , oldValue ) => {
if ( newValue === 'null' ) return // 直接返回,避免后续逻辑执行
const fullId = newValue . split ( '@' ) [ 0 ]
let nowTime = Date . now ( )
const routeTime = Number ( newValue . split ( '@' ) [ 1 ] )
if ( isNaN ( routeTime ) || nowTime - routeTime > import . meta . env . VITE _ROUTE _TIME _OUT ) return // 路由时间超过500ms, 则不执行
await getUserReportById ( fullId ) . then ( res => {
if ( res && res . code == 'A0000' ) {
addForms . value . setcontroFlag ( )
addForms . value . open ( {
title : '重新发起' ,
row : res . data
} )
}
} )
} ,
{ immediate : true }
)
< / script >
< template >
< div class = "default-main" >
< TableHeader ref = "TableHeaderRef" >
< template # select >
< el-form-item label = "项目名称" >
< el-input
style = "width: 200px"
placeholder = "请输入项目名称"
v-model = "tableStore.table.params.projectName"
clearable
maxlength = "32"
show -word -limit
> < / el-input >
< / el-form-item >
< el-form-item label = "所在地市" >
< el-select v-model = "tableStore.table.params.city" clearable placeholder="请选择所在地市" >
< el -option
v-for = "item in areaOptionList"
:key = "item.id"
:label = "item.name"
:value = "item.name"
> < / el-option >
< / el-select >
< / el-form-item >
< / template >
< template # operation >
< el-button icon = "el-icon-Plus" type = "primary" @click ="addFormModel" > 新增 < / el -button >
< el-button icon = "el-icon-Delete" type = "primary" @click ="deleteEven" > 删除 < / el -button >
<!-- < el-button icon = "el-icon-Download" type = "primary" @click ="exportExcelTemplate" :loading = "loading" >
模板下载
< / el-button >
< el-button icon = "el-icon-Upload" type = "primary" @click ="importUserData" > 批量导入 < / el -button > -- >
< / template >
< / TableHeader >
< Table ref = "tableRef" / >
< el-dialog title = "详情" width = "60%" v-model = "dialogShow" v-if="dialogShow" >
< DetailInfo :id = "userId" :openType = "'sourcesOfInterference'" > < / DetailInfo >
< / el-dialog >
<!-- 批量导入 -- >
< sensitive-user-popup ref = "sensitiveUserPopup" / >
<!-- 查看详情 detail 新增 / 修改 create -- >
< addForm ref = "addForms" @onSubmit ="tableStore.index()" :openType = "'sourcesOfInterference'" > < / addForm >
< / div >
< / template >
< script setup lang = "ts" >
import { ref , onMounted , provide , nextTick , watch } from 'vue'
import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { ElMessage , ElMessageBox } from 'element-plus'
import addForm from './components/addForm.vue'
import SensitiveUserPopup from './components/sensitiveUserPopup.vue'
import { useDictData } from '@/stores/dictData'
import { useRouter } from 'vue-router'
import { downloadSensitiveReportTemplate } from '@/api/supervision-boot/userReport/form'
import DetailInfo from './components/detail.vue'
import { cancelFormData , getUserReportById } from '@/api/supervision-boot/interfere/index'
import { deleteUserReport } from '@/api/supervision-boot/delete/index'
const addForms = ref ( )
const dictData = useDictData ( )
const sensitiveUserPopup = ref ( )
const TableHeaderRef = ref ( )
const loading = ref ( false )
const areaOptionList = dictData . getBasicData ( 'jibei_area' )
const { push , options , currentRoute } = useRouter ( )
import { useAdminInfo } from '@/stores/adminInfo'
defineOptions ( {
name : 'BusinessAdministrator/TerminalManagement/userLedger'
} )
//获取登陆用户姓名和部门
const adminInfo = useAdminInfo ( )
const tableStore = new TableStore ( {
url : '/supervision-boot/userReport/getUserLedgerPage' ,
// publicHeight: 65,
method : 'POST' ,
column : [
{
width : '60' ,
type : 'checkbox'
} ,
{
title : '序号' ,
width : 80 ,
formatter : ( row : any ) => {
return ( tableStore . table . params . pageNum - 1 ) * tableStore . table . params . pageSize + row . rowIndex + 1
}
} ,
{ field : 'city' , title : '所在地市' , minWidth : 80 } ,
{ field : 'substation' , title : '厂站名称' , minWidth : 100 } ,
{ field : 'projectName' , title : '项目名称' , minWidth : 170 } ,
{
field : 'userType' ,
title : '用户性质' ,
minWidth : 150 ,
formatter : ( obj : any ) => {
const userType = obj . row . userType
return getUserTypeName ( userType )
}
} ,
// { field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{ field : 'ratePower' , title : '装机容量(MW)' , minWidth : 130 } ,
{
field : 'createBy' ,
title : '创建人' ,
minWidth : 80 ,
formatter : ( row : any ) => {
return dictData . state . userList . filter ( item => item . id == row . cellValue ) [ 0 ] ? . name
}
} ,
{
title : '操作' , fixed : 'right' ,
minWidth : 150 ,
render : 'buttons' ,
buttons : [
{
name : 'productSetting' ,
title : '详细信息' ,
type : 'primary' ,
icon : 'el-icon-EditPen' ,
render : 'basicButton' ,
click : row => {
lookInfo ( row . id )
}
} ,
{
name : 'edit' ,
title : '编辑' ,
type : 'primary' ,
icon : 'el-icon-Open' ,
render : 'basicButton' ,
disabled : row => {
return ! ( row . status == 0 )
} ,
click : row => {
addForms . value . filterUsers ( [ 6 ] )
addForms . value . open ( {
title : '编辑' ,
row : row
} )
}
} ,
]
}
] ,
beforeSearchFun : ( ) => {
tableStore . table . params . orgNo = tableStore . table . params . deptIndex
}
} )
tableStore . table . params . city = ''
tableStore . table . params . orgId = adminInfo . $state . deptId
tableStore . table . params . projectName = ''
tableStore . table . params . loadType = ''
tableStore . table . params . userName = ''
tableStore . table . params . relationUserName = ''
tableStore . table . params . aisFileUpload = ''
const userId = ref ( )
const dialogShow = ref ( false )
const lookInfo = ( id : string ) => {
userId . value = id
dialogShow . value = true
}
provide ( 'tableStore' , tableStore )
onMounted ( ( ) => {
tableStore . index ( )
} )
// 禁止点击
const checkboxConfig = reactive ( {
checkMethod : ( { row } ) => {
return adminInfo . roleCode . includes ( 'delete_info' )
? true
: row . createBy == adminInfo . $state . id && row . status == 0
}
} )
const deleteEven = ( ) => {
if ( tableStore . table . selection . length == 0 ) {
ElMessage ( {
type : 'warning' ,
message : '请选择要删除的数据'
} )
} else {
ElMessageBox . confirm ( '此操作将永久删除, 是否继续?' , '提示' , {
confirmButtonText : '确定' ,
cancelButtonText : '取消' ,
type : 'warning'
} ) . then ( ( ) => {
deleteUserReport ( tableStore . table . selection . map ( item => item . id ) ) . then ( res => {
ElMessage ( {
type : 'success' ,
message : '删除成功!'
} )
tableStore . index ( )
} )
} )
}
}
/**取消流程操作*/
const cancelLeave = async ( row : any ) => {
// 二次确认
const { value } = await ElMessageBox . prompt ( '请输入取消原因' , '取消流程' , {
confirmButtonText : '确定' ,
cancelButtonText : '取消' ,
inputType : 'textarea' ,
inputPattern : /^[\s\S]*.*\S[\s\S]*$/ , // 判断非空,且非空格
inputErrorMessage : '取消原因不能为空'
} )
// 发起取消
let data = {
id : row . id ,
processInstanceId : row . processInstanceId ,
dataType : 1 ,
reason : value
}
await cancelFormData ( data )
ElMessage . success ( '取消成功' )
// 加载数据
tableStore . index ( )
}
// 新增
const addFormModel = ( ) => {
addForms . value . filterUsers ( [ 6 ] )
setTimeout ( ( ) => {
addForms . value . open ( {
title : '用户档案录入'
} )
} )
}
/**获取用户性质*/
const getUserTypeName = ( userType : any ) => {
if ( userType === 0 ) {
return '新建电网工程'
}
if ( userType === 1 ) {
return '扩建电网工程'
}
if ( userType === 2 ) {
return '新建非线性负荷用户'
}
if ( userType === 3 ) {
return '扩建非线性负荷用户'
}
if ( userType === 4 ) {
return '新建新能源发电站'
}
if ( userType === 5 ) {
return '扩建新能源发电站'
}
if ( userType === 6 ) {
return '敏感及重要用户'
}
return '新建电网工程'
}
//导出模板
const exportExcelTemplate = async ( ) => {
loading . value = true
await downloadSensitiveReportTemplate ( ) . then ( ( res : any ) => {
let blob = new Blob ( [ res ] , {
type : 'application/vnd.ms-excel'
} )
const url = window . URL . createObjectURL ( blob )
const link = document . createElement ( 'a' )
link . href = url
link . download = '干扰源用户台账模板'
document . body . appendChild ( link )
link . click ( )
link . remove ( )
} )
await setTimeout ( ( ) => {
loading . value = false
} , 0 )
}
//批量导入用户数据
const importUserData = ( ) => {
sensitiveUserPopup . value . open ( '导入干扰源用户' )
}
const props = defineProps ( { id : { type : String , default : 'null' } } )
watch (
( ) => props . id ,
async ( newValue , oldValue ) => {
if ( newValue === 'null' ) return // 直接返回,避免后续逻辑执行
const fullId = newValue . split ( '@' ) [ 0 ]
let nowTime = Date . now ( )
const routeTime = Number ( newValue . split ( '@' ) [ 1 ] )
if ( isNaN ( routeTime ) || nowTime - routeTime > import . meta . env . VITE _ROUTE _TIME _OUT ) return // 路由时间超过500ms, 则不执行
await getUserReportById ( fullId ) . then ( res => {
if ( res && res . code == 'A0000' ) {
addForms . value . setcontroFlag ( )
addForms . value . open ( {
title : '重新发起' ,
row : res . data
} )
}
} )
} ,
{ immediate : true }
)
< / script >