|
|
@@ -2,11 +2,22 @@
|
|
|
import { IotRdDailyReportApi } from '@/api/pms/iotrddailyreport'
|
|
|
import { useTableComponents } from '@/components/ZmTable/useTableComponents'
|
|
|
import { useUserStore } from '@/store/modules/user'
|
|
|
+import { DICT_TYPE, getDictOptions } from '@/utils/dict'
|
|
|
import { rangeShortcuts } from '@/utils/formatTime'
|
|
|
import { useDebounceFn } from '@vueuse/core'
|
|
|
+import IotRdDailyReportForm from './IotRdDailyReportForm.vue'
|
|
|
+import dayjs from 'dayjs'
|
|
|
+import download from '@/utils/download'
|
|
|
+
|
|
|
+defineOptions({ name: 'IotRdDailyReport' })
|
|
|
|
|
|
const { t } = useI18n()
|
|
|
|
|
|
+const router = useRouter()
|
|
|
+const route = useRoute()
|
|
|
+
|
|
|
+const message = useMessage()
|
|
|
+
|
|
|
const id = useUserStore().getUser.deptId
|
|
|
|
|
|
const deptId = id
|
|
|
@@ -20,6 +31,12 @@ interface Query {
|
|
|
pageSize: number
|
|
|
}
|
|
|
|
|
|
+const initQuery = {
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ deptId: route.query.deptId ? Number(route.query.deptId) : id
|
|
|
+}
|
|
|
+
|
|
|
const query = ref<Query>({
|
|
|
pageNo: 1,
|
|
|
pageSize: 10,
|
|
|
@@ -121,13 +138,64 @@ watch(
|
|
|
{ immediate: true }
|
|
|
)
|
|
|
|
|
|
-const openForm = (type: 'create' | 'detail') => {}
|
|
|
+const formRef = ref()
|
|
|
+const openForm = (type: string, id?: number) => {
|
|
|
+ formRef.value.open(type, id)
|
|
|
+}
|
|
|
|
|
|
const exportLoading = ref(false)
|
|
|
|
|
|
-async function handleExport() {}
|
|
|
+async function handleExport() {
|
|
|
+ try {
|
|
|
+ await message.exportConfirm()
|
|
|
+
|
|
|
+ exportLoading.value = true
|
|
|
+ const res = await IotRdDailyReportApi.exportIotRdDailyReportDetails(query.value)
|
|
|
+
|
|
|
+ download.excel(res, '瑞都日报明细.xlsx')
|
|
|
+ } finally {
|
|
|
+ exportLoading.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
const { ZmTable, ZmTableColumn } = useTableComponents<ListItem>()
|
|
|
+
|
|
|
+function formCreateTime(row: ListItem) {
|
|
|
+ return dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss')
|
|
|
+}
|
|
|
+
|
|
|
+function realValue(type: any, value: string) {
|
|
|
+ const option = getDictOptions(type).find((item) => item.value === value)
|
|
|
+ return option?.label || value
|
|
|
+}
|
|
|
+
|
|
|
+function handleDetail(id: number) {
|
|
|
+ try {
|
|
|
+ router.push({
|
|
|
+ name: 'FillDailyReportForm',
|
|
|
+ params: {
|
|
|
+ id: id.toString(),
|
|
|
+ mode: 'detail'
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } catch (error) {
|
|
|
+ console.error('跳转详情页面失败:', error)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function handleApprove(id: number) {
|
|
|
+ try {
|
|
|
+ router.push({
|
|
|
+ name: 'FillDailyReportForm',
|
|
|
+ params: {
|
|
|
+ id: id.toString(),
|
|
|
+ mode: 'approval'
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } catch (error) {
|
|
|
+ console.error('跳转审批页面失败:', error)
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
@@ -135,13 +203,7 @@ const { ZmTable, ZmTableColumn } = useTableComponents<ListItem>()
|
|
|
class="grid grid-cols-[15%_1fr] grid-rows-[62px_1fr] gap-4 h-[calc(100vh-20px-var(--top-tool-height)-var(--tags-view-height)-var(--app-footer-height))]"
|
|
|
>
|
|
|
<div class="p-4 bg-white dark:bg-[#1d1e1f] shadow rounded-lg row-span-2">
|
|
|
- <DeptTreeSelect
|
|
|
- :top-id="156"
|
|
|
- :deptId="deptId"
|
|
|
- v-model="query.deptId"
|
|
|
- :init-select="false"
|
|
|
- :show-title="false"
|
|
|
- />
|
|
|
+ <DeptTreeSelect :top-id="163" :deptId="deptId" v-model="query.deptId" :show-title="false" />
|
|
|
</div>
|
|
|
<el-form
|
|
|
size="default"
|
|
|
@@ -207,12 +269,149 @@ const { ZmTable, ZmTableColumn } = useTableComponents<ListItem>()
|
|
|
:width="width"
|
|
|
:max-height="height"
|
|
|
:height="height"
|
|
|
- />
|
|
|
+ show-border
|
|
|
+ >
|
|
|
+ <zm-table-column
|
|
|
+ prop="createTime"
|
|
|
+ label="创建时间"
|
|
|
+ cover-formatter
|
|
|
+ :real-value="formCreateTime"
|
|
|
+ />
|
|
|
+ <zm-table-column prop="deptName" label="施工队伍" />
|
|
|
+ <zm-table-column prop="taskName" label="任务" />
|
|
|
+ <zm-table-column
|
|
|
+ prop="rdStatus"
|
|
|
+ :label="t('project.status')"
|
|
|
+ :real-value="
|
|
|
+ (row: ListItem) => realValue(DICT_TYPE.PMS_PROJECT_RD_STATUS, row.rdStatus ?? '')
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag
|
|
|
+ :type="DICT_TYPE.PMS_PROJECT_RD_STATUS"
|
|
|
+ :value="scope.row.rdStatus ?? ''"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </zm-table-column>
|
|
|
+ <zm-table-column prop="productionStatus" label="当日生产动态" />
|
|
|
+ <zm-table-column prop="nextPlan" label="下步工作计划" />
|
|
|
+ <zm-table-column label="当日">
|
|
|
+ <zm-table-column prop="cumulativeWorkingWell" label="施工井" />
|
|
|
+ <zm-table-column prop="cumulativeWorkingLayers" label="施工层" />
|
|
|
+ <zm-table-column prop="dailyPumpTrips" label="泵车台次" />
|
|
|
+ <zm-table-column prop="dailyToolsSand" label="仪表/混砂" />
|
|
|
+ </zm-table-column>
|
|
|
+ <zm-table-column prop="runCount" label="趟数" />
|
|
|
+ <zm-table-column prop="bridgePlug" label="桥塞" />
|
|
|
+ <zm-table-column prop="waterVolume" label="水方量" />
|
|
|
+ <zm-table-column prop="hourCount" label="时间(H)" />
|
|
|
+ <zm-table-column prop="dailyFuel" label="油耗(L)" />
|
|
|
+ <zm-table-column prop="externalRental" label="外租设备" />
|
|
|
+ <zm-table-column prop="malfunction" label="故障情况" />
|
|
|
+ <zm-table-column prop="faultDowntime" label="故障误工(H)" />
|
|
|
+ <zm-table-column
|
|
|
+ prop="nonProductionRate"
|
|
|
+ label="非生产时效"
|
|
|
+ cover-formatter
|
|
|
+ :real-value="(row) => (Number(row.nonProductionRate ?? 0) * 100).toFixed(2) + '%'"
|
|
|
+ />
|
|
|
+ <zm-table-column label="非生产时间">
|
|
|
+ <zm-table-column prop="accidentTime" label="工程质量" />
|
|
|
+ <zm-table-column prop="repairTime" label="设备故障" />
|
|
|
+ <zm-table-column prop="selfStopTime" label="设备保养" />
|
|
|
+ <zm-table-column prop="complexityTime" label="技术受限" />
|
|
|
+ <zm-table-column prop="relocationTime" label="生产配合" />
|
|
|
+ <zm-table-column prop="rectificationTime" label="生产组织" />
|
|
|
+ <zm-table-column prop="waitingStopTime" label="不可抗力" />
|
|
|
+ <zm-table-column prop="winterBreakTime" label="待命" />
|
|
|
+ <zm-table-column prop="partyaDesign" label="甲方设计" />
|
|
|
+ <zm-table-column prop="partyaPrepare" label="甲方准备" />
|
|
|
+ <zm-table-column prop="partyaResource" label="甲方资源" />
|
|
|
+ <zm-table-column prop="otherNptTime" label="其它非生产时间" />
|
|
|
+ </zm-table-column>
|
|
|
+ <zm-table-column prop="otherNptReason" label="其他非生产时间原因" />
|
|
|
+ <zm-table-column prop="nonProductFlag" label="非生产时间填写">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-tag
|
|
|
+ :type="
|
|
|
+ scope.row.nonProductFlag || scope.row.processInstanceId === '2'
|
|
|
+ ? 'success'
|
|
|
+ : 'danger'
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{
|
|
|
+ scope.row.nonProductFlag || scope.row.processInstanceId === '2'
|
|
|
+ ? '已填写'
|
|
|
+ : '未填写'
|
|
|
+ }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </zm-table-column>
|
|
|
+ <zm-table-column prop="contractName" label="项目" />
|
|
|
+ <zm-table-column prop="timeRange" label="时间节点" />
|
|
|
+ <zm-table-column prop="auditStatus" label="审批状态">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-tag v-if="scope.row.auditStatus === 0" type="info">
|
|
|
+ {{ '待提交' }}
|
|
|
+ </el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.auditStatus === 10">
|
|
|
+ {{ '待审批' }}
|
|
|
+ </el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.auditStatus === 20" type="success">
|
|
|
+ {{ '审批通过' }}
|
|
|
+ </el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.auditStatus === 30" type="danger">
|
|
|
+ {{ '审批拒绝' }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </zm-table-column>
|
|
|
+ <zm-table-column label="操作" width="120" fixed="right">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button
|
|
|
+ link
|
|
|
+ type="success"
|
|
|
+ @click="handleDetail(scope.row.id)"
|
|
|
+ v-hasPermi="['pms:iot-rd-daily-report:query']"
|
|
|
+ >
|
|
|
+ 查看
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ link
|
|
|
+ type="warning"
|
|
|
+ @click="handleApprove(scope.row.id)"
|
|
|
+ v-hasPermi="['pms:iot-rd-daily-report:update']"
|
|
|
+ v-if="scope.row.auditStatus === 10"
|
|
|
+ >
|
|
|
+ 审批
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </zm-table-column>
|
|
|
+ </zm-table>
|
|
|
</template>
|
|
|
</el-auto-resizer>
|
|
|
</div>
|
|
|
+ <div class="h-10 mt-4 flex items-center justify-end">
|
|
|
+ <el-pagination
|
|
|
+ size="default"
|
|
|
+ v-show="total > 0"
|
|
|
+ v-model:current-page="query.pageNo"
|
|
|
+ v-model:page-size="query.pageSize"
|
|
|
+ :background="true"
|
|
|
+ :page-sizes="[12, 20, 30, 50, 100]"
|
|
|
+ :total="total"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <IotRdDailyReportForm ref="formRef" @success="loadList" />
|
|
|
</template>
|
|
|
|
|
|
-<style></style>
|
|
|
+<style scoped>
|
|
|
+:deep(.el-form-item) {
|
|
|
+ margin-bottom: 0;
|
|
|
+}
|
|
|
+</style>
|