refactor: 完善终审逻辑

bak
elseif 1 year ago
parent f9335c4011
commit 709026b6bf

@ -7,6 +7,7 @@ export interface RowData {
fromuptime: string fromuptime: string
updatetime: string updatetime: string
title: string title: string
fromtaskid: string
} }
export interface ColumnEntity { export interface ColumnEntity {

@ -19,7 +19,6 @@ function handleSelect(key: string) {
} }
function logIt(e) { function logIt(e) {
// console.log('e:', e)
return false return false
} }

@ -47,7 +47,7 @@ defineExpose({
</div> </div>
<div class="wrapper-header"> <div class="wrapper-header">
<span style="font-weight: bold;">任务小结重复任务</span> <span style="font-weight: bold;">任务小结重复任务</span>
<span><font class="count">18</font></span> <span><span class="count">18</span></span>
</div> </div>
<div class="wrapper-content"> <div class="wrapper-content">
<n-scrollbar style="max-height: 200px;"> <n-scrollbar style="max-height: 200px;">
@ -64,7 +64,7 @@ defineExpose({
<span style="color:#8b8d8f;">任务重复数量</span> <span style="color:#8b8d8f;">任务重复数量</span>
</n-gi> </n-gi>
<n-gi span="8"> <n-gi span="8">
<span><font class="count">18</font></span> <span><span class="count">18</span></span>
</n-gi> </n-gi>
</n-grid> </n-grid>
</div> </div>

@ -13,7 +13,7 @@ const emit = defineEmits<{
(e: 'commit', columns: any[]) (e: 'commit', columns: any[])
}>() }>()
const show = ref(true) const show = ref(false)
function showModal() { function showModal() {
show.value = true show.value = true

@ -1,14 +1,16 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed, h, nextTick, onMounted, reactive, ref, unref } from 'vue' import { computed, h, nextTick, onMounted, reactive, ref, unref } from 'vue'
import { NDataTable, useDialog } from 'naive-ui' import { NDataTable, useDialog, useMessage } from 'naive-ui'
import type { DataTableColumns, DataTableRowKey } from 'naive-ui' import type { DataTableColumns, DataTableRowKey, PaginationProps } from 'naive-ui'
import { Action, CustomTabelModal, ImportExcelModal, RejectModal, RepeatModal, RepeatTaskTableModal } from '../comp' import { Action, CustomTabelModal, ImportExcelModal, RepeatModal, RepeatTaskTableModal } from '../comp'
import ConfrimModal from '@/views/task/modal/ConfrimModal.vue'
import { useWindowSizeFn } from '@/hooks/event/useWindowSizeFn' import { useWindowSizeFn } from '@/hooks/event/useWindowSizeFn'
import { getViewportOffset } from '@/utils/domUtils' import { getViewportOffset } from '@/utils/domUtils'
import type { RowData } from '@/config/final' import type { RowData } from '@/config/final'
import { findKey, headRules } from '@/config/final' import { findKey, headRules } from '@/config/final'
import { getFinalList } from '@/api/final' import { getFinalList } from '@/api/final'
import { isBoolean } from '@/utils/is' import { isBoolean } from '@/utils/is'
import { useUser } from '@/store/modules/user'
import type { ApprovalParam } from '/#/api' import type { ApprovalParam } from '/#/api'
import { audit } from '@/api/task/task' import { audit } from '@/api/task/task'
@ -92,9 +94,12 @@ const pagination = reactive({
}) })
const tableData = ref<Array<RowData>>([]) const tableData = ref<Array<RowData>>([])
const selectionIds = ref<DataTableRowKey[]>([]) const selectionIds = ref<DataTableRowKey[]>([])
const userStore = useUser()
const dialog = useDialog()
const message = useMessage()
async function query(page: number, pageSize: number) { async function query(page: number, pageSize: number) {
const result = await getFinalList({ sortorder: 'asc', pageSize: 10, currPage: 1, sortname: '' }) const result = await getFinalList({ sortorder: 'asc', pageSize, currPage: page, sortname: '' })
const { data, pageCount } = result const { data, pageCount } = result
tableData.value = data tableData.value = data
pagination.page = page pagination.page = page
@ -212,7 +217,6 @@ function actionHandler(action: any) {
const { key } = action const { key } = action
switch (key) { switch (key) {
case 'view': case 'view':
break break
case 'reset': case 'reset':
resetHandler() resetHandler()
@ -221,14 +225,35 @@ function actionHandler(action: any) {
approvalHandler() approvalHandler()
break break
case 'reject': case 'reject':
showModal(rejectModalRef) rejectHandler()
break break
default: default:
break break
} }
} }
const dialog = useDialog() // states:1234
function validate(items: any[]) {
if (items.length === 0)
return '至少选中一个任务'
const useInfo = userStore.getUserInfo
const username = useInfo.loginname
for (const item of items) {
const { iztrueorfalse, states, assignee } = item
if (iztrueorfalse === null)
return '未判别真假'
else if (states !== 2)
return '审批状态不合法'
else if (assignee !== username)
return '审批人不一致'
}
return null
}
function resetHandler() { function resetHandler() {
dialog.info({ dialog.info({
@ -244,34 +269,89 @@ function resetHandler() {
}) })
} }
function getSelectItems() {
return tableData.value.filter(item => selectionIds.value.includes(item.id))
}
function approvalHandler() { function approvalHandler() {
const items = getSelectItems()
const msg = validate(items)
if (msg !== null) {
message.error(msg)
return
}
dialog.info({ dialog.info({
title: '确认提示', title: '确认提示',
content: '确认给该任务审批为【通过】吗?', content: '确认给该任务审批为【通过】吗?',
positiveText: '确定', positiveText: '确定',
negativeText: '取消', negativeText: '取消',
onPositiveClick: () => { onPositiveClick: () => {
// TODO approval(items)
}, },
onNegativeClick: () => { }, onNegativeClick: () => { },
}) })
} }
function rejectHandler(idOrDesc: string, isOther: boolean) { function approval(items) {
// TODO: const formIds: string[] = items.map(item => item.id)
// const param: ApprovalParam = { const taskIds: string[] = items.map(item => item.taskId)
// formid: '', const tasknames: string[] = items.map(item => item.taskname)
// taskId: '',
// approvd: false, const param: ApprovalParam = {
// taskComment: '', formid: formIds,
// } taskId: taskIds,
approvd: true,
// if (isOther) taskComment: 'approval',
// param.taskComment = idOrDesc taskname: tasknames,
// else }
// param.taskComment = idOrDesc
doAudit(param)
// audit(param) }
function rejectHandler() {
const items = getSelectItems()
const msg = validate(items)
if (msg !== null) {
message.error(msg)
return
}
const modal = unref(rejectModalRef)! as any
modal.showModal()
}
function reject(idOrDesc: string, backId: string, isOther: boolean) {
const items = getSelectItems()
const formIds: string[] = items.map(item => item.id)
const taskIds: string[] = items.map(item => item.fromtaskid)
const tasknames: string[] = items.map(item => item.fromtaskname)
const param: ApprovalParam = {
formid: formIds,
taskId: taskIds,
approvd: false,
taskComment: idOrDesc,
taskname: isOther ? tasknames : ['其他'],
}
doAudit(param)
}
function doAudit(param: any) {
audit(param).then((res) => {
const { code } = res
if (code === 'OK')
reload()
else message.error(res.message)
})
}
function reload() {
const { page, pageSize } = unref(tableRef.value?.pagination) as PaginationProps
query(page!, pageSize!)
} }
</script> </script>
@ -337,7 +417,7 @@ function rejectHandler(idOrDesc: string, isOther: boolean) {
<CustomTabelModal ref="customTabelRef" @commit="commitHandler" /> <CustomTabelModal ref="customTabelRef" @commit="commitHandler" />
<ImportExcelModal ref="importExcelRef" :on-success="sucessHandler" :header-config="headRules" /> <ImportExcelModal ref="importExcelRef" :on-success="sucessHandler" :header-config="headRules" />
<RejectModal ref="rejectModalRef" @commit="rejectHandler" /> <ConfrimModal ref="rejectModalRef" @commit="reject" />
<RepeatModal ref="repeatModalRef" @reject="showModal(rejectModalRef)" @viewrepeat="showModal(repeatTaskTableModalRef)" /> <RepeatModal ref="repeatModalRef" @reject="showModal(rejectModalRef)" @viewrepeat="showModal(repeatTaskTableModalRef)" />
<RepeatTaskTableModal ref="repeatTaskTableModalRef" /> <RepeatTaskTableModal ref="repeatTaskTableModalRef" />
</div> </div>

Loading…
Cancel
Save