交办、整改责任人修改
This commit is contained in:
1431
components/hazard/HazardFormPanel.vue
Normal file
1431
components/hazard/HazardFormPanel.vue
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -27,6 +27,8 @@ export function createEmptyHazardPayload() {
|
||||
title: '',
|
||||
level: 0,
|
||||
source: 0,
|
||||
hazardSourceCode: null,
|
||||
hazardSourceName: '',
|
||||
description: '',
|
||||
tagIndex: 0,
|
||||
tagId: null,
|
||||
@@ -56,6 +58,7 @@ export function buildHiddenDangerParams(payload, extra = {}) {
|
||||
areaId: areaId || null,
|
||||
description: formData.description || '',
|
||||
source: SOURCE_OPTIONS[formData.source]?.title || '',
|
||||
hazardSource: formData.hazardSourceCode ?? null,
|
||||
tagId,
|
||||
attachments: (fileList || [])
|
||||
.filter((f) => f.status === 'success')
|
||||
@@ -70,3 +73,21 @@ export function hasValidHazardPayload(payload) {
|
||||
const { formData, fileList } = payload;
|
||||
return !!(formData?.title && fileList?.length > 0);
|
||||
}
|
||||
|
||||
export function hasHazardFormContent(payload) {
|
||||
if (!payload) return false;
|
||||
const data = payload.formData || {};
|
||||
const files = payload.fileList || [];
|
||||
return !!(
|
||||
data.title ||
|
||||
data.description ||
|
||||
data.regulationName ||
|
||||
data.regulationId ||
|
||||
data.hazardSourceCode != null ||
|
||||
data.hazardSourceName ||
|
||||
payload.address ||
|
||||
payload.areaId ||
|
||||
payload.areaName ||
|
||||
(files.length > 0)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -72,6 +72,10 @@
|
||||
<view class="card-body">
|
||||
<!-- 提交 -->
|
||||
<block v-if="item.type === 'submit'">
|
||||
<view class="detail-row">
|
||||
<text class="label">隐患编号</text>
|
||||
<text class="value">{{ item.content.code }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">隐患标题</text>
|
||||
<text class="value">{{ item.content.title }}</text>
|
||||
@@ -80,6 +84,10 @@
|
||||
<text class="label">检查形式</text>
|
||||
<text class="value">{{ item.content.source }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">隐患来源</text>
|
||||
<text class="value">{{ item.content.hazardSourceName }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">隐患区域</text>
|
||||
<view class="value value--inline">
|
||||
|
||||
@@ -80,6 +80,10 @@
|
||||
<view class="card-body">
|
||||
<!-- 提交 -->
|
||||
<block v-if="item.type === 'submit'">
|
||||
<view class="detail-row-v2">
|
||||
<text class="label">隐患编号</text>
|
||||
<text class="value">{{ item.content.code }}</text>
|
||||
</view>
|
||||
<view class="detail-row-v2">
|
||||
<text class="label">隐患标题</text>
|
||||
<text class="value">{{ item.content.title }}</text>
|
||||
@@ -88,6 +92,10 @@
|
||||
<text class="label">检查形式</text>
|
||||
<text class="value">{{ item.content.source }}</text>
|
||||
</view>
|
||||
<view class="detail-row-v2">
|
||||
<text class="label">隐患来源</text>
|
||||
<text class="value">{{ item.content.hazardSourceName }}</text>
|
||||
</view>
|
||||
<view class="detail-row-v2">
|
||||
<text class="label">隐患区域</text>
|
||||
<view class="value value--inline">
|
||||
|
||||
@@ -180,8 +180,10 @@ export function generateHazardHistory(data) {
|
||||
operator: data.reporterName || '-',
|
||||
time: data.createdAt || '-',
|
||||
content: {
|
||||
code: data.code || '-',
|
||||
title: data.title || '-',
|
||||
source: data.source || '-',
|
||||
hazardSourceName: data.hazardSourceName || '-',
|
||||
areaName: data.areaName || '-',
|
||||
areaColor: data.areaColor || '',
|
||||
address: data.address || '-',
|
||||
@@ -260,10 +262,13 @@ export const MOCK_HAZARD_DETAIL = {
|
||||
reporterPhone: '13800138000',
|
||||
reportDeptName: '安全管理部',
|
||||
createdAt: '2026-06-01 09:30:00',
|
||||
code: '2026U1SL',
|
||||
title: '消防通道堆放杂物',
|
||||
level: 2,
|
||||
levelName: '一般隐患',
|
||||
source: '部门检查',
|
||||
hazardSource: 1,
|
||||
hazardSourceName: '本单位检查发现',
|
||||
areaName: '生产车间A区',
|
||||
areaColor: '#409EFF',
|
||||
address: '办公楼3层东侧消防通道',
|
||||
|
||||
@@ -108,6 +108,12 @@
|
||||
"navigationBarTitleText": "隐患排查"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/hiddendanger/add",
|
||||
"style": {
|
||||
"navigationBarTitleText": "新增隐患排查"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/hiddendanger/view",
|
||||
"style": {
|
||||
|
||||
@@ -57,6 +57,10 @@
|
||||
<text class="text-gray">检查形式:</text>
|
||||
<text>{{ SOURCE_OPTIONS[hazardPayload.formData.source]?.title || '-' }}</text>
|
||||
</view>
|
||||
<view class="info-row">
|
||||
<text class="text-gray">隐患来源:</text>
|
||||
<text>{{ hazardPayload.formData.hazardSourceName || '-' }}</text>
|
||||
</view>
|
||||
<view class="info-row">
|
||||
<text class="text-gray">隐患位置:</text>
|
||||
<text>{{ hazardPayload.address || '-' }}</text>
|
||||
|
||||
@@ -85,6 +85,10 @@
|
||||
<text class="readonly-label">检查形式</text>
|
||||
<text class="readonly-value">{{ item.source }}</text>
|
||||
</view>
|
||||
<view v-if="item.hazardSource" class="readonly-row readonly-row--stack">
|
||||
<text class="readonly-label">隐患来源</text>
|
||||
<text class="readonly-value">{{ item.hazardSource }}</text>
|
||||
</view>
|
||||
<view v-if="item.hazardAddress" class="readonly-row readonly-row--stack">
|
||||
<text class="readonly-label">隐患位置</text>
|
||||
<text class="readonly-value">{{ item.hazardAddress }}</text>
|
||||
@@ -156,6 +160,10 @@
|
||||
<text class="text-gray">检查形式:</text>
|
||||
<text>{{ SOURCE_OPTIONS[answerList[index].hazardPayload.formData.source]?.title || '-' }}</text>
|
||||
</view>
|
||||
<view class="info-row">
|
||||
<text class="text-gray">隐患来源:</text>
|
||||
<text>{{ answerList[index].hazardPayload.formData.hazardSourceName || '-' }}</text>
|
||||
</view>
|
||||
<view class="info-row">
|
||||
<text class="text-gray">隐患位置:</text>
|
||||
<text>{{ answerList[index].hazardPayload.address || '-' }}</text>
|
||||
@@ -337,7 +345,7 @@ const viewHazardDetail = (item) => {
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: `/pages/hiddendanger/view?hazardId=${item.hazardId}`
|
||||
url: `/pages/hiddendanger/detail2?hazardId=${item.hazardId}&assignId=${item.assignId || ''}`
|
||||
});
|
||||
};
|
||||
|
||||
@@ -407,13 +415,20 @@ const buildAnswerFromTask = (item) => {
|
||||
|
||||
if (item.result === 2 && item.hazardName) {
|
||||
const sourceIndex = SOURCE_OPTIONS.findIndex((o) => o.title === item.source);
|
||||
const hazardSourceCode = item.hazardSourceCode ?? (
|
||||
item.hazardSource != null && item.hazardSource !== '' && !Number.isNaN(Number(item.hazardSource))
|
||||
? Number(item.hazardSource)
|
||||
: null
|
||||
);
|
||||
answer.hazardPayload = {
|
||||
...createEmptyHazardPayload(),
|
||||
formData: {
|
||||
...createEmptyHazardPayload().formData,
|
||||
title: item.hazardName || '',
|
||||
description: item.hazardDesc || '',
|
||||
source: sourceIndex >= 0 ? sourceIndex : 0
|
||||
source: sourceIndex >= 0 ? sourceIndex : 0,
|
||||
hazardSourceCode,
|
||||
hazardSourceName: item.hazardSourceName || ''
|
||||
},
|
||||
address: item.hazardAddress || ''
|
||||
};
|
||||
|
||||
@@ -77,6 +77,31 @@
|
||||
<up-textarea v-model="formData.treatmentResult" placeholder="请输入隐患治理完成情况"></up-textarea>
|
||||
<view class="margin-bottom margin-top">隐患治理责任单位自行验收的情况</view>
|
||||
<up-textarea v-model="formData.selfVerifyContent" placeholder="请输入隐患治理责任单位自行验收的情况"></up-textarea>
|
||||
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">下一步流程</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<view class="static-field">隐患销号审批</view>
|
||||
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">下一步处理人</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<view class="static-field">部门、企业管理员</view>
|
||||
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">短信提醒</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<up-radio-group v-model="sendMsgFlagRadio" placement="row" activeColor="#2667e9">
|
||||
<up-radio
|
||||
label="是"
|
||||
name="yes"
|
||||
:customStyle="{ marginRight: '48rpx' }"
|
||||
></up-radio>
|
||||
<up-radio label="否" name="no"></up-radio>
|
||||
</up-radio-group>
|
||||
</scroll-view>
|
||||
<view class="popup-footer">
|
||||
<button class="btn-cancel" @click="showAddPopup = false">取消</button>
|
||||
@@ -98,7 +123,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { ref, reactive, computed, onMounted } from 'vue'
|
||||
import { getMyWriteOffList, applyDelete, getAcceptanceList, getHiddenDangerDetail, getRectifyDetail, generateWriteoffContent } from '@/request/api.js';
|
||||
|
||||
// 弹窗控制
|
||||
@@ -117,6 +142,10 @@
|
||||
|
||||
// AI生成状态
|
||||
const aiGenerating = ref(false);
|
||||
|
||||
// 短信提醒
|
||||
const sendMsgFlagRadio = ref('yes');
|
||||
const sendMsgFlag = computed(() => sendMsgFlagRadio.value === 'yes');
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
@@ -202,6 +231,7 @@
|
||||
formData.mainTreatmentContent = '';
|
||||
formData.treatmentResult = '';
|
||||
formData.selfVerifyContent = '';
|
||||
sendMsgFlagRadio.value = 'yes';
|
||||
};
|
||||
|
||||
// AI生成销号方案
|
||||
@@ -274,7 +304,8 @@
|
||||
responsiblePerson: formData.responsiblePerson || '', // 主要负责人
|
||||
mainTreatmentContent: formData.mainTreatmentContent || '', // 主要治理内容
|
||||
treatmentResult: formData.treatmentResult || '', // 隐患治理完成内容
|
||||
selfVerifyContent: formData.selfVerifyContent || '' // 责任单位自行验收情况
|
||||
selfVerifyContent: formData.selfVerifyContent || '', // 责任单位自行验收情况
|
||||
sendMsgFlag: sendMsgFlag.value // 是否短信提醒
|
||||
};
|
||||
|
||||
console.log('提交数据:', params);
|
||||
@@ -471,4 +502,15 @@
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
.static-field {
|
||||
background: #fff;
|
||||
border: 1rpx solid #dcdfe6;
|
||||
border-radius: 8rpx;
|
||||
padding: 20rpx 24rpx;
|
||||
margin-bottom: 20rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 1.5;
|
||||
}
|
||||
</style>
|
||||
@@ -19,6 +19,9 @@
|
||||
<view class="text-gray margin-bottom margin-top">隐患治理完成内容</view>
|
||||
<up-textarea v-model="formData.governanceCompleteContent" placeholder="暂无" disabled autoHeight></up-textarea>
|
||||
|
||||
<view class="text-gray margin-bottom margin-top">隐患治理责任单位自行验收的情况</view>
|
||||
<up-textarea v-model="formData.selfAcceptanceStatus" placeholder="暂无" disabled autoHeight></up-textarea>
|
||||
|
||||
<view class="text-gray margin-bottom margin-top">状态</view>
|
||||
<up-input :modelValue="statusText" placeholder="暂无" disabled></up-input>
|
||||
|
||||
@@ -64,6 +67,7 @@
|
||||
mainPerson: '',
|
||||
mainGovernanceContent: '',
|
||||
governanceCompleteContent: '',
|
||||
selfAcceptanceStatus: '',
|
||||
status: '',
|
||||
rejectReason: ''
|
||||
})
|
||||
@@ -111,6 +115,7 @@
|
||||
formData.mainPerson = data.mainPerson || ''
|
||||
formData.mainGovernanceContent = data.mainGovernanceContent || ''
|
||||
formData.governanceCompleteContent = data.governanceCompleteContent || ''
|
||||
formData.selfAcceptanceStatus = data.selfAcceptanceStatus || data.selfVerifyContent || ''
|
||||
formData.status = data.status ?? ''
|
||||
formData.rejectReason = data.rejectReason || ''
|
||||
applySignature(data.signPath)
|
||||
|
||||
@@ -50,18 +50,10 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="fixed-add-btn" @click="openAddPopup">
|
||||
<view class="fixed-add-btn" @click="goToAdd">
|
||||
<text class="cuIcon-add"></text>
|
||||
<text>新增</text>
|
||||
</view>
|
||||
|
||||
<HazardFormPopup
|
||||
v-model:show="showAddPopup"
|
||||
title="新增隐患排查"
|
||||
mode="direct"
|
||||
:extra-params="hazardExtraParams"
|
||||
@success="onHazardAddSuccess"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -73,16 +65,10 @@
|
||||
getCheckTaskDetail,
|
||||
getMyHiddenDangerList
|
||||
} from '@/request/api.js'
|
||||
import HazardFormPopup from '@/components/hazard/HazardFormPopup.vue'
|
||||
|
||||
const showAddPopup = ref(false)
|
||||
const taskId = ref('')
|
||||
const checkPointId = ref('')
|
||||
|
||||
const hazardExtraParams = computed(() => ({
|
||||
taskId: taskId.value,
|
||||
checkPointId: checkPointId.value
|
||||
}))
|
||||
const oneTableId = ref('')
|
||||
|
||||
const userRole = ref('')
|
||||
const canAcceptance = computed(() => {
|
||||
@@ -120,6 +106,7 @@
|
||||
|
||||
onLoad((options) => {
|
||||
if (options.id) {
|
||||
oneTableId.value = options.id
|
||||
fetchTaskInfo(options.id)
|
||||
}
|
||||
})
|
||||
@@ -149,13 +136,22 @@
|
||||
fetchHiddenDangerList()
|
||||
})
|
||||
|
||||
const openAddPopup = () => {
|
||||
showAddPopup.value = true;
|
||||
};
|
||||
|
||||
const onHazardAddSuccess = () => {
|
||||
showAddPopup.value = false
|
||||
fetchHiddenDangerList()
|
||||
const goToAdd = () => {
|
||||
let url = '/pages/hiddendanger/add'
|
||||
const params = []
|
||||
if (oneTableId.value) {
|
||||
params.push(`id=${oneTableId.value}`)
|
||||
}
|
||||
if (taskId.value) {
|
||||
params.push(`taskId=${taskId.value}`)
|
||||
}
|
||||
if (checkPointId.value) {
|
||||
params.push(`checkPointId=${checkPointId.value}`)
|
||||
}
|
||||
if (params.length) {
|
||||
url += `?${params.join('&')}`
|
||||
}
|
||||
uni.navigateTo({ url })
|
||||
}
|
||||
|
||||
const details = (item) => {
|
||||
|
||||
@@ -27,9 +27,13 @@
|
||||
<view style="color: #999; margin-bottom: 10rpx;">实际投资资金:</view>
|
||||
<view style="word-break: break-all; line-height: 1.6; color: #333;">{{ formatMoney(rectifyData.actualCost) }}</view>
|
||||
</view>
|
||||
<view class="margin-top">
|
||||
<view style="color: #999; margin-bottom: 10rpx;">安全管理人员:</view>
|
||||
<view style="word-break: break-all; line-height: 1.6; color: #333;">{{ formatPersonNames(rectifyData.managerNames) }}</view>
|
||||
</view>
|
||||
<view class="margin-top">
|
||||
<view style="color: #999; margin-bottom: 10rpx;">整改责任人:</view>
|
||||
<view style="word-break: break-all; line-height: 1.6; color: #333;">{{ rectifyData.rectifierName || '暂无' }}</view>
|
||||
<view style="word-break: break-all; line-height: 1.6; color: #333;">{{ formatPersonNames(rectifyData.memberNames) }}</view>
|
||||
</view>
|
||||
<view class="margin-top">
|
||||
<view style="color: #999; margin-bottom: 10rpx;">完成情况:</view>
|
||||
@@ -63,8 +67,35 @@
|
||||
<!-- 隐藏的 Canvas,用于渲染防作弊时间戳水印 -->
|
||||
<canvas canvas-id="watermarkCanvas" :width="canvasWidth" :height="canvasHeight" :style="{ width: canvasWidth + 'px', height: canvasHeight + 'px', position: 'fixed', left: '-9999px', top: '-9999px' }"></canvas>
|
||||
|
||||
<!-- 电子签名部分 -->
|
||||
<view class="flex justify-between margin-bottom margin-top-sm align-center">
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">下一步流程</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<view class="static-field">申请隐患销号</view>
|
||||
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">下一步处理人</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<view class="static-field">部门、企业管理员</view>
|
||||
|
||||
<!-- 短信提醒(暂不使用)
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">短信提醒</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<up-radio-group v-model="sendMsgFlagRadio" placement="row" activeColor="#2667e9">
|
||||
<up-radio
|
||||
label="是"
|
||||
name="yes"
|
||||
:customStyle="{ marginRight: '48rpx' }"
|
||||
></up-radio>
|
||||
<up-radio label="否" name="no"></up-radio>
|
||||
</up-radio-group>
|
||||
-->
|
||||
|
||||
<!-- 电子签名(表单最底部) -->
|
||||
<view class="flex justify-between margin-bottom margin-top align-center">
|
||||
<view class="text-gray flex align-center">
|
||||
电子签名
|
||||
<view class="text-red">*</view>
|
||||
@@ -139,10 +170,23 @@
|
||||
rectifyResult: '',
|
||||
planCost: null,
|
||||
actualCost: null,
|
||||
rectifierName: '',
|
||||
managerNames: [],
|
||||
memberNames: [],
|
||||
rectifyStatusName: ''
|
||||
});
|
||||
|
||||
const formatPersonNames = (names) => {
|
||||
if (!names) return '暂无';
|
||||
if (Array.isArray(names)) {
|
||||
const text = names.filter(Boolean).join('、');
|
||||
return text || '暂无';
|
||||
}
|
||||
if (typeof names === 'string') {
|
||||
return names.trim() || '暂无';
|
||||
}
|
||||
return '暂无';
|
||||
};
|
||||
|
||||
const formatMoney = (value) => {
|
||||
if (value === null || value === undefined || value === '') {
|
||||
return '暂无';
|
||||
@@ -164,6 +208,10 @@
|
||||
});
|
||||
|
||||
const fileList1 = ref([]);
|
||||
|
||||
// 短信提醒(暂不使用)
|
||||
// const sendMsgFlagRadio = ref('yes');
|
||||
// const sendMsgFlag = computed(() => sendMsgFlagRadio.value === 'yes');
|
||||
|
||||
// 防作弊时间戳水印 Canvas 大小配置
|
||||
const canvasWidth = ref(300);
|
||||
@@ -245,6 +293,7 @@
|
||||
signatureLocalPath: signatureLocalPath.value,
|
||||
showCanvas: showCanvas.value,
|
||||
signaturePaths: signaturePaths.value
|
||||
// sendMsgFlagRadio: sendMsgFlagRadio.value
|
||||
}),
|
||||
hasContent: acceptDraftHasContent,
|
||||
applyPayload: (data) => {
|
||||
@@ -264,6 +313,7 @@
|
||||
signatureLocalPath.value = '';
|
||||
isSignatureEmpty.value = true;
|
||||
}
|
||||
// sendMsgFlagRadio.value = data.sendMsgFlagRadio === 'no' ? 'no' : 'yes';
|
||||
},
|
||||
clearForm: () => {
|
||||
formData.result = 1;
|
||||
@@ -277,6 +327,7 @@
|
||||
if (signatureRef.value) {
|
||||
signatureRef.value.clear();
|
||||
}
|
||||
// sendMsgFlagRadio.value = 'yes';
|
||||
},
|
||||
canSave: () => !!rectifyId.value,
|
||||
requireInitialized: true,
|
||||
@@ -303,6 +354,7 @@
|
||||
signatureLocalPath.value,
|
||||
showCanvas.value,
|
||||
signaturePaths.value
|
||||
// sendMsgFlagRadio.value
|
||||
]);
|
||||
|
||||
// 获取完整图片路径
|
||||
@@ -349,7 +401,8 @@
|
||||
rectifyData.rectifyResult = rectify.rectifyResult || '';
|
||||
rectifyData.planCost = rectify.planCost ?? null;
|
||||
rectifyData.actualCost = rectify.actualCost ?? null;
|
||||
rectifyData.rectifierName = rectify.rectifierName || '';
|
||||
rectifyData.managerNames = rectify.managerNames || [];
|
||||
rectifyData.memberNames = rectify.memberNames || [];
|
||||
rectifyData.rectifyStatusName = rectify.rectifyStatusName || '';
|
||||
rectifyAttachments.value = rectify.attachments || [];
|
||||
};
|
||||
@@ -447,6 +500,7 @@
|
||||
verifyRemark: formData.verifyRemark || '',
|
||||
attachments: attachments,
|
||||
signPath: signatureServerPath.value || '' // 电子签名路径
|
||||
// sendMsgFlag: sendMsgFlag.value
|
||||
};
|
||||
|
||||
console.log('提交验收参数:', params);
|
||||
@@ -645,6 +699,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
.static-field {
|
||||
background: #fff;
|
||||
border: 1rpx solid #dcdfe6;
|
||||
border-radius: 8rpx;
|
||||
padding: 20rpx 24rpx;
|
||||
margin-bottom: 20rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
// 签名相关样式
|
||||
.signature-box {
|
||||
width: 100%;
|
||||
|
||||
142
pages/hiddendanger/add.vue
Normal file
142
pages/hiddendanger/add.vue
Normal file
@@ -0,0 +1,142 @@
|
||||
<template>
|
||||
<view class="page">
|
||||
<HazardFormPanel
|
||||
ref="formRef"
|
||||
page-mode
|
||||
title="新增隐患排查"
|
||||
mode="direct"
|
||||
:extra-params="hazardExtraParams"
|
||||
:show-draft-banner="showRestoreBanner"
|
||||
canvas-id="hazardAddWatermarkCanvas"
|
||||
@success="onSubmitSuccess"
|
||||
@clear-draft="clearDraft(true)"
|
||||
@draft-change="draftSnapshot = $event"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, nextTick } from 'vue'
|
||||
import { onLoad, onHide } from '@dcloudio/uni-app'
|
||||
import { enterCheckPlan, getCheckTaskDetail } from '@/request/api.js'
|
||||
import HazardFormPanel from '@/components/hazard/HazardFormPanel.vue'
|
||||
import { buildDraftKey, DRAFT_NS, removeDraft } from '@/utils/draftCache.js'
|
||||
import { useDraftCache } from '@/utils/useDraftCache.js'
|
||||
import { hasHazardFormContent } from '@/components/hazard/hazardForm.js'
|
||||
|
||||
const formRef = ref(null)
|
||||
const taskId = ref('')
|
||||
const checkPointId = ref('')
|
||||
const oneTableId = ref('')
|
||||
const draftSnapshot = ref(null)
|
||||
const draftInitialized = ref(false)
|
||||
|
||||
const hazardExtraParams = computed(() => ({
|
||||
taskId: taskId.value,
|
||||
checkPointId: checkPointId.value,
|
||||
locationDraftKey: buildDraftKey(
|
||||
DRAFT_NS.HAZARD_ADD,
|
||||
'location',
|
||||
oneTableId.value,
|
||||
taskId.value,
|
||||
checkPointId.value
|
||||
)
|
||||
}))
|
||||
|
||||
const getDraftKey = () => buildDraftKey(
|
||||
DRAFT_NS.HAZARD_ADD,
|
||||
oneTableId.value,
|
||||
taskId.value,
|
||||
checkPointId.value
|
||||
)
|
||||
|
||||
const {
|
||||
showRestoreBanner,
|
||||
clear: clearDraft,
|
||||
restore: restoreDraft,
|
||||
save: saveDraft,
|
||||
bindAutoSave
|
||||
} = useDraftCache({
|
||||
getKey: getDraftKey,
|
||||
getPayload: () => formRef.value?.getPayload?.() || {},
|
||||
hasContent: hasHazardFormContent,
|
||||
applyPayload: (data) => {
|
||||
nextTick(() => {
|
||||
formRef.value?.applyPayload?.(data)
|
||||
})
|
||||
},
|
||||
clearForm: () => {
|
||||
formRef.value?.resetForm?.()
|
||||
},
|
||||
canSave: () => draftInitialized.value,
|
||||
requireInitialized: true,
|
||||
showRestoreToast: false,
|
||||
onAfterRestore: (data) => {
|
||||
draftSnapshot.value = data
|
||||
}
|
||||
})
|
||||
|
||||
const fetchTaskInfo = async (tableId) => {
|
||||
try {
|
||||
const startRes = await enterCheckPlan(tableId)
|
||||
if (startRes.code === 0 && startRes.data) {
|
||||
const tid = startRes.data.taskId
|
||||
const detailRes = await getCheckTaskDetail(tid)
|
||||
if (detailRes.code === 0 && detailRes.data) {
|
||||
taskId.value = detailRes.data.taskId
|
||||
checkPointId.value = detailRes.data.checkPointId
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取任务信息失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
const clearLocationPickerDraft = () => {
|
||||
removeDraft(hazardExtraParams.value.locationDraftKey)
|
||||
}
|
||||
|
||||
const restoreFormDraft = async () => {
|
||||
await nextTick()
|
||||
restoreDraft()
|
||||
}
|
||||
|
||||
const onSubmitSuccess = () => {
|
||||
clearLocationPickerDraft()
|
||||
clearDraft(false)
|
||||
}
|
||||
|
||||
bindAutoSave(() => draftSnapshot.value)
|
||||
|
||||
const initPage = async (options = {}) => {
|
||||
if (options.taskId) {
|
||||
taskId.value = options.taskId
|
||||
}
|
||||
if (options.checkPointId) {
|
||||
checkPointId.value = options.checkPointId
|
||||
}
|
||||
if (options.id) {
|
||||
oneTableId.value = options.id
|
||||
if (!options.taskId || !options.checkPointId) {
|
||||
await fetchTaskInfo(options.id)
|
||||
}
|
||||
}
|
||||
draftInitialized.value = true
|
||||
await restoreFormDraft()
|
||||
}
|
||||
|
||||
onLoad(async (options) => {
|
||||
await initPage(options)
|
||||
})
|
||||
|
||||
onHide(() => {
|
||||
saveDraft()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.page {
|
||||
min-height: 100vh;
|
||||
background: #ebf2fc;
|
||||
}
|
||||
</style>
|
||||
@@ -10,6 +10,12 @@
|
||||
<text class="text-blue text-bold" style="cursor: pointer; padding: 0 10rpx; color: #2667E9; font-weight: bold;" @click="clearDraft(true)">清空草稿</text>
|
||||
</view>
|
||||
<view class="flex margin-bottom">
|
||||
<view class="text-gray">下一步流程</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<view class="static-field">隐患整改</view>
|
||||
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">整改责任人</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
@@ -81,6 +87,19 @@
|
||||
@cancel="showDatePicker = false"
|
||||
@close="showDatePicker = false"
|
||||
></up-datetime-picker>
|
||||
|
||||
<view class="flex margin-bottom margin-top">
|
||||
<view class="text-gray">短信提醒</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<up-radio-group v-model="sendMsgFlagRadio" placement="row" activeColor="#2667e9">
|
||||
<up-radio
|
||||
label="是"
|
||||
name="yes"
|
||||
:customStyle="{ marginRight: '48rpx' }"
|
||||
></up-radio>
|
||||
<up-radio label="否" name="no"></up-radio>
|
||||
</up-radio-group>
|
||||
|
||||
<view class="btn-group margin-top-xl">
|
||||
<button class="btn-cancel" @click="handleCancel">取消</button>
|
||||
@@ -93,7 +112,8 @@
|
||||
<script setup>
|
||||
import { ref, computed } from 'vue';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import { getDepartmentPersonUsers,assignHiddenDanger } from '@/request/api.js';
|
||||
// import { getDepartmentPersonUsers, assignHiddenDanger } from '@/request/api.js';
|
||||
import { getRelatedDeptUsers, assignHiddenDanger } from '@/request/api.js';
|
||||
import { buildDraftKey, DRAFT_NS } from '@/utils/draftCache.js';
|
||||
import { useDraftCache } from '@/utils/useDraftCache.js';
|
||||
|
||||
@@ -165,6 +185,10 @@
|
||||
const dateValue = ref(Date.now());
|
||||
const selectedDate = ref('');
|
||||
|
||||
// 短信提醒
|
||||
const sendMsgFlagRadio = ref('yes');
|
||||
const sendMsgFlag = computed(() => sendMsgFlagRadio.value === 'yes');
|
||||
|
||||
// 草稿(仅缓存整改期限,不缓存人员选择)
|
||||
const {
|
||||
showRestoreBanner,
|
||||
@@ -175,26 +199,32 @@
|
||||
getKey: () => buildDraftKey(DRAFT_NS.ASSIGN, hazardId.value),
|
||||
getPayload: () => ({
|
||||
selectedDate: selectedDate.value,
|
||||
dateValue: dateValue.value
|
||||
dateValue: dateValue.value,
|
||||
sendMsgFlagRadio: sendMsgFlagRadio.value
|
||||
}),
|
||||
hasContent: (payload) => !!payload.selectedDate,
|
||||
hasContent: (payload) => !!(payload.selectedDate || payload.sendMsgFlagRadio === 'no'),
|
||||
applyPayload: (payload) => {
|
||||
selectedDate.value = payload.selectedDate || '';
|
||||
dateValue.value = payload.dateValue || Date.now();
|
||||
sendMsgFlagRadio.value = payload.sendMsgFlagRadio === 'no' ? 'no' : 'yes';
|
||||
},
|
||||
clearForm: () => {
|
||||
selectedDate.value = '';
|
||||
dateValue.value = Date.now();
|
||||
sendMsgFlagRadio.value = 'yes';
|
||||
},
|
||||
canSave: () => !!hazardId.value
|
||||
});
|
||||
|
||||
bindAutoSave(() => [selectedDate.value]);
|
||||
bindAutoSave(() => [selectedDate.value, sendMsgFlagRadio.value]);
|
||||
|
||||
// 获取部门人员列表
|
||||
const fetchDeptUsers = async () => {
|
||||
try {
|
||||
const res = await getDepartmentPersonUsers();
|
||||
// const res = await getDepartmentPersonUsers();
|
||||
const res = await getRelatedDeptUsers({
|
||||
type:1
|
||||
});
|
||||
if (res.code === 0 && res.data) {
|
||||
deptList.value = res.data;
|
||||
console.log('部门人员树:', deptList.value);
|
||||
@@ -235,7 +265,8 @@
|
||||
hazardId: Number(hazardId.value), // 隐患ID
|
||||
assigneeId: Number(selectedUserId.value), // 被指派人ID
|
||||
deadline: selectedDate.value, // 处理期限
|
||||
assignRemark: '' // 交办备注(可选)
|
||||
assignRemark: '', // 交办备注(可选)
|
||||
sendMsgFlag: sendMsgFlag.value // 是否短信提醒
|
||||
};
|
||||
|
||||
console.log('提交数据:', params);
|
||||
@@ -303,6 +334,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
.static-field {
|
||||
background: #fff;
|
||||
border: 1rpx solid #dcdfe6;
|
||||
border-radius: 8rpx;
|
||||
padding: 20rpx 24rpx;
|
||||
margin-bottom: 20rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.user-popup {
|
||||
background: #fff;
|
||||
|
||||
|
||||
@@ -165,11 +165,12 @@
|
||||
<scroll-view class="cascader-col user-col" scroll-y :key="'dept-users-' + activeDeptIndex">
|
||||
<view v-if="currentDeptUsers.length === 0" class="empty-tip">该部门暂无人员</view>
|
||||
<view v-else>
|
||||
<view class="user-item" v-for="user in currentDeptUsers" :key="'user-' + user.userId">
|
||||
<view class="user-item" v-for="user in currentDeptUsers" :key="'user-' + user.userId" :class="{ 'user-item-locked': isLockedUser(user.userId) }">
|
||||
<up-checkbox
|
||||
usedAlone
|
||||
:checked="userPickerSelectedSet.has(String(user.userId))"
|
||||
:label="formatUserDisplayName(user)"
|
||||
:label="formatUserPickerLabel(user)"
|
||||
:disabled="isLockedUser(user.userId)"
|
||||
activeColor="#2667E9"
|
||||
shape="square"
|
||||
@change="(checked) => onUserCheckChange(user.userId, checked)"
|
||||
@@ -199,7 +200,40 @@
|
||||
:height="canvasHeight"
|
||||
:style="{ width: canvasWidth + 'px', height: canvasHeight + 'px', position: 'fixed', left: '-9999px', top: '-9999px' }"
|
||||
></canvas>
|
||||
<!-- 电子签名 -->
|
||||
<canvas
|
||||
v-if="!showUserPopup && !showManagerPopup && !showRectifyTimePicker"
|
||||
canvas-id="watermarkCanvas"
|
||||
:width="canvasWidth"
|
||||
:height="canvasHeight"
|
||||
:style="{ width: canvasWidth + 'px', height: canvasHeight + 'px', position: 'fixed', left: '-9999px', top: '-9999px' }"
|
||||
></canvas>
|
||||
|
||||
<view class="form-label margin-bottom margin-top">
|
||||
<view class="text-gray">下一步流程</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<view class="static-field">隐患验收</view>
|
||||
|
||||
<view class="form-label margin-bottom margin-top">
|
||||
<view class="text-gray">下一步处理人</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<view class="static-field">企业管理员</view>
|
||||
|
||||
<view class="form-label margin-bottom margin-top">
|
||||
<view class="text-gray">短信提醒</view>
|
||||
<view class="text-red">*</view>
|
||||
</view>
|
||||
<up-radio-group v-model="sendMsgFlagRadio" placement="row" activeColor="#2667e9">
|
||||
<up-radio
|
||||
label="是"
|
||||
name="yes"
|
||||
:customStyle="{ marginRight: '48rpx' }"
|
||||
></up-radio>
|
||||
<up-radio label="否" name="no"></up-radio>
|
||||
</up-radio-group>
|
||||
|
||||
<!-- 电子签名(表单最底部) -->
|
||||
<view class="form-label margin-bottom margin-top flex justify-between align-center" style="width: 100%;">
|
||||
<view class="flex align-center">
|
||||
<view class="text-gray">电子签名</view>
|
||||
@@ -253,7 +287,15 @@
|
||||
<script setup>
|
||||
import {ref,reactive,computed,nextTick,getCurrentInstance} from 'vue'
|
||||
import {onLoad, onHide} from '@dcloudio/uni-app'
|
||||
import {submitRectification,getDepartmentPersonUsers,getRectifyDetail,getDeptUsersWithSubordinates,getHiddenDangerDetail,generateRectifyPlan} from '@/request/api.js'
|
||||
import {
|
||||
submitRectification,
|
||||
// getDepartmentPersonUsers,
|
||||
// getDeptUsersWithSubordinates,
|
||||
getRelatedDeptUsers,
|
||||
getRectifyDetail,
|
||||
getHiddenDangerDetail,
|
||||
generateRectifyPlan
|
||||
} from '@/request/api.js'
|
||||
import { buildDraftKey, buildDraftKeyCompact, DRAFT_NS } from '@/utils/draftCache.js';
|
||||
import { useDraftCache } from '@/utils/useDraftCache.js';
|
||||
import {
|
||||
@@ -415,6 +457,10 @@
|
||||
const rectifyTimeValue = ref(Date.now());
|
||||
const selectedRectifyTime = ref('');
|
||||
|
||||
// 短信提醒
|
||||
const sendMsgFlagRadio = ref('yes');
|
||||
const sendMsgFlag = computed(() => sendMsgFlagRadio.value === 'yes');
|
||||
|
||||
const formatDateValue = (timestamp) => {
|
||||
if (!timestamp) return '';
|
||||
const date = new Date(timestamp);
|
||||
@@ -458,7 +504,18 @@
|
||||
deptName: ''
|
||||
});
|
||||
}
|
||||
selectedUserIds.value = [id];
|
||||
if (!lockedUserIds.value.includes(id)) {
|
||||
lockedUserIds.value = [...lockedUserIds.value, id];
|
||||
}
|
||||
selectedUserIds.value = mergeLockedUserIds([id]);
|
||||
syncSelectedUsersFromIds(selectedUserIds.value);
|
||||
};
|
||||
|
||||
const setLockedDefaultUsers = (ids) => {
|
||||
const normalized = parseIdList(ids);
|
||||
if (!normalized.length) return;
|
||||
lockedUserIds.value = normalized;
|
||||
selectedUserIds.value = mergeLockedUserIds(selectedUserIds.value);
|
||||
syncSelectedUsersFromIds(selectedUserIds.value);
|
||||
};
|
||||
|
||||
@@ -529,7 +586,7 @@
|
||||
showRectifyTimePicker.value = false;
|
||||
};
|
||||
|
||||
// 人员列表(安全管理人员:本部门及上级;整改责任人:隐患关联部门)
|
||||
// 人员列表(安全管理人员、整改责任人:关联部门及人员,type=2)
|
||||
const managerDeptList = ref([])
|
||||
const deptList = ref([])
|
||||
const detailPersonPool = ref([])
|
||||
@@ -541,9 +598,25 @@
|
||||
const showUserPopup = ref(false)
|
||||
const selectedUserIds = ref([])
|
||||
const selectedUsers = ref([])
|
||||
const lockedUserIds = ref([])
|
||||
const activeDeptIndex = ref(0)
|
||||
const userPickerSelectedIds = ref([])
|
||||
|
||||
const isLockedUser = (userId) => lockedUserIds.value.includes(String(userId));
|
||||
|
||||
const mergeLockedUserIds = (ids) => {
|
||||
const merged = new Set([
|
||||
...(ids || []).map((id) => String(id)),
|
||||
...lockedUserIds.value.map((id) => String(id))
|
||||
]);
|
||||
return [...merged];
|
||||
};
|
||||
|
||||
const formatUserPickerLabel = (user) => {
|
||||
const name = formatUserDisplayName(user);
|
||||
return isLockedUser(user.userId) ? `${name}(默认)` : name;
|
||||
};
|
||||
|
||||
const formatUserDisplayName = (user) => {
|
||||
if (user.postName) {
|
||||
return `${user.nickName}_${user.postName}`;
|
||||
@@ -647,6 +720,10 @@
|
||||
|
||||
function onUserCheckChange(userId, checked) {
|
||||
const id = String(userId);
|
||||
if (!checked && isLockedUser(id)) {
|
||||
uni.showToast({ title: '默认整改责任人不可取消', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
if (checked) {
|
||||
if (!userPickerSelectedSet.value.has(id)) {
|
||||
userPickerSelectedIds.value = [...userPickerSelectedIds.value, id];
|
||||
@@ -668,7 +745,7 @@
|
||||
};
|
||||
|
||||
const openUserPopup = () => {
|
||||
userPickerSelectedIds.value = [...selectedUserIds.value];
|
||||
userPickerSelectedIds.value = mergeLockedUserIds(selectedUserIds.value);
|
||||
const firstDeptWithUsers = deptList.value.findIndex((dept) => dept.users?.length > 0);
|
||||
activeDeptIndex.value = firstDeptWithUsers >= 0 ? firstDeptWithUsers : 0;
|
||||
showUserPopup.value = true;
|
||||
@@ -687,45 +764,65 @@
|
||||
|
||||
// 确认选择整改责任人
|
||||
const confirmUserSelect = () => {
|
||||
userPickerSelectedIds.value = mergeLockedUserIds(userPickerSelectedIds.value);
|
||||
selectedUserIds.value = userPickerSelectedIds.value.map((id) => String(id));
|
||||
syncSelectedUsersFromIds(selectedUserIds.value);
|
||||
showUserPopup.value = false;
|
||||
};
|
||||
|
||||
// 获取安全管理人员候选列表(本部门及上级部门)
|
||||
const fetchManagerDeptUsers = async () => {
|
||||
// 获取关联部门及人员列表(全部上级部门、本部门、全部下级部门)
|
||||
const fetchRelatedDeptUsers = async () => {
|
||||
try {
|
||||
const res = await getDepartmentPersonUsers();
|
||||
const res = await getRelatedDeptUsers({ type: 2 });
|
||||
if (res.code === 0 && res.data) {
|
||||
managerDeptList.value = res.data;
|
||||
deptList.value = res.data;
|
||||
if (selectedManagerIds.value.length > 0) {
|
||||
syncSelectedManagersFromIds(selectedManagerIds.value);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取安全管理人员列表失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 获取整改责任人候选列表(隐患关联部门人员)
|
||||
const fetchRectifyDeptUsers = async () => {
|
||||
console.log('当前hazardId:', hazardId.value);
|
||||
try {
|
||||
const res = await getDeptUsersWithSubordinates({ hazardId: hazardId.value });
|
||||
if (res.code === 0 && res.data) {
|
||||
deptList.value = res.data;
|
||||
if (selectedUserIds.value.length > 0) {
|
||||
syncSelectedUsersFromIds(selectedUserIds.value);
|
||||
}
|
||||
console.log('整改责任人部门树:', deptList.value);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取整改责任人列表失败:', error);
|
||||
console.error('获取关联部门人员列表失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 获取安全管理人员候选列表(本部门及上级部门)
|
||||
// const fetchManagerDeptUsers = async () => {
|
||||
// try {
|
||||
// const res = await getDepartmentPersonUsers();
|
||||
// if (res.code === 0 && res.data) {
|
||||
// managerDeptList.value = res.data;
|
||||
// if (selectedManagerIds.value.length > 0) {
|
||||
// syncSelectedManagersFromIds(selectedManagerIds.value);
|
||||
// }
|
||||
// }
|
||||
// } catch (error) {
|
||||
// console.error('获取安全管理人员列表失败:', error);
|
||||
// }
|
||||
// };
|
||||
|
||||
// 获取整改责任人候选列表(隐患关联部门人员)
|
||||
// const fetchRectifyDeptUsers = async () => {
|
||||
// console.log('当前hazardId:', hazardId.value);
|
||||
// try {
|
||||
// const res = await getDeptUsersWithSubordinates({ hazardId: hazardId.value });
|
||||
// if (res.code === 0 && res.data) {
|
||||
// deptList.value = res.data;
|
||||
// if (selectedUserIds.value.length > 0) {
|
||||
// syncSelectedUsersFromIds(selectedUserIds.value);
|
||||
// }
|
||||
// console.log('整改责任人部门树:', deptList.value);
|
||||
// }
|
||||
// } catch (error) {
|
||||
// console.error('获取整改责任人列表失败:', error);
|
||||
// }
|
||||
// };
|
||||
|
||||
const fetchPersonnelLists = async () => {
|
||||
await Promise.all([fetchManagerDeptUsers(), fetchRectifyDeptUsers()]);
|
||||
await fetchRelatedDeptUsers();
|
||||
if (selectedManagerIds.value.length > 0) {
|
||||
syncSelectedManagersFromIds(selectedManagerIds.value);
|
||||
}
|
||||
@@ -763,7 +860,8 @@
|
||||
manageIds: selectedManagerIds.value.map((id) => Number(id)),
|
||||
memberIds: selectedUserIds.value.map((id) => Number(id)),
|
||||
rectifyTime: selectedRectifyTime.value || formatDateValue(rectifyTimeValue.value),
|
||||
signPath: signatureServerPath.value || ''
|
||||
signPath: signatureServerPath.value || '',
|
||||
sendMsgFlag: sendMsgFlag.value
|
||||
};
|
||||
|
||||
// 编辑模式需要传递rectifyId
|
||||
@@ -1037,6 +1135,11 @@
|
||||
} else if (data.rectifierId) {
|
||||
selectedUserIds.value = [String(data.rectifierId)];
|
||||
}
|
||||
if (data.assigneeId) {
|
||||
setLockedDefaultUsers(data.assigneeId);
|
||||
} else if (data.rectifierId) {
|
||||
setLockedDefaultUsers(data.rectifierId);
|
||||
}
|
||||
await fetchPersonnelLists();
|
||||
|
||||
// 回显附件
|
||||
@@ -1138,7 +1241,8 @@
|
||||
signatureUrl: signatureUrl.value,
|
||||
signatureLocalPath: signatureLocalPath.value,
|
||||
showCanvas: showCanvas.value,
|
||||
signaturePaths: signaturePaths.value
|
||||
signaturePaths: signaturePaths.value,
|
||||
sendMsgFlagRadio: sendMsgFlagRadio.value
|
||||
}),
|
||||
hasContent: rectifyDraftHasContent,
|
||||
applyPayload: (data) => {
|
||||
@@ -1158,6 +1262,7 @@
|
||||
} else if (data.showCanvas === false) {
|
||||
showCanvas.value = false;
|
||||
}
|
||||
sendMsgFlagRadio.value = data.sendMsgFlagRadio === 'no' ? 'no' : 'yes';
|
||||
},
|
||||
clearForm: () => {
|
||||
formData.rectifyPlan = '';
|
||||
@@ -1175,6 +1280,7 @@
|
||||
if (signatureRef.value) {
|
||||
signatureRef.value.clear();
|
||||
}
|
||||
sendMsgFlagRadio.value = 'yes';
|
||||
},
|
||||
canSave: () => !!(hazardId.value || rectifyId.value),
|
||||
onAfterRestore: (data) => {
|
||||
@@ -1203,7 +1309,8 @@
|
||||
signatureUrl.value,
|
||||
signatureLocalPath.value,
|
||||
showCanvas.value,
|
||||
signaturePaths.value
|
||||
signaturePaths.value,
|
||||
sendMsgFlagRadio.value
|
||||
]);
|
||||
|
||||
onHide(() => {
|
||||
@@ -1328,6 +1435,17 @@
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.static-field {
|
||||
background: #fff;
|
||||
border: 1rpx solid #dcdfe6;
|
||||
border-radius: 8rpx;
|
||||
padding: 20rpx 24rpx;
|
||||
margin-bottom: 20rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
// 选择触发器样式
|
||||
.select-trigger {
|
||||
@@ -1479,6 +1597,10 @@
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.user-item-locked {
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
.popup-footer {
|
||||
display: flex;
|
||||
|
||||
@@ -175,14 +175,18 @@
|
||||
<text style="color: #333333;">{{ item.createdAt }}</text>
|
||||
</view>
|
||||
<!-- 操作按钮 -->
|
||||
<view class="margin-top flex justify-end" style="gap: 16rpx;">
|
||||
<button class="cu-btn round lg light bg-blue" @click.stop="viewHazardDetail(item)">查看详情</button>
|
||||
<button v-if="item.statusName === '待整改' && item.canEdit"
|
||||
class="cu-btn round lg bg-blue" @click.stop="goRectification(item)">立即整改</button>
|
||||
<button v-if="item.statusName === '待验收' && canAcceptance"
|
||||
class="cu-btn round lg bg-blue" @click.stop="goAcceptance(item)">立即验收</button>
|
||||
<button v-if="item.statusName === '待交办'"
|
||||
class="cu-btn round lg bg-blue" @click.stop="assignHazard(item)">隐患交办</button>
|
||||
<view class="flex justify-end danger-card-actions">
|
||||
<button class="round cu-btn light bg-blue" @click.stop="viewHazardDetail(item)">查看详情</button>
|
||||
<button v-if="item.statusName === '待整改' && item.canEdit"
|
||||
class="round cu-btn light bg-blue" @click.stop="assignHazard(item)">隐患交办</button>
|
||||
<button v-if="item.statusName === '待整改' && item.canEdit"
|
||||
class="round cu-btn bg-blue" @click.stop="goRectification(item)">立即整改</button>
|
||||
<button v-if="item.statusName === '待验收' && item.canEdit"
|
||||
class="round cu-btn light bg-blue" @click.stop="editRectification(item)">编辑整改信息</button>
|
||||
<button v-if="item.statusName === '待验收' && canAcceptance"
|
||||
class="round cu-btn bg-blue" @click.stop="goAcceptance(item)">立即验收</button>
|
||||
<button v-if="item.statusName === '待交办'"
|
||||
class="round cu-btn bg-blue" @click.stop="assignHazard(item)">隐患交办</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -937,4 +941,21 @@
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.danger-card-actions {
|
||||
margin-top: 20rpx;
|
||||
gap: 10rpx;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.cu-btn {
|
||||
padding: 0 24rpx !important;
|
||||
font-size: 26rpx !important;
|
||||
height: 60rpx !important;
|
||||
line-height: 60rpx !important;
|
||||
white-space: nowrap !important;
|
||||
flex-shrink: 0 !important;
|
||||
width: auto !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -161,6 +161,13 @@ export function getHiddenDangerLabelList() {
|
||||
method: 'GET'
|
||||
});
|
||||
}
|
||||
//获取隐患来源列表
|
||||
export function getHazardSourceList() {
|
||||
return requestAPI({
|
||||
url: '/frontend/hazard/source/list',
|
||||
method: 'GET'
|
||||
});
|
||||
}
|
||||
//获取部门人员列表(本部门、上级部门、上上级部门)
|
||||
export function getDepartmentPersonUsers(params) {
|
||||
return requestAPI({
|
||||
@@ -170,6 +177,15 @@ export function getDepartmentPersonUsers(params) {
|
||||
});
|
||||
}
|
||||
|
||||
// 获取关联部门及人员列表(全部上级部门、本部门、全部下级部门)
|
||||
export function getRelatedDeptUsers(params) {
|
||||
return requestAPI({
|
||||
url: '/frontend/hazard/dept/users/related',
|
||||
method: 'GET',
|
||||
data: params
|
||||
});
|
||||
}
|
||||
|
||||
//获取部门人员列表(包含参与过该隐患环节下的所有部门人员)
|
||||
export function getDeptUsersWithSubordinates(params) {
|
||||
return requestAPI({
|
||||
|
||||
@@ -5,7 +5,7 @@ import Request from './luch-request/index.js';
|
||||
// const baseUrl = 'https://yingji.hexieapi.com/prod-api';
|
||||
// const baseUrl = 'http://192.168.1.168:5004'; //廖哥本地
|
||||
const baseUrl = 'http://192.168.1.140:5004'; //超哥本地
|
||||
// const baseUrl = 'http://192.168.1.158:7003'; //测试环境
|
||||
// const baseUrl = 'http://192.168.1.158:7003/prod-api'; //测试环境
|
||||
|
||||
|
||||
// 图片/文件资源域名:去掉 /prod-api,便于 <image> / previewImage / downloadFile 直接访问
|
||||
|
||||
1
unpackage/dist/build/mp-weixin/app.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/app.js
vendored
Normal 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 u=(e.path||o.tempFilePaths[c]).split("?")[0].split(".").pop().toLowerCase();t.includes(u)?(p.push(e),n.push(o.tempFilePaths[c])):(i=!0,s=u)})),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}}),s().app.mount("#app"),exports.createApp=s;
|
||||
85
unpackage/dist/build/mp-weixin/app.json
vendored
Normal file
85
unpackage/dist/build/mp-weixin/app.json
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"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/rectification",
|
||||
"pages/hiddendanger/acceptance",
|
||||
"pages/hiddendanger/assignment",
|
||||
"pages/closeout/application",
|
||||
"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/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": {}
|
||||
}
|
||||
2
unpackage/dist/build/mp-weixin/app.wxss
vendored
Normal file
2
unpackage/dist/build/mp-weixin/app.wxss
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/common/assets.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/common/assets.js
vendored
Normal 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";
|
||||
7
unpackage/dist/build/mp-weixin/common/vendor.js
vendored
Normal file
7
unpackage/dist/build/mp-weixin/common/vendor.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/components/AreaFormPopup.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/AreaFormPopup.js
vendored
Normal 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);
|
||||
4
unpackage/dist/build/mp-weixin/components/AreaFormPopup.json
vendored
Normal file
4
unpackage/dist/build/mp-weixin/components/AreaFormPopup.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/components/AreaFormPopup.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/AreaFormPopup.wxml
vendored
Normal 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>
|
||||
1
unpackage/dist/build/mp-weixin/components/AreaFormPopup.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/AreaFormPopup.wxss
vendored
Normal 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)}
|
||||
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPanel.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPanel.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPanel.json
vendored
Normal file
9
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPanel.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPanel.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPanel.wxml
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPanel.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPanel.wxss
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPopup.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPopup.js
vendored
Normal 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);
|
||||
7
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPopup.json
vendored
Normal file
7
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPopup.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"u-popup": "../../uni_modules/uview-plus/components/u-popup/u-popup",
|
||||
"hazard-form-panel": "./HazardFormPanel"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPopup.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPopup.wxml
vendored
Normal 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>
|
||||
0
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPopup.wxss
vendored
Normal file
0
unpackage/dist/build/mp-weixin/components/hazard/HazardFormPopup.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazard/hazardForm.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazard/hazardForm.js
vendored
Normal 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,i={}){var r,n,d;const{formData:s,address:o,lng:u,lat:c,areaId:g,fileList:I}=l,f=null==(r=l.tagOptions)?void 0:r[s.tagIndex],m=s.tagId??(f?f.id:null);return{title:s.title,level:(null==(n=e[s.level])?void 0:n.id)||2,lng:u||0,lat:c||0,address:o||"",areaId:g||null,description:s.description||"",source:(null==(d=a[s.source])?void 0:d.title)||"",tagId:m,attachments:(I||[]).filter((t=>"success"===t.status)).map((e=>t.buildAttachmentItem(e))),regulationId:s.regulationId||null,...i}},exports.createEmptyHazardPayload=function(){return{formData:{title:"",level:0,source:0,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||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)};
|
||||
1
unpackage/dist/build/mp-weixin/components/hazard/index.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazard/index.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";require("../../common/vendor.js"),require("../../request/request.js");
|
||||
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanel.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanel.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanel.json
vendored
Normal file
4
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanel.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanel.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanel.wxml
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanel.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanel.wxss
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanelV2.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanelV2.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanelV2.json
vendored
Normal file
4
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanelV2.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanelV2.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanelV2.wxml
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanelV2.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazardDetail/HazardDetailPanelV2.wxss
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.hazard-detail-panel-v2.data-v-1547c16c{flex:1;min-height:0;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.loading-wrap.data-v-1547c16c,.empty-wrap.data-v-1547c16c{flex:1;display:flex;align-items:center;justify-content:center;min-height:0}.loading-text.data-v-1547c16c,.empty-text.data-v-1547c16c{font-size:28rpx;color:#909399}.detail-body.data-v-1547c16c{display:flex;gap:20rpx;align-items:stretch;overflow:hidden;box-sizing:border-box}.steps-card.data-v-1547c16c{width:140rpx;flex-shrink:0;background:#fff;border-radius:20rpx;box-sizing:border-box}.step-item.data-v-1547c16c{padding:0 12rpx}.step-track.data-v-1547c16c{display:flex;flex-direction:column;align-items:center;padding:28rpx 0 0}.step-dot.data-v-1547c16c{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-1547c16c{background:#2667e9}.step-icon.data-v-1547c16c{width:36rpx;height:36rpx}.step-label.data-v-1547c16c{margin-top:12rpx;font-size:24rpx;color:#999;line-height:1.2}.step-label--active.data-v-1547c16c{color:#2667e9;font-weight:600}.step-line.data-v-1547c16c{width:0;height:40rpx;margin:10rpx 0;border-left:2rpx dashed #dcdfe6}.content-column.data-v-1547c16c{flex:1;width:0;min-height:0;box-sizing:border-box}.content-scroll.data-v-1547c16c{width:100%;box-sizing:border-box}.node-section.data-v-1547c16c{box-sizing:border-box;padding:0;margin-bottom:24rpx}.node-section--last.data-v-1547c16c{padding-bottom:40rpx;margin-bottom:0}.detail-card.data-v-1547c16c{background:#fff;border-radius:20rpx;overflow:hidden;padding:28rpx 38rpx;box-sizing:border-box}.card-header-v2.data-v-1547c16c{display:flex;align-items:flex-start;justify-content:space-between;gap:16rpx;padding:0}.card-header-main.data-v-1547c16c{flex:1;min-width:0}.operator.data-v-1547c16c{font-size:28rpx;font-weight:600;color:#303133;line-height:1.5;word-break:break-all}.time.data-v-1547c16c{display:block;margin-top:8rpx;font-size:24rpx;color:#999;line-height:1.4}.level-badge.data-v-1547c16c{flex-shrink:0;padding:6rpx 16rpx;border-radius:8rpx;font-size:22rpx;font-weight:500;white-space:nowrap}.level-badge.level-normal.data-v-1547c16c{background:#fff7e6;border:2rpx solid #ffd591;color:#fa8c16}.level-badge.level-major.data-v-1547c16c{background:#fff1f0;border:2rpx solid #ffa39e;color:#f5222d}.card-divider.data-v-1547c16c{height:0;margin:20rpx 0;border-top:2rpx dashed #eee}.card-body.data-v-1547c16c{padding:0}.detail-row-v2.data-v-1547c16c{display:flex;align-items:flex-start;justify-content:flex-start;gap:24rpx;padding:18rpx 0}.detail-row-v2--block.data-v-1547c16c{flex-wrap:wrap}.label.data-v-1547c16c{flex-shrink:0;font-size:26rpx;color:#999;line-height:1.5}.value.data-v-1547c16c{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-1547c16c{display:flex;align-items:center}.area-dot.data-v-1547c16c{width:20rpx;height:20rpx;border-radius:50%;margin-right:12rpx;flex-shrink:0}.level-tag.data-v-1547c16c{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-1547c16c{background:#fff7e6;border:2rpx solid #ffd591;color:#fa8c16}.level-major.data-v-1547c16c{background:#fff1f0;border:2rpx solid #ffa39e;color:#f5222d}.tag-badge.data-v-1547c16c{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-1547c16c{display:flex;flex-wrap:wrap;gap:16rpx;flex:1;min-width:0}.attachment-img.data-v-1547c16c{width:160rpx;height:160rpx;border-radius:12rpx;background:#f5f7fa}.sign-img.data-v-1547c16c{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-1547c16c{display:inline-block;padding:12rpx 20rpx;background:#f5f7fa;border:1rpx solid #e4e7ed;border-radius:8rpx;color:#2667e9;font-size:24rpx}.result-tag.data-v-1547c16c{padding:6rpx 16rpx;border-radius:6rpx;font-size:24rpx}.result-tag--pass.data-v-1547c16c{background:#f0f9eb;color:#67c23a}.result-tag--fail.data-v-1547c16c{background:#fef0f0;color:#f56c6c}
|
||||
1
unpackage/dist/build/mp-weixin/components/hazardDetail/hazardDetail.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazardDetail/hazardDetail.js
vendored
Normal 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.generateHazardHistory=function(r){if(!r)return[];const i=[];var s;return i.push({type:e,nodeName:"提交",titlePrefix:"提交",operator:r.reporterName||"-",time:r.createdAt||"-",content:{title:r.title||"-",source:r.source||"-",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`};
|
||||
1
unpackage/dist/build/mp-weixin/components/hazardDetail/useHazardDetailScroll.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/components/hazardDetail/useHazardDetailScroll.js
vendored
Normal 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}};
|
||||
1
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-button/wd-button.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-button/wd-button.js
vendored
Normal 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);
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"wd-icon": "../wd-icon/wd-icon"
|
||||
}
|
||||
}
|
||||
@@ -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
1
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-icon/wd-icon.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-icon/wd-icon.js
vendored
Normal 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);
|
||||
4
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-icon/wd-icon.json
vendored
Normal file
4
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-icon/wd-icon.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-icon/wd-icon.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-icon/wd-icon.wxml
vendored
Normal 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>
|
||||
1
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-icon/wd-icon.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/node-modules/wot-design-uni/components/wd-icon/wd-icon.wxss
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"wd-button": "../wd-button/wd-button"
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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)}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Idphotomanagement/Idphotomanagement.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Idphotomanagement/Idphotomanagement.js
vendored
Normal file
File diff suppressed because one or more lines are too long
8
unpackage/dist/build/mp-weixin/pages/Idphotomanagement/Idphotomanagement.json
vendored
Normal file
8
unpackage/dist/build/mp-weixin/pages/Idphotomanagement/Idphotomanagement.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Idphotomanagement/Idphotomanagement.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Idphotomanagement/Idphotomanagement.wxml
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/pages/Idphotomanagement/Idphotomanagement.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Idphotomanagement/Idphotomanagement.wxss
vendored
Normal 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}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionchecklist/Inspectionchecklist.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionchecklist/Inspectionchecklist.js
vendored
Normal 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);
|
||||
4
unpackage/dist/build/mp-weixin/pages/Inspectionchecklist/Inspectionchecklist.json
vendored
Normal file
4
unpackage/dist/build/mp-weixin/pages/Inspectionchecklist/Inspectionchecklist.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "检查清单",
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionchecklist/Inspectionchecklist.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionchecklist/Inspectionchecklist.wxml
vendored
Normal 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>
|
||||
0
unpackage/dist/build/mp-weixin/pages/Inspectionchecklist/Inspectionchecklist.wxss
vendored
Normal file
0
unpackage/dist/build/mp-weixin/pages/Inspectionchecklist/Inspectionchecklist.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionlog/Inspectionlog.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionlog/Inspectionlog.js
vendored
Normal 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);
|
||||
4
unpackage/dist/build/mp-weixin/pages/Inspectionlog/Inspectionlog.json
vendored
Normal file
4
unpackage/dist/build/mp-weixin/pages/Inspectionlog/Inspectionlog.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "检查记录",
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionlog/Inspectionlog.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionlog/Inspectionlog.wxml
vendored
Normal 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>
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionlog/Inspectionlog.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionlog/Inspectionlog.wxss
vendored
Normal 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}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/Inspectionresult.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/Inspectionresult.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
unpackage/dist/build/mp-weixin/pages/Inspectionresult/Inspectionresult.json
vendored
Normal file
9
unpackage/dist/build/mp-weixin/pages/Inspectionresult/Inspectionresult.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/Inspectionresult.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/Inspectionresult.wxml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<view class="{{['page', 'padding', 'data-v-8e75359a', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{J}}"><view wx:if="{{a}}" class="progress-bar data-v-8e75359a"><view class="progress-text data-v-8e75359a"><text class="current-index data-v-8e75359a">第 {{b}} 个问题</text><text class="total-count data-v-8e75359a"> / 共 {{c}} 个</text></view><view class="progress-line data-v-8e75359a"><view class="progress-inner data-v-8e75359a" style="{{'width:' + d}}"></view></view></view><view class="padding bg-white radius data-v-8e75359a"><view class="text-bold data-v-8e75359a">{{e}}</view><view class="margin-top data-v-8e75359a"><rich-text class="data-v-8e75359a" nodes="{{f}}"></rich-text></view><view class="margin-top data-v-8e75359a"><u-radio-group wx:if="{{j}}" class="data-v-8e75359a" virtualHostClass="data-v-8e75359a" u-s="{{['d']}}" bindchange="{{h}}" u-i="8e75359a-0" bind:__l="__l" bindupdateModelValue="{{i}}" u-p="{{j}}"><u-radio wx:for="{{g}}" wx:for-item="item" wx:key="a" class="data-v-8e75359a" virtualHostClass="data-v-8e75359a" 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-8e75359a"><view class="hazard-tip data-v-8e75359a"><text class="cuIcon-warn text-yellow margin-right-xs data-v-8e75359a"></text><text class="text-orange data-v-8e75359a">检查结果为异常,需填写隐患信息</text></view><view wx:if="{{l}}" class="hazard-btn data-v-8e75359a" bindtap="{{m}}"><text class="text-blue data-v-8e75359a">填写隐患信息</text></view><view wx:else class="hazard-card data-v-8e75359a"><view class="card-header data-v-8e75359a"><view class="text-bold text-black data-v-8e75359a">{{n}}</view><view class="{{['level-tag', 'data-v-8e75359a', p && 'level-minor', q && 'level-normal', r && 'level-major']}}">{{o}}</view></view><view class="card-body data-v-8e75359a"><view class="info-row data-v-8e75359a"><text class="text-gray data-v-8e75359a">检查形式:</text><text class="data-v-8e75359a">{{s}}</text></view><view class="info-row data-v-8e75359a"><text class="text-gray data-v-8e75359a">隐患位置:</text><text class="data-v-8e75359a">{{t}}</text></view><view class="info-row data-v-8e75359a"><text class="text-gray data-v-8e75359a">隐患描述:</text><text class="description-text data-v-8e75359a">{{v}}</text></view><view wx:if="{{w}}" class="info-row data-v-8e75359a"><text class="text-gray data-v-8e75359a">附件:</text><text class="data-v-8e75359a">{{x}}个文件</text></view></view><view class="card-footer data-v-8e75359a"><button class="btn-edit data-v-8e75359a" bindtap="{{y}}">修改</button><button class="btn-clear data-v-8e75359a" bindtap="{{z}}">清除</button></view></view></view><view class="margin-top data-v-8e75359a"><up-textarea wx:if="{{B}}" class="data-v-8e75359a" virtualHostClass="data-v-8e75359a" u-i="8e75359a-2" bind:__l="__l" bindupdateModelValue="{{A}}" u-p="{{B}}"></up-textarea></view></view><button class="bg-blue round margin-top-xl data-v-8e75359a" bindtap="{{C}}">提交</button><hazard-form-popup wx:if="{{I}}" class="r data-v-8e75359a" virtualHostClass="r data-v-8e75359a" u-r="hazardFormRef" bindconfirm="{{E}}" bindclearDraft="{{F}}" u-i="8e75359a-3" bind:__l="__l" bindupdateShow="{{G}}" bindupdateModelValue="{{H}}" u-p="{{I}}"/></view>
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/Inspectionresult.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/Inspectionresult.wxss
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.page.data-v-8e75359a{min-height:100vh;background:#ebf2fc}.progress-bar.data-v-8e75359a{background:#fff;border-radius:12rpx;padding:24rpx;margin-bottom:20rpx;box-shadow:0 2rpx 12rpx rgba(0,0,0,.05)}.progress-text.data-v-8e75359a{display:flex;align-items:baseline;margin-bottom:16rpx}.progress-text .current-index.data-v-8e75359a{font-size:32rpx;font-weight:700;color:#2667e9}.progress-text .total-count.data-v-8e75359a{font-size:28rpx;color:#999}.progress-line.data-v-8e75359a{height:12rpx;background:#e5e5e5;border-radius:6rpx;overflow:hidden}.progress-inner.data-v-8e75359a{height:100%;background:linear-gradient(90deg,#2667e9,#5b9bff);border-radius:6rpx;transition:width .3s ease}.hazard-section.data-v-8e75359a{border-top:1rpx solid #eee;padding-top:20rpx}.hazard-tip.data-v-8e75359a{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-8e75359a{color:#fa8c16;font-size:26rpx}.hazard-btn.data-v-8e75359a{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-8e75359a{color:#2667e9;font-size:28rpx}.hazard-card.data-v-8e75359a{background:#f5f9ff;border:1rpx solid #D6E4FF;border-radius:12rpx;overflow:hidden}.hazard-card .card-header.data-v-8e75359a{display:flex;justify-content:space-between;align-items:center;padding:20rpx;border-bottom:1rpx solid #E8E8E8;background:#fff}.hazard-card .card-body.data-v-8e75359a{padding:20rpx}.hazard-card .card-body .info-row.data-v-8e75359a{display:flex;margin-bottom:12rpx;font-size:26rpx}.hazard-card .card-body .info-row.data-v-8e75359a:last-child{margin-bottom:0}.hazard-card .card-body .info-row .text-gray.data-v-8e75359a{flex-shrink:0;color:#999}.hazard-card .card-body .info-row .description-text.data-v-8e75359a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.hazard-card .card-footer.data-v-8e75359a{display:flex;border-top:1rpx solid #E8E8E8;background:#fff}.hazard-card .card-footer button.data-v-8e75359a{flex:1;height:80rpx;line-height:80rpx;font-size:28rpx;border-radius:0}.hazard-card .card-footer button.data-v-8e75359a:after{border:none}.hazard-card .card-footer .btn-edit.data-v-8e75359a{background:#fff;color:#2667e9;border-right:1rpx solid #E8E8E8}.hazard-card .card-footer .btn-clear.data-v-8e75359a{background:#fff;color:#f56c6c}.level-tag.data-v-8e75359a{padding:4rpx 16rpx;border-radius:8rpx;font-size:24rpx}.level-minor.data-v-8e75359a{background:#f6ffed;border:2rpx solid #B7EB8F;color:#52c41a}.level-normal.data-v-8e75359a{background:#fff7e6;border:2rpx solid #FFD591;color:#fa8c16}.level-major.data-v-8e75359a{background:#fff1f0;border:2rpx solid #FFA39E;color:#f5222d}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/detail.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/detail.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
unpackage/dist/build/mp-weixin/pages/Inspectionresult/detail.json
vendored
Normal file
11
unpackage/dist/build/mp-weixin/pages/Inspectionresult/detail.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/detail.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/detail.wxml
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/detail.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/detail.wxss
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/list.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/list.js
vendored
Normal 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);
|
||||
7
unpackage/dist/build/mp-weixin/pages/Inspectionresult/list.json
vendored
Normal file
7
unpackage/dist/build/mp-weixin/pages/Inspectionresult/list.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTitleText": "检查列表",
|
||||
"usingComponents": {
|
||||
"u-navbar": "../../uni_modules/uview-plus/components/u-navbar/u-navbar"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/list.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/list.wxml
vendored
Normal 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>
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/list.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionresult/list.wxss
vendored
Normal 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}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionwarning/Inspectionwarning.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionwarning/Inspectionwarning.js
vendored
Normal 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);
|
||||
8
unpackage/dist/build/mp-weixin/pages/Inspectionwarning/Inspectionwarning.json
vendored
Normal file
8
unpackage/dist/build/mp-weixin/pages/Inspectionwarning/Inspectionwarning.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/Inspectionwarning/Inspectionwarning.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionwarning/Inspectionwarning.wxml
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/mp-weixin/pages/Inspectionwarning/Inspectionwarning.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/Inspectionwarning/Inspectionwarning.wxss
vendored
Normal 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}
|
||||
1
unpackage/dist/build/mp-weixin/pages/area/management.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/area/management.js
vendored
Normal 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-6ce07390"]]);wx.createPage(l);
|
||||
6
unpackage/dist/build/mp-weixin/pages/area/management.json
vendored
Normal file
6
unpackage/dist/build/mp-weixin/pages/area/management.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"navigationBarTitleText": "区域管理",
|
||||
"usingComponents": {
|
||||
"area-form-popup": "../../components/AreaFormPopup"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/area/management.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/area/management.wxml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<view class="{{['padding', 'page', 'data-v-6ce07390', virtualHostClass]}}" style="{{virtualHostStyle}}" hidden="{{virtualHostHidden || false}}" id="{{h}}"><view wx:if="{{a}}" class="area-list data-v-6ce07390"><view wx:for="{{b}}" wx:for-item="item" wx:key="f" class="padding bg-white radius margin-bottom data-v-6ce07390"><view class="flex justify-between data-v-6ce07390"><view class="data-v-6ce07390"><view class="text-bold text-black data-v-6ce07390">{{item.a}}</view><view class="margin-top flex align-center data-v-6ce07390"><text class="data-v-6ce07390">颜色:</text><view class="color-dot data-v-6ce07390" style="{{'background-color:' + item.b}}"></view><text class="margin-left-xs data-v-6ce07390">{{item.c}}</text></view></view><view class="data-v-6ce07390"><button class="bg-blue cu-btn data-v-6ce07390" bindtap="{{item.d}}">编辑</button><button class="bg-red cu-btn margin-left data-v-6ce07390" bindtap="{{item.e}}">删除</button></view></view></view></view><view wx:else class="empty-state data-v-6ce07390"><text class="text-gray data-v-6ce07390">暂无区域数据</text></view><button class="add-btn bg-blue round data-v-6ce07390" bindtap="{{c}}">新增公司区域</button><area-form-popup wx:if="{{g}}" class="data-v-6ce07390" virtualHostClass="data-v-6ce07390" bindsubmit="{{d}}" bindclose="{{e}}" u-i="6ce07390-0" bind:__l="__l" bindupdateVisible="{{f}}" u-p="{{g}}"/></view>
|
||||
1
unpackage/dist/build/mp-weixin/pages/area/management.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/area/management.wxss
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.page.data-v-6ce07390{min-height:100vh;background:#ebf2fc;padding-bottom:120rpx}.area-list.data-v-6ce07390{padding-bottom:20rpx}.empty-state.data-v-6ce07390{padding:200rpx 0;text-align:center}.add-btn.data-v-6ce07390{position:fixed;bottom:40rpx;left:30rpx;right:30rpx;height:88rpx;line-height:88rpx;border-radius:44rpx;font-size:32rpx}.color-dot.data-v-6ce07390{width:30rpx;height:30rpx;border-radius:6rpx;flex-shrink:0;margin-left:10rpx}
|
||||
1
unpackage/dist/build/mp-weixin/pages/checklist/checklist.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/checklist/checklist.js
vendored
Normal 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);
|
||||
4
unpackage/dist/build/mp-weixin/pages/checklist/checklist.json
vendored
Normal file
4
unpackage/dist/build/mp-weixin/pages/checklist/checklist.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "检查表",
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/checklist/checklist.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/checklist/checklist.wxml
vendored
Normal 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>
|
||||
1
unpackage/dist/build/mp-weixin/pages/checklist/checklist.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/checklist/checklist.wxss
vendored
Normal 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}
|
||||
1
unpackage/dist/build/mp-weixin/pages/checklist/detail.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/checklist/detail.js
vendored
Normal 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);
|
||||
4
unpackage/dist/build/mp-weixin/pages/checklist/detail.json
vendored
Normal file
4
unpackage/dist/build/mp-weixin/pages/checklist/detail.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "检查计划详情",
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/build/mp-weixin/pages/checklist/detail.wxml
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/checklist/detail.wxml
vendored
Normal 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>
|
||||
1
unpackage/dist/build/mp-weixin/pages/checklist/detail.wxss
vendored
Normal file
1
unpackage/dist/build/mp-weixin/pages/checklist/detail.wxss
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.page.data-v-311899fa{min-height:100vh;background:#ebf2fc;padding:24rpx 24rpx 40rpx;box-sizing:border-box}.loading-wrap.data-v-311899fa{padding:120rpx 0;text-align:center}.loading-text.data-v-311899fa{font-size:28rpx;color:#999}.section-card.data-v-311899fa{background:#fff;border-radius:16rpx;padding:28rpx;margin-bottom:20rpx;box-shadow:0 2rpx 10rpx rgba(0,0,0,.04)}.section-title.data-v-311899fa{font-size:30rpx;font-weight:600;color:#333;margin-bottom:20rpx;padding-left:16rpx;border-left:6rpx solid #2667E9}.item-count.data-v-311899fa{font-size:26rpx;font-weight:400;color:#999}.info-row.data-v-311899fa{display:flex;align-items:flex-start;padding:18rpx 0;border-bottom:1rpx solid #f0f0f0}.info-row.data-v-311899fa:last-child{border-bottom:none}.info-row.column.data-v-311899fa{flex-direction:column}.info-label.data-v-311899fa{width:180rpx;flex-shrink:0;font-size:26rpx;color:#999;line-height:1.5}.info-value.data-v-311899fa{flex:1;font-size:28rpx;color:#333;line-height:1.5;word-break:break-all}.info-block.data-v-311899fa{width:100%;margin-top:12rpx;padding:20rpx;background:#f8f9fb;border:1rpx solid #ebeef5;border-radius:8rpx;font-size:28rpx;color:#606266;line-height:1.6;box-sizing:border-box}.info-empty.data-v-311899fa{color:#c0c4cc}.related-box.data-v-311899fa{display:flex;align-items:flex-start;gap:12rpx;padding:20rpx;background:#f8f9fb;border:1rpx solid #ebeef5;border-radius:8rpx}.related-icon.data-v-311899fa{flex-shrink:0;width:36rpx;height:36rpx;margin-top:4rpx}.related-text.data-v-311899fa{flex:1;font-size:28rpx;color:#333;line-height:1.5;word-break:break-all}.empty-block.data-v-311899fa{text-align:center;padding:40rpx 0;font-size:26rpx;color:#999}.item-list.data-v-311899fa{border-top:1rpx solid #f0f0f0}.item-row.data-v-311899fa{display:flex;align-items:flex-start;gap:16rpx;padding:24rpx 0;border-bottom:1rpx solid #f0f0f0}.item-row.data-v-311899fa:last-child{border-bottom:none;padding-bottom:0}.item-no.data-v-311899fa{width:36rpx;font-size:26rpx;color:#999;line-height:1.5;flex-shrink:0}.item-content.data-v-311899fa{flex:1;min-width:0}.item-name.data-v-311899fa{display:block;font-size:28rpx;color:#333;line-height:1.5;word-break:break-all}.item-industry.data-v-311899fa{display:inline-block;margin-top:8rpx;font-size:24rpx;color:#999}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user