档案移交记录功能
This commit is contained in:
parent
35b5464371
commit
d324c0f606
|
|
@ -18,18 +18,42 @@
|
||||||
@on-load="onLoad"
|
@on-load="onLoad"
|
||||||
>
|
>
|
||||||
<template #receiveStatus="{ row }">
|
<template #receiveStatus="{ row }">
|
||||||
{{
|
<span
|
||||||
getProgressStatusText(row.receiveStatus)
|
class="clickable-status"
|
||||||
}}
|
@click="handleTProgress(row)"
|
||||||
|
>
|
||||||
|
{{ getProgressStatusText(row.transferStatus) }}
|
||||||
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<template #deptId="{ row }">
|
<template #deptId="{ row }">
|
||||||
{{ row.deptName }}
|
{{ row.deptName }}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<!-- 接收清单操作 -->
|
||||||
|
<template #transferIssue="{ row }">
|
||||||
|
<span
|
||||||
|
class="clickable-status"
|
||||||
|
@click="handleTList(row)"
|
||||||
|
>
|
||||||
|
查看清单
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
</avue-crud>
|
</avue-crud>
|
||||||
</basic-container>
|
</basic-container>
|
||||||
|
|
||||||
|
<RecordList
|
||||||
|
v-model="recordListVisible"
|
||||||
|
:title="recordListTitle"
|
||||||
|
:row-data="recordListRow"
|
||||||
|
:jump-type="recordListJumpType"
|
||||||
|
@handle-query="onLoad(page, query)"
|
||||||
|
@close="recordListVisible = false"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import RecordList from '@/views/fileTransfer/components/recordAcceptList.vue'
|
||||||
import {
|
import {
|
||||||
getTransferReceiceListApi,
|
getTransferReceiceListApi,
|
||||||
} from '@/api/filesTransfer/accept';
|
} from '@/api/filesTransfer/accept';
|
||||||
|
|
@ -38,6 +62,9 @@ import website from '@/config/website';
|
||||||
import { getDeptSelectApi } from '@/api/select';
|
import { getDeptSelectApi } from '@/api/select';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
RecordList
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
form: {},
|
form: {},
|
||||||
|
|
@ -102,6 +129,7 @@ export default {
|
||||||
{
|
{
|
||||||
label: '接收清单',
|
label: '接收清单',
|
||||||
prop: 'transferIssue',
|
prop: 'transferIssue',
|
||||||
|
slot: true // 启用插槽
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '接收进度',
|
label: '接收进度',
|
||||||
|
|
@ -112,6 +140,11 @@ export default {
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
|
|
||||||
|
recordListVisible: false,
|
||||||
|
recordListTitle: '',
|
||||||
|
recordListRow: null,
|
||||||
|
recordListJumpType: 'list'
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -222,8 +255,31 @@ export default {
|
||||||
this.selectionClear();
|
this.selectionClear();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
handleTList(row) {
|
||||||
|
this.recordListTitle = '移交清单';
|
||||||
|
this.recordListRow = row;
|
||||||
|
this.recordListJumpType = 'list';
|
||||||
|
this.recordListVisible = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
handleTProgress(row) {
|
||||||
|
this.recordListTitle = '移交进度';
|
||||||
|
this.recordListRow = row;
|
||||||
|
this.recordListJumpType = 'progress';
|
||||||
|
this.recordListVisible = true;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style></style>
|
<style scoped>
|
||||||
|
.clickable-status {
|
||||||
|
color: #409eff;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.clickable-status:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,193 @@
|
||||||
|
<template>
|
||||||
|
<!-- 小型弹窗,用于查看移交清单/进度 -->
|
||||||
|
<el-dialog
|
||||||
|
class="l-dialog"
|
||||||
|
:class="lDialog"
|
||||||
|
:title="title"
|
||||||
|
v-model="dialogVisible"
|
||||||
|
:show-close="true"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
@close="handleClose"
|
||||||
|
append-to-body
|
||||||
|
width="700px"
|
||||||
|
>
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
border
|
||||||
|
header-align="center"
|
||||||
|
max-height="600"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" label="序号" width="80" align="center" />
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
v-for="item in tableColumns"
|
||||||
|
:key="item.prop"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="scope">
|
||||||
|
<span
|
||||||
|
v-if="item.prop === 'fileName'"
|
||||||
|
class="file-name-link"
|
||||||
|
@click="viewFile(scope.row)"
|
||||||
|
style="color: #409eff; cursor: pointer"
|
||||||
|
>
|
||||||
|
{{ scope.row.fileName }}
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
|
{{ scope.row[item.prop] }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 预览文件 -->
|
||||||
|
<ViewFile
|
||||||
|
v-if="isViewFlag"
|
||||||
|
:row-data="currentRow"
|
||||||
|
title="预览"
|
||||||
|
@close-dialog="isViewFlag = false"
|
||||||
|
:width="600"
|
||||||
|
/>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, computed, onMounted, watch } from 'vue';
|
||||||
|
import { ElMessage, ElMessageBox, ElLoading } from 'element-plus';
|
||||||
|
import { getTransferReceiceFilesApi } from '@/api/filesTransfer/accept';
|
||||||
|
import ViewFile from '@/views/viewFile/viewFile.vue';
|
||||||
|
|
||||||
|
// ================== Props & Emits ==================
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: Boolean, // v-model:visible
|
||||||
|
title: String,
|
||||||
|
rowData: Object,
|
||||||
|
jumpType: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
validator: (val) => ['list', 'progress'].includes(val)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:modelValue', 'close', 'handle-query']);
|
||||||
|
|
||||||
|
// ================== Refs ==================
|
||||||
|
const dialogVisible = ref(false);
|
||||||
|
const tableData = ref([]);
|
||||||
|
const currentRow = ref(null);
|
||||||
|
const isViewFlag = ref(false);
|
||||||
|
const isMaintenanceVisible = ref(false);
|
||||||
|
const maintenanceRow = ref(null);
|
||||||
|
|
||||||
|
const lDialog = computed(() => (props.title?.length > 10 ? 'w700' : 'w500'));
|
||||||
|
|
||||||
|
// 动态列
|
||||||
|
const tableColumns = computed(() => {
|
||||||
|
if (props.jumpType === 'list') {
|
||||||
|
return [
|
||||||
|
{ prop: 'parParentName', label: '所属分类' },
|
||||||
|
{ prop: 'parentName', label: '所属案卷' },
|
||||||
|
{ prop: 'fileName', label: '文件名称' }
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
return [
|
||||||
|
{ prop: 'parParentName', label: '所属分类' },
|
||||||
|
{ prop: 'parentName', label: '所属案卷' },
|
||||||
|
{ prop: 'fileName', label: '文件名称' },
|
||||||
|
{ prop: 'transferStatus', label: '进度' }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ================== Methods ==================
|
||||||
|
const initFormData = async () => {
|
||||||
|
if (!props.rowData?.id) return;
|
||||||
|
const res = await getTransferReceiceFilesApi({ transferApplyId: props.rowData.id });
|
||||||
|
if (Array.isArray(res.data.data)) {
|
||||||
|
tableData.value = res.data.data.map(item => ({
|
||||||
|
...item,
|
||||||
|
transferStatus: (item.transferStatus ?? '0') === '0' ? '进行中' : '已完成'
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const viewFile = (row) => {
|
||||||
|
currentRow.value = row;
|
||||||
|
isViewFlag.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleMaintenance = (row) => {
|
||||||
|
maintenanceRow.value = row;
|
||||||
|
isMaintenanceVisible.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const transfer = (row) => {
|
||||||
|
ElMessageBox.confirm(`是否确认移交文件名称为 "${row.fileName}" 的数据项?`, '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(async () => {
|
||||||
|
const loading = ElLoading.service({ text: '正在移交,请稍候...' });
|
||||||
|
try {
|
||||||
|
const res = await updateTransferRecordFilesStatusApi({
|
||||||
|
transferApplyId: props.rowData.id,
|
||||||
|
id: row.fileId,
|
||||||
|
transferStatus: '1'
|
||||||
|
});
|
||||||
|
loading.close();
|
||||||
|
if (res.data.code === 200) {
|
||||||
|
ElMessage.success(res.data.msg);
|
||||||
|
await handleQuery();
|
||||||
|
emit('handle-query');
|
||||||
|
} else {
|
||||||
|
ElMessage.error(res.data.msg);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
loading.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleQuery = async () => {
|
||||||
|
await initFormData();
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleClose = () => {
|
||||||
|
dialogVisible.value = false;
|
||||||
|
emit('update:modelValue', false);
|
||||||
|
emit('close');
|
||||||
|
};
|
||||||
|
|
||||||
|
// ================== Watch & Lifecycle ==================
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(val) => {
|
||||||
|
dialogVisible.value = val;
|
||||||
|
if (val) {
|
||||||
|
initFormData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
if (props.modelValue) {
|
||||||
|
initFormData();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.l-dialog .el-dialog__header .el-dialog__title {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.file-name-link {
|
||||||
|
color: #409eff;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in New Issue