Merge branch 'test' of https://git.mcnetmart.com/guoxiangbin/ocr-web into fix/updatesyspic

pull/236/head
raofuzi 1 year ago
commit 8d4c7bcb47

@ -104,6 +104,6 @@ const getThemeOverrides = computed(() => {
height: 14px !important; height: 14px !important;
} }
.v-binder-follower-content { .v-binder-follower-content {
left: -60px; //left: -60px;
} }
</style> </style>

@ -113,7 +113,7 @@ async function getData() {
} }
} }
</script> </script>
1
<template> <template>
<div class="header_wrap" :style="hasColor ? '' : 'margin-top: 7.375rem;'"> <div class="header_wrap" :style="hasColor ? '' : 'margin-top: 7.375rem;'">
<div v-for="(item, index) in data" :key="index" class="header_box"> <div v-for="(item, index) in data" :key="index" class="header_box">

@ -26,6 +26,8 @@ const inputHandler = debounce((keyword) => {
// //
async function handlerSearch(value) { async function handlerSearch(value) {
//
if(value === '/') return
const res = await getSearchList({ const res = await getSearchList({
search: value, search: value,
}) })

@ -0,0 +1,14 @@
import { inject, onMounted, onUnmounted, ref } from "vue"
export const useKeydown = (key,handler) => {
const mousetrap = inject('mousetrap') as any
const event = ref()
onMounted(() => {
event.value = mousetrap.bind(key, handler)
})
onUnmounted(() => {
event.value.unbind(key, handler)
})
}

@ -76,7 +76,7 @@ defineExpose({
</tr> </tr>
<tr> <tr>
<td><div class="key" data-key="g a" /></td> <td><div class="key" data-key="g a" /></td>
<td>进入AI工单主页</td> <td>进入图检审批主页</td>
</tr> </tr>
<tr> <tr>
<td><div class="key" data-key="g e" /></td> <td><div class="key" data-key="g e" /></td>

@ -5,6 +5,18 @@ import { useUser } from "@/store/modules/user";
import { getImgUrl } from "@/utils/urlUtils"; import { getImgUrl } from "@/utils/urlUtils";
import defaultAvatar from "@/assets/icons/avatar.svg"; import defaultAvatar from "@/assets/icons/avatar.svg";
/**
* 用户权限菜单
*/
interface IUserMenu {
id: number,
name: string,
resKey: string,
resUrl: string
icon: string,
level: number,
parentId: number
}
const emit = defineEmits<{ const emit = defineEmits<{
(e: "logout"): void (e: "logout"): void
}>(); }>();
@ -16,7 +28,10 @@ const userStore = useUser();
const useInfo = userStore.getUserInfo; const useInfo = userStore.getUserInfo;
const aiDisabled = ref(false); const aiDisabled = ref(false);
const userMenus = computed<IUserMenu[]>(() => {
return userStore.getUserInfo.frontmenuTList
})
function handleSelect(row) { function handleSelect(row) {
userStore.updateTenantId(row.key); userStore.updateTenantId(row.key);
location.reload(); location.reload();
@ -25,24 +40,30 @@ function handleSelect(row) {
function logIt(e) { function logIt(e) {
return false; return false;
} }
function hasPerm(resKey) {
return userMenus.value.some(i => i.resKey === resKey)
}
// //
function goHome(e) { function goHome(e) {
if (!hasPerm('home_main')) return
router.push({ name: "home" }); router.push({ name: "home" });
} }
// //
function goTask(e) { function goTask(e) {
if (!hasPerm('task-main')) return
router.push({ name: "task-main" }); router.push({ name: "task-main" });
} }
// AI // AI
function goWorksheet(e) { function goWorksheet(e) {
if (!hasPerm('worksheet-main')) return
router.push({ name: "worksheet-main" }); router.push({ name: "worksheet-main" });
} }
// //
function goFinal(e) { function goFinal(e) {
if (!hasPerm('final-main')) return
router.push({ name: "final-main" }); router.push({ name: "final-main" });
} }

@ -170,7 +170,7 @@ export default defineComponent({
mousetrap.bind('n r', quillHandler) mousetrap.bind('n r', quillHandler)
mousetrap.bind('n t', quillHandler) mousetrap.bind('n t', quillHandler)
mousetrap.bind('n n', recycleHandler) mousetrap.bind('n n', recycleHandler)
mousetrap.bind('m m', searchHandler) mousetrap.bind('/', searchHandler)
}) })
const defaultAvatarSrc = ref(defaultAvatar) const defaultAvatarSrc = ref(defaultAvatar)

@ -24,6 +24,7 @@ import { asideMap } from '@/config/final'
import type { AsideConfig } from '/#/api' import type { AsideConfig } from '/#/api'
import emitter from '@/utils/mitt' import emitter from '@/utils/mitt'
import { getFilterList } from '@/api/home/main' import { getFilterList } from '@/api/home/main'
import { useKeydown } from '@/hooks/event/useKeydown'
const emit = defineEmits(['inputChange',]) const emit = defineEmits(['inputChange',])
const finalStore = useFinal() const finalStore = useFinal()
@ -336,6 +337,7 @@ function updateComponent(key, e) {
defineExpose({ defineExpose({
showSearch, showSearch,
}); });
useKeydown('s', () => setShowSearch(true))
</script> </script>
<template> <template>

@ -20,6 +20,7 @@ import { deleteCondition, getConditionList, sort } from '@/api/home/filter'
import type { FilterSearchParam } from '/#/api' import type { FilterSearchParam } from '/#/api'
import SvgIcon from '@/components/Icon/SvgIcon.vue' import SvgIcon from '@/components/Icon/SvgIcon.vue'
import { useKeydown } from '@/hooks/event/useKeydown'
defineOptions({ name: 'FilterModal' }) defineOptions({ name: 'FilterModal' })
@ -242,7 +243,7 @@ function handleClick() {
// show.value = false; // show.value = false;
closeModal() closeModal()
} }
useKeydown('n t', handleClick)
let sortTable: Sortable | null = null let sortTable: Sortable | null = null
const tableRef = ref<InstanceType<typeof NDataTable>>() const tableRef = ref<InstanceType<typeof NDataTable>>()
@ -391,7 +392,7 @@ function handleOk() {
<div v-else class="wrapper-form"> <div v-else class="wrapper-form">
<div class="del_btn"> <div class="del_btn">
<NButton icon-placement="left" size="medium" @click="deleteSelection"> <NButton icon-placement="left" size="medium" @click="deleteSelection()">
<template #icon> <template #icon>
<SvgIcon name="delete-history" size="16" /> <SvgIcon name="delete-history" size="16" />
</template> </template>

@ -193,6 +193,9 @@ watch(
function showModal() { function showModal() {
show.value = true show.value = true
setTimeout(() => {
formValue.name = ''
}, 300);
} }
function closeModal() { function closeModal() {

@ -496,7 +496,7 @@ async function query(
) { ) {
console.log('query', taskName) console.log('query', taskName)
const asideParmas = cloneDeep(unref(finalStore.getAsideValue)) const asideParmas = cloneDeep(unref(finalStore.getAsideValue))
// console.log(asideParmas); console.log(asideParmas);
if (asideParmas.izyear) { if (asideParmas.izyear) {
asideParmas.izuptime = cloneDeep(asideParmas.izyear) asideParmas.izuptime = cloneDeep(asideParmas.izyear)
@ -515,10 +515,12 @@ async function query(
// 使使 // 使使
// let params = filterId ? { userSearchId: filterId } : asideParmas // let params = filterId ? { userSearchId: filterId } : asideParmas
let params = asideParmas let params = asideParmas
if (params?.izshowall == false) if (params?.izshowall == true)
params.isFail = false {
params.isFail = true
params = params?.izshowall ? { isFail: true } : params delete params.izshowall;
}
// params = params?.izshowall ? { isFail: true } : params
const result = await getFinalList({ const result = await getFinalList({
sortorder: sortorder.value, sortorder: sortorder.value,
@ -925,11 +927,11 @@ async function initData(pageSize, page, filterId?: any,
// 使使 // 使使
// let params = filterId ? { userSearchId: filterId } : asideParmas // let params = filterId ? { userSearchId: filterId } : asideParmas
let params = asideParmas let params = asideParmas
if (params?.izshowall == false) if (params?.izshowall == true)
params.isFail = false {
params.isFail = true
params = params?.izshowall ? { isFail: true } : params delete params.izshowall;
}
const result = await getFinalList({ const result = await getFinalList({
sortorder: sortorder.value, sortorder: sortorder.value,
pageSize, pageSize,

@ -116,11 +116,11 @@ async function initData(
// 使使 // 使使
// let params = filterId ? { userSearchId: filterId } : asideParmas // let params = filterId ? { userSearchId: filterId } : asideParmas
let params = asideParmas let params = asideParmas
if (params?.izshowall == false) if (params?.izshowall == true)
params.isFail = false {
params.isFail = true
params = params?.izshowall ? { isFail: true } : params delete params.izshowall;
}
const result = await getFinalList({ const result = await getFinalList({
sortorder: sortorder.value, sortorder: sortorder.value,
pageSize, pageSize,
@ -172,9 +172,11 @@ async function query(
// delete asideParmas.izyear // delete asideParmas.izyear
} }
let params = asideParmas; let params = asideParmas
if(params?.izshowall==false){ if (params?.izshowall == true)
params.isFail=false {
params.isFail = true
delete params.izshowall;
} }
params = params?.izshowall ? {isFail:true} : params; params = params?.izshowall ? {isFail:true} : params;
const result = await getFinalList({ const result = await getFinalList({
@ -314,9 +316,11 @@ function doAudit(param: any, row: any) {
initData(1, 20,{},props.taskvalue) initData(1, 20,{},props.taskvalue)
num = 1 num = 1
reload() reload()
selectionIds.value = []
} }
else { else {
message.error(res.message) message.error(res.message)
selectionIds.value = []
} }
}) })
}, },
@ -467,6 +471,10 @@ function changesort(sortnamex) {
initData(1, 20,{},props.taskvalue) initData(1, 20,{},props.taskvalue)
num = 1 num = 1
} }
function notpass (){
initData(1, 20,{},props.taskvalue)
selectionIds.value = []
}
watch( watch(
() => finalStore.asideValue, () => finalStore.asideValue,
(newVal, oldVal) => { (newVal, oldVal) => {
@ -679,7 +687,7 @@ defineExpose({
: item.states == 2 : item.states == 2
? "待审核" ? "待审核"
: item.states == 5 : item.states == 5
? "通过" ? "通过"
: "" : ""
: item.fromusername : item.fromusername
}} }}
@ -714,7 +722,7 @@ defineExpose({
</div> </div>
</div> </div>
</div> </div>
<NotPassed ref="notPassModalRef" @success=" initData(1, 20,{},props.taskvalue)" /> <NotPassed ref="notPassModalRef" @success="notpass" />
<RepeatModal <RepeatModal
ref="repeatModalRef" ref="repeatModalRef"
@reject="repeatBatchReject" @reject="repeatBatchReject"

@ -25,6 +25,7 @@ import { asideMap } from '@/config/aside'
import type { AsideConfig } from '/#/api' import type { AsideConfig } from '/#/api'
import emitter from '@/utils/mitt' import emitter from '@/utils/mitt'
import { getFilterList } from '@/api/home/main' import { getFilterList } from '@/api/home/main'
import { useKeydown } from '@/hooks/event/useKeydown'
const configStore = useConfig() const configStore = useConfig()
@ -285,7 +286,7 @@ function handleOk(item: any) {
filterHandler('') filterHandler('')
} }
} }
useKeydown('s', () => setShowSearch(true))
// watch(asideValue, (newVal) => { // watch(asideValue, (newVal) => {
// console.log("asideValue", newVal); // console.log("asideValue", newVal);
// configStore.setAsideValue(newVal) // configStore.setAsideValue(newVal)

@ -18,6 +18,7 @@ import Action from '../Action.vue'
import { deleteCondition, getConditionList, sort } from '@/api/home/filter' import { deleteCondition, getConditionList, sort } from '@/api/home/filter'
import type { FilterSearchParam } from '/#/api' import type { FilterSearchParam } from '/#/api'
import SvgIcon from '@/components/Icon/SvgIcon.vue' import SvgIcon from '@/components/Icon/SvgIcon.vue'
import { useKeydown } from '@/hooks/event/useKeydown'
defineOptions({ name: 'FilterModal' }) defineOptions({ name: 'FilterModal' })
const props = defineProps({ const props = defineProps({
@ -26,6 +27,7 @@ const props = defineProps({
default: () => 0, default: () => 0,
}, },
}) })
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'showNewFilter'): void (e: 'showNewFilter'): void
(e: 'editFilter', filter: any): void (e: 'editFilter', filter: any): void
@ -54,7 +56,7 @@ interface RowData {
updateby: string updateby: string
updatetime: string updatetime: string
} }
useKeydown('n t', handleClick)
function sortData(row) { function sortData(row) {
console.log('sortData', row) console.log('sortData', row)
if (row.order == 'descend') { if (row.order == 'descend') {
@ -438,7 +440,7 @@ function handleOk() {
<div v-else class="wrapper-form"> <div v-else class="wrapper-form">
<div class="del_btn"> <div class="del_btn">
<n-button icon-placement="left" size="medium" @click="deleteSelection"> <n-button icon-placement="left" size="medium" @click="deleteSelection()">
<template #icon> <template #icon>
<SvgIcon name="delete-history" size="16" /> <SvgIcon name="delete-history" size="16" />
</template> </template>

@ -216,6 +216,9 @@ function showModal() {
const list = generateAllData(configStore.systemConfig) const list = generateAllData(configStore.systemConfig)
typeOptions.value = list typeOptions.value = list
show.value = true show.value = true
setTimeout(() => {
formValue.name = ''
}, 300);
} }
function closeModal() { function closeModal() {

@ -1005,8 +1005,9 @@ defineExpose({
.img-name { .img-name {
// width: 70%; // width: 70%;
width: 15px; font-size: 12px;
height: 15px; width: 115px;
height: 20px;
color: #fff; color: #fff;
/* 设置文本溢出时的样式为省略号 */ /* 设置文本溢出时的样式为省略号 */
text-overflow: ellipsis; text-overflow: ellipsis;

@ -5,6 +5,7 @@ import {
inject, inject,
onBeforeMount, onBeforeMount,
onMounted, onMounted,
onUnmounted,
ref, ref,
shallowRef, shallowRef,
unref, unref,
@ -142,6 +143,9 @@ onMounted(() => {
window.addEventListener('keydown', handleKeydown) window.addEventListener('keydown', handleKeydown)
init() init()
}) })
onUnmounted(()=>{
window.removeEventListener('keydown', handleKeydown)
})
async function init() { async function init() {
try { try {
const searchParam: FilterSearchParam = { const searchParam: FilterSearchParam = {

@ -1,6 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useInfiniteScroll } from "@vueuse/core"; import { useInfiniteScroll } from "@vueuse/core";
import { defineProps, onMounted, onUnmounted, reactive, ref, watch } from "vue"; import { defineProps, nextTick, onMounted, onUnmounted, reactive, ref, watch } from "vue";
import ListItem from "./ListItem.vue"; import ListItem from "./ListItem.vue";
import emitter from "@/utils/mitt"; import emitter from "@/utils/mitt";
import { useTaskStore } from "@/store/modules/task"; import { useTaskStore } from "@/store/modules/task";
@ -77,8 +77,12 @@ async function fetchList() {
watch( watch(
() => taskStore.activeId, () => taskStore.activeId,
(newVal) => { (newVal) => {
activeId.value = newVal; activeId.value = newVal
taskIndex.value = taskStore.getApprovalList.find(i => i.id === newVal)?.taskIndex nextTick(() => {
const taskPackage = taskStore.getApprovalList[taskStore.getCurrentIndex]||{}
taskIndex.value = taskPackage.taskIndex
})
}, },
); );

@ -34,6 +34,7 @@ import { isEmpty } from '@/utils'
import { formatToDateHMS } from '@/utils/dateUtil' import { formatToDateHMS } from '@/utils/dateUtil'
import { hideDownload } from '@/utils/image' import { hideDownload } from '@/utils/image'
import bgLoading from '@/assets/images/bg-loading.png' import bgLoading from '@/assets/images/bg-loading.png'
import { useKeydown } from '@/hooks/event/useKeydown'
const emit = defineEmits(['setAsideItemName']) const emit = defineEmits(['setAsideItemName'])
@ -484,6 +485,7 @@ function showActionsModal() {
onUnmounted(() => { onUnmounted(() => {
taskStore.reset() taskStore.reset()
window.removeEventListener('keydown', handleKeydown) window.removeEventListener('keydown', handleKeydown)
window.removeEventListener('scroll', checkBottom)
}) })
function immersionHandler() { function immersionHandler() {
@ -491,6 +493,7 @@ function immersionHandler() {
// taskStore.updateImmersion() // taskStore.updateImmersion()
toggleFullScreen() toggleFullScreen()
} }
useKeydown('k k', immersionHandler)
// //
function toggleFullScreen() { function toggleFullScreen() {
isFullScreen.value = !isFullScreen.value isFullScreen.value = !isFullScreen.value
@ -517,8 +520,7 @@ watch(
packageId.value = taskStore.getPackageid packageId.value = taskStore.getPackageid
taskId.value = taskStore.getActiveId taskId.value = taskStore.getActiveId
// //
const task = taskStore.getApprovalList.find(i => i.id === taskStore.activeId) taskIndex.value = taskStore.getApprovalList[taskStore.currentIndex].taskIndex
taskIndex.value = task.taskIndex
getDetail() getDetail()
} }
}, },
@ -728,13 +730,20 @@ function sortHandler(orderby: 'similarityScore' | 'createdate') {
style="cursor: pointer" style="cursor: pointer"
@click="immersionHandler" @click="immersionHandler"
/> />
<SvgIcon <n-tooltip
v-else v-else
size="20" placement="bottom"
name="immersion-model" >
style="cursor: pointer" <template #trigger>
@click="immersionHandler" <SvgIcon
/> size="20"
name="immersion-model"
style="cursor: pointer"
@click="immersionHandler"
/>
</template>
<span>沉浸模式</span>
</n-tooltip>
</div> </div>
</div> </div>
<div v-show="showActions" class="batch"> <div v-show="showActions" class="batch">

@ -35,6 +35,9 @@ function setAsideItemName(text) {
:deep(.ip_box){ :deep(.ip_box){
z-index: 50; z-index: 50;
} }
:deep(.header_wrap){
margin-top: 3px !important;
}
.main { .main {
display: flex; display: flex;
flex-direction: row; flex-direction: row;

@ -1,5 +1,5 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed, nextTick, onMounted, reactive, ref, watch } from 'vue' import { computed, nextTick, onMounted,onUnmounted, reactive, ref, watch } from 'vue'
import Masonry from 'masonry-layout' import Masonry from 'masonry-layout'
import { useInfiniteScroll } from '@vueuse/core' import { useInfiniteScroll } from '@vueuse/core'
import { debounce } from 'lodash-es' import { debounce } from 'lodash-es'
@ -257,7 +257,9 @@ onMounted(() => {
show.value && addListeners() show.value && addListeners()
window.addEventListener('keydown', handleKeydown) window.addEventListener('keydown', handleKeydown)
}) })
onUnmounted(()=>{
window.removeEventListener('keydown', handleKeydown)
})
// //
function handleKeydown(event) { function handleKeydown(event) {
// //
@ -346,7 +348,8 @@ async function refreshHandler() {
reset() reset()
if (!taskId.value) if (!taskId.value)
return return
taskDetailInfo.value = await getTaskDetailInfo(taskId.value, '') const taskPackage = taskStore.getApprovalList[taskStore.getCurrentIndex] || {}
taskDetailInfo.value = await getTaskDetailInfo(taskId.value, taskPackage.packageid,taskPackage?.taskIndex || '')
nextTick(() => { nextTick(() => {
setTimeout(() => { setTimeout(() => {

@ -193,6 +193,9 @@ watch(
function showModal() { function showModal() {
show.value = true show.value = true
setTimeout(() => {
formValue.name = ''
}, 300);
} }
function closeModal() { function closeModal() {

@ -27,6 +27,7 @@ import { hideDownload } from '@/utils/image'
import emitter from '@/utils/mitt' import emitter from '@/utils/mitt'
import type { ApprovalParam, SimilarityPictureSortParam } from '/#/api' import type { ApprovalParam, SimilarityPictureSortParam } from '/#/api'
import bgLoading from '@/assets/images/bg-loading.png' import bgLoading from '@/assets/images/bg-loading.png'
import { useKeydown } from '@/hooks/event/useKeydown'
const batch = ref(false) // const batch = ref(false) //
const selectItems = ref<any[]>([]) const selectItems = ref<any[]>([])
@ -338,7 +339,7 @@ function onEsc(event: KeyboardEvent) {
else keyXLastTime = currentKTime else keyXLastTime = currentKTime
} }
} }
useKeydown('k k', immersionHandler)
onUnmounted(() => { onUnmounted(() => {
workStore.reset() workStore.reset()
document.removeEventListener('keydown', onEsc) document.removeEventListener('keydown', onEsc)
@ -590,13 +591,20 @@ defineExpose({
style="cursor: pointer" style="cursor: pointer"
@click="immersionHandler" @click="immersionHandler"
/> />
<SvgIcon <n-tooltip
v-else v-else
size="20" placement="bottom"
name="immersion-model" >
style="cursor: pointer" <template #trigger>
@click="immersionHandler" <SvgIcon
/> size="20"
name="immersion-model"
style="cursor: pointer"
@click="immersionHandler"
/>
</template>
<span>沉浸模式</span>
</n-tooltip>
</div> </div>
</div> </div>

@ -32,6 +32,9 @@ const ApprovalOver = (packageId) => {
</template> </template>
<style lang="less" scoped> <style lang="less" scoped>
:deep(.header_wrap){
margin-top: 3px !important;
}
.main { .main {
display: flex; display: flex;
flex-direction: row; flex-direction: row;

Loading…
Cancel
Save