diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7cba597 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "i18n-ally.localesPaths": [ + "src/locales", + "src/locales/lang", + "public/resource/tinymce/langs" + ] +} \ No newline at end of file diff --git a/src/api/task/index.ts b/src/api/task/index.ts new file mode 100644 index 0000000..ce5a34a --- /dev/null +++ b/src/api/task/index.ts @@ -0,0 +1,52 @@ +import { defHttp } from '@/utils/http/axios'; +import { TaskResultModel, AccountListItem, AccountParams, Task } from './model/index'; + +enum Api { + // 管理员任务 + TaskList = "/api/AdminTaskManage/GteTaskListForAdmin", + AddTask = "/api/AdminTaskManage/AddTask", + EditTask = "/api/AdminTaskManage/EditTask", + DeleteTask = "/api/AdminTaskManage/DeleteTask", + DetailTask = "/api/AdminTaskManage/GteTaskById", + GetAiShp = "/api/AdminTaskManage/GteAiShp", + GetTif = "/api/AdminTaskManage/GteTif", + // 普通用户任务 + PersonTaskList = "/api/PersonTask/Load", + PersonTaskDetail = "/api/PersonTask/GetTaskDetail", + SubmitPersonTask = "/api/PersonTask/SubmitTask", + ReturnPersonTask = "/api/PersonTask/ReturnTask" +} + +// 管理员任务 +export const getTaskList = (params) => + defHttp.get({ url: Api.TaskList, params }); + +export const addTask = (params:Task) => + defHttp.post({ url: Api.AddTask, params }); + +export const updateTask = (params:Task) => + defHttp.post({ url: Api.EditTask, params }); + +export const deleteTask = (params) => + defHttp.post({ url: Api.DeleteTask, params }); + +export const getTaskDetail = (params) => + defHttp.get({ url: Api.DetailTask, params }); + +export const getAiShape = () => + defHttp.get({ url: Api.GetAiShp }); + +export const getTif = () => + defHttp.get({ url: Api.GetTif }); + +// 普通用户任务 +export const getPersonTaskList = (params) => + defHttp.get({ url: Api.PersonTaskList, params }); + +export const getPersonTaskDetail = (params) => + defHttp.get({ url: Api.PersonTaskDetail, params }); + +export const CommitTask = (params) => + defHttp.post({ url: Api.SubmitPersonTask, params }); + + diff --git a/src/api/task/model/index.ts b/src/api/task/model/index.ts new file mode 100644 index 0000000..c968f62 --- /dev/null +++ b/src/api/task/model/index.ts @@ -0,0 +1,45 @@ +import { BasicFetchResult } from '@/api/model/baseModel'; +import { type } from 'os'; + +export interface AccountListItem { + databaseLinkId: string; + dbName: string; + dbAlias: string; + dbType: number; + serverAddress: string; + dbConnection: string; + description: string; +} + +// task +export interface Task { + id:string; + taskName:string; + shpId:string; + remark:string; + previousPhase:Array; + laterPhase:Array; +} + +// shp +export interface Shape { + id:string; + shpName:string; +} + +// tif + + +/** + * @description: Request list return value + */ +export interface AccountParams { + id?: string; + keyword?: string; + page?: string; + limit?: string; +}; + +export type TaskResultModel = BasicFetchResult; + +export type ShapeResultModel = BasicFetchResult diff --git a/src/layouts/default/header/components/CloudQuery.vue b/src/layouts/default/header/components/CloudQuery.vue index 95ee0d5..9951132 100644 --- a/src/layouts/default/header/components/CloudQuery.vue +++ b/src/layouts/default/header/components/CloudQuery.vue @@ -40,7 +40,7 @@ - - + --> + \ No newline at end of file diff --git a/src/views/demo/taskmanagement/DeptTree.vue b/src/views/demo/taskmanagement/DeptTree.vue new file mode 100644 index 0000000..746f44c --- /dev/null +++ b/src/views/demo/taskmanagement/DeptTree.vue @@ -0,0 +1,110 @@ + + diff --git a/src/views/demo/taskmanagement/DetailModal.vue b/src/views/demo/taskmanagement/DetailModal.vue new file mode 100644 index 0000000..62482a0 --- /dev/null +++ b/src/views/demo/taskmanagement/DetailModal.vue @@ -0,0 +1,109 @@ + + diff --git a/src/views/demo/taskmanagement/PosGroupModal.vue b/src/views/demo/taskmanagement/PosGroupModal.vue new file mode 100644 index 0000000..e9d11d7 --- /dev/null +++ b/src/views/demo/taskmanagement/PosGroupModal.vue @@ -0,0 +1,59 @@ + + \ No newline at end of file diff --git a/src/views/demo/taskmanagement/dept.data.ts b/src/views/demo/taskmanagement/dept.data.ts new file mode 100644 index 0000000..81786e7 --- /dev/null +++ b/src/views/demo/taskmanagement/dept.data.ts @@ -0,0 +1,153 @@ +import { BasicColumn, FormSchema } from '@/components/Table'; +import { h } from 'vue'; +import { Tag } from 'ant-design-vue'; +import { getPosGroupList } from '@/api/demo/system'; + +export const columns: BasicColumn[] = [ + { + title: '任务编号', + dataIndex: 'id', + }, + { + title: '任务名称', + dataIndex: 'taskName', + }, + { + title: '备注/说明', + dataIndex: 'remark', + }, + { + title: '图斑数量', + dataIndex: 'sortNo', + }, + + { + title: '已领取数量', + dataIndex: 'sortNo', + }, + { + title: '未领取数量', + dataIndex: 'sortNo', + }, + { + title: '任务状态', + dataIndex: 'status', + width: 80, + customRender: ({ record }) => { + const enable = record.isCompleted; + const color = enable ? 'green' : 'red'; + const text = enable ? '已完成' : '未完成'; + return h(Tag, { color: color }, () => text); + }, + }, + { + title: '创建时间', + dataIndex: 'createTime', + width: 180, + } +]; + +export const searchFormSchema: FormSchema[] = [ + { + field: 'taskName', + label: '任务名称', + component: 'Input', + colProps: { span: 8 }, + }, +]; + +export const formGroupSchema: FormSchema[] = [ + { + field: 'posGroupId', + component: 'ApiSelect', + label: '职级组', + required: true, + componentProps: ({ formActionType, formModel }) => { + return { + api: getPosGroupList, // 接口 + // 接口参数 + resultField: 'result', + labelField: 'name', + valueField: 'id', + }; + }, + }, +]; + +const updateShpae=()=>{ + alert(123); +} + +window.updateShpae = updateShpae + + +export const formSchema: FormSchema[] = [ + { + field: 'shpId', + label: '选择AI解译成果', + component: 'Select', + componentProps: { + fieldNames: { + label: 'shpName', + key: 'id', + value: 'id', + }, + onChange:(value)=>{ + console.log(value) + }, + getPopupContainer: () => document.body, + }, + required: true, + suffix: () => h('span', {style:"background:#0960BD;padding:8px 10px;border-radius:4px;color:#fff;cursor:pointer;", class: 'update-button',onclick:"updateShpae()"}, '更新数据'), + }, + { + field: 'previousPhase', + label: '选择前时项', + component: 'TreeSelect', + componentProps: { + multiple:true, + fieldNames: { + label: 'name', + key: 'id', + value: 'id', + }, + onChange:(value)=>{ + console.log(value) + }, + getPopupContainer: () => document.body, + }, + required: true, + suffix: () => h('span', {style:"background:#0960BD;padding:8px 10px;border-radius:4px;color:#fff;cursor:pointer;", class: 'update-button',onclick:"updateShpae()"}, '更新数据'), + }, + { + field: 'laterPhase', + label: '选择后时项', + component: 'TreeSelect', + componentProps: { + multiple:true, + fieldNames: { + label: 'name', + key: 'id', + value: 'id', + }, + onChange:(value)=>{ + console.log(value) + }, + getPopupContainer: () => document.body, + }, + required: true, + suffix: () => h('span', {style:"background:#0960BD;padding:8px 10px;border-radius:4px;color:#fff;cursor:pointer;", class: 'update-button',onclick:"updateShpae()"}, '更新数据'), + }, + { + field: 'taskName', + label: '任务名称', + component: 'Input', + required: true, + }, + { + field: 'remark', + label: '备注/说明', + component: 'InputTextArea', + required: false, + } +]; diff --git a/src/views/demo/taskmanagement/index.vue b/src/views/demo/taskmanagement/index.vue new file mode 100644 index 0000000..cff5cad --- /dev/null +++ b/src/views/demo/taskmanagement/index.vue @@ -0,0 +1,174 @@ + + diff --git a/src/views/demo/taskmanagement/page.ts b/src/views/demo/taskmanagement/page.ts new file mode 100644 index 0000000..9e0d2e8 --- /dev/null +++ b/src/views/demo/taskmanagement/page.ts @@ -0,0 +1,7 @@ + +export { default as DeptTree } from './DeptTree.vue'; +export { default as DeptModal } from './DeptModal.vue'; +export { default as DetailModal } from './DetailModal.vue'; +export { default as PosGroupModal } from './PosGroupModal.vue'; + + diff --git a/src/views/demo/usertask/DeptModal.vue b/src/views/demo/usertask/DeptModal.vue new file mode 100644 index 0000000..11be141 --- /dev/null +++ b/src/views/demo/usertask/DeptModal.vue @@ -0,0 +1,151 @@ + + + \ No newline at end of file diff --git a/src/views/demo/usertask/DeptTree.vue b/src/views/demo/usertask/DeptTree.vue new file mode 100644 index 0000000..746f44c --- /dev/null +++ b/src/views/demo/usertask/DeptTree.vue @@ -0,0 +1,110 @@ + + diff --git a/src/views/demo/usertask/DetailModal.vue b/src/views/demo/usertask/DetailModal.vue new file mode 100644 index 0000000..62482a0 --- /dev/null +++ b/src/views/demo/usertask/DetailModal.vue @@ -0,0 +1,109 @@ + + diff --git a/src/views/demo/usertask/PosGroupModal.vue b/src/views/demo/usertask/PosGroupModal.vue new file mode 100644 index 0000000..e9d11d7 --- /dev/null +++ b/src/views/demo/usertask/PosGroupModal.vue @@ -0,0 +1,59 @@ + + \ No newline at end of file diff --git a/src/views/demo/usertask/dept.data.ts b/src/views/demo/usertask/dept.data.ts new file mode 100644 index 0000000..81786e7 --- /dev/null +++ b/src/views/demo/usertask/dept.data.ts @@ -0,0 +1,153 @@ +import { BasicColumn, FormSchema } from '@/components/Table'; +import { h } from 'vue'; +import { Tag } from 'ant-design-vue'; +import { getPosGroupList } from '@/api/demo/system'; + +export const columns: BasicColumn[] = [ + { + title: '任务编号', + dataIndex: 'id', + }, + { + title: '任务名称', + dataIndex: 'taskName', + }, + { + title: '备注/说明', + dataIndex: 'remark', + }, + { + title: '图斑数量', + dataIndex: 'sortNo', + }, + + { + title: '已领取数量', + dataIndex: 'sortNo', + }, + { + title: '未领取数量', + dataIndex: 'sortNo', + }, + { + title: '任务状态', + dataIndex: 'status', + width: 80, + customRender: ({ record }) => { + const enable = record.isCompleted; + const color = enable ? 'green' : 'red'; + const text = enable ? '已完成' : '未完成'; + return h(Tag, { color: color }, () => text); + }, + }, + { + title: '创建时间', + dataIndex: 'createTime', + width: 180, + } +]; + +export const searchFormSchema: FormSchema[] = [ + { + field: 'taskName', + label: '任务名称', + component: 'Input', + colProps: { span: 8 }, + }, +]; + +export const formGroupSchema: FormSchema[] = [ + { + field: 'posGroupId', + component: 'ApiSelect', + label: '职级组', + required: true, + componentProps: ({ formActionType, formModel }) => { + return { + api: getPosGroupList, // 接口 + // 接口参数 + resultField: 'result', + labelField: 'name', + valueField: 'id', + }; + }, + }, +]; + +const updateShpae=()=>{ + alert(123); +} + +window.updateShpae = updateShpae + + +export const formSchema: FormSchema[] = [ + { + field: 'shpId', + label: '选择AI解译成果', + component: 'Select', + componentProps: { + fieldNames: { + label: 'shpName', + key: 'id', + value: 'id', + }, + onChange:(value)=>{ + console.log(value) + }, + getPopupContainer: () => document.body, + }, + required: true, + suffix: () => h('span', {style:"background:#0960BD;padding:8px 10px;border-radius:4px;color:#fff;cursor:pointer;", class: 'update-button',onclick:"updateShpae()"}, '更新数据'), + }, + { + field: 'previousPhase', + label: '选择前时项', + component: 'TreeSelect', + componentProps: { + multiple:true, + fieldNames: { + label: 'name', + key: 'id', + value: 'id', + }, + onChange:(value)=>{ + console.log(value) + }, + getPopupContainer: () => document.body, + }, + required: true, + suffix: () => h('span', {style:"background:#0960BD;padding:8px 10px;border-radius:4px;color:#fff;cursor:pointer;", class: 'update-button',onclick:"updateShpae()"}, '更新数据'), + }, + { + field: 'laterPhase', + label: '选择后时项', + component: 'TreeSelect', + componentProps: { + multiple:true, + fieldNames: { + label: 'name', + key: 'id', + value: 'id', + }, + onChange:(value)=>{ + console.log(value) + }, + getPopupContainer: () => document.body, + }, + required: true, + suffix: () => h('span', {style:"background:#0960BD;padding:8px 10px;border-radius:4px;color:#fff;cursor:pointer;", class: 'update-button',onclick:"updateShpae()"}, '更新数据'), + }, + { + field: 'taskName', + label: '任务名称', + component: 'Input', + required: true, + }, + { + field: 'remark', + label: '备注/说明', + component: 'InputTextArea', + required: false, + } +]; diff --git a/src/views/demo/usertask/index.vue b/src/views/demo/usertask/index.vue new file mode 100644 index 0000000..cff5cad --- /dev/null +++ b/src/views/demo/usertask/index.vue @@ -0,0 +1,174 @@ + + diff --git a/src/views/demo/usertask/page.ts b/src/views/demo/usertask/page.ts new file mode 100644 index 0000000..9e0d2e8 --- /dev/null +++ b/src/views/demo/usertask/page.ts @@ -0,0 +1,7 @@ + +export { default as DeptTree } from './DeptTree.vue'; +export { default as DeptModal } from './DeptModal.vue'; +export { default as DetailModal } from './DetailModal.vue'; +export { default as PosGroupModal } from './PosGroupModal.vue'; + +