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;
}
.v-binder-follower-content {
left: -60px;
//left: -60px;
}
</style>

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

@ -26,6 +26,8 @@ const inputHandler = debounce((keyword) => {
//
async function handlerSearch(value) {
//
if(value === '/') return
const res = await getSearchList({
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>
<td><div class="key" data-key="g a" /></td>
<td>进入AI工单主页</td>
<td>进入图检审批主页</td>
</tr>
<tr>
<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 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<{
(e: "logout"): void
}>();
@ -16,7 +28,10 @@ const userStore = useUser();
const useInfo = userStore.getUserInfo;
const aiDisabled = ref(false);
const userMenus = computed<IUserMenu[]>(() => {
return userStore.getUserInfo.frontmenuTList
})
function handleSelect(row) {
userStore.updateTenantId(row.key);
location.reload();
@ -25,24 +40,30 @@ function handleSelect(row) {
function logIt(e) {
return false;
}
function hasPerm(resKey) {
return userMenus.value.some(i => i.resKey === resKey)
}
//
function goHome(e) {
if (!hasPerm('home_main')) return
router.push({ name: "home" });
}
//
function goTask(e) {
if (!hasPerm('task-main')) return
router.push({ name: "task-main" });
}
// AI
function goWorksheet(e) {
if (!hasPerm('worksheet-main')) return
router.push({ name: "worksheet-main" });
}
//
function goFinal(e) {
if (!hasPerm('final-main')) return
router.push({ name: "final-main" });
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save