438 lines
16 KiB
JavaScript
438 lines
16 KiB
JavaScript
import Cookies from 'js-cookie'
|
||
import qs from 'qs'
|
||
import { deepClone } from '@/utils/form-generator/index'
|
||
export default {
|
||
data () {
|
||
/* eslint-disable */
|
||
return {
|
||
// 设置属性
|
||
mixinViewModuleOptions: {
|
||
createdIsNeed: true, // 此页面是否在创建时,调用查询数据列表接口?
|
||
activatedIsNeed: false, // 此页面是否在激活(进入)时,调用查询数据列表接口?
|
||
getDataListURL: '', // 数据列表接口,API地址
|
||
getDataListIsPage: false, // 数据列表接口,是否需要分页?
|
||
deleteURL: '', // 删除接口,API地址
|
||
deleteIsBatch: false, // 删除接口,是否需要批量?
|
||
deleteIsBatchKey: 'id', // 删除接口,批量状态下由那个key进行标记操作?比如:pid,uid...
|
||
exportURL: '', // 导出接口,API地址
|
||
requestCallback: null // 获取列表以后执行的回调
|
||
},
|
||
flag: false,
|
||
time: null,
|
||
// 默认属性
|
||
dataForm: {
|
||
}, // 查询条件
|
||
dataList: [
|
||
{
|
||
infoList: []
|
||
}
|
||
], // 数据列表
|
||
order: '', // 排序,asc/desc
|
||
orderField: '', // 排序,字段
|
||
page: 1, // 当前页码
|
||
limit: 10, // 每页数
|
||
total: 0, // 总条数
|
||
dataListLoading: false, // 数据列表,loading状态
|
||
dataListSelections: [], // 数据列表,多选项
|
||
addOrUpdateVisible: false // 新增/更新,弹窗visible状态
|
||
}
|
||
/* eslint-enable */
|
||
},
|
||
created () {
|
||
if (this.mixinViewModuleOptions.createdIsNeed) {
|
||
this.query()
|
||
}
|
||
},
|
||
activated () {
|
||
if (this.mixinViewModuleOptions.activatedIsNeed) {
|
||
this.query()
|
||
}
|
||
},
|
||
methods: {
|
||
// 获取数据列表
|
||
query () {
|
||
this.dataListLoading = true
|
||
if (this.mixinViewModuleOptions.getDataListURL !== '/resource/pageWithAttrs') {
|
||
this.$http.get(
|
||
this.mixinViewModuleOptions.getDataListURL + '?' + qs.stringify({
|
||
// order: this.order,
|
||
// orderField: this.orderField,
|
||
// type: '组件服务',
|
||
name: '',
|
||
page: this.mixinViewModuleOptions.getDataListIsPage ? this.page : null,
|
||
limit: this.mixinViewModuleOptions.getDataListIsPage ? this.limit : null,
|
||
...this.dataForm
|
||
})
|
||
|
||
).then(({ data: res }) => {
|
||
if (res.code !== 0) {
|
||
this.dataList = []
|
||
this.total = 0
|
||
return this.$message.error(res.msg)
|
||
}
|
||
this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.list : res.data
|
||
this.dataList.map((item, index) => {
|
||
if (this.dataList[index].type != null) {
|
||
switch (item.type) {
|
||
case 1: this.dataList[index].type = '省'; break
|
||
case 2: this.dataList[index].type = '市'; break
|
||
case 3: this.dataList[index].type = '区'; break
|
||
case 4: this.dataList[index].type = '企业'; break
|
||
}
|
||
}
|
||
if (item.children != null) {
|
||
item.children.map((item2, index2) => {
|
||
switch (item2.type) {
|
||
case 1: this.dataList[index].children[index2].type = '省'; break
|
||
case 2: this.dataList[index].children[index2].type = '市'; break
|
||
case 3: this.dataList[index].children[index2].type = '区'; break
|
||
case 4: this.dataList[index].children[index2].type = '企业'; break
|
||
}
|
||
})
|
||
}
|
||
})
|
||
// 我的代办特殊处理
|
||
if (this.mixinViewModuleOptions.getDataListURL === '/act/task/myToDoTaskPage') {
|
||
this.$http.get('/sys/user/info').then(userRes => {
|
||
console.log('当前用户信息===========>', userRes.data.data.id)
|
||
const userId = userRes.data.data.id
|
||
// this.dataList = this.dataList.filter(item => {
|
||
// // userId creator
|
||
// console.log(item.params.creator)
|
||
// if (!(item.params.creator === userId) && !(item.params.userId === userId)) {
|
||
// return item
|
||
// }
|
||
// })
|
||
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
|
||
})
|
||
} else {
|
||
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
|
||
}
|
||
console.log('数据列表', this.dataList, this.mixinViewModuleOptions.getDataListURL)
|
||
if (this.dataList[0].type === '组件服务') {
|
||
this.dataList.map(val => {
|
||
val.infoList2 = val.infoList.filter(item => item.attrType === '应用领域' || item.attrType === '组件类型')
|
||
})
|
||
} else if (this.dataList[0].type === '应用资源') {
|
||
this.dataList.map(val => {
|
||
val.infoList2 = val.infoList.filter(item => item.attrType === '应用领域')
|
||
})
|
||
}
|
||
if (this.mixinViewModuleOptions.requestCallback) {
|
||
this.mixinViewModuleOptions.requestCallback(res.data)
|
||
}
|
||
this.dataListLoading = false
|
||
}).catch(() => {
|
||
this.dataListLoading = false
|
||
})
|
||
} else {
|
||
this.$http.post(
|
||
this.mixinViewModuleOptions.getDataListURL, {
|
||
pageNum: this.mixinViewModuleOptions.getDataListIsPage ? this.page : null,
|
||
pageSize: this.mixinViewModuleOptions.getDataListIsPage ? this.limit : null,
|
||
...this.dataForm
|
||
}
|
||
).then(({ data: res }) => {
|
||
if (res.code !== 0) {
|
||
this.dataList = []
|
||
this.total = 0
|
||
return this.$message.error(res.msg)
|
||
}
|
||
this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.records : res.data
|
||
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
|
||
if (this.dataList[0].type === '组件服务') {
|
||
this.dataList.map(val => {
|
||
val.infoList2 = val.infoList.filter(item => item.attrType === '应用领域' || item.attrType === '组件类型')
|
||
})
|
||
} else if (this.dataList[0].type === '应用资源') {
|
||
this.dataList.map(val => {
|
||
val.infoList2 = val.infoList.filter(item => item.attrType === '应用领域')
|
||
})
|
||
}
|
||
if (this.mixinViewModuleOptions.requestCallback) {
|
||
this.mixinViewModuleOptions.requestCallback(res.data)
|
||
}
|
||
this.dataListLoading = false
|
||
}).catch(() => {
|
||
this.dataListLoading = false
|
||
})
|
||
}
|
||
},
|
||
// 多选
|
||
dataListSelectionChangeHandle (val) {
|
||
this.dataListSelections = val
|
||
},
|
||
// 排序
|
||
dataListSortChangeHandle (data) {
|
||
if (!data.order || !data.prop) {
|
||
this.order = ''
|
||
this.orderField = ''
|
||
return false
|
||
}
|
||
this.order = data.order.replace(/ending$/, '')
|
||
this.orderField = data.prop.replace(/([A-Z])/g, '_$1').toLowerCase()
|
||
this.query()
|
||
},
|
||
// 分页, 每页条数
|
||
pageSizeChangeHandle (val) {
|
||
this.page = 1
|
||
this.limit = val
|
||
this.query()
|
||
},
|
||
// 分页, 当前页
|
||
pageCurrentChangeHandle (val) {
|
||
this.page = val
|
||
this.query()
|
||
},
|
||
getDataList: function () {
|
||
this.page = 1
|
||
this.query()
|
||
},
|
||
// 新增
|
||
addOrUpdateHandle (id) {
|
||
this.addOrUpdateVisible = true
|
||
this.disabled = false
|
||
this.$nextTick(() => {
|
||
this.$refs.addOrUpdate.UpdateState = false
|
||
this.$refs.addOrUpdate.dataForm.id = id
|
||
this.$refs.addOrUpdate.init()
|
||
})
|
||
},
|
||
|
||
// 组件服务新增
|
||
addOrUpdateHandleAI (id) {
|
||
// const infoList = []
|
||
let showList = []
|
||
this.$http.get('category/getCategoryTree').then(({ data: res }) => {
|
||
showList = res.data.filter(item => item.name === '组件服务')[0].children
|
||
showList.forEach((item, index) => {
|
||
if (item.children && item.children.length > 0) {
|
||
item.children.forEach((item2) => {
|
||
const options = []
|
||
if (item2.isLinkToDic == 'true') {
|
||
this.$http.get('/sys/dict/data/page?page=1&limit=99&dictTypeId=' + item2.linkValue).then(({ data: res }) => {
|
||
res.data.list.forEach((val) => {
|
||
options.push(val.dictLabel)
|
||
})
|
||
item2.options = options
|
||
}).catch(() => { })
|
||
}
|
||
item2.note1 = ''
|
||
// if (item.name !== '必填信息' && item.name !== '服务接口信息') {
|
||
// infoList.push({
|
||
// attrType: item2.name,
|
||
// attrValue: '',
|
||
// delFlag: 0,
|
||
// options: options
|
||
// })
|
||
// }
|
||
})
|
||
}
|
||
})
|
||
console.log(res, showList)
|
||
this.flag = true
|
||
}).catch(() => { })
|
||
|
||
// 定时器
|
||
this.time = setInterval(() => {
|
||
console.log('定时器')
|
||
if (this.flag) {
|
||
this.addOrUpdateVisible = true
|
||
this.disabled = false
|
||
this.$nextTick(() => {
|
||
this.$refs.addOrUpdate.UpdateState = false
|
||
this.$refs.addOrUpdate.dataForm.id = id
|
||
this.$refs.addOrUpdate.init()
|
||
// this.$refs.addOrUpdate.dataForm.infoList = infoList
|
||
this.$refs.addOrUpdate.dataForm.showList = showList
|
||
this.$refs.addOrUpdate.dataForm.showListAll = showList
|
||
this.$refs.addOrUpdate.checkList = []
|
||
showList.forEach(val => {
|
||
this.$refs.addOrUpdate.checkList.push(val.name)
|
||
})
|
||
console.log('this.$refs.addOrUpdate.dataForm.showList', this.$refs.addOrUpdate.dataForm.showList)
|
||
})
|
||
this.flag = false
|
||
clearInterval(this.time)
|
||
}
|
||
}, 100)
|
||
},
|
||
// 应用资源新增
|
||
addOrUpdateHandleServe (id) {
|
||
// const infoList = []
|
||
let showList = []
|
||
this.$http.get('category/getCategoryTree').then(({ data: res }) => {
|
||
showList = res.data.filter(item => item.name === '应用资源')[0].children
|
||
showList.forEach((item, index) => {
|
||
if (item.children && item.children.length > 0) {
|
||
item.children.forEach((item2) => {
|
||
const options = []
|
||
if (item2.isLinkToDic == 'true') {
|
||
this.$http.get('/sys/dict/data/page?page=1&limit=99&dictTypeId=' + item2.linkValue).then(({ data: res }) => {
|
||
res.data.list.forEach((val) => {
|
||
options.push(val.dictLabel)
|
||
})
|
||
item2.options = options
|
||
}).catch(() => { })
|
||
}
|
||
item2.note1 = ''
|
||
// if (item.name !== '必填信息' && item.name !== '服务接口信息') {
|
||
// infoList.push({
|
||
// attrType: item2.name,
|
||
// attrValue: '',
|
||
// delFlag: 0,
|
||
// options: options
|
||
// })
|
||
// }
|
||
})
|
||
}
|
||
})
|
||
console.log(res, showList)
|
||
this.flag = true
|
||
}).catch(() => { })
|
||
|
||
// 定时器
|
||
this.time = setInterval(() => {
|
||
console.log('定时器')
|
||
if (this.flag) {
|
||
this.addOrUpdateVisible = true
|
||
this.disabled = false
|
||
this.$nextTick(() => {
|
||
this.$refs.addOrUpdate.UpdateState = false
|
||
this.$refs.addOrUpdate.dataForm.id = id
|
||
this.$refs.addOrUpdate.init()
|
||
// this.$refs.addOrUpdate.dataForm.infoList = infoList
|
||
this.$refs.addOrUpdate.dataForm.showList = showList
|
||
this.$refs.addOrUpdate.dataForm.showListAll = showList
|
||
this.$refs.addOrUpdate.checkList = []
|
||
showList.forEach(val => {
|
||
this.$refs.addOrUpdate.checkList.push(val.name)
|
||
})
|
||
console.log('this.$refs.addOrUpdate.dataForm.showList', this.$refs.addOrUpdate.dataForm.showList)
|
||
})
|
||
this.flag = false
|
||
clearInterval(this.time)
|
||
}
|
||
}, 100)
|
||
},
|
||
// 修改
|
||
UpdateHandle (val) {
|
||
this.addOrUpdateVisible = true
|
||
this.disabled = false
|
||
const cloneVal = deepClone(val)
|
||
console.log('修改的数据', cloneVal)
|
||
cloneVal.infoList.forEach(item => {
|
||
delete item.createDate
|
||
delete item.creator
|
||
delete item.id
|
||
delete item.updateDate
|
||
delete item.updater
|
||
delete item.note1
|
||
delete item.note2
|
||
delete item.note3
|
||
delete item.note4
|
||
delete item.note5
|
||
})
|
||
this.$nextTick(() => {
|
||
this.$refs.addOrUpdate.UpdateState = true
|
||
this.$refs.addOrUpdate.dataFormUpdate = cloneVal
|
||
this.$refs.addOrUpdate.init()
|
||
console.log('===========================', this.$refs.addOrUpdate.dataFormUpdate)
|
||
})
|
||
},
|
||
// 关闭当前窗口
|
||
closeCurrentTab (data) {
|
||
var tabName = this.$store.state.contentTabsActiveName
|
||
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name !== tabName)
|
||
if (this.$store.state.contentTabs.length <= 0) {
|
||
this.$store.state.sidebarMenuActiveName = this.$store.state.contentTabsActiveName = 'home'
|
||
return false
|
||
}
|
||
if (tabName === this.$store.state.contentTabsActiveName) {
|
||
this.$router.push({ name: this.$store.state.contentTabs[this.$store.state.contentTabs.length - 1].name })
|
||
}
|
||
},
|
||
// 删除
|
||
deleteHandle (id) {
|
||
if (this.mixinViewModuleOptions.deleteIsBatch && !id && this.dataListSelections.length <= 0) {
|
||
return this.$message({
|
||
message: this.$t('prompt.deleteBatch'),
|
||
type: 'warning',
|
||
duration: 500
|
||
})
|
||
}
|
||
this.$confirm(this.$t('prompt.info', { handle: this.$t('delete') }), this.$t('prompt.title'), {
|
||
confirmButtonText: this.$t('confirm'),
|
||
cancelButtonText: this.$t('cancel'),
|
||
type: 'warning'
|
||
}).then(() => {
|
||
this.$http.delete(
|
||
`${this.mixinViewModuleOptions.deleteURL}${this.mixinViewModuleOptions.deleteIsBatch ? '' : '/' + id}`,
|
||
this.mixinViewModuleOptions.deleteIsBatch ? {
|
||
data: id ? [id] : this.dataListSelections.map(item => item[this.mixinViewModuleOptions.deleteIsBatchKey])
|
||
} : {}
|
||
).then(({ data: res }) => {
|
||
if (res.code !== 0) {
|
||
return this.$message.error(res.msg)
|
||
}
|
||
this.$message({
|
||
message: this.$t('prompt.success'),
|
||
type: 'success',
|
||
duration: 500,
|
||
onClose: () => {
|
||
this.query()
|
||
}
|
||
})
|
||
}).catch(() => { })
|
||
}).catch(() => { })
|
||
},
|
||
|
||
deleteHandle2 (id) {
|
||
if (id == undefined && this.dataListSelections.length < 1) {
|
||
this.$message({
|
||
type: 'info',
|
||
message: '请选择要删除的数据'
|
||
})
|
||
} else {
|
||
this.$confirm('确认是否删除?', '提示', {
|
||
confirmButtonText: '确定',
|
||
cancelButtonText: '取消',
|
||
type: 'warning'
|
||
}).then(() => {
|
||
const ids = []
|
||
if (id) {
|
||
ids.push(id)
|
||
} else {
|
||
if (this.dataListSelections.length > 0) {
|
||
this.dataListSelections.forEach(item => {
|
||
ids.push(item.id)
|
||
})
|
||
}
|
||
}
|
||
this.$http.post('/resource/delete', { ids: ids }).then(res => {
|
||
console.log('删除成功', res)
|
||
this.$message({
|
||
type: 'success',
|
||
message: '删除成功!'
|
||
})
|
||
this.getDataList()
|
||
})
|
||
}).catch(() => {
|
||
// this.$message({
|
||
// type: 'info',
|
||
// message: '已取消删除'
|
||
// });
|
||
})
|
||
}
|
||
},
|
||
// 导出
|
||
exportHandle () {
|
||
var params = qs.stringify({
|
||
token: Cookies.get('ucsToken'),
|
||
...this.dataForm
|
||
})
|
||
window.location.href = `${window.SITE_CONFIG.apiURL}${this.mixinViewModuleOptions.exportURL}?${params}`
|
||
}
|
||
}
|
||
}
|