|
@@ -29,7 +29,17 @@
|
|
|
</template>
|
|
|
<template #header>
|
|
|
<el-button hc-btn color="#12B9A7" class="text-white" :disabled="!folderId" @click="movesClick">移动</el-button>
|
|
|
- <el-button hc-btn color="#149BF4" class="text-white">自动识别</el-button>
|
|
|
+ <!-- <el-button hc-btn color="#149BF4" class="text-white">自动识别</el-button> -->
|
|
|
+ <HcTooltip keys="file_records_btn_split">
|
|
|
+ <el-badge :value="taskMount" class="ml-1 mr-4 cursor-pointer" :offset="[5, 5]" @click.native.stop="taskCountClick">
|
|
|
+ <el-button hc-btn style="background-color: #8B5CF6; border-color: #8B5CF6; color:white" @click.native.stop="splitClick">自动识别</el-button>
|
|
|
+ <template #content="{ value }">
|
|
|
+ <div class="custom-content">
|
|
|
+ <span>{{ value }}</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-badge>
|
|
|
+ </HcTooltip>
|
|
|
<el-button hc-btn class="text-white" color="#149BF4" :disabled="!tableCheckedKeys.length" @click="editClick">编辑</el-button>
|
|
|
<el-button v-del-com:[delClick] hc-btn type="danger" :disabled="!tableCheckedKeys.length">删除</el-button>
|
|
|
</template>
|
|
@@ -114,6 +124,47 @@
|
|
|
</template>
|
|
|
</HcTable>
|
|
|
</hc-new-dialog>
|
|
|
+ <!-- 自动识别列表信息 -->
|
|
|
+ <!-- 分解列表信息 -->
|
|
|
+ <hc-new-dialog v-model="splitListModal" title="分解列表信息" widths="50vw" :footer="false" height="500px" @close="splitListModalClose">
|
|
|
+ <HcTable
|
|
|
+ heights="calc(100% - 50px)"
|
|
|
+
|
|
|
+ :column="splitListColumn"
|
|
|
+ :datas="splitList"
|
|
|
+ :loading="splitListLoading"
|
|
|
+ is-new
|
|
|
+ :index-style="{ width: 70 }"
|
|
|
+ >
|
|
|
+ <template #fileNumber="{ row }">
|
|
|
+ <span>{{ row.fileNumber }}</span>
|
|
|
+ </template>
|
|
|
+ <template #name="{ row }">
|
|
|
+ <span>{{ row.name }}</span>
|
|
|
+ </template>
|
|
|
+ <template #status="{ row }">
|
|
|
+ <span>{{ row.status }}</span>
|
|
|
+ </template>
|
|
|
+ <template #createTime="{ row }">
|
|
|
+ <span>{{ row.createTime }}</span>
|
|
|
+ </template>
|
|
|
+ </HcTable>
|
|
|
+ </hc-new-dialog>
|
|
|
+
|
|
|
+ <!-- 分解文件 -->
|
|
|
+ <hc-new-dialog v-model="splitModal" title="自动识别" widths="40vw" :loading="splitSaveLoad" @close="splitModalClose" @save="splitSave">
|
|
|
+ <div class="split-modal-content">
|
|
|
+ <div class="mb-6 text-4 font-bold">
|
|
|
+ 本次识别共
|
|
|
+ <span class="text-red">【{{ splitInfo?.fileCount }}】</span>
|
|
|
+ 卷,预计耗费时长
|
|
|
+ <span class="text-red">【{{ splitInfo?.taskTime }}】</span>
|
|
|
+ 分钟,分解完成之后,序号图标会变成 <HcIcon name="checkbox-circle" style="color:lightgreen" />
|
|
|
+ </div>
|
|
|
+ <div class="mb-6 text-orange">请不要重复提交,过会儿再来查看,识别好的文件在对应节点可查看</div>
|
|
|
+ <!-- <el-button type="primary" size="large" class="split-confirm-btn" hc-btn @click="splitModalClose">好的,我知道了</el-button> -->
|
|
|
+ </div>
|
|
|
+ </hc-new-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -122,16 +173,19 @@ import { onMounted, ref } from 'vue'
|
|
|
import scanApi from '~api/archiveFile/scanning'
|
|
|
import { useAppStore } from '~src/store'
|
|
|
import HcTree from '~src/components/tree/hc-tree.vue'
|
|
|
-import { arrToId, deepClone, getArrValue } from 'js-fast-way'
|
|
|
+import { arrToId, deepClone, getArrValue, getObjValue } from 'js-fast-way'
|
|
|
import MenuItem from './MenuItem.vue' // 导入递归组件
|
|
|
import { toPdfPage } from '~uti/btn-auth'
|
|
|
-import { rowsToId } from '~uti/tools'
|
|
|
+
|
|
|
+import tasksApi from '~api/tasks/data'
|
|
|
+import { HcFirmMsg, HcUploadFileApi } from 'hc-vue3-ui'
|
|
|
const useAppState = useAppStore()
|
|
|
const contractId = ref(useAppState.getContractId)
|
|
|
const projectId = ref(useAppState.getProjectId)
|
|
|
const folderLoading = ref(false)
|
|
|
onMounted(()=>{
|
|
|
getMenuFolderData()
|
|
|
+ getSplitInfo()
|
|
|
|
|
|
})
|
|
|
//菜单数据
|
|
@@ -399,6 +453,129 @@ const delClick = async (_, resolve) => {
|
|
|
}
|
|
|
resolve()
|
|
|
}
|
|
|
+//自动识别功能
|
|
|
+
|
|
|
+const taskMount = ref('')
|
|
|
+const splitLoad = ref(false)
|
|
|
+const splitClick = async ()=>{
|
|
|
+ console.log('分解文件')
|
|
|
+ splitLoad.value = true
|
|
|
+ const rows = tableCheckedKeys.value
|
|
|
+ if (rows.length < 1) {
|
|
|
+ // await window.$message.warning('没有选择案卷时,将会对该合同段下所有案卷进行分解')
|
|
|
+ HcFirmMsg({
|
|
|
+ title: '操作确认',
|
|
|
+ text: '没有选择案卷时,将会对该合同段下所有案卷进行识别',
|
|
|
+ }, async (resolve) => {
|
|
|
+ getSaveInfoData()
|
|
|
+ resolve() //关闭弹窗的回调
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ getSaveInfoData()
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // splitModal.value = true
|
|
|
+}
|
|
|
+const getSaveInfoData = async ()=>{
|
|
|
+ const rows = tableCheckedKeys.value
|
|
|
+ const { error, code, data, msg } = await tasksApi.getSaveInfo({
|
|
|
+ contractId:contractId.value,
|
|
|
+ projectId:projectId.value,
|
|
|
+ ids:rows.map(item=>item.id).join(','),
|
|
|
+ dataType:2,
|
|
|
+ })
|
|
|
+ splitLoad.value = false
|
|
|
+ //处理数据
|
|
|
+
|
|
|
+
|
|
|
+ if (!error && code === 200) {
|
|
|
+ splitInfo.value = data
|
|
|
+ splitModal.value = true
|
|
|
+ splitInfo.value = getObjValue(data) || {}
|
|
|
+
|
|
|
+ } else {
|
|
|
+ window.$message.error(msg)
|
|
|
+ }
|
|
|
+ // splitModal.value = true
|
|
|
+}
|
|
|
+const splitSaveLoad = ref(false)
|
|
|
+const splitSave = async ()=>{
|
|
|
+ const rows = tableCheckedKeys.value
|
|
|
+ splitSaveLoad.value = true
|
|
|
+
|
|
|
+ const { error, code, data, msg } = await tasksApi.saveSplit({
|
|
|
+ contractId:contractId.value,
|
|
|
+ projectId:projectId.value,
|
|
|
+ ids:rows.map(item=>item.id).join(','),
|
|
|
+ dataType:2,
|
|
|
+ })
|
|
|
+ splitSaveLoad.value = false
|
|
|
+ //处理数据
|
|
|
+
|
|
|
+
|
|
|
+ if (!error && code === 200) {
|
|
|
+ splitInfo.value = data
|
|
|
+ splitModal.value = true
|
|
|
+ splitInfo.value = getObjValue(data) || {}
|
|
|
+ window.$message.success(msg)
|
|
|
+ getSplitInfo()
|
|
|
+ splitModal.value = false
|
|
|
+
|
|
|
+
|
|
|
+ } else {
|
|
|
+ window.$message.error(msg)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+const splitInfo = ref({})
|
|
|
+const splitList = ref([
|
|
|
+
|
|
|
+])
|
|
|
+// 在script setup中添加
|
|
|
+const splitListModal = ref(false)
|
|
|
+const splitListLoading = ref(false)
|
|
|
+const splitListColumn = ref([
|
|
|
+ { key: 'taskName', name: '任务名称' },
|
|
|
+ { key: 'finished', name: '完成数量', width: 100 },
|
|
|
+ { key: 'toolCount', name: '总条数', width: 100 },
|
|
|
+
|
|
|
+])
|
|
|
+
|
|
|
+const splitListModalClose = () => {
|
|
|
+ splitListModal.value = false
|
|
|
+}
|
|
|
+
|
|
|
+// 修改taskCountClick方法
|
|
|
+const taskCountClick = async () => {
|
|
|
+ await getSplitInfo()
|
|
|
+ splitListModal.value = true
|
|
|
+}//查询任务信息
|
|
|
+const getSplitInfo = async ()=>{
|
|
|
+ const { error, code, data } = await tasksApi.selectTaskSplit({
|
|
|
+ contractId:contractId.value,
|
|
|
+ projectId:projectId.value,
|
|
|
+ dataType:2,
|
|
|
+
|
|
|
+ })
|
|
|
+ //处理数据
|
|
|
+ if (!error && code === 200) {
|
|
|
+ splitList.value = data['records']
|
|
|
+
|
|
|
+ if (data['records'].length > 0) {
|
|
|
+ taskMount.value = data['total']
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ splitList.value = []
|
|
|
+ taskMount.value = ''
|
|
|
+ }
|
|
|
+}
|
|
|
+const splitModal = ref(false)
|
|
|
+const splitModalClose = ()=>{
|
|
|
+ splitModal.value = false
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|