验收页面优化(通过且快速审批时无需选择处理人)

This commit is contained in:
王利强
2026-07-28 10:16:06 +08:00
parent 7c3285ed5a
commit 088ff356f2
621 changed files with 1372 additions and 212 deletions

View File

@@ -69,19 +69,25 @@
<view class="detail-card"> <view class="detail-card">
<view class="card-header-v2"> <view class="card-header-v2">
<view class="card-header-main"> <view class="card-header-main">
<text class="operator">{{ item.titlePrefix }}{{ labels.personnelSuffix }}{{ fieldText(item, item.operator) }}</text> <template v-if="item.completed">
<text class="time">{{ fieldText(item, item.time) }}</text> <text class="operator">{{ item.titlePrefix }}{{ labels.personnelSuffix }}{{ fieldText(item, item.operator) }}</text>
<text class="time">{{ fieldText(item, item.time) }}</text>
</template>
<template v-else>
<text class="operator">{{ labels.executorPrefix }}{{ labels.personnelSuffix }}{{ fieldText(item, item.currentHandlerName) }}</text>
<text class="time status-pending">{{ labels.statusSuffix }}{{ PENDING_LABEL }}</text>
</template>
</view> </view>
<view <view
v-if="item.type === 'add' && item.content.levelName" v-if="item.completed && item.type === 'add' && item.content.levelName"
:class="['level-badge', getLevelTagClass(item.content)]" :class="['level-badge', getLevelTagClass(item.content)]"
> >
{{ item.content.levelName }} {{ item.content.levelName }}
</view> </view>
</view> </view>
<view class="card-divider"></view> <view v-if="item.completed" class="card-divider"></view>
<view class="card-body"> <view v-if="item.completed" class="card-body">
<block v-if="item.type === 'add'"> <block v-if="item.type === 'add'">
<view class="detail-row-v2"> <view class="detail-row-v2">
<text class="label">{{ labels.hazardCode }}</text> <text class="label">{{ labels.hazardCode }}</text>
@@ -646,6 +652,10 @@ const previewImages = (attachments, index) => {
line-height: 1.4; line-height: 1.4;
} }
.time.status-pending {
color: #e6a23c;
}
.level-badge { .level-badge {
flex-shrink: 0; flex-shrink: 0;
padding: 6rpx 16rpx; padding: 6rpx 16rpx;

View File

@@ -63,6 +63,16 @@ const resolveTaskKey = (node) => {
return node?.taskKey || node?.subProcessApprovalInfo?.taskKey || ''; return node?.taskKey || node?.subProcessApprovalInfo?.taskKey || '';
}; };
/** 未完成节点:从 currentHandler 解析当前执行人 */
export const resolveCurrentHandlerName = (currentHandler) => {
if (!currentHandler || typeof currentHandler !== 'object') {
return '';
}
return toDisplayText(currentHandler.handlerNames)
|| toDisplayText(currentHandler.assigneeName)
|| '';
};
/** null/undefined 等非对象值统一转为 {},避免默认参数对 null 不生效 */ /** null/undefined 等非对象值统一转为 {},避免默认参数对 null 不生效 */
const toSafeObject = (value) => (value && typeof value === 'object' ? value : {}); const toSafeObject = (value) => (value && typeof value === 'object' ? value : {});
@@ -336,6 +346,7 @@ export const mapProcessNodeToHistoryItem = (node) => {
titlePrefix: '处理', titlePrefix: '处理',
operator: '', operator: '',
time: '', time: '',
currentHandlerName: '',
content: {}, content: {},
flowTaskId: '', flowTaskId: '',
completed: true completed: true
@@ -354,6 +365,7 @@ export const mapProcessNodeToHistoryItem = (node) => {
titlePrefix: resolveTitlePrefix(rawType, displayType, node), titlePrefix: resolveTitlePrefix(rawType, displayType, node),
operator: resolveOperator(node, displayType), operator: resolveOperator(node, displayType),
time: resolveTime(node, displayType), time: resolveTime(node, displayType),
currentHandlerName: resolveCurrentHandlerName(node.currentHandler),
content: mapNodeContent(node, displayType), content: mapNodeContent(node, displayType),
flowTaskId: node.flowTaskId || '', flowTaskId: node.flowTaskId || '',
completed: isNodeCompleted(node) completed: isNodeCompleted(node)

View File

@@ -2,6 +2,8 @@ export const CHAIN_LABELS = {
loading: '加载中...', loading: '加载中...',
empty: '暂无流程记录', empty: '暂无流程记录',
personnelSuffix: '人员:', personnelSuffix: '人员:',
executorPrefix: '执行',
statusSuffix: '状态:',
hazardCode: '隐患编号', hazardCode: '隐患编号',
hazardTitle: '隐患标题', hazardTitle: '隐患标题',
checkSource: '检查形式', checkSource: '检查形式',

View File

@@ -82,17 +82,19 @@
</view> </view>
<view class="static-field">{{ nextStepDisplay }}</view> <view class="static-field">{{ nextStepDisplay }}</view>
<view class="flex margin-bottom margin-top"> <template v-if="showAssigneeSection">
<view class="text-gray">下一步处理人</view> <view class="flex margin-bottom margin-top">
<view class="text-red">*</view> <view class="text-gray">下一步处理人</view>
</view> <view class="text-red">*</view>
<view v-if="formData.result === 2" class="static-field">{{ rectifierDisplayName }}</view>
<view v-else class="select-trigger" @click="openAssigneePopup">
<view class="select-content" :class="{ 'text-gray': !selectedAssigneeName }">
{{ selectedAssigneeName || '请选择下一步处理人' }}
</view> </view>
<text class="cuIcon-unfold"></text> <view v-if="formData.result === 2" class="static-field">{{ rectifierDisplayName }}</view>
</view> <view v-else class="select-trigger" @click="openAssigneePopup">
<view class="select-content" :class="{ 'text-gray': !selectedAssigneeName }">
{{ selectedAssigneeName || '请选择下一步处理人' }}
</view>
<text class="cuIcon-unfold"></text>
</view>
</template>
<u-popup :show="showAssigneePopup" mode="bottom" round="20" @close="cancelAssigneeSelect"> <u-popup :show="showAssigneePopup" mode="bottom" round="20" @close="cancelAssigneeSelect">
<view class="user-popup"> <view class="user-popup">
@@ -302,6 +304,13 @@
const rectifierDisplayName = computed(() => rectifyData.rectifierName?.trim() || '暂无'); const rectifierDisplayName = computed(() => rectifyData.rectifierName?.trim() || '暂无');
// 通过且快速审批时无需选择下一步处理人
const showAssigneeSection = computed(() => {
if (formData.result === 2) return true;
if (formData.result === 1 && formData.quickApproveRadio === 'no') return true;
return false;
});
const selectedAssigneeIdentityId = ref(''); const selectedAssigneeIdentityId = ref('');
const selectedAssigneeName = ref(''); const selectedAssigneeName = ref('');
const pickerAssigneeIdentityId = ref(''); const pickerAssigneeIdentityId = ref('');

1
unpackage/dist/build/mp-weixin/app.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./common/vendor.js"),o=require("./uni_modules/uview-plus/index.js");Math;const t={onLaunch:function(){console.log("App Launch")},onShow:function(){console.log("App Show")},onHide:function(){console.log("App Hide")}};e.index.addInterceptor("chooseImage",{success(o){const t=["bmp","gif","jpg","jpeg","png"],n=[],p=[];let i=!1,s="";o.tempFiles.forEach(((e,c)=>{const l=(e.path||o.tempFilePaths[c]).split("?")[0].split(".").pop().toLowerCase();t.includes(l)?(p.push(e),n.push(o.tempFilePaths[c])):(i=!0,s=l)})),i&&e.index.showToast({title:`已过滤不支持的 .${s} 格式图片,请上传 png/jpg/jpeg/gif/bmp`,icon:"none",duration:3500}),o.tempFilePaths=n,o.tempFiles=p}});const n=["bmp","gif","jpg","jpeg","png","doc","docx","xls","xlsx","ppt","pptx","html","htm","txt","rar","zip","gz","bz2","mp4","avi","rmvb","pdf"],p=["qiniup.com","qbox.me"];function i(o){if(!o)return!0;const t=o.split("?")[0].split(".").pop().toLowerCase();return!!n.includes(t)||(e.index.showToast({title:`不支持 .${t} 格式,请上传合规的文件或图片`,icon:"none",duration:3e3}),!1)}function s(){const n=e.createSSRApp(t);return n.use(o.uviewPlus),{app:n}}e.index.addInterceptor("uploadFile",{invoke(e){const o=e.url||"";return p.some((e=>o.includes(e)))||o.includes("/frontend/attachment/upload"),!!i(e.filePath)&&e}}),o.setConfig({config:{loadFontOnce:!0}}),s().app.mount("#app"),exports.createApp=s;

91
unpackage/dist/build/mp-weixin/app.json vendored Normal file
View File

@@ -0,0 +1,91 @@
{
"pages": [
"pages/index/index",
"pages/map/map",
"pages/plandetail/plandetail",
"pages/Inspectionresult/Inspectionresult",
"pages/Inspectionresult/list",
"pages/Inspectionresult/detail",
"pages/membermanagemen/membermanagemen",
"pages/corporateInformation/corporateInformation",
"pages/editcompanInformation/editcompanInformation",
"pages/checklist/checklist",
"pages/checklist/detail",
"pages/editchecklist/editchecklist",
"pages/Inspectionlog/Inspectionlog",
"pages/Inspectionchecklist/Inspectionchecklist",
"pages/Idphotomanagement/Idphotomanagement",
"pages/hiddendanger/Inspection",
"pages/hiddendanger/add",
"pages/hiddendanger/view",
"pages/hiddendanger/detail2",
"pages/hiddendanger/process-chain",
"pages/hiddendanger/rectification",
"pages/hiddendanger/acceptance",
"pages/hiddendanger/acceptance-approval",
"pages/hiddendanger/assignment",
"pages/closeout/application",
"pages/closeout/apply",
"pages/closeout/approval",
"pages/closeout/leader-approval",
"pages/closeout/editor",
"pages/equipmentregistration/equipmentregistration",
"pages/area/management",
"pages/Inspectionwarning/Inspectionwarning",
"pages/personalcenter/my",
"pages/personalcenter/helpcenter",
"pages/personalcenter/notification",
"pages/personalcenter/settings",
"pages/personalcenter/account",
"pages/personalcenter/edit",
"pages/personalcenter/identity",
"pages/login/login",
"pages/login/reg",
"pages/login/enterprise",
"pages/login/success",
"pages/login/forget",
"pages/login/agreement"
],
"window": {
"navigationBarTextStyle": "white",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#007aff",
"backgroundColor": "#F8F8F8"
},
"tabBar": {
"color": "#999999",
"selectedColor": "#007aff",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "static/tabbar_icon/home_icon.png",
"selectedIconPath": "static/tabbar_icon/home_selectedIcon.png"
},
{
"pagePath": "pages/Inspectionwarning/Inspectionwarning",
"text": "预警",
"iconPath": "static/tabbar_icon/yujing_icon.png",
"selectedIconPath": "static/tabbar_icon/yujing_selectedIcon.png"
},
{
"pagePath": "pages/personalcenter/my",
"text": "我的",
"iconPath": "static/tabbar_icon/mine_icon.png",
"selectedIconPath": "static/tabbar_icon/mine_selectedIcon.png"
}
]
},
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于选择隐患位置"
}
},
"requiredPrivateInfos": [
"chooseLocation",
"getLocation"
],
"usingComponents": {}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";exports._imports_0="/static/home_icon/jianbianbeijing.png",exports._imports_0$1="/static/jianchabiao/biaodan.svg",exports._imports_0$2="/static/yinhuan_detail/status.png",exports._imports_0$3="/static/yujin/yujin_sousuo.png",exports._imports_0$4="/static/my/edit.png",exports._imports_0$5="/static/my/Customer service.png",exports._imports_0$6="/static/index/index_bg.png",exports._imports_0$7="/static/index/phone.png",exports._imports_0$8="/static/index/蒙版组 260.png",exports._imports_1="/static/yinhuan_detail/date.png",exports._imports_1$1="/static/yujin/yujin_tongji.png",exports._imports_1$2="/static/my/Notification.png",exports._imports_1$3="/static/my/Phone.png",exports._imports_1$4="/static/index/lock.png",exports._imports_2="/static/my/Account.png";

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";const e=require("../common/vendor.js"),o={__name:"AreaFormPopup",props:{visible:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1},editData:{type:Object,default:()=>({})},loading:{type:Boolean,default:!1}},emits:["update:visible","submit","close"],setup(o,{emit:a}){const t=o,l=a,n=e.reactive({name:"",color:"#D92121"}),i=[{name:"红色",value:"#D92121"},{name:"橙色",value:"#FF8822"},{name:"黄色",value:"#FFCC00"},{name:"蓝色",value:"#165DFF"}],r=i.map((e=>e.value)),c=e.computed((()=>{const e=i.find((e=>e.value===n.color));return e?`${e.name} ${e.value}`:n.color}));e.watch((()=>t.editData),(e=>{e&&Object.keys(e).length>0&&(n.name=e.name||"",n.color=(e=>{if(!e)return i[0].value;const o=String(e).toUpperCase();return r.find((e=>e.toUpperCase()===o))||i[0].value})(e.color))}),{immediate:!0,deep:!0}),e.watch((()=>t.visible),(e=>{e||u()}));const u=()=>{n.name="",n.color="#D92121"},s=()=>{l("update:visible",!1),l("close")},m=()=>{n.name?r.includes(n.color)?l("submit",{name:n.name,color:n.color}):e.index.showToast({title:"请从预设颜色中选择",icon:"none"}):e.index.showToast({title:"请输入区域名称",icon:"none"})};return(a,t)=>e.e({a:o.visible},o.visible?{b:e.t(o.isEdit?"编辑区域":"新增区域"),c:e.o(s),d:n.name,e:e.o((e=>n.name=e.detail.value)),f:n.color,g:e.t(c.value),h:e.f(i,((o,a,t)=>({a:n.color===o.value?1:"",b:o.value,c:e.t(o.name),d:o.value,e:e.o((e=>{return a=o.value,void(n.color=a);var a}),o.value)}))),i:e.o(s),j:e.o(m),k:o.loading,l:e.o((()=>{})),m:e.o(s),n:e.gei(a,"")}:{})}},a=e._export_sfc(o,[["__scopeId","data-v-737ed489"]]);wx.createComponent(a);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view wx:if="{{a}}" bindtap="{{m}}" class="{{['popup-mask', 'data-v-737ed489', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{n}}"><view class="popup-content data-v-737ed489" catchtap="{{l}}"><view class="popup-header data-v-737ed489"><view class="popup-title text-bold data-v-737ed489">{{b}}</view><view class="popup-close data-v-737ed489" bindtap="{{c}}">×</view></view><view class="popup-body data-v-737ed489"><view class="flex margin-bottom-sm data-v-737ed489"><view class="data-v-737ed489">区域名称</view><view class="text-red data-v-737ed489">*</view></view><input class="form-input data-v-737ed489" placeholder="请输入区域名称" value="{{d}}" bindinput="{{e}}"/><view class="flex margin-bottom-sm margin-top data-v-737ed489"><view class="data-v-737ed489">区域颜色</view><view class="text-red data-v-737ed489">*</view></view><view class="flex align-center margin-bottom-sm data-v-737ed489"><view class="color-preview data-v-737ed489" style="{{'background-color:' + f}}"></view><text class="margin-left-sm text-gray data-v-737ed489">{{g}}</text></view><view class="margin-bottom-sm text-gray data-v-737ed489">请选择颜色</view><view class="color-grid data-v-737ed489"><view wx:for="{{h}}" wx:for-item="item" wx:key="d" class="color-option data-v-737ed489" bindtap="{{item.e}}"><view class="{{['color-item', 'data-v-737ed489', item.a && 'color-item-active']}}" style="{{'background-color:' + item.b}}"></view><text class="color-label data-v-737ed489">{{item.c}}</text></view></view></view><view class="popup-footer data-v-737ed489"><button class="btn-cancel data-v-737ed489" bindtap="{{i}}">取消</button><button class="btn-confirm bg-blue data-v-737ed489" bindtap="{{j}}" loading="{{k}}">确定</button></view></view></view>

View File

@@ -0,0 +1 @@
.popup-mask.data-v-737ed489{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:999}.popup-content.data-v-737ed489{width:600rpx;background:#fff;border-radius:20rpx;overflow:hidden}.popup-header.data-v-737ed489{display:flex;justify-content:space-between;align-items:center;padding:30rpx;border-bottom:1rpx solid #eee}.popup-title.data-v-737ed489{font-size:32rpx}.popup-close.data-v-737ed489{font-size:40rpx;color:#999}.popup-body.data-v-737ed489{padding:30rpx}.popup-footer.data-v-737ed489{display:flex;padding:20rpx 30rpx 30rpx}.popup-footer button.data-v-737ed489{flex:1;height:80rpx;line-height:80rpx;border-radius:40rpx;font-size:30rpx;margin:0 10rpx}.popup-footer button.data-v-737ed489:after{border:none}.popup-footer .btn-cancel.data-v-737ed489{background:#f5f5f5;color:#666}.popup-footer .btn-confirm.data-v-737ed489{color:#fff}.form-input.data-v-737ed489{width:100%;height:70rpx;padding:0 20rpx;border:2rpx solid #dadbde;border-radius:8rpx;font-size:28rpx;box-sizing:border-box}.color-preview.data-v-737ed489{width:70rpx;height:70rpx;border-radius:8rpx;flex-shrink:0;border:2rpx solid #e5e5e5}.color-grid.data-v-737ed489{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24rpx 0}.color-option.data-v-737ed489{width:25%;display:flex;flex-direction:column;align-items:center}.color-item.data-v-737ed489{width:80rpx;height:80rpx;border-radius:12rpx;border:4rpx solid transparent;box-sizing:border-box}.color-label.data-v-737ed489{margin-top:12rpx;font-size:24rpx;color:#666}.color-item-active.data-v-737ed489{border-color:#333;box-shadow:0 0 0 4rpx rgba(0,0,0,.08)}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../request/api.js"),a=require("./flowAssigneeUtils.js");if(!Array){e.resolveComponent("u-popup")()}Math||(i+(()=>"../../uni_modules/uview-plus/components/u-popup/u-popup.js"))();const i=()=>"./FlowAssigneeTree.js",n={__name:"FlowAssigneePickerPopup",props:{show:{type:Boolean,default:!1},taskId:{type:String,default:""},pickerIdentityId:{type:String,default:""},pickerName:{type:String,default:""}},emits:["update:pickerIdentityId","update:pickerName","cancel","confirm"],setup(i,{emit:n}){const o=i,s=n,r=e.ref(!1),d=e.ref([]),u=e.ref(""),p=e.ref(""),l=e.computed((()=>{const e=a.findAssigneeUserInDeptTree(d.value,u.value);return e?a.formatAssigneeDisplayName(e):p.value}));e.watch((()=>o.show),(async i=>{i&&(u.value=o.pickerIdentityId||"",p.value=o.pickerName||"",await(async()=>{if(o.taskId){r.value=!0;try{const i=await t.getFlowApproverCandidates(o.taskId);0===i.code?d.value=a.normalizeApproverDeptTree(i.data):(d.value=[],e.index.showToast({title:i.msg||"获取处理人失败",icon:"none"}))}catch(i){console.error("获取处理人失败:",i),d.value=[],e.index.showToast({title:"获取处理人失败",icon:"none"})}finally{r.value=!1}}else d.value=[]})())}));const c=e=>{const t=a.resolveAssigneeIdentityId(e);t&&(u.value=t,p.value=a.formatAssigneeDisplayName(e),s("update:pickerIdentityId",t),s("update:pickerName",p.value))},v=()=>{s("cancel")},m=()=>{if(!u.value)return void e.index.showToast({title:"请选择下一步处理人",icon:"none"});const t=a.findAssigneeUserInDeptTree(d.value,u.value);if(!t)return void e.index.showToast({title:"所选身份无效,请重新选择",icon:"none"});const i=a.formatAssigneeDisplayName(t);s("update:pickerIdentityId",u.value),s("update:pickerName",i),s("confirm",{identityId:u.value,name:i,user:t})};return(t,a)=>e.e({a:e.o(v),b:i.pickerIdentityId},i.pickerIdentityId?{c:e.t(l.value)}:{},{d:r.value},r.value?{}:i.taskId?0===d.value.length?{}:{g:e.o(c),h:e.p({depts:d.value,"selected-identity-id":i.pickerIdentityId})}:{},{e:!i.taskId,f:0===d.value.length,i:e.o(v),j:e.o(m),k:e.o(v),l:e.p({show:i.show,mode:"bottom",round:"20"}),m:e.gei(t,"")})}},o=e._export_sfc(n,[["__scopeId","data-v-120ddf40"]]);wx.createComponent(o);

View File

@@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"u-popup": "../../uni_modules/uview-plus/components/u-popup/u-popup",
"flow-assignee-tree": "./FlowAssigneeTree"
}
}

View File

@@ -0,0 +1 @@
<u-popup wx:if="{{l}}" u-s="{{['d']}}" bindclose="{{k}}" u-i="120ddf40-0" bind:__l="__l" u-p="{{l}}" class="{{['data-v-120ddf40', virtualHostClass]}}" virtualHostClass="{{['data-v-120ddf40', virtualHostClass]}}" style="{{virtualHostStyle}}" virtualHostStyle="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" virtualHostHidden="{{virtualHostHidden || false}}" id="{{m}}" virtualHostId="{{m}}"><view class="user-popup data-v-120ddf40"><view class="popup-header data-v-120ddf40"><view class="popup-title text-bold data-v-120ddf40">选择下一步处理人</view><view class="popup-close data-v-120ddf40" bindtap="{{a}}">×</view></view><view wx:if="{{b}}" class="selected-summary data-v-120ddf40"><text class="summary-label data-v-120ddf40">已选:</text><text class="summary-text data-v-120ddf40">{{c}}</text></view><scroll-view class="user-list-scroll data-v-120ddf40" scroll-y><view wx:if="{{d}}" class="empty-tip data-v-120ddf40">加载中...</view><view wx:elif="{{e}}" class="empty-tip data-v-120ddf40">缺少任务ID无法加载处理人</view><view wx:elif="{{f}}" class="empty-tip data-v-120ddf40">暂无人员数据</view><flow-assignee-tree wx:else class="data-v-120ddf40" virtualHostClass="data-v-120ddf40" bindselect="{{g}}" u-i="120ddf40-1,120ddf40-0" bind:__l="__l" u-p="{{h||''}}"/></scroll-view><view class="popup-footer data-v-120ddf40"><button class="btn-cancel data-v-120ddf40" bindtap="{{i}}">取消</button><button class="btn-confirm bg-blue data-v-120ddf40" bindtap="{{j}}">确定</button></view></view></u-popup>

View File

@@ -0,0 +1 @@
.user-popup.data-v-120ddf40{background:#fff}.user-popup .popup-header.data-v-120ddf40{display:flex;justify-content:space-between;align-items:center;padding:30rpx;border-bottom:1rpx solid #eee}.user-popup .popup-header .popup-title.data-v-120ddf40{font-size:32rpx;color:#333}.user-popup .popup-header .popup-close.data-v-120ddf40{font-size:40rpx;color:#999;line-height:1}.user-popup .selected-summary.data-v-120ddf40{padding:16rpx 30rpx;background:#f5f7fa;border-bottom:1rpx solid #eee;font-size:24rpx;line-height:1.5}.user-popup .selected-summary .summary-label.data-v-120ddf40{color:#909399}.user-popup .selected-summary .summary-text.data-v-120ddf40{color:#333}.user-popup .user-list-scroll.data-v-120ddf40{max-height:600rpx;box-sizing:border-box}.user-popup .empty-tip.data-v-120ddf40{padding:80rpx 20rpx;text-align:center;color:#909399;font-size:26rpx}.user-popup .popup-footer.data-v-120ddf40{display:flex;gap:24rpx;padding:24rpx 30rpx;padding-bottom:calc(24rpx + env(safe-area-inset-bottom));background:#fff}.user-popup .popup-footer button.data-v-120ddf40{flex:1;height:80rpx;line-height:80rpx;border-radius:40rpx;font-size:30rpx;margin:0;padding:0}.user-popup .popup-footer button.data-v-120ddf40:after{border:none}.user-popup .popup-footer .btn-cancel.data-v-120ddf40{background:#fff;color:#2667e9;border:2rpx solid #2667E9}.user-popup .popup-footer .btn-confirm.data-v-120ddf40{color:#fff;border:none}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("./flowAssigneeUtils.js"),r={__name:"FlowAssigneeTree",props:{depts:{type:Array,default:()=>[]},selectedIdentityId:{type:String,default:""}},emits:["select"],setup(r,{emit:s}){const n=r,d=s,i=e.computed((()=>t.flattenApproverDeptTree(n.depts)));return(s,n)=>({a:e.f(i.value,((s,n,i)=>e.e({a:"dept"===s.type},"dept"===s.type?{b:e.t(s.deptName),c:24*s.level+20+"rpx"}:e.e({d:e.t(e.unref(t.formatAssigneeDisplayName)(s.user)),e:String(r.selectedIdentityId)===String(e.unref(t.resolveAssigneeIdentityId)(s.user))},(String(r.selectedIdentityId),String(e.unref(t.resolveAssigneeIdentityId)(s.user)),{}),{f:String(r.selectedIdentityId)===String(e.unref(t.resolveAssigneeIdentityId)(s.user))?1:"",g:24*s.level+20+"rpx",h:e.o((e=>{return t=s.user,void d("select",t);var t}),s.key)}),{i:s.key}))),b:e.gei(s,"")})}},s=e._export_sfc(r,[["__scopeId","data-v-0f6adde8"]]);wx.createComponent(s);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="{{['assignee-tree', 'data-v-0f6adde8', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{b}}"><block wx:for="{{a}}" wx:for-item="row" wx:key="i"><view wx:if="{{row.a}}" class="dept-node data-v-0f6adde8" style="{{'padding-left:' + row.c}}"><text class="dept-name data-v-0f6adde8">{{row.b}}</text></view><view wx:else class="{{['user-item', 'data-v-0f6adde8', row.f && 'active']}}" style="{{'padding-left:' + row.g}}" bindtap="{{row.h}}"><text class="user-item-text data-v-0f6adde8">{{row.d}}</text><text wx:if="{{row.e}}" class="cuIcon-check text-blue data-v-0f6adde8"></text></view></block></view>

View File

@@ -0,0 +1 @@
.dept-node.data-v-0f6adde8{padding:20rpx 20rpx 12rpx;font-size:26rpx;color:#909399;line-height:1.4}.dept-name.data-v-0f6adde8{font-weight:600}.user-item.data-v-0f6adde8{display:flex;align-items:center;justify-content:space-between;padding:24rpx 20rpx;border-bottom:1rpx solid #f5f5f5}.user-item.active .user-item-text.data-v-0f6adde8{color:#2667e9;font-weight:600}.user-item .user-item-text.data-v-0f6adde8{flex:1;font-size:28rpx;color:#333}

View File

@@ -0,0 +1 @@
"use strict";const e=e=>{if(!e)return"";const r=e.identityId??e.userIdentityId??e.userId??"";return""===r||null==r?"":String(r)},r=r=>{const t=e(r);return t?`identity-${t}`:`user-${r.userId||r.nickName||""}`},t=(r,s)=>{var n;if(!s||!Array.isArray(r))return null;for(const i of r){const r=(i.users||[]).find((r=>String(e(r))===String(s)));if(r)return r;if(null==(n=i.children)?void 0:n.length){const e=t(i.children,s);if(e)return e}}return null},s=(e,t=0)=>{var n;const i=[];if(!Array.isArray(e))return i;for(const a of e){i.push({type:"dept",key:`dept-${a.deptId??a.deptName??t}`,deptName:a.deptName||"",level:t});for(const e of a.users||[])i.push({type:"user",key:r(e),user:e,level:t+1});(null==(n=a.children)?void 0:n.length)&&i.push(...s(a.children,t+1))}return i};exports.findAssigneeUserInDeptTree=t,exports.flattenApproverDeptTree=s,exports.formatAssigneeDisplayName=e=>e?e.identityName?`${e.nickName||e.userName||""}_${e.identityName}`:e.postName?`${e.nickName||e.userName||""}_${e.postName}`:e.nickName||e.userName||e.name||"未知人员":"",exports.normalizeApproverDeptTree=e=>e?Array.isArray(e)?e:Array.isArray(e.records)?e.records:Array.isArray(e.list)?e.list:[]:[],exports.resolveAssigneeIdentityId=e;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
{
"component": true,
"usingComponents": {
"up-upload": "../../uni_modules/uview-plus/components/u-upload/u-upload",
"up-input": "../../uni_modules/uview-plus/components/u-input/u-input",
"up-textarea": "../../uni_modules/uview-plus/components/u-textarea/u-textarea",
"u-popup": "../../uni_modules/uview-plus/components/u-popup/u-popup"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js");if(!Array){e.resolveComponent("u-popup")()}Math||(a+(()=>"../../uni_modules/uview-plus/components/u-popup/u-popup.js"))();const a=()=>"./HazardFormPanel.js",o={__name:"HazardFormPopup",props:{show:{type:Boolean,default:!1},title:{type:String,default:"填写隐患信息"},mode:{type:String,default:"collect"},modelValue:{type:Object,default:null},extraParams:{type:Object,default:()=>({})},showDraftBanner:{type:Boolean,default:!1},bodyHeight:{type:String,default:""},canvasId:{type:String,default:"hazardFormWatermarkCanvas"}},emits:["update:show","update:modelValue","success","confirm","clear-draft"],setup(a,{expose:o,emit:l}){const t=a,r=l,u=e.computed({get:()=>t.show,set:e=>r("update:show",e)}),d=e.computed((()=>({title:t.title,mode:t.mode,modelValue:t.modelValue,extraParams:t.extraParams,showDraftBanner:t.showDraftBanner,bodyHeight:t.bodyHeight,canvasId:t.canvasId}))),n=()=>{u.value=!1},s=e.ref(null);return o({getPayload:(...e)=>{var a,o;return null==(o=null==(a=s.value)?void 0:a.getPayload)?void 0:o.call(a,...e)},applyPayload:(...e)=>{var a,o;return null==(o=null==(a=s.value)?void 0:a.applyPayload)?void 0:o.call(a,...e)},resetForm:(...e)=>{var a,o;return null==(o=null==(a=s.value)?void 0:a.resetForm)?void 0:o.call(a,...e)},validateForm:(...e)=>{var a,o;return null==(o=null==(a=s.value)?void 0:a.validateForm)?void 0:o.call(a,...e)}}),(a,o)=>({a:e.sr(s,"52d033ec-1,52d033ec-0",{k:"panelRef"}),b:e.o((e=>u.value=e)),c:e.o((e=>r("success",e))),d:e.o((e=>r("confirm",e))),e:e.o((e=>r("clear-draft"))),f:e.o((e=>u.value=!1)),g:e.p({...d.value,show:u.value}),h:e.o(n),i:e.o((e=>u.value=e)),j:e.p({mode:"center",round:"20","safe-area-inset-bottom":!1,show:u.value}),k:e.gei(a,"")})}};wx.createComponent(o);

View File

@@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"u-popup": "../../uni_modules/uview-plus/components/u-popup/u-popup",
"hazard-form-panel": "./HazardFormPanel"
}
}

View File

@@ -0,0 +1 @@
<u-popup wx:if="{{j}}" u-s="{{['d']}}" bindclose="{{h}}" u-i="52d033ec-0" bind:__l="__l" bindupdateShow="{{i}}" u-p="{{j}}" class="{{[virtualHostClass]}}" virtualHostClass="{{[virtualHostClass]}}" style="{{virtualHostStyle}}" virtualHostStyle="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" virtualHostHidden="{{virtualHostHidden || false}}" id="{{k}}" virtualHostId="{{k}}"><hazard-form-panel wx:if="{{g}}" class="r" virtualHostClass="r" u-r="panelRef" bindupdateShow="{{b}}" bindsuccess="{{c}}" bindconfirm="{{d}}" bindclearDraft="{{e}}" bindclose="{{f}}" u-i="52d033ec-1,52d033ec-0" bind:__l="__l" u-p="{{g}}"/></u-popup>

View File

@@ -0,0 +1 @@
"use strict";const t=require("../../utils/upload.js"),e=[{id:2,title:"一般隐患"},{id:3,title:"重大隐患"}],a=[{id:1,title:"部门检查"},{id:2,title:"督导检查"},{id:3,title:"企业自查"},{id:4,title:"行业互查"}];exports.AI_LEVEL_MAP={"轻微":0,"轻微隐患":0,"一般":0,"一般隐患":0,"重大":1,"重大隐患":1},exports.LEVEL_OPTIONS=e,exports.SOURCE_OPTIONS=a,exports.buildHiddenDangerParams=function(l,r={}){var i,d,n;const{formData:o,address:u,lng:s,lat:c,areaId:g,fileList:m}=l,I=null==(i=l.tagOptions)?void 0:i[o.tagIndex],f=o.tagId??(I?I.id:null);return{title:o.title,level:(null==(d=e[o.level])?void 0:d.id)||2,lng:s||0,lat:c||0,address:u||"",areaId:g||null,description:o.description||"",source:(null==(n=a[o.source])?void 0:n.title)||"",hazardSource:o.hazardSourceCode??null,tagId:f,attachments:(m||[]).filter((t=>"success"===t.status)).map((e=>t.buildAttachmentItem(e))),regulationId:o.regulationId||null,...r}},exports.createEmptyHazardPayload=function(){return{formData:{title:"",level:0,source:0,hazardSourceCode:null,hazardSourceName:"",description:"",tagIndex:0,tagId:null,regulationId:null,regulationName:""},address:"",lng:0,lat:0,areaId:"",areaName:"",fileList:[]}},exports.hasHazardFormContent=function(t){if(!t)return!1;const e=t.formData||{},a=t.fileList||[];return!!(e.title||e.description||e.regulationName||e.regulationId||null!=e.hazardSourceCode||e.hazardSourceName||t.address||t.areaId||t.areaName||a.length>0)},exports.hasValidHazardPayload=function(t){if(!t)return!1;const{formData:e,fileList:a}=t;return!!((null==e?void 0:e.title)&&(null==a?void 0:a.length)>0)};

View File

@@ -0,0 +1 @@
"use strict";require("../../common/vendor.js"),require("../../request/request.js");

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.hazard-detail-panel-v2.data-v-4e898db8{flex:1;min-height:0;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.loading-wrap.data-v-4e898db8,.empty-wrap.data-v-4e898db8{flex:1;display:flex;align-items:center;justify-content:center;min-height:0}.loading-text.data-v-4e898db8,.empty-text.data-v-4e898db8{font-size:28rpx;color:#909399}.detail-body.data-v-4e898db8{display:flex;gap:20rpx;align-items:stretch;overflow:hidden;box-sizing:border-box}.steps-card.data-v-4e898db8{width:140rpx;flex-shrink:0;background:#fff;border-radius:20rpx;box-sizing:border-box}.step-item.data-v-4e898db8{padding:0 12rpx}.step-track.data-v-4e898db8{display:flex;flex-direction:column;align-items:center;padding:28rpx 0 0}.step-dot.data-v-4e898db8{width:66rpx;height:66rpx;border-radius:50%;background:#f3f3f3;display:flex;align-items:center;justify-content:center;transition:background .2s}.step-dot--active.data-v-4e898db8{background:#2667e9}.step-icon.data-v-4e898db8{width:36rpx;height:36rpx}.step-label.data-v-4e898db8{margin-top:12rpx;font-size:24rpx;color:#999;line-height:1.2}.step-label--active.data-v-4e898db8{color:#2667e9;font-weight:600}.step-line.data-v-4e898db8{width:0;height:40rpx;margin:10rpx 0;border-left:2rpx dashed #dcdfe6}.content-column.data-v-4e898db8{flex:1;width:0;min-height:0;box-sizing:border-box}.content-scroll.data-v-4e898db8{width:100%;box-sizing:border-box}.node-section.data-v-4e898db8{box-sizing:border-box;padding:0;margin-bottom:24rpx}.node-section--last.data-v-4e898db8{padding-bottom:40rpx;margin-bottom:0}.detail-card-shell.data-v-4e898db8{border-radius:22rpx;padding:2rpx;background:transparent;transition:background .3s ease,box-shadow .3s ease}.detail-card-shell--active.data-v-4e898db8{background:linear-gradient(145deg,rgba(4,108,234,.48),rgba(38,103,233,.3),rgba(33,88,200,.16));box-shadow:0 8rpx 24rpx rgba(38,103,233,.12)}.detail-card.data-v-4e898db8{background:#fff;border-radius:20rpx;overflow:hidden;padding:28rpx 38rpx;box-sizing:border-box}.card-header-v2.data-v-4e898db8{display:flex;align-items:flex-start;justify-content:space-between;gap:16rpx;padding:0}.card-header-main.data-v-4e898db8{flex:1;min-width:0}.operator.data-v-4e898db8{font-size:28rpx;font-weight:600;color:#303133;line-height:1.5;word-break:break-all}.time.data-v-4e898db8{display:block;margin-top:8rpx;font-size:24rpx;color:#999;line-height:1.4}.level-badge.data-v-4e898db8{flex-shrink:0;padding:6rpx 16rpx;border-radius:8rpx;font-size:22rpx;font-weight:500;white-space:nowrap}.level-badge.level-normal.data-v-4e898db8{background:#fff7e6;border:2rpx solid #ffd591;color:#fa8c16}.level-badge.level-major.data-v-4e898db8{background:#fff1f0;border:2rpx solid #ffa39e;color:#f5222d}.card-divider.data-v-4e898db8{height:0;margin:20rpx 0;border-top:2rpx dashed #eee}.card-body.data-v-4e898db8{padding:0}.detail-row-v2.data-v-4e898db8{display:flex;align-items:flex-start;justify-content:flex-start;gap:24rpx;padding:18rpx 0}.detail-row-v2--block.data-v-4e898db8{flex-wrap:wrap}.label.data-v-4e898db8{flex-shrink:0;font-size:26rpx;color:#999;line-height:1.5}.value.data-v-4e898db8{flex:1;min-width:0;font-size:26rpx;color:#333;line-height:1.6;text-align:left;word-break:break-all}.value--inline.data-v-4e898db8{display:flex;align-items:center}.area-dot.data-v-4e898db8{width:20rpx;height:20rpx;border-radius:50%;margin-right:12rpx;flex-shrink:0}.level-tag.data-v-4e898db8{display:inline-flex;align-items:center;padding:4rpx 16rpx;border-radius:8rpx;font-size:24rpx;font-weight:500;line-height:1.4;white-space:nowrap}.level-normal.data-v-4e898db8{background:#fff7e6;border:2rpx solid #ffd591;color:#fa8c16}.level-major.data-v-4e898db8{background:#fff1f0;border:2rpx solid #ffa39e;color:#f5222d}.tag-badge.data-v-4e898db8{display:inline-flex;align-items:center;padding:4rpx 16rpx;border-radius:8rpx;font-size:24rpx;background:#eef3ff;border:2rpx solid #aac5fc;color:#2667e9}.attachment-list.data-v-4e898db8{display:flex;flex-wrap:wrap;gap:16rpx;flex:1;min-width:0}.attachment-img.data-v-4e898db8{width:160rpx;height:160rpx;border-radius:12rpx;background:#f5f7fa}.sign-img.data-v-4e898db8{width:300rpx;height:160rpx;border:1rpx solid #e4e7ed;border-radius:8rpx;background:#fafafa;flex:1;min-width:0;max-width:100%}.file-link.data-v-4e898db8{display:inline-block;padding:12rpx 20rpx;background:#f5f7fa;border:1rpx solid #e4e7ed;border-radius:8rpx;color:#2667e9;font-size:24rpx}.result-tag.data-v-4e898db8{padding:6rpx 16rpx;border-radius:6rpx;font-size:24rpx}.result-tag--pass.data-v-4e898db8{background:#f0f9eb;color:#67c23a}.result-tag--fail.data-v-4e898db8{background:#fef0f0;color:#f56c6c}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.hazard-process-chain-panel.data-v-0fa85334{flex:1;min-height:0;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.loading-wrap.data-v-0fa85334,.empty-wrap.data-v-0fa85334{flex:1;display:flex;align-items:center;justify-content:center;min-height:0}.loading-text.data-v-0fa85334,.empty-text.data-v-0fa85334{font-size:28rpx;color:#909399}.detail-body.data-v-0fa85334{display:flex;gap:20rpx;align-items:stretch;overflow:hidden;box-sizing:border-box}.steps-card.data-v-0fa85334{width:148rpx;flex-shrink:0;background:#fff;border-radius:20rpx;box-sizing:border-box}.step-item.data-v-0fa85334{padding:0 8rpx}.step-track.data-v-0fa85334{display:flex;flex-direction:column;align-items:center;padding:24rpx 0 0}.step-dot.data-v-0fa85334{width:66rpx;height:66rpx;border-radius:50%;background:#f3f3f3;display:flex;align-items:center;justify-content:center;transition:background .2s}.step-dot--active.data-v-0fa85334{background:#2667e9}.step-icon.data-v-0fa85334{width:36rpx;height:36rpx}.step-label.data-v-0fa85334{margin-top:10rpx;font-size:20rpx;color:#999;line-height:1.3;text-align:center;word-break:break-all}.step-label--active.data-v-0fa85334{color:#2667e9;font-weight:600}.step-line.data-v-0fa85334{width:0;height:36rpx;margin:8rpx 0;border-left:2rpx dashed #dcdfe6}.content-column.data-v-0fa85334{flex:1;width:0;min-height:0;box-sizing:border-box}.content-scroll.data-v-0fa85334{width:100%;box-sizing:border-box}.node-section.data-v-0fa85334{box-sizing:border-box;padding:0;margin-bottom:24rpx}.node-section--last.data-v-0fa85334{padding-bottom:40rpx;margin-bottom:0}.detail-card-shell.data-v-0fa85334{border-radius:22rpx;padding:2rpx;background:transparent;transition:background .3s ease,box-shadow .3s ease}.detail-card-shell--active.data-v-0fa85334{background:linear-gradient(145deg,rgba(4,108,234,.48),rgba(38,103,233,.3),rgba(33,88,200,.16));box-shadow:0 8rpx 24rpx rgba(38,103,233,.12)}.detail-card.data-v-0fa85334{background:#fff;border-radius:20rpx;overflow:hidden;padding:28rpx 38rpx;box-sizing:border-box}.card-header-v2.data-v-0fa85334{display:flex;align-items:flex-start;justify-content:space-between;gap:16rpx;padding:0}.card-header-main.data-v-0fa85334{flex:1;min-width:0}.operator.data-v-0fa85334{font-size:28rpx;font-weight:600;color:#303133;line-height:1.5;word-break:break-all}.time.data-v-0fa85334{display:block;margin-top:8rpx;font-size:24rpx;color:#999;line-height:1.4}.time.status-pending.data-v-0fa85334{color:#e6a23c}.level-badge.data-v-0fa85334{flex-shrink:0;padding:6rpx 16rpx;border-radius:8rpx;font-size:22rpx;font-weight:500;white-space:nowrap}.level-badge.level-normal.data-v-0fa85334{background:#fff7e6;border:2rpx solid #ffd591;color:#fa8c16}.level-badge.level-major.data-v-0fa85334{background:#fff1f0;border:2rpx solid #ffa39e;color:#f5222d}.card-divider.data-v-0fa85334{height:0;margin:20rpx 0;border-top:2rpx dashed #eee}.card-body.data-v-0fa85334{padding:0}.detail-row-v2.data-v-0fa85334{display:flex;align-items:flex-start;justify-content:flex-start;gap:24rpx;padding:18rpx 0}.detail-row-v2--block.data-v-0fa85334{flex-wrap:wrap}.label.data-v-0fa85334{flex-shrink:0;font-size:26rpx;color:#999;line-height:1.5}.value.data-v-0fa85334{flex:1;min-width:0;font-size:26rpx;color:#333;line-height:1.6;text-align:left;word-break:break-all}.value--pending.data-v-0fa85334{color:#e6a23c}.level-tag.data-v-0fa85334{display:inline-flex;align-items:center;padding:4rpx 16rpx;border-radius:8rpx;font-size:24rpx;font-weight:500;line-height:1.4;white-space:nowrap}.level-normal.data-v-0fa85334{background:#fff7e6;border:2rpx solid #ffd591;color:#fa8c16}.level-major.data-v-0fa85334{background:#fff1f0;border:2rpx solid #ffa39e;color:#f5222d}.attachment-list.data-v-0fa85334{display:flex;flex-wrap:wrap;gap:16rpx;flex:1;min-width:0}.attachment-img.data-v-0fa85334{width:160rpx;height:160rpx;border-radius:12rpx;background:#f5f7fa}.sign-img.data-v-0fa85334{width:300rpx;height:160rpx;border:1rpx solid #e4e7ed;border-radius:8rpx;background:#fafafa;flex:1;min-width:0;max-width:100%}.file-link.data-v-0fa85334{display:inline-block;padding:12rpx 20rpx;background:#f5f7fa;border:1rpx solid #e4e7ed;border-radius:8rpx;color:#2667e9;font-size:24rpx}.result-tag.data-v-0fa85334{padding:6rpx 16rpx;border-radius:6rpx;font-size:24rpx}.result-tag--pass.data-v-0fa85334{background:#f0f9eb;color:#67c23a}.result-tag--fail.data-v-0fa85334{background:#fef0f0;color:#f56c6c}

View File

@@ -0,0 +1 @@
"use strict";const e="submit",t="assign",a="rectify",r="verify",i="writeoff",s={1:"status-blue",2:"status-orange",3:"status-red",4:"status-yellow",5:"status-green"},n={"待交办":"status-blue","待整改":"status-orange","整改中":"status-orange","待验收":"status-red","待销号":"status-yellow","已完成":"status-green","已销号":"status-green"},o={2:"一般隐患",3:"重大隐患"};function m(e,t="-"){if(Array.isArray(e)&&e.length)return e.join("、");if("string"==typeof e&&e.trim()){const t=e.split(/[,,、]/).map((e=>e.trim())).filter(Boolean);return t.length?t.join("、"):e}return t}function c(e,t,a){(t||[]).forEach((t=>{if(!t)return;const s=t.verifyId??t.id;if(null!=s){if(a.has(s))return;a.add(s)}e.push(function(e){return!!e&&(2===e.type||"销号"===e.typeName)}(t)?function(e){return{type:i,nodeName:"销号",titlePrefix:"销号",operator:e.verifierName||"-",time:e.verifyTime||"-",content:{resultName:e.resultName||"-",remark:e.remark||"",attachments:e.attachments||[],signPath:e.signPath||"",writeoffDeptName:e.writeoffDeptName||"-"}}}(t):function(e){return{type:r,nodeName:"验收",titlePrefix:"验收",operator:e.verifierName||"-",time:e.verifyTime||"-",content:{resultName:e.resultName||"-",remark:e.remark||"",attachments:e.attachments||[],signPath:e.signPath||"",verifyDeptName:e.verifyDeptName||"-"}}}(t))}))}exports.formatNameList=m,exports.generateHazardHistory=function(r){if(!r)return[];const i=[];var s;return i.push({type:e,nodeName:"提交",titlePrefix:"提交",operator:r.reporterName||"-",time:r.createdAt||"-",content:{code:r.code||"-",title:r.title||"-",source:r.source||"-",hazardSourceName:r.hazardSourceName||"-",areaName:r.areaName||"-",areaColor:r.areaColor||"",address:r.address||"-",level:r.level,levelName:r.levelName||(s=r.level,o[s]||"未知"),tagName:r.tagName||"-",description:r.description||"-",attachments:r.attachments||[],legalBasis:r.legalBasis||r.regulationName||"-",reporterPhone:r.reporterPhone||"-",reportDeptName:r.reportDeptName||"-"}}),r.assignFlows&&r.assignFlows.length>0&&r.assignFlows.forEach((e=>{var r;e.assignId&&i.push({type:t,nodeName:"交办",titlePrefix:"交办",operator:e.assignerName||"-",time:e.assignTime||"-",content:{assigneeName:e.assigneeName||"-",deadline:e.deadline||"-",assignDeptName:e.assignDeptName||"-",assignRemark:e.assignRemark||"-",priorityName:e.priorityName||"-"}}),e.rectify&&i.push({type:a,nodeName:"整改",titlePrefix:"整改",operator:e.rectify.rectifierName||"-",time:e.rectify.rectifyTime||"-",content:{rectifyPlan:e.rectify.rectifyPlan||"-",rectifyResult:e.rectify.rectifyResult||"-",rectificationMeasures:e.rectify.rectificationMeasures||"-",controlMeasures:e.rectify.controlMeasures||"-",deadline:e.deadline||"-",rectifierNames:(r=e.rectify,r?Array.isArray(r.rectifierNames)&&r.rectifierNames.length?r.rectifierNames.join("、"):Array.isArray(r.memberNames)&&r.memberNames.length?r.memberNames.join("、"):m(r.rectifierName,"-"):"-"),managerNames:m(e.rectify.managerNames,"-"),planCost:e.rectify.planCost,actualCost:e.rectify.actualCost,attachments:e.rectify.attachments||[],signPath:e.rectify.signPath||"",rectifyStatusName:e.rectify.rectifyStatusName||"-"}});const s=new Set;c(i,e.verifies||[],s),c(i,function(e){return e.writeOffs||e.writeoffs||[]}(e),s)})),i},exports.getStatusClass=function(e,t){return t&&n[t]?n[t]:s[e]||""},exports.getStepIconPath=function(e,t=!1){const a={submit:"tijiao",assign:"jiaoban",rectify:"zhenggai",verify:"yanshou",writeoff:"xiaohao"}[e]||"tijiao";return"zhenggai"===a?t?"/static/yinhuan_detail/zhenggai_selected.png":"/static/yinhuan_detail/zhenggai__unselected.png":`/static/yinhuan_detail/${a}__${t?"selected":"unselected"}.png`};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";exports.CHAIN_LABELS={loading:"加载中...",empty:"暂无流程记录",personnelSuffix:"人员:",executorPrefix:"执行",statusSuffix:"状态:",hazardCode:"隐患编号",hazardTitle:"隐患标题",checkSource:"检查形式",hazardSource:"隐患来源",hazardArea:"隐患区域",address:"位置描述",hazardLevel:"隐患等级",hazardTag:"隐患标签",description:"问题描述",hazardAttachments:"隐患附件",legalBasis:"参考法规",assigneeName:"指定整改责任人",assignDeadline:"指定整改截至日期",assignStatus:"交办状态",rectifyStatus:"整改状态",rectifyPlan:"整改方案",rectifyResult:"整改结果",rectifyMeasures:"整改措施",controlMeasures:"管控措施",rectifierName:"整改责任人",managerNames:"管理人员",memberNames:"整改成员",planCost:"预计费用",actualCost:"实际费用",rectifyAttachments:"整改附件",rectifySign:"整改签字",verifyResult:"验收结果",pass:"通过",verifyRemark:"验收备注",verifyAttachments:"验收附件",verifySign:"验收签字",writeoffDeadline:"整改时限",responsibleDept:"治理责任单位",responsiblePerson:"主要负责人",mainTreatment:"主要治理内容",treatmentResult:"治理完成内容",selfVerify:"自行验收情况",applySign:"申请签字",approvalOpinion:"审批意见",approvalComment:"意见说明",smsReminder:"短信提醒",yes:"是",no:"否",approvalSign:"审批签字",attachmentFallback:"附件",yuan:"元"},exports.LEVEL_NAME_CLASS_MAP={"一般":"level-normal","一般隐患":"level-normal","重大":"level-major","重大隐患":"level-major"};

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),l=require("./hazardDetail.js");exports.useHazardDetailScroll=function(t,o){const n=e.getCurrentInstance(),u=(null==n?void 0:n.proxy)||n,r=e.ref([]),a=e.ref(0),i=e.ref([0]),c=e.ref(0),s=e.ref(""),v=e.ref(""),d=e.ref(!0),f=e.ref(!1);let h=null;const g=()=>{clearTimeout(h),h=setTimeout((()=>{r.value.length&&e.nextTick$1((()=>{const l=e.index.createSelectorQuery().in(u);l.select(".content-scroll").boundingClientRect(),l.select(".content-scroll").scrollOffset(),l.selectAll(".node-section").boundingClientRect(),l.exec((e=>{const l=null==e?void 0:e[0],t=null==e?void 0:e[1],o=(null==e?void 0:e[2])||[];if(!l||!o.length)return;c.value=l.height||0;const n=(null==t?void 0:t.scrollTop)||0;i.value=o.map((e=>e.top-l.top+n))}))}))}),80)};return e.watch((()=>"function"==typeof o?o():null==o?void 0:o.value),(e=>{e||(g(),setTimeout(g,300))})),e.watch((()=>"function"==typeof t?t():null==t?void 0:t.value),(e=>{return t=e,r.value=l.generateHazardHistory(t),a.value=0,s.value="",g(),void setTimeout(g,300);var t}),{immediate:!0,deep:!0}),e.watch(a,(e=>{v.value="hazard-step-"+e,setTimeout((()=>{v.value=""}),300)})),e.watch((()=>r.value.length),(()=>g())),e.onReady((()=>{g(),setTimeout(g,300)})),{historyList:r,activeIndex:a,contentScrollIntoView:s,stepScrollIntoView:v,scrollWithAnimation:d,onContentScroll:e=>{if(f.value)return;const{scrollTop:l=0,scrollHeight:t=0}=e.detail||{};((e,l=0)=>{const t=r.value.length;if(!t)return;if(l>0&&c.value>0&&e+c.value>=l-60)return void(a.value!==t-1&&(a.value=t-1));const o=i.value;if(!o.length)return;let n=0;for(let u=o.length-1;u>=0;u--)if(e>=o[u]-80){n=u;break}n!==a.value&&(a.value=n)})(l,t),g()},onScrollToLower:()=>{const e=r.value.length;e>0&&a.value!==e-1&&(a.value=e-1)},scrollToNode:e=>{e<0||e>=r.value.length||(f.value=!0,d.value=!0,a.value=e,s.value="hazard-node-"+e,setTimeout((()=>{s.value="",f.value=!1,g()}),350))},scheduleMeasureLayout:g}};

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),l=require("./processChain.js");exports.useProcessChainScroll=function(t,o){const n=e.getCurrentInstance(),u=(null==n?void 0:n.proxy)||n,r=e.ref([]),c=e.ref(0),s=e.ref([0]),i=e.ref(0),a=e.ref(""),v=e.ref(""),d=e.ref(!0),f=e.ref(!1);let h=null;const p=()=>{clearTimeout(h),h=setTimeout((()=>{r.value.length&&e.nextTick$1((()=>{const l=e.index.createSelectorQuery().in(u);l.select(".content-scroll").boundingClientRect(),l.select(".content-scroll").scrollOffset(),l.selectAll(".node-section").boundingClientRect(),l.exec((e=>{const l=null==e?void 0:e[0],t=null==e?void 0:e[1],o=(null==e?void 0:e[2])||[];if(!l||!o.length)return;i.value=l.height||0;const n=(null==t?void 0:t.scrollTop)||0;s.value=o.map((e=>e.top-l.top+n))}))}))}),80)};return e.watch((()=>"function"==typeof o?o():null==o?void 0:o.value),(e=>{e||(p(),setTimeout(p,300))})),e.watch((()=>"function"==typeof t?t():null==t?void 0:t.value),(e=>(e=>{const t=(null==e?void 0:e.nodes)||[];r.value=l.mapProcessChainNodes(t),c.value=0,a.value="",p(),setTimeout(p,300)})(e)),{immediate:!0,deep:!0}),e.watch(c,(e=>{v.value="process-step-"+e,setTimeout((()=>{v.value=""}),300)})),e.watch((()=>r.value.length),(()=>p())),e.onReady((()=>{p(),setTimeout(p,300)})),{historyList:r,activeIndex:c,contentScrollIntoView:a,stepScrollIntoView:v,scrollWithAnimation:d,onContentScroll:e=>{if(f.value)return;const{scrollTop:l=0,scrollHeight:t=0}=e.detail||{};((e,l=0)=>{const t=r.value.length;if(!t)return;if(l>0&&i.value>0&&e+i.value>=l-60)return void(c.value!==t-1&&(c.value=t-1));const o=s.value;if(!o.length)return;let n=0;for(let u=o.length-1;u>=0;u--)if(e>=o[u]-80){n=u;break}n!==c.value&&(c.value=n)})(l,t),p()},onScrollToLower:()=>{const e=r.value.length;e>0&&c.value!==e-1&&(c.value=e-1)},scrollToNode:e=>{e<0||e>=r.value.length||(f.value=!0,d.value=!0,c.value=e,a.value="process-node-"+e,setTimeout((()=>{a.value="",f.value=!1,p()}),350))},scheduleMeasureLayout:p}};

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../../../common/vendor.js");Math||o();const o=()=>"../wd-icon/wd-icon.js",n=e.defineComponent({name:"wd-button",options:{addGlobalClass:!0,virtualHost:!0,styleIsolation:"shared"},props:e.buttonProps,emits:["click","getuserinfo","contact","getphonenumber","getrealtimephonenumber","error","launchapp","opensetting","chooseavatar","agreeprivacyauthorization"],setup(o,{emit:n}){const a=o,t=n,i=e.ref(20),s=e.ref(70),r=e.ref(""),c=e.computed((()=>`background-image: url(${r.value});`)),l=e.computed((()=>a.disabled||a.loading?void 0:a.openType));function d(e){a.disabled||a.loading||t("click",e)}function u(e){"phoneNumber"===a.scope?g(e):"userInfo"===a.scope&&p(e)}function p(e){t("getuserinfo",e.detail)}function f(e){t("contact",e.detail)}function g(e){t("getphonenumber",e.detail)}function m(e){t("getrealtimephonenumber",e.detail)}function b(e){t("error",e.detail)}function h(e){t("launchapp",e.detail)}function v(e){t("opensetting",e.detail)}function w(e){t("chooseavatar",e.detail)}function k(e){t("agreeprivacyauthorization",e.detail)}return e.watch((()=>a.loading),(()=>{!function(){const{loadingColor:o,type:n,plain:t}=a;let i=o;if(!i)switch(n){case"primary":i="#4D80F0";break;case"success":i="#34d19d";break;case"info":case"default":i="#333";break;case"warning":i="#f0883a";break;case"error":i="#fa4350"}const s=((e="#4D80F0",o=!0)=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42 42"><defs><linearGradient x1="100%" y1="0%" x2="0%" y2="0%" id="a"><stop stop-color="${o?e:"#fff"}" offset="0%" stop-opacity="0"/><stop stop-color="${o?e:"#fff"}" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M21 1c11.046 0 20 8.954 20 20s-8.954 20-20 20S1 32.046 1 21 9.954 1 21 1zm0 7C13.82 8 8 13.82 8 21s5.82 13 13 13 13-5.82 13-13S28.18 8 21 8z" fill="${o?"#fff":e}"/><path d="M4.599 21c0 9.044 7.332 16.376 16.376 16.376 9.045 0 16.376-7.332 16.376-16.376" stroke="url(#a)" stroke-width="3.5" stroke-linecap="round"/></g></svg>`)(i,!t);r.value=`"data:image/svg+xml;base64,${e.encode(s)}"`}()}),{deep:!0,immediate:!0}),(o,n)=>e.e({a:o.loading},o.loading?{b:e.s(c.value)}:o.icon?{d:e.p({"custom-class":"wd-button__icon",name:o.icon,classPrefix:o.classPrefix})}:{},{c:o.icon,e:e.gei(o,o.buttonId),f:""+(o.disabled||o.loading?"":"wd-button--active"),g:e.s(o.customStyle),h:e.n("is-"+o.type),i:e.n("is-"+o.size),j:e.n(o.round?"is-round":""),k:e.n(o.hairline?"is-hairline":""),l:e.n(o.plain?"is-plain":""),m:e.n(o.disabled?"is-disabled":""),n:e.n(o.block?"is-block":""),o:e.n(o.loading?"is-loading":""),p:e.n(o.customClass),q:i.value,r:s.value,s:l.value,t:o.sendMessageTitle,v:o.sendMessagePath,w:o.sendMessageImg,x:o.appParameter,y:o.showMessageCard,z:o.sessionFrom,A:o.lang,B:o.hoverStopPropagation,C:o.scope,D:e.o(d),E:e.o(u),F:e.o(p),G:e.o(f),H:e.o(g),I:e.o(m),J:e.o(b),K:e.o(h),L:e.o(v),M:e.o(w),N:e.o(k)})}}),a=e._export_sfc(n,[["__scopeId","data-v-161f130c"]]);wx.createComponent(a);

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"wd-icon": "../wd-icon/wd-icon"
}
}

View File

@@ -0,0 +1 @@
<button id="{{e}}" hover-class="{{f}}" style="{{g + ';' + virtualHostStyle}}" class="{{['data-v-161f130c', 'wd-button', h, i, j, k, l, m, n, o, p, virtualHostClass]}}" hover-start-time="{{q}}" hover-stay-time="{{r}}" open-type="{{s}}" send-message-title="{{t}}" send-message-path="{{v}}" send-message-img="{{w}}" app-parameter="{{x}}" show-message-card="{{y}}" session-from="{{z}}" lang="{{A}}" hover-stop-propagation="{{B}}" scope="{{C}}" bindtap="{{D}}" bindgetAuthorize="{{E}}" bindgetuserinfo="{{F}}" bindcontact="{{G}}" bindgetphonenumber="{{H}}" bindgetrealtimephonenumber="{{I}}" binderror="{{J}}" bindlaunchapp="{{K}}" bindopensetting="{{L}}" bindchooseavatar="{{M}}" bindagreeprivacyauthorization="{{N}}" hidden="{{virtualHostHidden || false}}"><view class="wd-button__content data-v-161f130c"><view wx:if="{{a}}" class="wd-button__loading data-v-161f130c"><view class="wd-button__loading-svg data-v-161f130c" style="{{b}}"></view></view><wd-icon wx:elif="{{c}}" class="data-v-161f130c" virtualHostClass="data-v-161f130c" u-i="161f130c-0" bind:__l="__l" u-p="{{d}}"></wd-icon><view class="wd-button__text data-v-161f130c"><slot/></view></view></button>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../../../common/vendor.js"),o=e.defineComponent({name:"wd-icon",options:{virtualHost:!0,addGlobalClass:!0,styleIsolation:"shared"},props:e.iconProps,emits:["click","touch"],setup(o,{emit:t}){const s=o,c=t,n=e.computed((()=>e.isDef(s.name)&&s.name.includes("/"))),a=e.computed((()=>{const e=s.classPrefix;return`${e} ${s.customClass} ${n.value?"wd-icon--image":e+"-"+s.name}`})),i=e.computed((()=>{const o={};return s.color&&(o.color=s.color),s.size&&(o["font-size"]=e.addUnit(s.size)),`${e.objToStyle(o)} ${s.customStyle}`}));function l(e){c("click",e)}return(o,t)=>e.e({a:n.value},n.value?{b:o.name}:{},{c:e.o(l),d:e.n(a.value),e:e.s(i.value),f:e.gei(o,"")})}}),t=e._export_sfc(o,[["__scopeId","data-v-bef80b7c"]]);wx.createComponent(t);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view bindtap="{{c}}" class="{{['data-v-bef80b7c', d, virtualHostClass]}}" style="{{e + ';' + virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{f}}"><image wx:if="{{a}}" class="wd-icon__image data-v-bef80b7c" src="{{b}}"></image></view>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"wd-button": "../wd-button/wd-button"
}
}

View File

@@ -0,0 +1 @@
<view class="{{['wd-signature', 'data-v-5e53ec40', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{y}}"><view class="wd-signature__content data-v-5e53ec40"><block wx:if="{{r0}}"><canvas class="wd-signature__content-canvas data-v-5e53ec40" style="{{a}}" width="{{b}}" height="{{c}}" canvas-id="{{d}}" id="{{e}}" disable-scroll="{{f}}" bindtouchstart="{{g}}" bindtouchend="{{h}}" bindtouchmove="{{i}}" type="2d"/></block></view><view class="wd-signature__footer data-v-5e53ec40"><block wx:if="{{$slots.footer}}"><slot name="footer"></slot></block><block wx:else><block wx:if="{{j}}"><wd-button wx:if="{{m}}" class="data-v-5e53ec40" virtualHostClass="data-v-5e53ec40" u-s="{{['d']}}" bindclick="{{l}}" u-i="5e53ec40-0" bind:__l="__l" u-p="{{m}}">{{k}}</wd-button><wd-button wx:if="{{p}}" class="data-v-5e53ec40" virtualHostClass="data-v-5e53ec40" u-s="{{['d']}}" bindclick="{{o}}" u-i="5e53ec40-1" bind:__l="__l" u-p="{{p}}">{{n}}</wd-button></block><wd-button wx:if="{{s}}" class="data-v-5e53ec40" virtualHostClass="data-v-5e53ec40" u-s="{{['d']}}" bindclick="{{r}}" u-i="5e53ec40-2" bind:__l="__l" u-p="{{s}}">{{q}}</wd-button><wd-button wx:if="{{w}}" class="data-v-5e53ec40" virtualHostClass="data-v-5e53ec40" u-s="{{['d']}}" bindclick="{{v}}" u-i="5e53ec40-3" bind:__l="__l" u-p="{{w}}">{{t}}</wd-button></block></view></view>

View File

@@ -0,0 +1 @@
.wd-signature__content.data-v-5e53ec40{justify-content:center;align-items:center;display:flex;overflow:hidden;background:var(--wot-signature-bg, var(--wot-color-white, white));border-radius:var(--wot-signature-radius, 4px);border:var(--wot-signature-border, 1px solid var(--wot-color-gray-5, #c8c9cc))}.wd-signature__content-canvas.data-v-5e53ec40{width:100%}.wd-signature__footer.data-v-5e53ec40{margin-top:var(--wot-signature-footer-margin-top, 8px);justify-content:flex-end;display:flex}.wd-signature__footer.data-v-5e53ec40 .wd-button{margin-left:var(--wot-signature-button-margin-left, 8px)}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
{
"navigationBarTitleText": "证件照管理",
"usingComponents": {
"u-popup": "../../uni_modules/uview-plus/components/u-popup/u-popup",
"u-datetime-picker": "../../uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker",
"u-modal": "../../uni_modules/uview-plus/components/u-modal/u-modal"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.page.data-v-5f64e04d{min-height:100vh;background:#ebf2fc;padding-bottom:120rpx}.license-list.data-v-5f64e04d{padding-bottom:20rpx}.license-item.data-v-5f64e04d{background:#fff;border-radius:16rpx;padding:24rpx;margin-bottom:20rpx;box-shadow:0 2rpx 12rpx rgba(0,0,0,.05)}.license-header.data-v-5f64e04d{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx;padding-bottom:16rpx;border-bottom:1rpx solid #f0f0f0}.license-type.data-v-5f64e04d{font-size:32rpx;font-weight:700;color:#333}.license-actions.data-v-5f64e04d{display:flex;gap:20rpx}.action-btn.data-v-5f64e04d{font-size:28rpx;padding:8rpx 16rpx}.license-detail.data-v-5f64e04d{margin-bottom:16rpx}.detail-row.data-v-5f64e04d{display:flex;margin-bottom:12rpx;font-size:28rpx}.detail-row .label.data-v-5f64e04d{color:#999;width:160rpx;flex-shrink:0}.detail-row .value.data-v-5f64e04d{color:#333;flex:1}.license-photo.data-v-5f64e04d{width:200rpx;height:150rpx;border-radius:8rpx;overflow:hidden}.license-photo image.data-v-5f64e04d{width:100%;height:100%}.empty-state.data-v-5f64e04d{padding:200rpx 0;text-align:center}.add-btn.data-v-5f64e04d{position:fixed;bottom:40rpx;left:30rpx;right:30rpx;height:88rpx;line-height:88rpx;border-radius:44rpx;font-size:32rpx}.popup-content.data-v-5f64e04d{width:600rpx;background:#fff;border-radius:20rpx;padding:30rpx}.popup-header.data-v-5f64e04d{display:flex;justify-content:space-between;align-items:center;margin-bottom:30rpx}.popup-title.data-v-5f64e04d{font-size:34rpx;color:#333}.popup-close.data-v-5f64e04d{font-size:48rpx;color:#999;line-height:1}.popup-body.data-v-5f64e04d{max-height:700rpx;overflow-y:auto}.form-item.data-v-5f64e04d{margin-bottom:24rpx}.form-label.data-v-5f64e04d{font-size:28rpx;color:#333;margin-bottom:12rpx}.form-input.data-v-5f64e04d{width:100%;height:80rpx;border:2rpx solid #E5E5E5;border-radius:12rpx;padding:0 24rpx;font-size:28rpx;box-sizing:border-box}.form-select.data-v-5f64e04d{display:flex;align-items:center;line-height:80rpx}.upload-box.data-v-5f64e04d{width:200rpx;height:200rpx;border:2rpx dashed #ccc;border-radius:12rpx;display:flex;align-items:center;justify-content:center;position:relative}.upload-add.data-v-5f64e04d{display:flex;flex-direction:column;align-items:center}.upload-icon.data-v-5f64e04d{font-size:60rpx;color:#999}.upload-text.data-v-5f64e04d{font-size:24rpx;color:#999;margin-top:8rpx}.upload-preview.data-v-5f64e04d{width:100%;height:100%;position:relative}.upload-img.data-v-5f64e04d{width:100%;height:100%;border-radius:12rpx}.upload-delete.data-v-5f64e04d{position:absolute;top:-16rpx;right:-16rpx;width:40rpx;height:40rpx;background:#ff4d4f;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:28rpx}.popup-footer.data-v-5f64e04d{display:flex;justify-content:center;gap:30rpx;margin-top:40rpx}.btn-cancel.data-v-5f64e04d{flex:1;height:80rpx;line-height:80rpx;border:2rpx solid #E5E5E5;border-radius:40rpx;background:#fff;color:#333;font-size:30rpx}.btn-confirm.data-v-5f64e04d{flex:1;height:80rpx;line-height:80rpx;border-radius:40rpx;color:#fff;font-size:30rpx}.dept-popup.data-v-5f64e04d{width:600rpx;background:#fff;border-radius:20rpx;padding:30rpx}.dept-list.data-v-5f64e04d{max-height:400rpx;overflow-y:auto;margin-bottom:30rpx}.dept-item.data-v-5f64e04d{display:flex;align-items:center;padding:24rpx;border:2rpx solid #E5E5E5;border-radius:12rpx;margin-bottom:16rpx}.dept-checkbox.data-v-5f64e04d{width:36rpx;height:36rpx;border:2rpx solid #ccc;border-radius:6rpx;margin-right:20rpx;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dept-checkbox-active.data-v-5f64e04d{background:#2667e9;border-color:#2667e9;color:#fff}.dept-name.data-v-5f64e04d{font-size:28rpx;color:#333}.btn-dept-confirm.data-v-5f64e04d{width:100%;height:80rpx;line-height:80rpx;border-radius:40rpx;color:#fff;font-size:30rpx}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),r={};const n=e._export_sfc(r,[["render",function(r,n){return{a:e.gei(r,"")}}]]);wx.createPage(n);

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "检查清单",
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="{{['padding', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{a}}"><view class="text-bold text-black">检查清单预览</view><view class="flex margin-bottom"><view class="text-gray">计划名称:</view><view>和谐矿业每日巡检</view></view><view class="flex margin-bottom"><view class="text-gray">检查时间:</view><view>2025-11-19 10:18:40</view></view><view class="flex margin-bottom"><view class="text-gray">检查人员:</view><view>18174379303</view></view><image></image><view class="flex margin-bottom"><view>被检查单位:</view><view></view></view><view class="flex margin-bottom"><view>检查人员:</view><view></view></view><view class="flex margin-bottom"><view>上次检查情况:</view><view></view></view><view class="flex margin-bottom"><view>本次检查情况:</view><view></view></view><view class="flex margin-bottom"><view>检查日期:</view><view>2025-11-19 10:18:40</view></view><view class="flex justify-between"><view class="flex text-center align-center"><button class="bg-blue">缩小</button><view>50%</view><button class="bg-blue">放大</button></view><button class="lg cu-btn">重置</button></view></view>

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),c={__name:"Inspectionlog",setup:c=>(c,s)=>({a:e.o((c=>{e.index.navigateTo({url:"/pages/Inspectionchecklist/Inspectionchecklist"})})),b:e.gei(c,"")})},s=e._export_sfc(c,[["__scopeId","data-v-fa142cd8"]]);wx.createPage(s);

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "检查记录",
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="{{['page', 'padding', 'data-v-fa142cd8', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{b}}"><view class="padding bg-white radius list data-v-fa142cd8"><view class="text-bold margin-bottom text-black data-v-fa142cd8">和谐矿业每日巡检</view><view class="flex margin-bottom data-v-fa142cd8"><view class="text-gray data-v-fa142cd8">检查时间:</view><view class="data-v-fa142cd8">2025-11-19 10:18:40</view></view><view class="flex margin-bottom data-v-fa142cd8"><view class="text-gray data-v-fa142cd8">检查人员:</view><view class="data-v-fa142cd8">18174379303</view></view><view class="flex margin-bottom data-v-fa142cd8"><view class="text-gray data-v-fa142cd8">隐患数量:</view><view class="data-v-fa142cd8">1</view></view><view class="flex margin-bottom data-v-fa142cd8"><view class="text-gray data-v-fa142cd8">备注:</view><view class="data-v-fa142cd8">可以</view></view><view class="flex justify-between data-v-fa142cd8"><view class="data-v-fa142cd8"></view><button class="bg-blue round cu-btn lg data-v-fa142cd8" bindtap="{{a}}">预览清单</button></view></view></view>

View File

@@ -0,0 +1 @@
.page.data-v-fa142cd8{min-height:100vh;background:#ebf2fc}.list.data-v-fa142cd8{background:#fff;box-shadow:0 2rpx 6rpx 2rpx rgba(0,0,0,.08);border-left:5px solid #2667E9;border-radius:20rpx;padding:20rpx}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
{
"navigationBarTitleText": "检查结果",
"usingComponents": {
"u-radio": "../../uni_modules/uview-plus/components/u-radio/u-radio",
"u-radio-group": "../../uni_modules/uview-plus/components/u-radio-group/u-radio-group",
"up-textarea": "../../uni_modules/uview-plus/components/u-textarea/u-textarea",
"hazard-form-popup": "../../components/hazard/HazardFormPopup"
}
}

View File

@@ -0,0 +1 @@
<view class="{{['page', 'padding', 'data-v-c5c09ac6', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{K}}"><view wx:if="{{a}}" class="progress-bar data-v-c5c09ac6"><view class="progress-text data-v-c5c09ac6"><text class="current-index data-v-c5c09ac6">第 {{b}} 个问题</text><text class="total-count data-v-c5c09ac6"> / 共 {{c}} 个</text></view><view class="progress-line data-v-c5c09ac6"><view class="progress-inner data-v-c5c09ac6" style="{{'width:' + d}}"></view></view></view><view class="padding bg-white radius data-v-c5c09ac6"><view class="text-bold data-v-c5c09ac6">{{e}}</view><view class="margin-top data-v-c5c09ac6"><rich-text class="data-v-c5c09ac6" nodes="{{f}}"></rich-text></view><view class="margin-top data-v-c5c09ac6"><u-radio-group wx:if="{{j}}" class="data-v-c5c09ac6" virtualHostClass="data-v-c5c09ac6" u-s="{{['d']}}" bindchange="{{h}}" u-i="c5c09ac6-0" bind:__l="__l" bindupdateModelValue="{{i}}" u-p="{{j}}"><u-radio wx:for="{{g}}" wx:for-item="item" wx:key="a" class="data-v-c5c09ac6" virtualHostClass="data-v-c5c09ac6" bindchange="{{item.b}}" u-i="{{item.c}}" bind:__l="__l" u-p="{{item.d}}"></u-radio></u-radio-group></view><view wx:if="{{k}}" class="hazard-section margin-top data-v-c5c09ac6"><view class="hazard-tip data-v-c5c09ac6"><text class="cuIcon-warn text-yellow margin-right-xs data-v-c5c09ac6"></text><text class="text-orange data-v-c5c09ac6">检查结果为异常,需填写隐患信息</text></view><view wx:if="{{l}}" class="hazard-btn data-v-c5c09ac6" bindtap="{{m}}"><text class="text-blue data-v-c5c09ac6">填写隐患信息</text></view><view wx:else class="hazard-card data-v-c5c09ac6"><view class="card-header data-v-c5c09ac6"><view class="text-bold text-black data-v-c5c09ac6">{{n}}</view><view class="{{['level-tag', 'data-v-c5c09ac6', p && 'level-minor', q && 'level-normal', r && 'level-major']}}">{{o}}</view></view><view class="card-body data-v-c5c09ac6"><view class="info-row data-v-c5c09ac6"><text class="text-gray data-v-c5c09ac6">检查形式:</text><text class="data-v-c5c09ac6">{{s}}</text></view><view class="info-row data-v-c5c09ac6"><text class="text-gray data-v-c5c09ac6">隐患来源:</text><text class="data-v-c5c09ac6">{{t}}</text></view><view class="info-row data-v-c5c09ac6"><text class="text-gray data-v-c5c09ac6">隐患位置:</text><text class="data-v-c5c09ac6">{{v}}</text></view><view class="info-row data-v-c5c09ac6"><text class="text-gray data-v-c5c09ac6">隐患描述:</text><text class="description-text data-v-c5c09ac6">{{w}}</text></view><view wx:if="{{x}}" class="info-row data-v-c5c09ac6"><text class="text-gray data-v-c5c09ac6">附件:</text><text class="data-v-c5c09ac6">{{y}}个文件</text></view></view><view class="card-footer data-v-c5c09ac6"><button class="btn-edit data-v-c5c09ac6" bindtap="{{z}}">修改</button><button class="btn-clear data-v-c5c09ac6" bindtap="{{A}}">清除</button></view></view></view><view class="margin-top data-v-c5c09ac6"><up-textarea wx:if="{{C}}" class="data-v-c5c09ac6" virtualHostClass="data-v-c5c09ac6" u-i="c5c09ac6-2" bind:__l="__l" bindupdateModelValue="{{B}}" u-p="{{C}}"></up-textarea></view></view><button class="bg-blue round margin-top-xl data-v-c5c09ac6" bindtap="{{D}}">提交</button><hazard-form-popup wx:if="{{J}}" class="r data-v-c5c09ac6" virtualHostClass="r data-v-c5c09ac6" u-r="hazardFormRef" bindconfirm="{{F}}" bindclearDraft="{{G}}" u-i="c5c09ac6-3" bind:__l="__l" bindupdateShow="{{H}}" bindupdateModelValue="{{I}}" u-p="{{J}}"/></view>

View File

@@ -0,0 +1 @@
.page.data-v-c5c09ac6{min-height:100vh;background:#ebf2fc}.progress-bar.data-v-c5c09ac6{background:#fff;border-radius:12rpx;padding:24rpx;margin-bottom:20rpx;box-shadow:0 2rpx 12rpx rgba(0,0,0,.05)}.progress-text.data-v-c5c09ac6{display:flex;align-items:baseline;margin-bottom:16rpx}.progress-text .current-index.data-v-c5c09ac6{font-size:32rpx;font-weight:700;color:#2667e9}.progress-text .total-count.data-v-c5c09ac6{font-size:28rpx;color:#999}.progress-line.data-v-c5c09ac6{height:12rpx;background:#e5e5e5;border-radius:6rpx;overflow:hidden}.progress-inner.data-v-c5c09ac6{height:100%;background:linear-gradient(90deg,#2667e9,#5b9bff);border-radius:6rpx;transition:width .3s ease}.hazard-section.data-v-c5c09ac6{border-top:1rpx solid #eee;padding-top:20rpx}.hazard-tip.data-v-c5c09ac6{display:flex;align-items:center;padding:16rpx 20rpx;background:#fff7e6;border:1rpx solid #FFE7BA;border-radius:8rpx;margin-bottom:20rpx}.hazard-tip .text-orange.data-v-c5c09ac6{color:#fa8c16;font-size:26rpx}.hazard-btn.data-v-c5c09ac6{display:flex;align-items:center;justify-content:center;height:88rpx;border:2rpx dashed #2667E9;border-radius:12rpx;background:#f5f9ff}.hazard-btn .text-blue.data-v-c5c09ac6{color:#2667e9;font-size:28rpx}.hazard-card.data-v-c5c09ac6{background:#f5f9ff;border:1rpx solid #D6E4FF;border-radius:12rpx;overflow:hidden}.hazard-card .card-header.data-v-c5c09ac6{display:flex;justify-content:space-between;align-items:center;padding:20rpx;border-bottom:1rpx solid #E8E8E8;background:#fff}.hazard-card .card-body.data-v-c5c09ac6{padding:20rpx}.hazard-card .card-body .info-row.data-v-c5c09ac6{display:flex;margin-bottom:12rpx;font-size:26rpx}.hazard-card .card-body .info-row.data-v-c5c09ac6:last-child{margin-bottom:0}.hazard-card .card-body .info-row .text-gray.data-v-c5c09ac6{flex-shrink:0;color:#999}.hazard-card .card-body .info-row .description-text.data-v-c5c09ac6{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.hazard-card .card-footer.data-v-c5c09ac6{display:flex;border-top:1rpx solid #E8E8E8;background:#fff}.hazard-card .card-footer button.data-v-c5c09ac6{flex:1;height:80rpx;line-height:80rpx;font-size:28rpx;border-radius:0}.hazard-card .card-footer button.data-v-c5c09ac6:after{border:none}.hazard-card .card-footer .btn-edit.data-v-c5c09ac6{background:#fff;color:#2667e9;border-right:1rpx solid #E8E8E8}.hazard-card .card-footer .btn-clear.data-v-c5c09ac6{background:#fff;color:#f56c6c}.level-tag.data-v-c5c09ac6{padding:4rpx 16rpx;border-radius:8rpx;font-size:24rpx}.level-minor.data-v-c5c09ac6{background:#f6ffed;border:2rpx solid #B7EB8F;color:#52c41a}.level-normal.data-v-c5c09ac6{background:#fff7e6;border:2rpx solid #FFD591;color:#fa8c16}.level-major.data-v-c5c09ac6{background:#fff1f0;border:2rpx solid #FFA39E;color:#f5222d}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"navigationBarTitleText": "排查详情",
"usingComponents": {
"up-icon": "../../uni_modules/uview-plus/components/u-icon/u-icon",
"u-radio": "../../uni_modules/uview-plus/components/u-radio/u-radio",
"u-radio-group": "../../uni_modules/uview-plus/components/u-radio-group/u-radio-group",
"up-textarea": "../../uni_modules/uview-plus/components/u-textarea/u-textarea",
"u-popup": "../../uni_modules/uview-plus/components/u-popup/u-popup",
"hazard-form-popup": "../../components/hazard/HazardFormPopup"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),a=require("../../request/api.js");if(!Array){e.resolveComponent("u-navbar")()}Math;const t={__name:"list",setup(t){const n=e.ref(!0),o=e.ref([]),l=e.ref(""),s=e.ref(""),r={pageNum:1,pageSize:100,name:""},i=e=>e?String(e).split(" ")[0]:"",u=e=>{const a=Number(e);return Number.isNaN(a)?0:Math.min(100,Math.max(0,a))};e.onLoad((e=>{e.tableId&&(l.value=e.tableId),e.name&&(s.value=decodeURIComponent(e.name))})),e.onShow((()=>{(async()=>{var t;if(!l.value)return n.value=!1,void(o.value=[]);n.value=!0;try{const s=await a.getPlanTableDetail({...r,tableId:l.value});0===s.code?o.value=(null==(t=s.data)?void 0:t.records)||[]:e.index.showToast({title:s.msg||"获取检查清单失败",icon:"none"})}catch(s){console.error("获取检查清单失败:",s),e.index.showToast({title:"获取检查清单失败",icon:"none"})}finally{n.value=!1}})()}));const d=()=>{e.index.switchTab({url:"/pages/index/index"})};return e.onBackPress((()=>(d(),!0))),(a,t)=>e.e({a:e.o(d),b:e.p({title:"检查列表",placeholder:!0,safeAreaInsetTop:!0,bgColor:"#3375e6",titleColor:"#ffffff",leftIconColor:"#ffffff",autoBack:!1}),c:n.value},n.value?{}:l.value?0===o.value.length?{}:{f:e.f(o.value,((a,t,n)=>e.e({a:e.t(a.name||s.value||"检查任务"),b:e.t(a.runModeName),c:e.t(a.cycle),d:a.taskDate},a.taskDate?{e:e.t(i(a.taskDate))}:{},{f:e.t(i(a.planStartTime)),g:e.t(i(a.planEndTime)),h:u(a.progress)+"%",i:e.t(u(a.progress)),j:e.t(a.totalCount??0),k:e.t(a.pendingCount??0),l:e.t(a.unusualNum??0),m:e.t(a.finishedCount??0),n:e.o((t=>(a=>{const t=a.id,n=i(a.taskDate);if(!t||!n)return void e.index.showToast({title:"缺少任务参数",icon:"none"});const o=a.name||s.value||"",r=l.value?`&tableId=${l.value}`:"";e.index.navigateTo({url:`/pages/Inspectionresult/detail?oneTableId=${t}&taskDate=${encodeURIComponent(n)}&name=${encodeURIComponent(o)}${r}`})})(a)),a.id||a.taskDate),o:a.id||a.taskDate})))}:{},{d:!l.value,e:0===o.value.length,g:e.gei(a,"")})}},n=e._export_sfc(t,[["__scopeId","data-v-ea20e208"]]);wx.createPage(n);

View File

@@ -0,0 +1,7 @@
{
"navigationStyle": "custom",
"navigationBarTitleText": "检查列表",
"usingComponents": {
"u-navbar": "../../uni_modules/uview-plus/components/u-navbar/u-navbar"
}
}

View File

@@ -0,0 +1 @@
<view class="{{['page', 'data-v-ea20e208', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{g}}"><u-navbar wx:if="{{b}}" class="data-v-ea20e208" virtualHostClass="data-v-ea20e208" bindleftClick="{{a}}" u-i="ea20e208-0" bind:__l="__l" u-p="{{b}}"/><view class="page-content padding data-v-ea20e208"><view wx:if="{{c}}" class="empty-tip text-gray text-center padding data-v-ea20e208">加载中...</view><view wx:elif="{{d}}" class="empty-tip text-gray text-center padding data-v-ea20e208"> 请从首页检查计划进入 </view><view wx:elif="{{e}}" class="empty-tip text-gray text-center padding data-v-ea20e208"> 暂无检查任务 </view><block wx:else><view wx:for="{{f}}" wx:for-item="item" wx:key="o" class="plan-card margin-bottom data-v-ea20e208"><view class="plan-header data-v-ea20e208"><text class="plan-header-title data-v-ea20e208">{{item.a}}</text></view><view class="plan-body data-v-ea20e208"><view class="flex data-v-ea20e208"><view class="border-border margin-right-xs data-v-ea20e208">{{item.b}}完成</view><view class="border-border data-v-ea20e208">{{item.c}}</view></view><view wx:if="{{item.d}}" class="flex text-gray margin-top data-v-ea20e208"><view class="data-v-ea20e208">任务日期:</view><view class="data-v-ea20e208" style="color:#333333">{{item.e}}</view></view><view class="flex text-gray margin-top data-v-ea20e208"><view class="data-v-ea20e208">计划时间:</view><view class="data-v-ea20e208" style="color:#333333">{{item.f}}至{{item.g}}</view></view><view class="flex margin-top align-center data-v-ea20e208"><view class="data-v-ea20e208" style="color:#B5B5B5">完成进度:</view><view class="flex align-center margin-left-sm data-v-ea20e208"><view class="cu-progress round data-v-ea20e208"><view class="bg-green data-v-ea20e208" style="{{'width:' + item.h}}"></view></view><text class="margin-left-sm data-v-ea20e208">{{item.i}}%</text></view></view><view class="plan-stats margin-top data-v-ea20e208"><view class="plan-stat-item data-v-ea20e208"><view class="plan-stat-num text-orange data-v-ea20e208">{{item.j}}</view><view class="plan-stat-label data-v-ea20e208">总检项</view></view><view class="plan-stat-item data-v-ea20e208"><view class="plan-stat-num text-yellow data-v-ea20e208">{{item.k}}</view><view class="plan-stat-label data-v-ea20e208">待排查</view></view><view class="plan-stat-item data-v-ea20e208"><view class="plan-stat-num text-red data-v-ea20e208">{{item.l}}</view><view class="plan-stat-label data-v-ea20e208">异常数</view></view><view class="plan-stat-item data-v-ea20e208"><view class="plan-stat-num text-blue data-v-ea20e208">{{item.m}}</view><view class="plan-stat-label data-v-ea20e208">已完成</view></view></view><view class="margin-top margin-bottom flex justify-end data-v-ea20e208"><button class="cu-btn round lg bg-blue data-v-ea20e208" catchtap="{{item.n}}"> 检查处置 </button></view></view></view></block></view></view>

View File

@@ -0,0 +1 @@
.page.data-v-ea20e208{min-height:100vh;background:#ebf2fc}.empty-tip.data-v-ea20e208{font-size:28rpx}.plan-card.data-v-ea20e208{border-radius:16rpx;overflow:hidden;box-shadow:0 2rpx 6rpx 2rpx rgba(0,0,0,.06)}.plan-header.data-v-ea20e208{background:linear-gradient(135deg,#4a90e2,#2667e9);padding:24rpx 30rpx;display:flex;align-items:center}.plan-header .plan-header-title.data-v-ea20e208{color:#fff;font-size:30rpx;font-weight:700}.plan-body.data-v-ea20e208{padding:24rpx 30rpx 10rpx;background:#fff}.plan-stats.data-v-ea20e208{display:flex;background:#f5f7fa;border-radius:12rpx;border:1rpx solid #E8ECF0;overflow:hidden}.plan-stats .plan-stat-item.data-v-ea20e208{flex:1;text-align:center;padding:20rpx 0;border-right:1rpx solid #E8ECF0}.plan-stats .plan-stat-item.data-v-ea20e208:last-child{border-right:none}.plan-stats .plan-stat-num.data-v-ea20e208{font-size:36rpx;font-weight:700}.plan-stats .plan-stat-label.data-v-ea20e208{font-size:24rpx;color:#666;margin-top:8rpx}.cu-progress.data-v-ea20e208{width:300rpx;height:20rpx;background:#ebeef5;border-radius:100rpx;overflow:hidden}.cu-progress view.data-v-ea20e208{height:100%;border-radius:100rpx;transition:width .3s ease}.bg-green.data-v-ea20e208{background:#2667e9}.border-border.data-v-ea20e208{padding:10rpx;background:#eef3ff;border-radius:4rpx;border:2rpx solid #AAC5FC;text-align:center;display:flex;justify-content:center;align-items:center;font-size:28rpx;color:#2667e9}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),a=require("../../request/api.js");if(!Array){(e.resolveComponent("up-datetime-picker")+e.resolveComponent("up-input")+e.resolveComponent("u-loadmore"))()}Math||((()=>"../../uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.js")+(()=>"../../uni_modules/uview-plus/components/u-input/u-input.js")+(()=>"../../uni_modules/uview-plus/components/u-loadmore/u-loadmore.js"))();const o={__name:"Inspectionwarning",setup(o){const l=e.reactive({startDate:"",endDate:"",deptName:""}),u=e.ref(!1),s=e.ref(!1),n=e.ref(Number(new Date)),r=e.ref(Number(new Date)),d=e.reactive({total:0,overdue:0,pending:0,completed:0,overdueCompleted:0,onTimeCompleted:0});e.reactive({total:0,overdue:0,completed:0,pending:0});const i=e.ref([]),v=e.ref(1),c=e.ref(20),m=e.ref("loadmore"),p=e.ref([{label:"全部状态",value:0,count:null},{label:"逾期未检",value:1,count:null},{label:"严重逾期",value:2,count:null},{label:"期限内待检",value:3,count:null},{label:"逾期已完成",value:4,count:null},{label:"按期已完成",value:5,count:null}]),g=e.ref(0),f=e=>{const t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`},D=e=>{const t=f(e.value);l.startDate=t,u.value=!1},h=e=>{const t=f(e.value);l.endDate=t,s.value=!1},N=e=>{if(!e||"按期"===e)return"status-normal";const t=parseInt(e);return t>=7?"status-serious":t>=1?"status-overdue":"status-normal"},b=(e,t)=>{if(!e||"按期"===e)return"已完成"===t?"按期已完成":"期限内待检";const a=parseInt(e);return a>=7?"严重逾期":a>=1?"已完成"===t?"逾期已完成":"逾期未检":"期限内待检"},w=async()=>{try{const e={pageNum:v.value,pageSize:c.value};l.startDate&&(e.startDate=l.startDate),l.endDate&&(e.endDate=l.endDate),l.deptName&&l.deptName.trim()&&(e.deptName=l.deptName.trim());const t=p.value[g.value].value;0!==t&&(e.inspectionStatus=t);const o=await a.getInspectionWarningList(e);if(0===o.code)if(o.data.statistics&&(d.total=o.data.statistics.total||0,d.overdue=o.data.statistics.overdue||0,d.pending=o.data.statistics.pending||0,d.completed=o.data.statistics.completed||0,d.overdueCompleted=o.data.statistics.overdueCompleted||0,d.onTimeCompleted=o.data.statistics.onTimeCompleted||0,p.value[0].count=o.data.statistics.total||0,p.value[1].count=o.data.statistics.overdue||0,p.value[2].count=o.data.statistics.pending||0,p.value[3].count=o.data.statistics.completed||0,p.value[4].count=o.data.statistics.overdueCompleted||0,p.value[5].count=o.data.statistics.onTimeCompleted||0),o.data.page&&o.data.page.records){const e=o.data.page.records;1===v.value?i.value=e:i.value=[...i.value,...e];const t=o.data.page.total||0;i.value.length>=t?m.value="nomore":m.value="loadmore"}else m.value="nomore"}catch(e){console.error("获取预警列表失败:",e)}},C=()=>{v.value=1,i.value=[],w()};return e.onReachBottom((()=>{"loadmore"===m.value&&(v.value++,w())})),e.onShow((()=>{w()})),(a,o)=>e.e({a:t._imports_0$3,b:e.t(l.startDate||"请选择"),c:e.n(l.startDate?"date-value":"date-placeholder"),d:e.o((e=>u.value=!0)),e:e.o(D),f:e.o((e=>u.value=!1)),g:e.o((e=>u.value=!1)),h:e.o((e=>n.value=e)),i:e.p({show:u.value,mode:"date",modelValue:n.value}),j:e.t(l.endDate||"请选择"),k:e.n(l.endDate?"date-value":"date-placeholder"),l:e.o((e=>s.value=!0)),m:e.o(h),n:e.o((e=>s.value=!1)),o:e.o((e=>s.value=!1)),p:e.o((e=>r.value=e)),q:e.p({show:s.value,mode:"date",modelValue:r.value}),r:e.o((e=>l.deptName=e)),s:e.p({placeholder:"请输入公司名称",border:"surround",modelValue:l.deptName}),t:e.o(C),v:t._imports_1$1,w:e.t(d.total),x:e.t(d.overdue),y:e.t(d.onTimeCompleted),z:e.t(d.completed),A:e.f(p.value,((t,a,o)=>e.e({a:e.t(t.label),b:e.t(null!=t.count?t.count:""),c:g.value===a},(g.value,{}),{d:a,e:g.value===a?1:"",f:e.o((e=>(e=>{g.value=e,v.value=1,i.value=[],w()})(a)),a)}))),B:e.f(i.value,((t,a,o)=>({a:e.t(t.deptName||"-"),b:e.t(b(t.overdueDays,t.statusName)),c:e.n(N(t.overdueDays)),d:e.t(t.planName||"-"),e:e.t(t.cycleName||"-"),f:e.t(t.taskDate||"-"),g:e.t(t.finishTime||"未完成"),h:e.t(t.executorName||"-"),i:e.t(t.overdueDays||"-"),j:t.id}))),C:i.value.length>0},i.value.length>0?{D:e.p({status:m.value})}:{},{E:0===i.value.length},(i.value.length,{}),{F:e.gei(a,"")})}},l=e._export_sfc(o,[["__scopeId","data-v-b713017f"]]);wx.createPage(l);

View File

@@ -0,0 +1,8 @@
{
"navigationBarTitleText": "日常安全检查预警",
"usingComponents": {
"up-datetime-picker": "../../uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker",
"up-input": "../../uni_modules/uview-plus/components/u-input/u-input",
"u-loadmore": "../../uni_modules/uview-plus/components/u-loadmore/u-loadmore"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.page.data-v-b713017f{min-height:100vh;background:#ebf2fc;padding-bottom:40rpx}.section-header.data-v-b713017f{display:flex;align-items:center}.section-header .section-icon.data-v-b713017f{width:40rpx;height:40rpx;margin-right:12rpx}.search-card .date-row.data-v-b713017f{display:flex;gap:20rpx}.search-card .date-row .date-item.data-v-b713017f{flex:1}.search-card .date-label.data-v-b713017f{font-size:28rpx;color:#333;margin-bottom:12rpx}.search-card .date-picker.data-v-b713017f{display:flex;align-items:center;justify-content:space-between;height:72rpx;padding:0 20rpx;background:#f8f8f8;border-radius:8rpx;border:1rpx solid #eee}.search-card .date-picker .date-value.data-v-b713017f{color:#333;font-size:28rpx}.search-card .date-picker .date-placeholder.data-v-b713017f{color:#999;font-size:28rpx}.search-card .search-btn.data-v-b713017f{margin-top:30rpx;background:linear-gradient(135deg,#667eea,#2667e9);color:#fff;border-radius:40rpx;height:80rpx;line-height:80rpx;font-size:30rpx}.stat-grid.data-v-b713017f{display:flex;justify-content:space-between;gap:16rpx}.stat-grid .stat-item.data-v-b713017f{flex:1;height:124rpx;border-radius:12rpx;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.stat-grid .stat-item .stat-num.data-v-b713017f{font-size:40rpx;font-weight:700}.stat-grid .stat-item .stat-label.data-v-b713017f{font-size:24rpx;margin-top:8rpx}.stat-grid .stat-total.data-v-b713017f{background:linear-gradient(135deg,#628efb,#4a7cf7)}.stat-grid .stat-overdue.data-v-b713017f{background:linear-gradient(135deg,#32dcc7,#20c5b0)}.stat-grid .stat-completed.data-v-b713017f{background:linear-gradient(135deg,#32d1e9,#20b8d0)}.stat-grid .stat-pending.data-v-b713017f{background:linear-gradient(135deg,#a190f5,#8b78e8)}.list-title-bar.data-v-b713017f{width:8rpx;height:32rpx;background:#2667e9;border-radius:4rpx;margin-right:12rpx}.list-card.data-v-b713017f{background:#fff;box-shadow:0 2rpx 10rpx rgba(0,0,0,.08);border-radius:16rpx;padding:0;margin-bottom:20rpx;overflow:hidden}.list-card .card-title-row.data-v-b713017f{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#4a7cf7,#2667e9);padding:24rpx 30rpx}.list-card .card-company-name.data-v-b713017f{font-size:32rpx;font-weight:700;color:#fff;flex:1;margin-right:16rpx}.list-card .card-status-tag.data-v-b713017f{padding:8rpx 24rpx;border-radius:8rpx;white-space:nowrap;flex-shrink:0;font-size:24rpx;color:#fff;font-weight:500}.list-card .card-body.data-v-b713017f{padding:30rpx}.list-card .card-row.data-v-b713017f{display:flex;margin-top:16rpx;font-size:28rpx;line-height:1.5}.list-card .card-row.data-v-b713017f:first-of-type{margin-top:0}.list-card .card-row .row-label.data-v-b713017f{color:#999;white-space:nowrap;flex-shrink:0}.list-card .card-row .row-value.data-v-b713017f{color:#333;word-break:break-all}.status-serious.data-v-b713017f{background:linear-gradient(135deg,#ff6b6b,#ee5a5a)}.status-overdue.data-v-b713017f{background:linear-gradient(135deg,#ffa726,#ff9800)}.status-normal.data-v-b713017f{background:linear-gradient(135deg,#66bb6a,#4caf50)}.status-completed.data-v-b713017f{background:linear-gradient(135deg,#42a5f5,#2196f3)}.empty-tip.data-v-b713017f{text-align:center;padding:100rpx 0;color:#999;font-size:28rpx}.status-tabs.data-v-b713017f{white-space:nowrap;background:#fff;border-radius:16rpx;margin-bottom:20rpx;padding:0 10rpx}.status-tabs-inner.data-v-b713017f{display:inline-flex;align-items:center;height:88rpx;white-space:nowrap}.status-tab-item.data-v-b713017f{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;padding:0 24rpx;height:88rpx;position:relative}.status-tab-text.data-v-b713017f{font-size:26rpx;color:#666}.status-tab-active .status-tab-text.data-v-b713017f{color:#2667e9;font-weight:700}.status-tab-bar.data-v-b713017f{position:absolute;bottom:8rpx;width:40rpx;height:6rpx;background:#2667e9;border-radius:3rpx}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),a=require("../../request/three_one_api/area.js");Math||o();const o=()=>"../../components/AreaFormPopup.js",t={__name:"management",setup(o){const t=e.ref([]),l=e.ref(!1),n=e.ref(!1),c=e.ref(null),r=e.ref(!1),s=e.ref({});e.onMounted((()=>{i()}));const i=async()=>{try{const e=await a.getAreaList();0===e.code&&(t.value=e.data.records||[])}catch(e){console.error("获取区域列表失败:",e)}},u=()=>{n.value=!1,c.value=null,s.value={},l.value=!0},d=()=>{n.value=!1,c.value=null,s.value={}},v=async o=>{r.value=!0;try{const t={name:o.name,color:o.color};let s;n.value?(t.id=c.value,s=await a.updateArea(t)):s=await a.addArea(t),0===s.code&&(l.value=!1,e.index.showToast({title:n.value?"修改成功":"新增成功",icon:"success"}),i())}catch(t){console.error("提交失败:",t),e.index.showToast({title:"操作失败",icon:"none"})}finally{r.value=!1}};return(o,h)=>e.e({a:t.value.length>0},t.value.length>0?{b:e.f(t.value,((o,t,r)=>({a:e.t(o.name||"区域名称"),b:o.color,c:e.t(o.color),d:e.o((t=>(async o=>{try{const e=await a.getAreaDetail({id:o.id});0===e.code&&(n.value=!0,c.value=o.id,s.value={name:e.data.name||"",color:e.data.color||"#D92121"},l.value=!0)}catch(t){console.error("获取区域详情失败:",t),e.index.showToast({title:"获取详情失败",icon:"none"})}})(o)),o.id),e:e.o((t=>(o=>{e.index.showModal({title:"确认删除",content:"确定要删除该区域吗?",confirmColor:"#e54d42",success:async t=>{if(t.confirm)try{0===(await a.deleteArea({id:o.id})).code&&(e.index.showToast({title:"删除成功",icon:"success"}),i())}catch(l){console.error("删除失败:",l),e.index.showToast({title:"删除失败",icon:"none"})}}})})(o)),o.id),f:o.id})))}:{},{c:e.o(u),d:e.o(v),e:e.o(d),f:e.o((e=>l.value=e)),g:e.p({isEdit:n.value,editData:s.value,loading:r.value,visible:l.value}),h:e.gei(o,"")})}},l=e._export_sfc(t,[["__scopeId","data-v-4a66b6cd"]]);wx.createPage(l);

View File

@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "区域管理",
"usingComponents": {
"area-form-popup": "../../components/AreaFormPopup"
}
}

View File

@@ -0,0 +1 @@
<view class="{{['padding', 'page', 'data-v-4a66b6cd', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{h}}"><view wx:if="{{a}}" class="area-list data-v-4a66b6cd"><view wx:for="{{b}}" wx:for-item="item" wx:key="f" class="padding bg-white radius margin-bottom data-v-4a66b6cd"><view class="flex justify-between data-v-4a66b6cd"><view class="data-v-4a66b6cd"><view class="text-bold text-black data-v-4a66b6cd">{{item.a}}</view><view class="margin-top flex align-center data-v-4a66b6cd"><text class="data-v-4a66b6cd">颜色:</text><view class="color-dot data-v-4a66b6cd" style="{{'background-color:' + item.b}}"></view><text class="margin-left-xs data-v-4a66b6cd">{{item.c}}</text></view></view><view class="data-v-4a66b6cd"><button class="bg-blue cu-btn data-v-4a66b6cd" bindtap="{{item.d}}">编辑</button><button class="bg-red cu-btn margin-left data-v-4a66b6cd" bindtap="{{item.e}}">删除</button></view></view></view></view><view wx:else class="empty-state data-v-4a66b6cd"><text class="text-gray data-v-4a66b6cd">暂无区域数据</text></view><button class="add-btn bg-blue round data-v-4a66b6cd" bindtap="{{c}}">新增区域</button><area-form-popup wx:if="{{g}}" class="data-v-4a66b6cd" virtualHostClass="data-v-4a66b6cd" bindsubmit="{{d}}" bindclose="{{e}}" u-i="4a66b6cd-0" bind:__l="__l" bindupdateVisible="{{f}}" u-p="{{g}}"/></view>

View File

@@ -0,0 +1 @@
.page.data-v-4a66b6cd{min-height:100vh;background:#ebf2fc;padding-bottom:120rpx}.area-list.data-v-4a66b6cd{padding-bottom:20rpx}.empty-state.data-v-4a66b6cd{padding:200rpx 0;text-align:center}.add-btn.data-v-4a66b6cd{position:fixed;bottom:40rpx;left:30rpx;right:30rpx;height:88rpx;line-height:88rpx;border-radius:44rpx;font-size:32rpx}.color-dot.data-v-4a66b6cd{width:30rpx;height:30rpx;border-radius:6rpx;flex-shrink:0;margin-left:10rpx}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../request/api.js"),a={__name:"checklist",setup(a){const o=e.ref([]),i=()=>{e.index.navigateTo({url:"/pages/editchecklist/editchecklist"})};return e.onShow((()=>{(async()=>{try{const e=await t.getCheckTableList({pageNum:1,pageSize:100});0===e.code&&(o.value=e.data.records||[])}catch(e){console.error("获取检查表列表失败:",e)}})()})),(t,a)=>e.e({a:e.f(o.value,((t,a,o)=>e.e({a:e.t(t.name),b:t.deptName||t.pointCount},t.deptName||t.pointCount?e.e({c:t.deptName},t.deptName?{d:e.t(t.deptName)}:{},{e:t.deptName&&t.pointCount},(t.deptName&&t.pointCount,{}),{f:t.pointCount},t.pointCount?{g:e.t(t.pointCount)}:{}):{},{h:e.o((a=>(t=>{(null==t?void 0:t.id)&&e.index.navigateTo({url:`/pages/checklist/detail?id=${t.id}`})})(t)),t.id),i:t.id}))),b:0===o.value.length},(o.value.length,{}),{c:e.o(i),d:e.gei(t,"")})}},o=e._export_sfc(a,[["__scopeId","data-v-73d9f4c0"]]);wx.createPage(o);

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "检查表",
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="{{['page', 'padding', 'data-v-73d9f4c0', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{d}}"><view wx:for="{{a}}" wx:for-item="item" wx:key="i" class="checklist-card data-v-73d9f4c0"><view class="card-main data-v-73d9f4c0"><view class="card-info data-v-73d9f4c0"><view class="card-name data-v-73d9f4c0">{{item.a}}</view><view wx:if="{{item.b}}" class="card-meta data-v-73d9f4c0"><text wx:if="{{item.c}}" class="data-v-73d9f4c0">{{item.d}}</text><text wx:if="{{item.e}}" class="meta-dot data-v-73d9f4c0">·</text><text wx:if="{{item.f}}" class="data-v-73d9f4c0">检查项 {{item.g}} 项</text></view></view><button class="detail-btn data-v-73d9f4c0" catchtap="{{item.h}}">详情</button></view></view><view wx:if="{{b}}" class="empty-tip data-v-73d9f4c0"><text class="data-v-73d9f4c0">暂无检查表</text></view><button class="add-btn data-v-73d9f4c0" bindtap="{{c}}"><text class="data-v-73d9f4c0">新增检查表</text></button></view>

View File

@@ -0,0 +1 @@
.page.data-v-73d9f4c0{min-height:100vh;background:#ebf2fc;padding-bottom:120rpx}.checklist-card.data-v-73d9f4c0{background:#fff;border-radius:16rpx;padding:24rpx 28rpx;margin-bottom:20rpx;box-shadow:0 2rpx 10rpx rgba(0,0,0,.05)}.card-main.data-v-73d9f4c0{display:flex;align-items:center;gap:20rpx}.card-info.data-v-73d9f4c0{flex:1;min-width:0}.card-name.data-v-73d9f4c0{font-size:32rpx;color:#333;font-weight:500;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-all}.card-meta.data-v-73d9f4c0{margin-top:10rpx;font-size:24rpx;color:#999;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta-dot.data-v-73d9f4c0{margin:0 8rpx}.detail-btn.data-v-73d9f4c0{flex-shrink:0;width:120rpx;height:60rpx;line-height:60rpx;padding:0;margin:0;background:#fff;border:2rpx solid #2667E9;border-radius:30rpx;color:#2667e9;font-size:26rpx}.detail-btn.data-v-73d9f4c0:after{border:none}.empty-tip.data-v-73d9f4c0{text-align:center;padding:100rpx 0;color:#999;font-size:28rpx}.add-btn.data-v-73d9f4c0{position:fixed;bottom:40rpx;left:30rpx;right:30rpx;height:90rpx;background:linear-gradient(135deg,#667eea,#2668ea);border-radius:45rpx;color:#fff;font-size:32rpx;display:flex;align-items:center;justify-content:center;box-shadow:0 8rpx 20rpx rgba(102,126,234,.4)}.add-btn.data-v-73d9f4c0:after{border:none}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),t=require("../../request/api.js"),u={__name:"detail",setup(u){const l=e.ref(!0),n=e.ref(""),o=e.ref({}),i=e.ref([]),v={1:"日常检查",2:"专项检查",3:"设备检查"},r={1:"每天一次",2:"每周",3:"每月",4:"每季度"},s={1:"单人完成",2:"全员",3:"指定分组"},c={1:"包含周末",2:"不包含周末"},d=e.computed((()=>o.value.typeName||v[o.value.type]||"-")),m=e.computed((()=>o.value.cycleName||r[o.value.cycle]||"-")),p=e.computed((()=>o.value.runModeName||s[o.value.runMode]||"-")),f=e.computed((()=>o.value.isWeekendName||c[o.value.isWeekend]||"-")),N=e.computed((()=>2===Number(o.value.runMode)?"全员":o.value.executorName||"-")),y=e=>e?String(e).split(" ")[0]:"-";return e.onLoad((a=>{if(n.value=a.id||"",!n.value)return e.index.showToast({title:"缺少检查表ID",icon:"none"}),void(l.value=!1);(async()=>{if(n.value){l.value=!0;try{const a=await t.getOneTableInfo(n.value);if(0===a.code){const e=a.data||{};o.value=e,i.value=e.itemDetailList||[]}else e.index.showToast({title:a.msg||"获取详情失败",icon:"none"})}catch(a){console.error("获取检查计划详情失败:",a),e.index.showToast({title:"获取详情失败",icon:"none"})}finally{l.value=!1}}})()})),(t,u)=>e.e({a:l.value},l.value?{}:e.e({b:e.t(o.value.name||"-"),c:e.t(o.value.deptName||"-"),d:e.t(d.value),e:e.t(p.value),f:e.t(N.value),g:e.t(m.value),h:o.value.description},o.value.description?{i:o.value.description}:{},{j:a._imports_0$1,k:e.t(o.value.itemNames||"-"),l:e.t(i.value.length),m:0===i.value.length},0===i.value.length?{}:{n:e.f(i.value,((a,t,u)=>e.e({a:e.t(t+1),b:e.t(a.checkItemName||"-"),c:a.industryName},a.industryName?{d:e.t(a.industryName)}:{},{e:a.pointId||t})))},{o:e.t(f.value),p:e.t(y(o.value.planStartTime)),q:e.t(y(o.value.planEndTime))}),{r:e.gei(t,"")})}},l=e._export_sfc(u,[["__scopeId","data-v-311899fa"]]);wx.createPage(l);

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "检查计划详情",
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="{{['page', 'data-v-311899fa', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{r}}"><view wx:if="{{a}}" class="loading-wrap data-v-311899fa"><text class="loading-text data-v-311899fa">加载中...</text></view><block wx:else><view class="section-card data-v-311899fa"><view class="section-title data-v-311899fa">基本信息</view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">检查表名称</text><text class="info-value data-v-311899fa">{{b}}</text></view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">分派单位</text><text class="info-value data-v-311899fa">{{c}}</text></view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">检查表类型</text><text class="info-value data-v-311899fa">{{d}}</text></view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">模式</text><text class="info-value data-v-311899fa">{{e}}</text></view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">执行人员</text><text class="info-value data-v-311899fa">{{f}}</text></view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">循环周期</text><text class="info-value data-v-311899fa">{{g}}</text></view><view class="info-row column data-v-311899fa"><text class="info-label data-v-311899fa">检查说明</text><view class="info-block data-v-311899fa"><rich-text wx:if="{{h}}" class="data-v-311899fa" nodes="{{i}}"></rich-text><text wx:else class="info-empty data-v-311899fa">-</text></view></view></view><view class="section-card data-v-311899fa"><view class="section-title data-v-311899fa">关联表项</view><view class="related-box data-v-311899fa"><image class="related-icon data-v-311899fa" src="{{j}}" mode="aspectFit"></image><text class="related-text data-v-311899fa">{{k}}</text></view></view><view class="section-card data-v-311899fa"><view class="section-title data-v-311899fa"> 检查项明细 <text class="item-count data-v-311899fa">{{l}}项)</text></view><view wx:if="{{m}}" class="empty-block data-v-311899fa">暂无检查项</view><view wx:else class="item-list data-v-311899fa"><view wx:for="{{n}}" wx:for-item="item" wx:key="e" class="item-row data-v-311899fa"><text class="item-no data-v-311899fa">{{item.a}}</text><view class="item-content data-v-311899fa"><text class="item-name data-v-311899fa">{{item.b}}</text><text wx:if="{{item.c}}" class="item-industry data-v-311899fa">{{item.d}}</text></view></view></view></view><view class="section-card data-v-311899fa"><view class="section-title data-v-311899fa">计划安排</view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">仅工作日</text><text class="info-value data-v-311899fa">{{o}}</text></view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">计划开始日期</text><text class="info-value data-v-311899fa">{{p}}</text></view><view class="info-row data-v-311899fa"><text class="info-label data-v-311899fa">计划结束日期</text><text class="info-value data-v-311899fa">{{q}}</text></view></view></block></view>

Some files were not shown because too many files have changed in this diff Show More