diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/.env.development b/zdxt-web-client/zdxt-admin-nos-plus-ui/.env.development index bdad0d2..55de834 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/.env.development +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/.env.development @@ -1,5 +1,5 @@ # VITE_APP_PROXY_TARGET = 'http://139.186.148.21:8080' -VITE_APP_PROXY_TARGET = 'http://192.168.1.7:28080' +VITE_APP_PROXY_TARGET = 'http://192.168.1.11:28080' # 页面标题 VITE_APP_TITLE = zdxt-Vue-Plus多租户管理系统 VITE_APP_LOGO_TITLE = 行政执法监督码 @@ -10,6 +10,9 @@ VITE_APP_ENV = 'development' # 开发环境 VITE_APP_BASE_API = '/dev-api' +# 执法端接口(如 /app-enf/...),开发环境直连 +VITE_APP_ENF_BASE_API = 'http://139.186.148.21/dev-api' + # 应用访问路径 例如使用前缀 /admin/ VITE_APP_CONTEXT_PATH = '/' diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/package.json b/zdxt-web-client/zdxt-admin-nos-plus-ui/package.json index 1d72745..f6c54e4 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/package.json +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/package.json @@ -7,7 +7,7 @@ "license": "MIT", "type": "module", "scripts": { - "vite-server-web-supervision-dev": "vite serve --mode development", + "vite": "vite serve --mode development", "vite-server-web-supervision-dev-zrb": "vite serve --mode development-zrb-cust", "build-zdxt-admin-plus-ui:prod": "vite build --mode production --outDir dist/prod", "build-zdxt-admin-plus-ui:dev": "vite build --mode development --outDir dist/dev", diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/api/nos/index.ts b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/api/nos/index.ts index ac0a7ea..f20e67c 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/api/nos/index.ts +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/api/nos/index.ts @@ -1,5 +1,15 @@ -import request from '@/utils/request'; -import { TaskPageRequest, Response, DatailResponse } from './type'; +import request, { enfBaseURL } from '@/utils/request'; +import { + TaskPageRequest, + Response, + DatailResponse, + LegalTechRecordsPageRequest, + LegalTechRecordsPageResponse, + LegalTechRecordsDetailResponse, + SaveOrEditLegalTechRecordsRequest, + SaveOrEditLegalTechRecordsResponse, + LawEnforcementAgencyOption +} from './type'; import { AxiosPromise } from 'axios'; // 分页查询非现场执法任务 @@ -15,6 +25,38 @@ export function getTaskPage(data: TaskPageRequest): AxiosPromise { export function getTaskDetail(taskId: Number): AxiosPromise { return request({ url: `/web-sup/nos-law-enforcement-task/detail?taskId=${taskId}`, + method: 'get' + }); +} +// 分页查询法制与技术材料留存 +export function getLegalTechRecordsPage(data: LegalTechRecordsPageRequest): AxiosPromise { + return request({ + url: `/web-sup/nos-law-enforcement-filing/page`, + method: 'post', + data + }); +} +// 分页查询法制与技术材料留存 +export function getLegalTechRecordsDetail(id: string): AxiosPromise { + return request({ + url: `/web-sup/nos-law-enforcement-filing/detail`, + method: 'get', + params: { id } + }); +} +// 新增/编辑非现场执法备案 +export function saveOrEditLegalTechRecords(data: SaveOrEditLegalTechRecordsRequest): AxiosPromise { + return request({ + url: `/web-sup/nos-law-enforcement-filing/save-or-edit`, + method: 'post', + data + }); +} +// 查询执法单位 +export function selectLawEnforcementAgency(): AxiosPromise { + return request({ + baseURL: enfBaseURL, + url: `/web/enforcementcode/educationServices/publishDeptOptions`, method: 'get', }); } diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/api/nos/type.ts b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/api/nos/type.ts index 14cdd2d..f0942fd 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/api/nos/type.ts +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/api/nos/type.ts @@ -140,17 +140,33 @@ export interface NosLawEnforcementTaskDetailVO { */ checkTime?: string; /** - * 评价json(id + 名称 + 顺序 + 分数) + * 云文字 */ - comment?: NosLawEnforcementTaskCommentItem[]; + cloudText?: string; + /** + * 云视频 + */ + cloudVideo?: string; + /** + * 评价原因 + */ + commentReason?: string; /** * 创建时间 */ createTime?: string; + /** + * 是否创建人 + */ + creator?: boolean; /** * 截止日期 */ deadline?: string; + /** + * 云笔录状态(0-未发起,1-待企业提交,2-待执法人员确认,3-已完成) + */ + digitalVoiceLoggingStatus?: number; /** * 企业处理时间 */ @@ -164,6 +180,10 @@ export interface NosLawEnforcementTaskDetailVO { * 任务id */ id?: string; + /** + * 是否评价(0-未评价,1-已评价) + */ + isEvaluation?: number; /** * 执法单位名称 */ @@ -185,13 +205,13 @@ export interface NosLawEnforcementTaskDetailVO { */ proclamation?: TaskProclamation[]; /** - * 评价原因 + * 满意度(0-满意,1-较满意,2-不满意) */ - commentReason?: string; + satisfaction?: number; /** - * 满意度(0-满意,1-一般-不满意) + * 云笔录意见 */ - satisfaction?: number; + suggestion?: string; /** * 检查项 */ @@ -220,6 +240,10 @@ export interface NosLawEnforcementTaskDetailVO { * 任务状态名称 */ taskStatusName?: string; + /** + * 类别id + */ + taskTypeId?: number; /** * 类别名称 */ @@ -338,3 +362,179 @@ export interface MapObject { key?: { [key: string]: any }; [property: string]: any; } + +/** + * 查询参数 + * + * NosLawEnforcementFilingPageBO + */ +export interface LegalTechRecordsPageRequest { + /** + * 结束时间 + */ + endTime?: string; + /** + * 执法单位名称 + */ + lawEnforcementAgency?: string; + pageNo: number; + pageSize: number; + /** + * 开始时间 + */ + startTime?: string; + [property: string]: any; +} + + +/** + * 分页结果 + * + * TableDataInfoNosLawEnforcementFilingPageVO + */ +export interface LegalTechRecordsPageResponse { + code?: number; + msg?: string; + rows?: NosLawEnforcementFilingPageVO[]; + total?: number; + [property: string]: any; +} + +/** +* NosLawEnforcementFilingPageVO +*/ +export interface NosLawEnforcementFilingPageVO { + /** + * 创建时间 + */ + createTime?: string; + /** + * id + */ + id?: string; + /** + * 执法单位名称 + */ + lawEnforcementAgency?: string; + /** + * 执法单位id + */ + lawEnforcementAgencyId?: string; + /** + * 法制材料 + */ + legalMaterials?: string; + /** + * 技术材料 + */ + technicalMaterials?: string; + [property: string]: any; +} + +// LegalTechRecordsDetailResponse +/** + * 备案详情 + * + * RNosLawEnforcementFilingDetailVO + */ +export interface LegalTechRecordsDetailResponse { + code?: number; + data?: NosLawEnforcementFilingDetailVO; + errorCode?: number; + message?: string; + msg?: string; + success?: boolean; + [property: string]: any; +} + +/** +* NosLawEnforcementFilingDetailVO +*/ +export interface NosLawEnforcementFilingDetailVO { + /** + * 创建时间 + */ + createTime?: string; + /** + * id + */ + id?: string; + /** + * 执法单位名称 + */ + lawEnforcementAgency?: string; + /** + * 执法单位id + */ + lawEnforcementAgencyId?: string; + /** + * 法制材料 + */ + legalMaterials?: string; + /** + * 技术材料 + */ + technicalMaterials?: string; + [property: string]: any; +} + + +/** + * 执法单位选项 + */ +export interface LawEnforcementAgencyOption { + deptId: string; + deptName: string; + parentId?: string; + parentName?: string | null; + ancestors?: string; + orderNum?: number; + leaderName?: string | null; + status?: string; + zone?: number; + [property: string]: any; +} + +/** + * 参数 + * + * NosLawEnforcementFilingBo + */ +export interface SaveOrEditLegalTechRecordsRequest { + /** + * id + */ + id?: string; + /** + * 执法单位名称 + */ + lawEnforcementAgency: string; + /** + * 执法单位id + */ + lawEnforcementAgencyId: string; + /** + * 法制材料 + */ + legalMaterials: string; + /** + * 技术材料 + */ + technicalMaterials: string; + [property: string]: any; +} + +/** + * 结果 + * + * RBoolean + */ +export interface SaveOrEditLegalTechRecordsResponse { + code?: number; + data?: boolean; + errorCode?: number; + message?: string; + msg?: string; + success?: boolean; + [property: string]: any; +} diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-bad-dis.png b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-bad-dis.png new file mode 100644 index 0000000..47f5fdc Binary files /dev/null and b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-bad-dis.png differ diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-bad.png b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-bad.png new file mode 100644 index 0000000..2d3bf62 Binary files /dev/null and b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-bad.png differ diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-good-dis.png b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-good-dis.png new file mode 100644 index 0000000..4ee5bb6 Binary files /dev/null and b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-good-dis.png differ diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-good.png b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-good.png new file mode 100644 index 0000000..732e9dc Binary files /dev/null and b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-good.png differ diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-verygood-dis.png b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-verygood-dis.png new file mode 100644 index 0000000..5f10022 Binary files /dev/null and b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-verygood-dis.png differ diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-verygood.png b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-verygood.png new file mode 100644 index 0000000..2ede1bb Binary files /dev/null and b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/assets/images/eval-verygood.png differ diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/router/index.ts b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/router/index.ts index b3d3586..d25b76b 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/router/index.ts +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/router/index.ts @@ -84,33 +84,74 @@ export const constantRoutes: RouteRecordRaw[] = [ } ] }, + // 非现场执法列表 { - path: '/statistics/non-administrative/non-administrative-list', + path: '/non/non-enforcement', component: Layout, hidden: true, - redirect: 'noredirect', children: [ { path: '', component: () => import('@/views/nos/index.vue'), - name: 'nosList', - meta: { title: '非现场执法', icon: 'user' } + name: 'NosList', + meta: { title: '非现场执法', icon: 'plus' } } ] }, + // 详情 { - path: '/statistics/non-administrative/non-administrative-detail', + path: '/non/non-enforcement/detail/:id', component: Layout, hidden: true, children: [ { path: '', component: () => import('@/views/nos/detail.vue'), - name: 'nosDetail', - meta: { title: '非现场执法详情', icon: 'user' } + name: 'NosDetail', + meta: { title: '非现场执法详情', icon: 'plus' } } ] - } + }, + // 法制与技术材料留存 + { + path: '/non/legal-tech-records', + component: Layout, + hidden: true, + children: [ + { + path: '', + component: () => import('@/views/nos/legalTech.vue'), + name: 'LegalTech', + meta: { title: '法制与技术材料留存', icon: 'plus' } + } + ] + }, + { + path: '/non/legal-tech-records/add', + component: Layout, + hidden: true, + children: [ + { + path: '', + component: () => import('@/views/nos/legalTechEdit.vue'), + name: 'LegalTechAdd', + meta: { title: '法制与技术材料留存新增', icon: 'plus' } + } + ] + }, + { + path: '/non/legal-tech-records/edit/:id', + component: Layout, + hidden: true, + children: [ + { + path: '', + component: () => import('@/views/nos/legalTechEdit.vue'), + name: 'LegalTechEdit', + meta: { title: '法制与技术材料留存编辑', icon: 'plus' } + } + ] + }, ]; // 动态路由,基于用户权限动态去加载 diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/types/env.d.ts b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/types/env.d.ts index 1fb9f62..ab3e0fe 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/types/env.d.ts +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/types/env.d.ts @@ -9,6 +9,7 @@ interface ImportMetaEnv { VITE_APP_TITLE: string; VITE_APP_PORT: number; VITE_APP_BASE_API: string; + VITE_APP_ENF_BASE_API?: string; VITE_APP_BASE_URL: string; VITE_APP_CONTEXT_PATH: string; VITE_APP_MONITOR_ADMIN: string; diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/utils/request.ts b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/utils/request.ts index cd16fb1..d913b94 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/utils/request.ts +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/utils/request.ts @@ -26,6 +26,9 @@ export const globalHeaders = () => { axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'; axios.defaults.headers['clientid'] = import.meta.env.VITE_APP_CLIENT_ID; // 创建 axios 实例 +/** 执法端等独立服务 baseURL,单请求传入 baseURL 可覆盖实例默认值 */ +export const enfBaseURL = import.meta.env.VITE_APP_ENF_BASE_API; + const service = axios.create({ baseURL: import.meta.env.VITE_APP_BASE_API, timeout: 50000, @@ -58,7 +61,7 @@ service.interceptors.request.use( config.url = url; } - if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { + if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put') && !(config.data instanceof FormData)) { const requestObj = { url: config.url, data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/add.vue b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/add.vue new file mode 100644 index 0000000..bd4dffb --- /dev/null +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/add.vue @@ -0,0 +1,443 @@ + + + + + diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/detail.vue b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/detail.vue index 21fa64d..328db38 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/detail.vue +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/detail.vue @@ -13,107 +13,113 @@ {{ detailData?.taskNo || '--' }} - -
-
通知/公告
-
- 通知/公告 -
- - -- +
+
+ 任务来源 + {{ detailData?.taskSourceName || '--' }} +
-
-
- 任务来源 - {{ detailData?.taskSourceName || '--' }} -
- - -
-
检查对象
-
- 执法单位 - {{ detailData?.lawEnforcementAgency || '--' }} -
-
- 执法人员 -
- - -- + +
+
检查对象
+
+ {{detailData?.taskTypeId != 5 ? '执法单位' : '巡查单位'}} + {{ detailData?.lawEnforcementAgency || '--' }} +
+
+ {{detailData?.taskTypeId != 5 ? '执法人员' : '参与人员'}} +
+ + -- +
+
-
- -
-
执法信息
-
- 企业名称 -
-

- {{ formatEnterpriseName(detailData?.enterpriseName, detailData?.usciCode) }} -

- -- -
-
-
- 类  别 - {{ detailData?.taskTypeName || '--' }} -
-
- 执法事项 - {{ detailData?.lawEnforcementMatters || '--' }} -
-
- {{ requirementLabel }} -
-
    -
  • - - {{ item.itemName }} -
  • -
- -- -
-
-
- 执法依据 -
- - -- + +
+
+
{{detailData?.taskTypeId != 5 ? '执法信息' : '巡查信息'}}
+
+ 企业名称 +
+

+ {{ formatEnterpriseName(detailData?.enterpriseName, detailData?.usciCode) }} +

+ -- +
+
+
+ 类  别 + {{ detailData?.taskTypeName || '--' }} +
+
+ {{detailData?.taskTypeId != 5 ? '执法事项' : '巡查事项'}} + {{ detailData?.lawEnforcementMatters || '--' }} +
+
+ {{ requirementLabel }} +
+
    +
  • + + {{ item.itemName }} +
  • +
+ -- +
+
+
+ {{detailData?.taskTypeId != 5 ? '执法依据' : '依  据'}} +
+ + -- +
+
+
+ 开始时间 + {{ formatDateTime(detailData?.createTime) || '--' }} +
+
+ 截止日期 + {{ formatDateTime(detailData?.deadline) || '--' }} +
+
-
- 开始时间 - {{ formatDateTime(detailData?.createTime) || '--' }} -
-
- 截止日期 - {{ formatDateTime(detailData?.deadline) || '--' }} -
-
- +
企业材料
@@ -122,10 +128,7 @@
{{ item.itemName || '--' }}
-
- 审核: - {{ getItemAuditText(item.pass) }} -
+
暂无附件
@@ -163,13 +166,79 @@
+
+ 审核: + {{ getItemAuditText(item.pass) }} +
+
+
+
- + + +
+
检查结果
+
+ 检查结果: +
{{ getCheckResultText(detailData?.taskStatus) }}
+
+
+ 检查时间: +
{{ detailData?.checkTime || '--' }}
+
+ +
+ + +
+
云笔录
+
+ 云视频: +
+ + 暂无视频
-
- 检查结果 - {{ getCheckResultText(detailData?.checkResult) }} +
+ 云文字: +
+
{{ detailData?.cloudText || '--' }}
+
+
+
+ 意 见: +
+
{{ detailData?.suggestion || '--' }}
+
+
+
+ + +
+
评价
+
+
+
+ 满意 + 满意 +
+
+ 一般 + 一般 +
+
+ 不满意 + 不满意 +
+
+
+ 原因: +
+
{{ detailData?.commentReason || '--' }}
+
+
@@ -177,7 +246,7 @@ diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/index.vue b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/index.vue index 01fc3a7..9af4bcb 100644 --- a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/index.vue +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/index.vue @@ -77,7 +77,7 @@ :header-cell-style="{ backgroundColor: '#f5f7fa', fontWeight: 'bold' }" @selection-change="handleSelectionChange" > - + @@ -157,7 +157,8 @@ const TASK_TYPE_OPTIONS = [ { label: '行政检查', value: 1 }, { label: '材料备案', value: 2 }, { label: '材料验证', value: 3 }, - { label: '待核实案件', value: 4 } + { label: '待核实案件', value: 4 }, + { label: '巡查', value: 5 } ]; const TASK_STATUS_OPTIONS = [ @@ -201,13 +202,7 @@ const formatLawEnforcer = (row: NosLawEnforcementTaskPageVO) => { }; const getStatusClass = (status?: number) => { - const classMap: Record = { - 2: 'status-return', - 3: 'status-pending', - 4: 'status-done', - 5: 'status-done' - }; - return classMap[status ?? -1] || 'status-default'; + return status ? `list-card__status--${status}` : ''; }; const buildQueryParams = () => { @@ -263,11 +258,9 @@ const handleDetail = (row: NosLawEnforcementTaskPageVO) => { ElMessage.warning('任务ID不存在'); return; } - console.log('dddddddddddddddd'); - router.push({ - name: 'nosDetail', - query: { id: row.id } + name: 'NosDetail', + params: { id: String(row.id) } }); }; @@ -338,19 +331,27 @@ onMounted(() => { color: #909399; } -.status-default { - color: #303133; +.list-card__status--1 { + color: #1367fe; /* 企业处理中 */ +} + +.list-card__status--2 { + color: #ed6a0c; /* 退回企业补正 */ +} + +.list-card__status--3 { + color: #ed6a0c; /* 待审核 */ } -.status-return { - color: #409eff; +.list-card__status--4 { + color: #07c160; /* 已办结 */ } -.status-pending { - color: #e6a23c; +.list-card__status--5 { + color: #ee0a24; /* 已办结(超期) */ } -.status-done { - color: #67c23a; +.list-card__status--6 { + color: #ed6a0c; /* 待现场处置 */ } diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/legalTech.vue b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/legalTech.vue new file mode 100644 index 0000000..afc9548 --- /dev/null +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/legalTech.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/legalTechEdit.vue b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/legalTechEdit.vue new file mode 100644 index 0000000..2d43d32 --- /dev/null +++ b/zdxt-web-client/zdxt-admin-nos-plus-ui/src/views/nos/legalTechEdit.vue @@ -0,0 +1,400 @@ + + + + + diff --git a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/.prettierrc b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/.prettierrc index 6ca3ce5..0b3da62 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/.prettierrc +++ b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/.prettierrc @@ -2,7 +2,7 @@ "printWidth": 150, "tabWidth": 2, "useTabs": false, - "semi": true, + "semi": false, "singleQuote": true, "quoteProps": "preserve", "jsxSingleQuote": false, diff --git a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/api/nos/enfDemo.js b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/api/nos/enfDemo.js index c4c88bf..05faeb8 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/api/nos/enfDemo.js +++ b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/api/nos/enfDemo.js @@ -22,3 +22,14 @@ export const nosTaskSourceListApi = (params, success, error) => _post("/app-enf/ //查询已评价的任务 export const nosTaskHasCommentPageApi = (params, success, error) => _post("/app-enf/nos-law-enforcement-task/has-comment/page", params, success, error); + +//获取当前用户所属执法单位备案 +export const isFilingApi = (params, success, error) => _get("/enf-app/nos-law-enforcement-filing/detail", params, success, error); + +//开启云笔录 +export const cloudRecordStartApi = (params, success, error) => _get("/app-enf/nos-law-enforcement-task/start/digital-voice-logging", params, success, error); +//查询云笔录详情 +export const cloudRecordDetailApi = (params, success, error) => _get("/app-enf/nos-law-enforcement-task/digital-voice-logging/detail", params, success, error); +//确认云笔录材料 +export const cloudRecordConfirmApi = (params, success, error) => _post("/app-enf/nos-law-enforcement-task/digital-voice-logging/confirm", params, success, error); + diff --git a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/router/nos/nos-base-router.js b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/router/nos/nos-base-router.js index 3e70b39..dc849e9 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/router/nos/nos-base-router.js +++ b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/router/nos/nos-base-router.js @@ -27,6 +27,15 @@ const routes = [ isKeepAlive: false, }, }, + // 云笔录 + { + path: "/enforcement/nos/cloud-record", + name: "nosCloudRecord", + component: () => import("@/views/enforcement/nos/nosCloudRecord.vue"), + meta: { + isKeepAlive: false, + }, + }, // 非现场消息 { path: "/enforcement/nos/evaluate", diff --git a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/components/NosDetailMaterialsTab.vue b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/components/NosDetailMaterialsTab.vue index 19b361f..d635f71 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/components/NosDetailMaterialsTab.vue +++ b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/components/NosDetailMaterialsTab.vue @@ -135,6 +135,21 @@
+
+
+ 云笔录 + + 查看 + +
+
+
评价
@@ -240,6 +255,12 @@ const props = defineProps({ } }); +const emit = defineEmits(['view-cloud-record']); + +const onViewCloudRecord = () => { + emit('view-cloud-record'); +}; + const overdueCheckTime = computed(() => props.taskDeadline || ''); const evaluateForm = ref({ @@ -260,6 +281,7 @@ watch(() => props.evaluateData, (val) => { }, { immediate: true, deep: true }); const taskItemList = defineModel('taskItemList', { type: Array, default: () => [] }); +const digitalVoiceLoggingStatus = defineModel('digitalVoiceLoggingStatus', { type: [Number, String], default: '' }); const inspectResult = defineModel('inspectResult', { type: Object, default: () => ({ @@ -637,4 +659,29 @@ const onPreview = (url, itemValue) => { } } } + +.cloud-record-card { + background: #fff; + margin-top: 8px; + padding: 14px 16px; + border-radius: 4px; +} + +.cloud-record-row { + display: flex; + align-items: center; + justify-content: space-between; +} + +.cloud-record-label { + font-size: 15px; + font-weight: 600; + color: #323233; +} + +.btn-view { + height: 28px; + padding: 0 12px; + font-size: 12px; +} diff --git a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/nosCloudRecord.vue b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/nosCloudRecord.vue new file mode 100644 index 0000000..39ba13e --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/nosCloudRecord.vue @@ -0,0 +1,381 @@ + + + + + diff --git a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/nosDetail.vue b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/nosDetail.vue index d8c65d4..0475ac2 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/nosDetail.vue +++ b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/src/views/enforcement/nos/nosDetail.vue @@ -33,14 +33,16 @@ v-model:inspect-result="inspectResult" :task-status="taskDetail.taskStatus" :task-deadline="taskDetail.deadline" + :digital-voice-logging-status="taskDetail.digitalVoiceLoggingStatus" :evaluate-data="evaluateData" + @view-cloud-record="onViewCloudRecord" />
@@ -49,73 +51,73 @@ diff --git a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/vite-env/.env.enforcement-dev b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/vite-env/.env.enforcement-dev index 54aabcb..45aee6c 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enforcement-app/vite-env/.env.enforcement-dev +++ b/zdxt-web-client/zdxt-efcode-nos-enforcement-app/vite-env/.env.enforcement-dev @@ -9,7 +9,7 @@ VITE_NOS_BASE_URL = '/nosapi' # 仅 dev server 代理目标(生产由 nginx 转发,不读这两项) VITE_PROXY_TARGET = 'http://139.186.148.21:8080' -VITE_NOS_PROXY_TARGET = 'http://192.168.1.12:28080' +VITE_NOS_PROXY_TARGET = 'http://192.168.1.11:28080' # 附件/图片等静态资源前缀(与现场执法同源) VITE_FILE_URL = '/api' diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/.prettierrc b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/.prettierrc new file mode 100644 index 0000000..0b3da62 --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/.prettierrc @@ -0,0 +1,20 @@ +{ + "printWidth": 150, + "tabWidth": 2, + "useTabs": false, + "semi": false, + "singleQuote": true, + "quoteProps": "preserve", + "jsxSingleQuote": false, + "bracketSameLine": false, + "trailingComma": "none", + "bracketSpacing": true, + "embeddedLanguageFormatting": "auto", + "arrowParens": "always", + "requirePragma": false, + "insertPragma": false, + "proseWrap": "preserve", + "htmlWhitespaceSensitivity": "css", + "vueIndentScriptAndStyle": false, + "endOfLine": "auto" +} diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/api/nos/enfDemo.js b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/api/nos/enfDemo.js index 76e4f74..97f26c2 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/api/nos/enfDemo.js +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/api/nos/enfDemo.js @@ -18,3 +18,20 @@ export const nosTaskListByCommentStatusAPi = (params, success, error) => // 分页查询非现场执法任务未读消息 export const nosTaskListUnReadAPi = (params, success, error) => _post("/app-ent/nos-law-enforcement-task/msg/un-read/page", params, success, error); +// ----------------------------- 非现场执法任务通知 ----------------------------- +// 分页查询非现场执法未读任务通知 +export const nosTaskListNoticeAPi = (params, success, error) => + _post("/app-ent/nos-law-enforcement-task/msg/un-read/page", params, success, error); +// 查询未读消息数量 +export const nosTaskListUnReadCountAPi = (params, success, error) => + _post("/app-ent/nos-law-enforcement-task/msg/un-read/count", params, success, error); +// 标记消息为已读 +export const nosTaskMarkReadAPi = (params, success, error) => + _get("/app-ent/nos-law-enforcement-task/msg/mark-read", params, success, error); + +// 提交云笔录材料 +export const submitCloudRecordApi = (params, success, error) => + _post("/app-ent/nos-law-enforcement-task/digital-voice-logging/submit", params, success, error); +// 查询云笔录详情 +export const cloudRecordDetailApi = (params, success, error) => + _get("/app-ent/nos-law-enforcement-task/digital-voice-logging/detail", params, success, error); diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/components/FooterBar.vue b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/components/FooterBar.vue index ef3fc46..3a6b955 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/components/FooterBar.vue +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/components/FooterBar.vue @@ -79,7 +79,7 @@ const tabs = [ { key: "message", label: "消息", - route: "/enforcement/message", + route: "/enterprise/nos/message", path: '' }, { diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/router/nos/nos-base-router.js b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/router/nos/nos-base-router.js index c92d19a..4051394 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/router/nos/nos-base-router.js +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/router/nos/nos-base-router.js @@ -10,6 +10,7 @@ const routes = [ title: "enf 测试单列表", }, }, + // 主页面 { path: "/enterprise/nos", name: "nosList", @@ -27,9 +28,28 @@ const routes = [ isKeepAlive: false, }, }, + // 云笔录 + { + path: "/enterprise/nos/cloud-record", + name: "nosCloudRecord", + component: () => import("@/views/enterprise/nos/nosCloudRecord.vue"), + meta: { + isKeepAlive: false, + }, + }, + // 消息中心入口 + { + path: "/enterprise/nos/message", + name: "nosMessageHub", + component: () => import("@/views/enterprise/nos/message/index.vue"), + meta: { + isKeepAlive: false, + title: "消息", + }, + }, // 非现场执法评价列表 { - path: "/enterprise/nos/evaluation-list", + path: "/enterprise/nos/evaluationList", name: "nosEvaluationList", component: () => import("@/views/enterprise/nos/message/nosEvaluationList.vue"), meta: { @@ -37,6 +57,16 @@ const routes = [ title: "非现场执法评价", }, }, + // 非现场执法任务通知 + { + path: "/enterprise/nos/noticeList", + name: "nosNoticeList", + component: () => import("@/views/enterprise/nos/message/nosTaskList.vue"), + meta: { + isKeepAlive: false, + title: "非现场执法任务通知", + }, + }, ]; export { routes }; diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue index fccbc52..b5b23a6 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue @@ -8,17 +8,9 @@ - - + + - - + + diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/message/index.vue b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/message/index.vue new file mode 100644 index 0000000..007f8b5 --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/message/index.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/message/nosTaskList.vue b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/message/nosTaskList.vue index e69de29..c30ac10 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/message/nosTaskList.vue +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/message/nosTaskList.vue @@ -0,0 +1,330 @@ + + + + + diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/nosCloudRecord.vue b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/nosCloudRecord.vue new file mode 100644 index 0000000..0f7a57b --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/nosCloudRecord.vue @@ -0,0 +1,571 @@ + + + + + diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/nosDetail.vue b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/nosDetail.vue index daf3ed3..758ad25 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/nosDetail.vue +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/src/views/enterprise/nos/nosDetail.vue @@ -33,7 +33,9 @@ v-model:inspect-result="inspectResult" :task-status="taskDetail.taskStatus" :evaluate-data="evaluateData" + :digital-voice-logging-status="taskDetail.digitalVoiceLoggingStatus" :is-edit="Number(taskDetail.taskStatus) === 1 || (Number(taskDetail.taskStatus) === 2 && isEdit)" + @view-cloud-record="onViewCloudRecord" /> @@ -46,6 +48,10 @@ + + @@ -97,6 +103,7 @@ const applyDetailData = (data) => { startTime: data.createTime || '', deadline: data.deadline || '', taskTypeId: data.taskTypeId || '', + digitalVoiceLoggingStatus: data.digitalVoiceLoggingStatus || '', }; taskItemList.value = (data.taskItemList || []).map((item) => { const { fileList, ...rest } = item @@ -172,6 +179,28 @@ const onCancel = () => { router.back(); }; +const onCloudRecord = () => { + if (!route.query.id) { + showToast('任务信息异常'); + return; + } + router.push({ + name: 'nosCloudRecord', + query: { id: route.query.id, tab: route.query.tab }, + }); +}; + +const onViewCloudRecord = () => { + if (!route.query.id) { + showToast('任务信息异常'); + return; + } + router.push({ + name: 'nosCloudRecord', + query: { id: route.query.id, tab: route.query.tab, taskStatus: 4 }, + }); +}; + const validateMaterials = () => { if (isEdit.value || Number(taskDetail.value.taskStatus) === 1) { const allFilled = taskItemList.value.every(item => item.fileList && item.fileList.length > 0); diff --git a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/vite-env/.env.enterprise-dev b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/vite-env/.env.enterprise-dev index 8a972f8..820fbe4 100644 --- a/zdxt-web-client/zdxt-efcode-nos-enterprise-app/vite-env/.env.enterprise-dev +++ b/zdxt-web-client/zdxt-efcode-nos-enterprise-app/vite-env/.env.enterprise-dev @@ -10,4 +10,4 @@ VITE_APP_ENV = 'dev' VITE_NOS_BASE_URL = '/nosapi' # 仅 dev server 代理目标(生产由 nginx 转发,不读这两项) VITE_PROXY_TARGET = 'http://139.186.148.21:8080' -VITE_NOS_PROXY_TARGET = 'http://192.168.1.12:28080' +VITE_NOS_PROXY_TARGET = 'http://192.168.1.11:28080'