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.
148 lines
4.4 KiB
148 lines
4.4 KiB
|
6 years ago
|
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]()
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|