diff --git a/src/api/final/index.ts b/src/api/final/index.ts
index fab2e62..857eeb2 100644
--- a/src/api/final/index.ts
+++ b/src/api/final/index.ts
@@ -64,7 +64,7 @@ export async function repetitionTask() {
}
/**
- * 获取审核列表
+ * 获取小结重复列表
* @returns
*/
export async function getRepeatList(params: FinalParam) {
@@ -76,8 +76,8 @@ export async function getRepeatList(params: FinalParam) {
const { data: { records, totalPage, totalCount } } = res
return {
- pageCount: totalPage,
+ pageCount: 3,
data: records,
- totalCount,
+ totalCount: 20,
}
}
diff --git a/src/assets/icons/import.svg b/src/assets/icons/import.svg
new file mode 100644
index 0000000..08b665d
--- /dev/null
+++ b/src/assets/icons/import.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/look.svg b/src/assets/icons/look.svg
new file mode 100644
index 0000000..fc64bd6
--- /dev/null
+++ b/src/assets/icons/look.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/views/final/comp/FilterModal.vue b/src/views/final/comp/FilterModal.vue
index 4c13bf5..d8bc149 100644
--- a/src/views/final/comp/FilterModal.vue
+++ b/src/views/final/comp/FilterModal.vue
@@ -147,7 +147,6 @@ function rowProps(row: RowData) {
}
function handleCheck(rowKeys: DataTableRowKey[]) {
- console.log(rowKeys, selectionIds.value, "handleCheck");
selectionIds.value = rowKeys;
}
@@ -191,6 +190,7 @@ function deleteSelection(id = "") {
}
deleteCondition({ ids: selectionIds.value.join(",") }).then(() => {
+ selectionIds.value = [];
query(pagination.page, pagination.pageSize);
});
}
diff --git a/src/views/final/comp/ListAction.vue b/src/views/final/comp/ListAction.vue
index e469bdf..f1ef5e2 100644
--- a/src/views/final/comp/ListAction.vue
+++ b/src/views/final/comp/ListAction.vue
@@ -31,7 +31,7 @@ const actions = computed(() => {
{{ action.label }}
diff --git a/src/views/final/comp/RepeatTaskTableModal.vue b/src/views/final/comp/RepeatTaskTableModal.vue
index 0d1c1ae..587fb28 100644
--- a/src/views/final/comp/RepeatTaskTableModal.vue
+++ b/src/views/final/comp/RepeatTaskTableModal.vue
@@ -14,6 +14,7 @@ import {
} from 'vue'
import { NDataTable, useDialog, useMessage } from 'naive-ui'
import type { DataTableColumns, DataTableRowKey } from 'naive-ui'
+import { useRouter } from 'vue-router'
import {
ListAction,
StatusItem,
@@ -21,7 +22,7 @@ import {
import { RejectModal } from './index'
import { useDictionary } from '@/store/modules/dictonary'
import type { RowData } from '@/config/final'
-import { getFinalList, getRepeatList } from '@/api/final'
+import { getRepeatList } from '@/api/final'
import { formatToDateHMS } from '@/utils/dateUtil'
import { audit } from '@/api/task/task'
import NotPassed from '@/components/Approval/NotPassed.vue'
@@ -35,6 +36,7 @@ const show = ref(false)
const izstatusList = ref([])
const dialog = useDialog()
const checkedRowKeys = ref([])
+const router = useRouter()
onBeforeMount(() => {
dicStore.fetchizstatusListt()
@@ -59,7 +61,7 @@ const columns: DataTableColumns
= [
},
},
{
- title: '任务Id',
+ title: '任务ID',
key: 'id',
fixed: 'left',
width: 180,
@@ -234,6 +236,7 @@ function actionHandler(action: any, row: any) {
const { key } = action
switch (key) {
case 'view':
+ goDetail(row)
break
case 'reset':
// resetHandler()
@@ -355,6 +358,10 @@ function reload() {
checkedRowKeys.value = []
}
+function goDetail(row) {
+ router.push({ name: 'final-detail', query: { id: row.id, packageid: row.packageid } })
+}
+
defineExpose({
showModal,
})
@@ -373,45 +380,45 @@ defineExpose({
aria-modal="true"
>
-
重复任务
-
-
-
任务信息
+
+
重复任务
+
+
+

+
+

+
+
+
-
-
-

-
-

-
-
-
-
-
-
+
@@ -435,9 +442,15 @@ defineExpose({
display: flex;
flex-direction: column;
+ .card-top{
+ padding: 24px;
+ }
+
&-title {
- font-weight: bold;
- font-size: 16px;
+ font-size: 18px;
+ font-family: PingFang SC, PingFang SC-Medium;
+ font-weight: 600;
+ color: #333333;
}
&-bar {
@@ -455,19 +468,31 @@ defineExpose({
&-footer {
display: flex;
justify-content: flex-end;
+ border-top: 0.5px solid #d9d9d9;
+ padding: 15px 24px;
}
&-info {
font-weight: bold;
position: relative;
+ height: 29px;
+ background: #f8f8f8;
+ font-size: 16px;
+ font-family: PingFang SC, PingFang SC-Medium;
+ font-weight: 600;
+ color: #333333;
+ display: flex;
+ align-items: center;
+ padding-left: 14px;
&:before {
- background-color: #1980ff;
+ background-color: #507AFD;
content: "";
- width: 5px;
- border-radius: 2px;
- top: 0;
- bottom: 0;
+ height: 18px;
+ width: 4px;
+ border-radius: 3px;
+ top: 5px;
+ left: 0;
position: absolute;
}
}
@@ -488,4 +513,21 @@ defineExpose({
--n-padding-top: 0px;
--n-padding-bottom: 12px;
}
+
+::v-deep(.n-card__content) {
+ padding: 0!important;
+}
+
+::v-deep(.n-data-table .n-data-table-td) {
+ padding: 10px 12px!important;
+}
+
+.btn1{
+ background: #507AFD;
+}
+
+.btn{
+ border: 1px solid #cad2dd;
+ background-color: #fff;
+}
diff --git a/src/views/final/content/Content.vue b/src/views/final/content/Content.vue
index 71285a0..a28a943 100644
--- a/src/views/final/content/Content.vue
+++ b/src/views/final/content/Content.vue
@@ -17,7 +17,6 @@ import {
import { rowPropKeys } from 'naive-ui/es/legacy-grid/src/Row'
import { useRoute, useRouter } from 'vue-router'
import {
- Action,
CustomTabelModal,
ImportExcelModal,
ListAction,
@@ -784,11 +783,13 @@ async function refreshHandler(searchId?: any) {
trigger="click"
>
-
+
+
+
@@ -864,6 +868,7 @@ async function refreshHandler(searchId?: any) {
.batch {
display: flex;
align-items: center;
+ margin-right: 10px;
.btn-approval{
width: 68px;
@@ -875,6 +880,17 @@ async function refreshHandler(searchId?: any) {
margin-left: 16px;
}
}
+
+.icon-wrap {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 30px;
+ height: 30px;
+ background: rgba(80, 122, 253, 0.1);
+ border-radius: 8px;
+ cursor: pointer;
+}
.wrapper {
display: flex;
flex: 1;
@@ -901,7 +917,7 @@ async function refreshHandler(searchId?: any) {
.xjcc {
font-weight: bold;
- color: #6a80fc;
+ color: #507AFD;
margin-right: 20px;
}
diff --git a/src/views/home/aside/comp/modals/FilterModal.vue b/src/views/home/aside/comp/modals/FilterModal.vue
index d12ad9a..4690ee0 100644
--- a/src/views/home/aside/comp/modals/FilterModal.vue
+++ b/src/views/home/aside/comp/modals/FilterModal.vue
@@ -219,6 +219,7 @@ function deleteSelection(id = "") {
}
deleteCondition({ ids: selectionIds.value.join(",") }).then(() => {
+ selectionIds.value = [];
query(pagination.page, pagination.pageSize);
});
}
@@ -308,6 +309,10 @@ const inputHandler = debounce((word) => {
keyword.value = word;
query(1, 5);
}, 300);
+
+const showSearch = computed(() => {
+ return selectionIds.value.length > 0;
+});
@@ -336,27 +341,49 @@ const inputHandler = debounce((word) => {
>
-
diff --git a/src/views/login/components/Login.vue b/src/views/login/components/Login.vue
index 4b50660..8d8cd14 100644
--- a/src/views/login/components/Login.vue
+++ b/src/views/login/components/Login.vue
@@ -178,11 +178,15 @@ function handleSubmit(e) {
const { data: userInfo } = await userStore.getInformation();
message.destroyAll();
const toPath = decodeURIComponent((route.query?.redirect || "/") as string);
- message.success("登录成功,即将进入系统");
if (route.name === LOGIN_NAME)
- router.replace(
- userInfo.frontmenuTList ? userInfo.frontmenuTList[0]["resUrl"] : "/"
- );
+ if (userInfo.frontmenuTList && userInfo.frontmenuTList.length) {
+ message.success("登录成功,即将进入系统");
+ router.replace(
+ userInfo.frontmenuTList ? userInfo.frontmenuTList[0]["resUrl"] : "/"
+ );
+ } else {
+ message.error("用户无菜单权限,请联系管理员");
+ }
else router.replace(toPath);
} else {
loginSuccess.value = false;
@@ -249,12 +253,18 @@ function handleSmsSubmit(e) {
const { data: userInfo } = await userStore.getInformation();
message.destroyAll();
const toPath = decodeURIComponent((route.query?.redirect || "/") as string);
- message.success("登录成功,即将进入系统");
- if (route.name === LOGIN_NAME)
- router.replace(
- userInfo.frontmenuTList ? userInfo.frontmenuTList[0]["resUrl"] : "/"
- );
- else router.replace(toPath);
+ if (route.name === LOGIN_NAME) {
+ if (userInfo.frontmenuTList && userInfo.frontmenuTList.length) {
+ message.success("登录成功,即将进入系统");
+ router.replace(
+ userInfo.frontmenuTList ? userInfo.frontmenuTList[0]["resUrl"] : "/"
+ );
+ } else {
+ message.error("用户无菜单权限,请联系管理员");
+ }
+ } else {
+ router.replace(toPath);
+ }
} else {
message.destroyAll();
message.info(msg || "登录失败");
@@ -300,10 +310,10 @@ async function sendCode(value) {
phone: formSms.phone,
agentcode: formSms.agentcode,
});
- if(res.code == 'OK'){
+ if (res.code == "OK") {
startCount();
- }else{
- message.error(res.message)
+ } else {
+ message.error(res.message);
}
}
diff --git a/src/views/task/content/Content.vue b/src/views/task/content/Content.vue
index b7a2d19..651b84c 100644
--- a/src/views/task/content/Content.vue
+++ b/src/views/task/content/Content.vue
@@ -645,7 +645,7 @@ function switchBatch() {
@reject="rejectHandler"
@approval="approvalHandler"
/>
-
+
diff --git a/src/views/worksheet/aside/WorkSheetList.vue b/src/views/worksheet/aside/WorkSheetList.vue
index f797a21..330b045 100644
--- a/src/views/worksheet/aside/WorkSheetList.vue
+++ b/src/views/worksheet/aside/WorkSheetList.vue
@@ -33,7 +33,7 @@ const pagination = reactive({
pageSize: 10,
})
-const approvalModalRef = ref(null)
+const approvalModalRef: any = ref(null)
const notPassedRef: any = ref(null)
const overTask = ref(null);
@@ -94,8 +94,9 @@ watch(
(newVal) => {
if (isEmpty(newVal))
return
-
- activeId.value = newVal
+ activeId.value = newVal;
+ approvalModalRef.value.showModal(activeId.value)
+
},
)
diff --git a/src/views/worksheet/content/Content.vue b/src/views/worksheet/content/Content.vue
index fd77b4f..904a9c1 100644
--- a/src/views/worksheet/content/Content.vue
+++ b/src/views/worksheet/content/Content.vue
@@ -136,7 +136,7 @@ async function featchList() {
try {
taskpagination.pageNo += 1;
const { data, total, pageCount } = await getTaskDetailPictureList(
- { ...taskpagination, ...sortBy, checkDuplicateId: workStore.activeId, pictureId: taskDetailInfo.value.pictureid }
+ { ...taskpagination, ...sortBy, checkDuplicateId: workStore.activeId, pictureId: taskDetailInfo.value.id }
);
totalCount.value = total;
@@ -223,10 +223,8 @@ async function queryDetail(checkDuplicateId: any) {
refreshHandler();
}
async function handleSelect(item: any) {
- taskDetailInfo.value = await getTaskDetailInfo(workStore.activeId);
-
+ taskDetailInfo.value = await getTaskDetailInfo(item.id)
const packageid = workStore.getActiveId;
-
if (isEmpty(packageid)) {
listData.value.length = 0;
totalCount.value = 0;
@@ -239,7 +237,7 @@ async function handleSelect(item: any) {
async function sortHandler(orderby: "similarityScore" | "createdate") {
selectedSortName.value = orderby;
sortBy.orderName = orderby;
- sortBy.orderType = sortBy.orderType === "desc" ? "desc" : "asc";
+ sortBy.orderType = sortBy.orderType === "asc" ? "desc" : "asc";
refreshHandler();
}
@@ -296,6 +294,10 @@ function rejectHandler() {
const modal = unref(notPassModalRef)! as any
modal.showModal(selectItems.value)
}
+function singleRejectHandler(item) {
+ const modal = unref(notPassModalRef)! as any
+ modal.showModal([item])
+}
function reject(idOrDesc: string, backId: string, isOther: boolean) {
const formIds: string[] = processItems.map(item => item.id)
const taskIds: string[] = processItems.map(item => item.taskId)
@@ -488,15 +490,21 @@ function reloadList() {
任务ID:{{ taskDetailInfo.taskname }}
@@ -909,17 +917,21 @@ function reloadList() {
line-height: 16px;
}
+ .tag-submited {
+ color: #507AFD;
+ border: 1px solid #507AFD;
+ }
.tag-submiting {
- color: #feaf2d;
- border: 1px solid #feaf2d;
+ color: #FFB800;
+ border: 1px solid #FFB800;
}
- .tag-approve {
- color: #398ade;
- border: 1px solid #398ade;
+ .tag-passed {
+ color: #02C984;
+ border: 1px solid #02C984;
}
- .tag-passed {
+ .tag-not-passed {
color: #ff7575;
border: 1px solid #ff7575;
}
diff --git a/src/views/worksheet/modal/ApprovalModal.vue b/src/views/worksheet/modal/ApprovalModal.vue
index eac9608..a25dd02 100644
--- a/src/views/worksheet/modal/ApprovalModal.vue
+++ b/src/views/worksheet/modal/ApprovalModal.vue
@@ -1,10 +1,11 @@
-
+
@@ -100,31 +126,37 @@ defineExpose({
智能AI审批工具
- {{ detail.tenantusername }}
+ {{ detail.tenantUserName }}-{{ detail.packageName }}
-
-
-
-
-
任务ID:{{ detail.taskid }}
-
-
基线任务
-
相似图片({{ detail.similarcount }})
-
-
- {{ format(detail.createtime, "yyyy-MM-dd HH:mm:ss") }}
+
+
+
+
#AI任务包{{ detail.packageId }}
+
+
+ error 重复图片({{
+ detail.similarComplete
+ }})
+
+ 任务包生成时间:
+ {{ format(detail?.createtime || 0, "yyyy-MM-dd HH:mm:ss") }}
+
-
+
- 智能识别:{{ detail.similarComplete }}张图片来源于网络,建议将图片标记为假,或
- 快速审批不通过!
+ 智能提示:{{ detail?.similarComplete }} 张图片相似度为100%重复图片,{{
+ detail?.passCount
+ }}张审批状态为通过,剩余{{
+ detail?.pendingApprovaCount
+ }}张图片建议审批为不通过!
-
@@ -149,8 +181,10 @@ defineExpose({
background-image: url(../../../assets/images/approval_modal_bg.png);
background-repeat: no-repeat;
background-size: 100%;
- width: 700px;
- height: 500px;
+ // width: 700px;
+ // height: 500px;
+ width: 510px;
+ height: 361px;
box-shadow: none !important;
}
.wrapper {
@@ -162,41 +196,40 @@ defineExpose({
left: 90%;
}
.wrapper-hearder {
- margin-top: 40px;
+ margin-top: 20px;
.wrapper-title {
text-align: center;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Semibold;
- font-weight: Semibold;
+ font-weight: 600;
text-align: center;
color: #333333;
- line-height: 32px;
+ line-height: 22px;
}
.wrapper-mark {
- text-align: center;
font-size: 13px;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Regular;
- font-weight: Regular;
+ font-weight: 400;
text-align: center;
color: #666666;
line-height: 18px;
+ margin-top: 8px;
}
}
.wrapper-content {
flex: 1;
border-radius: 8px;
- margin: 35px 60px 35px 120px;
+ margin: 24px 50px 16px 48px;
.item {
display: flex;
flex-flow: row nowrap;
align-items: center;
- margin: 20px 0;
}
.imgwrapper {
- width: 200px;
- height: 120px;
- margin-right: 20px;
+ width: 138px;
+ height: 80px;
+ margin-right: 23px;
border-radius: 8px;
background-image: url("../../../assets/images/test.png");
background-repeat: no-repeat;
@@ -215,6 +248,7 @@ defineExpose({
display: flex;
flex-flow: row nowrap;
margin: 8px 0;
+
.tag_item {
background: rgba(80, 122, 253, 0.1);
border-radius: 2px;
@@ -238,6 +272,7 @@ defineExpose({
text-align: left;
color: #333333;
line-height: 20px;
+ white-space: nowrap;
}
}
.mark_text {
@@ -247,13 +282,28 @@ defineExpose({
text-align: left;
color: #666666;
line-height: 16px;
+ margin-top: 16px;
}
.footer {
+ cursor: pointer;
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: center;
- margin: 20px 30px 0 0;
+ margin: 16px auto 0;
+ width: 132px;
+ height: 40px;
+ background: linear-gradient(135deg, #3258e8, #786efc);
+ border-image: linear-gradient(123deg, #d7dffe 2%, #d7d5ff 88%) 1 1;
+ border-radius: 23px;
+ box-shadow: 0px 2px 6px 0px rgba(116, 153, 253, 0.3);
+ font-size: 20px;
+ font-family: YouSheBiaoTiHei, YouSheBiaoTiHei-Regular;
+ font-weight: Regular;
+ text-align: left;
+ color: #ffffff;
+ line-height: 26px;
+ font-style: italic;
}
}
}
diff --git a/src/views/worksheet/modal/ApprovalModal2.vue b/src/views/worksheet/modal/ApprovalModal2.vue
index d706c26..0bbe525 100644
--- a/src/views/worksheet/modal/ApprovalModal2.vue
+++ b/src/views/worksheet/modal/ApprovalModal2.vue
@@ -39,7 +39,7 @@ defineExpose({
-
+
diff --git a/src/views/worksheet/modal/ApprovalModal_bak.vue b/src/views/worksheet/modal/ApprovalModal_bak.vue
new file mode 100644
index 0000000..7346134
--- /dev/null
+++ b/src/views/worksheet/modal/ApprovalModal_bak.vue
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
智能AI审批工具
+
+ {{ detail.tenantusername }}
+
+
+
+
+
+
+
+
任务ID:{{ detail.taskid }}
+
+
基线任务
+
相似图片({{ detail.similarcount }})
+
+
+ {{ format(detail?.createtime || 0, "yyyy-MM-dd HH:mm:ss") }}
+
+
+
+
+
+ 智能识别:{{ detail.similarComplete }}张图片来源于网络,建议将图片标记为假,或
+ 快速审批不通过!
+
+
+
+
+
+
+
+