You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
reagent_manage/vue/src/mixins/bizDocumentTableMixin.js

147 lines
4.4 KiB

import tableMixin from '@/mixins/tablePageMixin'
import LinerProgress from '@/components/LinerProgress'
import {isEmpty} from "@/utils"
import {elConfirm, elError, elSuccess} from "@/utils/message"
import {auth} from "@/utils/auth"
import {exportExcel} from "@/utils/excel"
export const commonMethods = {
getStatus(status) {
switch (status) {
case 0:
return '拟定'
case 1:
return '待审核'
case 2:
return '已审核'
}
return null
},
getFinish(finish) {
switch (finish) {
case 0:
return '未开始'
case 1:
return '进行中'
case 2:
return '已完成'
}
return null
}
}
export default {
mixins: [tableMixin],
components: {LinerProgress},
data() {
return {
searchForm: {
id_fuzzy: null,
cname: null,
vname: null
},
editDialog: false,
temp: {
status: [],
ctime: [],
vtime: []
}
}
},
computed: {
canAdd() {
return auth(this.baseUrl + '/add')
},
canUpdate() {
return auth(this.baseUrl + '/update')
|| auth(this.baseUrl + '/withdraw')
|| auth(this.baseUrl + '/pass')
|| auth(this.baseUrl + '/reject')
},
canDel() {
return auth(this.baseUrl + '/del')
},
canExport() {
return auth(this.baseUrl + '/export')
},
},
watch: {
editDialog(v) {
if (!v && this.row && this.row._external) {
this.row = null
}
}
},
methods: {
...commonMethods,
search() {
if (this.config.loading) return
this.config.loading = true
//折叠所有行
this.tableData.forEach(row => this.$refs.table.toggleRowExpansion(row, false))
this.row = null
this.api.search(this.mergeSearchForm())
.then(({list, total}) => {
list.forEach(i => {
i._loading = false //加载状态
i._loaded = false //是否已经加载完成
})
this.searchForm.total = total
this.tableData = list
})
.finally(() => this.config.loading = false)
},
getSubList(row) {
if (row._loaded || row._loading) return
row._loading = true
this.api.getSubById(row.id)
.then(data => {
row.data = data
row._loaded = true
})
.finally(() => row._loading = false)
},
add() {
this.row = null
this.type = 'add'
this.editDialog = true
},
see() {
if (isEmpty(this.row)) return elError('请选择要查看的单据')
this.type = 'see'
this.editDialog = true
},
edit() {
if (isEmpty(this.row)) return elError('请选择要编辑的单据')
this.type = 'edit'
this.editDialog = true
},
del() {
if (isEmpty(this.row)) return elError('请选择要删除的单据')
if (this.row.status !== 0) return elError('只有状态为【拟定】时才能删除')
if (this.config.operating) return
elConfirm(`确定删除单据【${this.row.id}】?`)
.then(() => {
this.config.operating = true
return this.api.del(this.row.id)
})
.then(() => {
elSuccess('删除成功')
this.search()
})
.finally(() => this.config.operating = false)
},
downloadExcel() {
exportExcel(this.baseUrl + '/export', this.mergeSearchForm(), this.excel)
}
},
activated() {
let {type, id} = this.$route.params
if (!['see', 'edit'].includes(type) || isEmpty(id)) return
this.row = null
this.$nextTick(() => {
this.row = {id, _external: true}
this[type]()
})
}
}