diff --git a/components.d.ts b/components.d.ts
index 222bbbd..f08bf82 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -22,9 +22,12 @@ declare module 'vue' {
NDivider: typeof import('naive-ui')['NDivider']
NDropdown: typeof import('naive-ui')['NDropdown']
NEllipsis: typeof import('naive-ui')['NEllipsis']
+ NEllipsis: typeof import('naive-ui')['NEllipsis']
+ NEmpty: typeof import('naive-ui')['NEmpty']
NForm: typeof import('naive-ui')['NForm']
NFormItem: typeof import('naive-ui')['NFormItem']
NGi: typeof import('naive-ui')['NGi']
+ NGi: typeof import('naive-ui')['NGi']
NGrid: typeof import('naive-ui')['NGrid']
NGridItem: typeof import('naive-ui')['NGridItem']
NImage: typeof import('naive-ui')['NImage']
@@ -34,6 +37,7 @@ declare module 'vue' {
NNotificationProvider: typeof import('naive-ui')['NNotificationProvider']
NotPassed: typeof import('./src/components/NotPassed.vue')['default']
NPopconfirm: typeof import('naive-ui')['NPopconfirm']
+ NPopconfirm: typeof import('naive-ui')['NPopconfirm']
NPopover: typeof import('naive-ui')['NPopover']
NPopselect: typeof import('naive-ui')['NPopselect']
NProgress: typeof import('naive-ui')['NProgress']
@@ -43,7 +47,11 @@ declare module 'vue' {
NSpace: typeof import('naive-ui')['NSpace']
NSpin: typeof import('naive-ui')['NSpin']
NSwitch: typeof import('naive-ui')['NSwitch']
+ NTabPane: typeof import('naive-ui')['NTabPane']
+ NTabs: typeof import('naive-ui')['NTabs']
NTag: typeof import('naive-ui')['NTag']
+ NTimeline: typeof import('naive-ui')['NTimeline']
+ NTimelineItem: typeof import('naive-ui')['NTimelineItem']
NTooltip: typeof import('naive-ui')['NTooltip']
NUpload: typeof import('naive-ui')['NUpload']
NUploadDragger: typeof import('naive-ui')['NUploadDragger']
diff --git a/src/api/final/index.ts b/src/api/final/index.ts
index e7249f8..fab2e62 100644
--- a/src/api/final/index.ts
+++ b/src/api/final/index.ts
@@ -30,11 +30,11 @@ export async function getFinalList(params: FinalParam) {
params: notEmptyParams,
})
- const { data: { list, totalPage,totalCount } } = res
+ const { data: { list, totalPage, totalCount } } = res
return {
pageCount: totalPage,
data: list,
- totalCount
+ totalCount,
}
}
@@ -62,3 +62,22 @@ export async function repetitionTask() {
method: 'get',
})
}
+
+/**
+ * 获取审核列表
+ * @returns
+ */
+export async function getRepeatList(params: FinalParam) {
+ const res = await http.request({
+ url: `/flow/task/repetitionTaskList`,
+ method: 'get',
+ params,
+ })
+
+ const { data: { records, totalPage, totalCount } } = res
+ return {
+ pageCount: totalPage,
+ data: records,
+ totalCount,
+ }
+}
diff --git a/src/assets/icons/summary.svg b/src/assets/icons/summary.svg
new file mode 100644
index 0000000..075c554
--- /dev/null
+++ b/src/assets/icons/summary.svg
@@ -0,0 +1,26 @@
+
+
\ No newline at end of file
diff --git a/src/components/Approval/NotPassed.vue b/src/components/Approval/NotPassed.vue
index b2e53a5..7d3ea14 100644
--- a/src/components/Approval/NotPassed.vue
+++ b/src/components/Approval/NotPassed.vue
@@ -101,7 +101,7 @@ async function handleSumbit(e: MouseEvent) {
audit(param).then((res) => {
const { code } = res
if (code === 'OK') {
- message.success('审核成功')
+ message.success(res.message)
emit('success', param)
closeModal()
}
@@ -199,6 +199,8 @@ async function selectChange(id) {
justify-content: flex-end;
padding-right: 24px;
padding-bottom: 10px;
+ border-top: 0.5px solid #d9d9d9;
+ padding-top: 15px;
}
&-info {
@@ -236,6 +238,10 @@ async function selectChange(id) {
margin-bottom: 0px;
}
+::v-deep(.n-form-item-label__text) {
+ color: #666666;
+}
+
::v-deep(.n-input__placeholder) {
color: #333333!important;
}
diff --git a/src/config/aside.ts b/src/config/aside.ts
index 5ba3b4d..7b6b5b7 100644
--- a/src/config/aside.ts
+++ b/src/config/aside.ts
@@ -8,7 +8,7 @@ export interface AsideEntity {
inFilterList?: boolean// 是否出现在过滤配置选项中(这个名字不好,为false代表只用于客户端的显示配置,不作为参数传递给服务器端)
render?: boolean// 是否作为单独组件渲染
key: string
- component: Component
+ component?: Component
}
// 客户端配置
diff --git a/src/config/final.ts b/src/config/final.ts
index 17fe255..fcc931d 100644
--- a/src/config/final.ts
+++ b/src/config/final.ts
@@ -1,5 +1,5 @@
import type { AsideEntity } from './aside'
-import { IzProjectVue, IzStatus, IztaskrromVue, PictureDownloadVue, PlanVue, ReportUserVue, TimeVue } from '@/views/home/aside/comp/items'
+import { IzProjectVue, IzStatus, IztaskrromVue, PictureDownloadVue, PlanVue, ReportUserVue, TimeVue, IzCustomname, IzCustomtype, IzVisitcity, IzCustomlevel, IzProjecttype, IzProductVue, IzvisitproVue, IzfirmVue } from '@/views/home/aside/comp/items'
export interface RowData {
id: string
@@ -129,3 +129,99 @@ export const asideMap: Recordable = {
inFilterList: false,
},
}
+
+
+// 审批添加筛选配置 (左侧)
+export const asideTaskMap: Recordable = {
+ izstatus: {
+ label: '审批状态',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izstatus',
+ component: IzStatus, // todo
+ },
+ izuptime: {
+ label: '提报时间',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izuptime',
+ component: TimeVue,
+ },
+ izupuser: {
+ label: '提报人',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izupuser',
+ component: ReportUserVue,
+ },
+ iztaskrrom: {
+ label: '任务来源',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'iztaskrrom',
+ component: IztaskrromVue,
+ },
+ izcustomname: {
+ label: '拜访客户',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izcustomname',
+ component: IzCustomname,
+ },
+ izcustomtype: {
+ label: '客户类型',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izcustomtype',
+ component: IzCustomtype,
+ },
+ izproject: {
+ label: '所属项目',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izproject',
+ component: IzProjectVue,
+ },
+ izvisitpro: {
+ label: '拜访省份/直辖市',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izvisitpro',
+ component: IzVisitcity,
+ },
+ izcustomlevel: {
+ label: '客户级别',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izcustomlevel',
+ component: IzCustomlevel
+ },
+ izprojecttype: {
+ label: '项目类别',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izprojecttype',
+ component: IzProjecttype,
+ },
+ izproductname: {
+ label: '产品名称',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izproductname',
+ component: IzProductVue,
+ },
+ izvisitcity: {
+ label: '拜访城市',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izvisitcity',
+ component: IzvisitproVue,
+ },
+ izfirm: {
+ label: '厂商',
+ defaultValue: null,
+ isDefaultFilter: true,
+ key: 'izfirm',
+ component: IzfirmVue,
+ }
+}
\ No newline at end of file
diff --git a/src/views/final/comp/RepeatModal.vue b/src/views/final/comp/RepeatModal.vue
index 8ae0db5..d0ed920 100644
--- a/src/views/final/comp/RepeatModal.vue
+++ b/src/views/final/comp/RepeatModal.vue
@@ -22,6 +22,7 @@ const { detail, total } = toRefs(state)
const show = ref(false)
function showModal(id) {
+ state.total = 0
getDetail(id)
}
@@ -45,7 +46,13 @@ function closeModal() {
}
async function reject() {
- emit('reject', { a: 'todo' })
+ const list = []
+ state.detail.forEach((items) => {
+ items.repeatedTaskList.forEach((item) => {
+ list.push(item)
+ })
+ })
+ emit('reject', list)
closeModal()
}
@@ -157,7 +164,7 @@ defineExpose({
border-radius: 8px;
padding: 16px;
padding-top: 0;
- margin: 45px 12px 35px 38px;
+ margin: 25px 12px 35px 38px;
.imgwrapper {
width: 160px;
diff --git a/src/views/final/comp/RepeatTaskTableModal.vue b/src/views/final/comp/RepeatTaskTableModal.vue
index d0f6d99..0d1c1ae 100644
--- a/src/views/final/comp/RepeatTaskTableModal.vue
+++ b/src/views/final/comp/RepeatTaskTableModal.vue
@@ -1,101 +1,148 @@
+
+
任务信息
+
+

+
+

+