1200 lines
41 KiB
Vue
1200 lines
41 KiB
Vue
<template>
|
||
<view class="zhixing-container" style="margin: 20rpx;margin-top: 220rpx; min-height: 300px; ">
|
||
<view class="zhixing_top" style="display: flex; flex-direction: column;">
|
||
<view style="display: flex; flex-direction: row;margin-bottom: 10px; margin-left: 10px;">
|
||
<view class="querybox" style=" margin-right:20px;">
|
||
<view class="querybox_title" style="display: flex; flex-direction: row;">
|
||
<view style="color: #ca4341; margin-right:5px;">*</view>
|
||
<view>项目:</view>
|
||
</view>
|
||
<csr-uni-data-select :filterable="true" v-model="queryParams.projectId" placeholder="请选择项目" dataKey="codename"
|
||
dataValue="projectId" :localdata="shujuStore.xiangmushuju" @change="changexiangmu" :clear="false"
|
||
style="width: 300px;"></csr-uni-data-select>
|
||
</view>
|
||
<view class="querybox">
|
||
<view class="querybox_title" style="display: flex; flex-direction: row;">
|
||
<view style="color: #ca4341; margin-right:5px;">*</view>
|
||
<view>抽查结论:</view>
|
||
</view>
|
||
<csr-uni-data-select :filterable="false" v-model="queryParams.resultType" placeholder="请选择抽查结论"
|
||
dataKey="lablename" dataValue="value" :localdata="chouchajielunlist" @change="getlistinfo" :clear="true"
|
||
style="width:200px;"></csr-uni-data-select>
|
||
</view>
|
||
<view class="querybox">
|
||
<u-button style="width:80px; float: left;margin-left: 20px;" type="primary" text="查询" @click="getlistinfo()"
|
||
size="small"></u-button>
|
||
</view>
|
||
<view class="querybox" style="margin-left: 30px;">
|
||
<u-checkbox v-model:checked="chyffshow" @change="clicktableshow()">
|
||
<view class="u-flex" style="font-size: 14px; color: #333;">
|
||
<text>显示查验方法</text>
|
||
</view>
|
||
</u-checkbox>
|
||
<u-checkbox v-model:checked="chyssshow" style="margin-left:30px;" @change="clicktableshow()">
|
||
<view class="u-flex" style="font-size: 14px; color: #333;">
|
||
<text>显示查验数量</text>
|
||
</view>
|
||
</u-checkbox>
|
||
</view>
|
||
</view>
|
||
|
||
<view style="margin-top: 10px; margin-bottom: 10px;">
|
||
<u-button style="width:80px; float: left;" type="error" text="删除查验点" :disabled="activenum!=1"
|
||
@click="shanchujiancha()" size="small"></u-button>
|
||
<u-button style="width:80px; float: left;margin-left: 20px;" type="primary" text="编辑检查点"
|
||
:disabled="activenum!=1" @click="bianji()" size="small"></u-button>
|
||
<u-button style="width:80px; float: left;margin-left: 20px;" type="warning" text="复查" @click="fucha(null)"
|
||
:disabled="activenum!=1" size="small"></u-button>
|
||
<u-button style="width:100px; float: left;margin-left: 20px;" type="primary" text="复查发现新问题"
|
||
:disabled="activenum!=1" @click="fuchfxxwt(null)" size="small"></u-button>
|
||
<!-- <u-button style="width:80px; float: left; margin-left:10px;" type="success" text="整改" :disabled="activenum!=1"
|
||
@click="zhenggai()" size="small"></u-button> -->
|
||
</view>
|
||
</view>
|
||
<u-tabs :list="tabslist1" lineWidth="60" v-if="tabsshow" style="margin-bottom: 10px;" :current="currentvalue"
|
||
:activeStyle="{
|
||
color: '#303133',
|
||
fontWeight: 'bold',
|
||
transform: 'scale(1.05)'
|
||
}" @change="tabsonChange"></u-tabs>
|
||
<view class="zhixing_center" style="display: flex; flex-direction: row; width: 100%;">
|
||
|
||
<view
|
||
style=" width:19%;margin-right: 1%; padding: 10px; height: 440px; max-height: 440; overflow-y: auto; border:1px solid #e4e7ed ">
|
||
<view style=" float: right; " @click="qingchu()">
|
||
<u-icon label="清除" size="20" labelColor="#3c9cff" color="#3c9cff" name="reload"></u-icon>
|
||
</view>
|
||
<u-tree style="float: left;" :data="treelist" v-if="treelist.length>0" key-field="id" label-field="code"
|
||
children-field="children" selectable selected-bg-color=" #e5e5e5">
|
||
<template #content="{ node }">
|
||
<view class="custom-content" @click="treechange(node)" style=" padding: 6px 0 6px 0 !important;">
|
||
<text class="custom-label" style="font-size: 12px;">{{ node.code }}</text>
|
||
</view>
|
||
</template>
|
||
</u-tree>
|
||
</view>
|
||
<view style="width:80%;display: flex; flex-direction: column;">
|
||
<u-table row-key="uuid" rowHeight="200" customClass="mewtable2" ref="pageTable" :scrollX="true"
|
||
:data="tableData" :ellipsis="false" height="460" :border="true" @select="handleSelectionChange"
|
||
:span-method="spanMethodWithColspan" v-if="tableshow&&projectcount">
|
||
<u-table-column type="selection" fixed width="55" align="center" headerAlign="center"></u-table-column>
|
||
<u-table-column prop="checkContent" width="300" :headerEllipsis="false" label="查验内容" align="left"
|
||
headerAlign="center">
|
||
<template #default="{ row, index }">
|
||
<view
|
||
style="width: 100%; height: auto !important; display: flex; flex-direction: column; justify-content: left; ">
|
||
<view v-if="row.phaseTypes"
|
||
style="margin-bottom:6px; display: flex; flex-direction: row; justify-content: left;">
|
||
<u-text v-for="(item1,index1) in row.phaseTypes" :key="index1" :text="item1" type="primary"
|
||
decoration="underline" @click="chytypebox(row,item1)"></u-text>
|
||
</view>
|
||
<view>{{row.checkContent}}</view>
|
||
</view>
|
||
</template>
|
||
</u-table-column>
|
||
<u-table-column prop="checkMethod" width="150" label="查验方法" headerAlign="center" v-if="chyffshow">
|
||
<template #default="{ row, index }">
|
||
<view style="height: auto !important;">
|
||
{{row.checkMethod}}
|
||
</view>
|
||
</template>
|
||
</u-table-column>
|
||
<u-table-column prop="checkScope" width="100" label="查验数量" headerAlign="center" v-if="chyssshow">
|
||
<template #default="{ row, index }">
|
||
<view style="height: auto !important;">
|
||
{{row.checkScope||'全数查验'}}
|
||
</view>
|
||
</template>
|
||
</u-table-column>
|
||
<u-table-column prop="tableLevel4Code" width="100" label="问题编码" headerAlign="center">
|
||
<template #default="{ row, index }">
|
||
<view style="height: auto !important;">
|
||
<u-text :text="row.tableLevel4Code" type="primary" decoration="underline"
|
||
@click="openright(row)"></u-text>
|
||
</view>
|
||
</template>
|
||
</u-table-column>
|
||
<u-table-column prop="parentNo" width="100" label="原问题" headerAlign="center">
|
||
</u-table-column>
|
||
<u-table-column prop="buildingName" width="100" label="建筑物" headerAlign="center" />
|
||
<u-table-column prop-="location" width="180" :headerEllipsis="false" align="center" label="查验位置/对象"
|
||
headerAlign="center">
|
||
<template #default="{ row, index }">
|
||
<view v-if="row.locationInfos" style="display: flex; flex-direction: column;">
|
||
<view v-for="(item1,index1) in row.locationInfos" :key="index1">{{item1}}
|
||
</view>
|
||
</view>
|
||
</template>
|
||
</u-table-column>
|
||
<u-table-column prop="checkPoint" width="100" :headerEllipsis="false" align="center" label="抽查部位"
|
||
headerAlign="center">
|
||
</u-table-column>
|
||
<u-table-column prop="resultTypeInfo" width="100" :headerEllipsis="false" align="center" label="抽查结论"
|
||
headerAlign="center">
|
||
</u-table-column>
|
||
|
||
<u-table-column prop="issue" width="150" label="问题描述" headerAlign="center" />
|
||
<u-table-column prop="standard" width="100" :headerEllipsis="false" align="center" label="违反规范"
|
||
headerAlign="center">
|
||
</u-table-column>
|
||
<!-- <u-table-column prop="term" width="100" :headerEllipsis="false" align="center" label="违反条款"
|
||
headerAlign="center">
|
||
</u-table-column> -->
|
||
<u-table-column prop="issueTypeInfo" width="100" :headerEllipsis="false" align="center" label="问题类型"
|
||
headerAlign="center">
|
||
</u-table-column>
|
||
<u-table-column prop="" width="80" :headerEllipsis="false" label="问题图片" align="center" headerAlign="center">
|
||
<template #default="{ row, index }">
|
||
<u-tag v-if="row.imgNum!=0" @click="showimg(row)" :text="row.imgNum" type="primary" size="mini"></u-tag>
|
||
|
||
</template>
|
||
</u-table-column>
|
||
<!-- <u-table-column prop="rectifyCompanyName" width="100" :headerEllipsis="false" align="center" label="整改责任单位"
|
||
headerAlign="center">
|
||
</u-table-column>
|
||
<u-table-column prop="expectDeadLineDate" width="100" :headerEllipsis="false" align="center" label="要求完成时间"
|
||
headerAlign="center">
|
||
</u-table-column>
|
||
<u-table-column prop="deadLineWarning" width="100" :headerEllipsis="false" align="center" label="进度预警"
|
||
headerAlign="center">
|
||
</u-table-column> -->
|
||
<u-table-column prop="status" width="100" :headerEllipsis="false" align="center" label="整改状态"
|
||
headerAlign="center">
|
||
<template #default="{ row, index }">
|
||
<!-- 0=无;1=待整改;2=待复查;3=合格[已整改]-->
|
||
<u-tag v-if="row.status&&row.status!='0'"
|
||
:text="row.status=='1'?'待整改':row.status=='2'?'待复查':row.status=='3'?'已整改':''"
|
||
:type="row.status=='1'?'error':row.status=='3'?'success':row.status=='2'?'primary':''"
|
||
size="mini"></u-tag>
|
||
</template>
|
||
</u-table-column>
|
||
|
||
<u-table-column prop="records" width="130" :headerEllipsis="false" align="center" label="现场记录"
|
||
headerAlign="center">
|
||
<template #default="{ row, index }">
|
||
<view v-if="row.records" style="display: flex; flex-direction: column;">
|
||
<view v-for="(item1,index1) in row.records" :key="index1" style="display: flex;flex-direction: row; ">
|
||
<view>{{recordsformatStr(item1.info,item1.resultInfo)}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
</u-table-column>
|
||
<u-table-column prop="materialActivityFiles" width="130" :headerEllipsis="false" align="center" label="现场验收"
|
||
headerAlign="center">
|
||
<template #default="{ row, index }">
|
||
<!-- "resultType": 0 //0-无 1-合格 2-不合格 3-不涉及 -->
|
||
<view v-if="row.materialActivityFiles" style="display: flex; flex-direction: column;">
|
||
<view v-for="(item1,index1) in row.materialActivityFiles" :key="index1">
|
||
{{item1.fileName}}:{{item1.resultType==0?'无':item1.resultType==1?'合格':item1.resultType==2?'不合格':'不涉及'}}
|
||
</view>
|
||
</view>
|
||
</template>
|
||
</u-table-column>
|
||
<u-table-column prop="attachmentName" width="150" :headerEllipsis="false" align="center" label="附表"
|
||
headerAlign="center">
|
||
<template #default="{ row, index }">
|
||
<view style="height: auto !important;">
|
||
<view v-if="!row.attachmentName">无</view>
|
||
<view v-else>{{row.attachmentName}}</view>
|
||
<!-- <u-text v-else :text="row.attachmentName" type="primary" decoration="underline"></u-text> -->
|
||
</view>
|
||
</template>
|
||
</u-table-column>
|
||
<u-table-column prop="checkerName" width="100" :headerEllipsis="false" align="center" label="检查人"
|
||
headerAlign="center">
|
||
</u-table-column>
|
||
<u-table-column prop="updateTime" width="150" :headerEllipsis="false" align="center" label="检查时间"
|
||
headerAlign="center">
|
||
</u-table-column>
|
||
|
||
<u-table-column prop="createBy" width="80" label="制单" align="center" headerAlign="center" />
|
||
<u-table-column prop="createTime" width="150" label="创建时间" align="center" headerAlign="center">
|
||
<template #default=" { row, index }">
|
||
{{row.createTime?$dayjs(row.createTime).format("YYYY-MM-DD HH:mm"):''}}
|
||
</template>
|
||
</u-table-column>
|
||
</u-table>
|
||
<view v-else style="text-align: center; font-size: 16px; margin-top: 100px; color: #3c9cff;">
|
||
暂无当前项目数据请联网下载!</view>
|
||
</view>
|
||
</view>
|
||
<u-modal content="" :closeOnClickOverlay="true" title="图片预览" confirmText="关闭" width="600px" :show="imgboxshow"
|
||
@confirm="() => imgboxshow = false">
|
||
<view class="slot-content"
|
||
style="width: 100%;min-height: 280px; max-height:280px; margin-bottom: 30px; overflow-y: auto;">
|
||
<u-album :urls="imgurlslist" style="margin-top: 20px;" autoWrap showMore multipleSize="100"
|
||
rowCount="5"></u-album>
|
||
</view>
|
||
</u-modal>
|
||
<!-- 编辑 -->
|
||
<uni-drawer ref="showright" mode="right" :width="750" :mask-click="true">
|
||
<scroll-view scroll-y="true" style="height: 100%;">
|
||
<AddEditnr style="width:97%;" :objitem="rowitem" :sjnum="sjnum" @sahnchuevent="sahnchuevent"
|
||
@righteventclose="closeright" @shaunxian="getlistinfo()" @fc="fucha" @fcxwt="fuchfxxwt" />
|
||
</scroll-view>
|
||
</uni-drawer>
|
||
<!-- 复查发现新问题 -->
|
||
<u-modal content="" :closeOnClickOverlay="true" title="复查发现新问题" :showConfirmButton="false" :showCancelButton="false"
|
||
cancelText="取消" confirmText="保存" width="850px" :show="fuchaxwtshow" confirmColor="#42b983" cancelColor="#ca4341">
|
||
<view class="slot-content">
|
||
<scroll-view scroll-y="true" style="width:800px;height:500px;">
|
||
<view style="width:100%;display: flex; flex-direction: column;align-items: left; border-top:1px solid #eee;">
|
||
<FuchaxwtEditnr style="width:97%;" :objitem="rowitem" :sjnum="sjnum" @tkeventclose="closefuchaxwt"
|
||
@shaunxian="getlistinfo()" />
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
</u-modal>
|
||
<!-- 复查 -->
|
||
<u-modal content="" :closeOnClickOverlay="true" title="复查" :showConfirmButton="false" :showCancelButton="false"
|
||
cancelText="取消" confirmText="保存" width="850px" :show="fuchashow" confirmColor="#42b983" cancelColor="#ca4341">
|
||
<view class="slot-content">
|
||
<scroll-view scroll-y="true" style="width:800px; height:500px;">
|
||
<view style="width:100%;display: flex; flex-direction: column;align-items: left; border-top:1px solid #eee;">
|
||
<FuchaEditnr style="width:97%;" :objitem="rowitem" :sjnum="sjnum" @tkeventclose="closefucha"
|
||
@shaunxian="getlistinfo()" />
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
</u-modal>
|
||
<!-- 整改 -->
|
||
<u-modal content="" :closeOnClickOverlay="true" title="整改" :showConfirmButton="false" :showCancelButton="false"
|
||
cancelText="取消" confirmText="保存" width="850px" :show="zhenggaishow" confirmColor="#42b983" cancelColor="#ca4341">
|
||
<view class="slot-content">
|
||
<scroll-view scroll-y="true" style="height:500px;">
|
||
<view style="display: flex; flex-direction: column;align-items: left; border-top:1px solid #eee;">
|
||
<ZhenggaiEditnr :objitem="rowitem" :sjnum="sjnum" @tkeventclose="closezhenggai"
|
||
@shaunxian="getlistinfo()" />
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
</u-modal>
|
||
<!-- 施工阶段内容 -->
|
||
<u-modal content="" :closeOnClickOverlay="true" title="施工阶段" confirmText="关闭" width="400px" :show="chytypeboxshow"
|
||
@confirm="() => chytypeboxshow = false">
|
||
<view class="slot-content biangengcontent" style="width: 100%;">
|
||
<scroll-view scroll-y="true"
|
||
style="height:150px;display: flex;flex-direction: column; align-items: center; justify-content: center; ">
|
||
<view style="width: 100%;border-top:1px solid #eee;">
|
||
<view style="margin-top: 15px;">
|
||
{{chytypeboxnei}}
|
||
</view>
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
</u-modal>
|
||
<UniMenu />
|
||
<!-- color="#2f7d09" textColor="#2f7d09" -->
|
||
<zero-loading v-if="shujuStore.pageloading" :maskOpacity="0.5" color="#c41818" textColor="#c41818" :mask="true"
|
||
:showText="true" :text="shujuStore.pageloadingtext" type="wobble"></zero-loading>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
getsafety_hazardInfo,
|
||
getxmdwdefaultconditionlist,
|
||
getloginfo,
|
||
delsafety_hazard,
|
||
getcheckTableIdtree,
|
||
getexecutionprojectlist,
|
||
|
||
setprojectcurrent,
|
||
setcontractcurrent,
|
||
getprojectcurrent,
|
||
getcontractcurrent
|
||
} from "@/apis/zhixing"
|
||
import {
|
||
|
||
getevaluationIdinfo
|
||
} from "@/apis/wenjuan"
|
||
import {
|
||
getthstatus
|
||
} from "@/apis/hetong"
|
||
import {
|
||
parseObjectToArray
|
||
} from "@/utils/util"
|
||
import UniMenu from '@/components/uni-menu/uni-menu.vue'
|
||
import comboxMore from '@/components/wl-combox-more/combox-more.vue'
|
||
import useUserStore from '@/store/user';
|
||
import CustomPicker from '@/components/custom-search-picker/index.vue';
|
||
import AddEditnr from '@/pages/zhixing/addxianchang.vue';
|
||
import FuchaxwtEditnr from '@/pages/zhixing/fuchaxwt.vue';
|
||
import FuchaEditnr from '@/pages/zhixing/fucha.vue';
|
||
import ZhenggaiEditnr from '@/pages/zhixing/zhenggai.vue';
|
||
|
||
import useshujuStore from '@/store/usershuju';
|
||
export default {
|
||
components: {
|
||
UniMenu,
|
||
comboxMore,
|
||
CustomPicker,
|
||
AddEditnr,
|
||
FuchaxwtEditnr,
|
||
FuchaEditnr,
|
||
ZhenggaiEditnr,
|
||
},
|
||
data() {
|
||
return {
|
||
// upurl: import.meta.env.VITE_APP_BASE_PRE + '/safety_hazard/table/img',
|
||
// httpurl: import.meta.env.VITE_APP_BASE_PRE,
|
||
// upurl: 'http://219.146.89.198:19388' + '/safety_hazard/table/img',
|
||
// httpurl: 'http://219.146.89.198:19380/prod-api',
|
||
shujuStore: useshujuStore(),
|
||
userStore: useUserStore(),
|
||
isbutclick: false,
|
||
chouchajielunlist: [{
|
||
lablename: '合格',
|
||
value: 1,
|
||
}, {
|
||
lablename: '不合格',
|
||
value: 2,
|
||
},
|
||
{
|
||
lablename: '不涉及',
|
||
value: 3,
|
||
}
|
||
|
||
],
|
||
|
||
statistic: '',
|
||
columns: [
|
||
|
||
],
|
||
tabslist1: [
|
||
|
||
|
||
],
|
||
tableshow: true,
|
||
chyffshow: false, //查验方法
|
||
chyssshow: false, //查验数量
|
||
chytypeboxshow: false,
|
||
chytypeboxnei: '',
|
||
checkedkeys: [0],
|
||
expandedkeys: [0],
|
||
acyivetree: [],
|
||
biangenshow: false,
|
||
imgboxshow: false,
|
||
imgurlslist: [],
|
||
tableData: [],
|
||
bglslist: [],
|
||
queryParams: {
|
||
// pageNum: 1,
|
||
// pageSize: 10,
|
||
// notShowNoInvolved: false, //不显示不涉及
|
||
// showActivityCheckOnly: false, //仅显示现场检查项
|
||
projectId: null, //项目主键
|
||
resultType: null, //查验结果(0:未选择 1:符合 2:不符合 3:不涉及)
|
||
standardTableLevel1Id: null, //查验表一级编码主键
|
||
parentId: null,
|
||
// standardTableLevel2Id: null, //查验表二级编码主键
|
||
// reasonable: false,
|
||
},
|
||
infolist: [],
|
||
activeitem: null,
|
||
rowitem: null,
|
||
activenum: 0,
|
||
activenumlist: 0,
|
||
sjnum: 0,
|
||
pjmodaltitle: '非火灾高危单位',
|
||
pjmodalshow: false,
|
||
pjtableInfolist: [],
|
||
treelist: [],
|
||
xththlist: [],
|
||
contractId: '',
|
||
xmdwlist: [],
|
||
fuchaxwtshow: false, //复查发现新问题
|
||
fuchashow: false, //复查
|
||
zhenggaishow: false, //复查
|
||
activeitemtableLevel4Id: 0,
|
||
currentvalue: 0,
|
||
tabsshow: true,
|
||
projectcount: 0,
|
||
}
|
||
},
|
||
computed: {
|
||
activepageloadingtext() {
|
||
const shujuStore = useshujuStore();
|
||
return shujuStore.pageloadingtext
|
||
},
|
||
activepageloading() {
|
||
const shujuStore = useshujuStore();
|
||
return shujuStore.pageloading
|
||
},
|
||
|
||
activeprojectid() {
|
||
// debugger
|
||
// return userStore.usernam
|
||
const shujuStore = useshujuStore();
|
||
|
||
return shujuStore.activeprojectid
|
||
},
|
||
nick() {
|
||
// debugger
|
||
// return userStore.username
|
||
const userStore = useUserStore();
|
||
return userStore.name
|
||
},
|
||
imageSrc() {
|
||
|
||
const userStore = useUserStore();
|
||
return userStore.avatar
|
||
},
|
||
|
||
username() {
|
||
// debugger
|
||
// return userStore.username
|
||
const userStore = useUserStore();
|
||
return userStore.username
|
||
},
|
||
avatar() {
|
||
//debugger
|
||
const userStore = useUserStore();
|
||
return userStore.avatar
|
||
},
|
||
windowHeight() {
|
||
return uni.getSystemInfoSync().windowHeight - 50
|
||
}
|
||
},
|
||
// // 监听页面返回
|
||
// onBackPress() {
|
||
// //debugger
|
||
// uni.redirectTo({
|
||
// url: '/pages/index/index'
|
||
// });
|
||
// // 阻止界面返回默认操作, 这一步主要是为了防止界面出现异常,uniapp有对onBackPress的详细讲解
|
||
// return true;
|
||
// },
|
||
|
||
onShow() {
|
||
|
||
},
|
||
async onLoad() {
|
||
// this.getlistinfo(); //获取检查列表
|
||
const userStore = useUserStore();
|
||
userStore.setparentmenutitle('执行');
|
||
userStore.setchildrenmenutitle('现场检查');
|
||
this.queryParams.projectId = this.shujuStore.activeprojectid;
|
||
console.error('eewrewr:', this.shujuStore.activeprojectid, this.shujuStore.activeprojetname);
|
||
|
||
// console.error('项目下1级数据:', this.queryParams.projectId);
|
||
if (this.queryParams.projectId) {
|
||
this.$dbUtils.getDataListAll('xiaofangdb', 'projectst1table', {
|
||
projectId: this.queryParams.projectId
|
||
}, {
|
||
byName: 'sortNum',
|
||
byType: 'asc'
|
||
}).then(async (data) => {
|
||
// shujuStore.setgongsishuju(data);
|
||
console.error('项目下1级数据:', data);
|
||
this.tabslist1 = data;
|
||
this.queryParams.standardTableLevel1Id = this.tabslist1[0].key;
|
||
const xctableExists = await this.$dbUtils.isTable('xiaofangdb', 'projectxianchangtable')
|
||
if (!xctableExists) {
|
||
console.log("现场表不存在")
|
||
this.getjctree();
|
||
return;
|
||
}
|
||
|
||
let datasj = await this.$dbUtils.getprojectcount('xiaofangdb', 'projectxianchangtable', this
|
||
.queryParams
|
||
.projectId)
|
||
console.error('项目条数', datasj)
|
||
this.projectcount = datasj[0].projectcount;
|
||
if (this.projectcount == 0) {
|
||
this.getjctree();
|
||
this.$modal.msgError("暂无当前项目数据请联网下载!");
|
||
return;
|
||
}
|
||
this.getlistinfo(); //获取查验列表
|
||
});
|
||
|
||
|
||
// this.getlistinfo(); //获取查验列表
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
},
|
||
methods: {
|
||
parseObjectToArray,
|
||
async getjctree() {
|
||
//请求树
|
||
|
||
this.treelist = await this.$dbUtils.getDataListAll('xiaofangdb', 'projectst2table', {
|
||
projectId: this.queryParams.projectId,
|
||
standardTableLevel1Id: this.queryParams.standardTableLevel1Id
|
||
});
|
||
// console.log('二级', JSON.stringify(this.treelist))
|
||
// getcheckTableIdtree().then((res) => {
|
||
// // debugger
|
||
// this.treelist = res.data;
|
||
// this.sjnum = Math.random();
|
||
// });
|
||
},
|
||
// 合并单元格方法三:自动合并相同值的单元格
|
||
spanMethodWithColspan({
|
||
row,
|
||
column,
|
||
rowIndex,
|
||
columnIndex
|
||
}) {
|
||
if (column.prop === 'checkContent') {
|
||
// 计算相同地区的连续行数
|
||
const currentValue = row[column.prop]
|
||
let startIndex = rowIndex
|
||
let endIndex = rowIndex
|
||
//console.log('currentValue', this.tableData)
|
||
// 向前找到开始位置
|
||
while (startIndex > 0 && this.tableData[startIndex - 1][column.prop] === currentValue) {
|
||
startIndex--
|
||
}
|
||
|
||
// 向后找到结束位置
|
||
while (endIndex < this.tableData.length - 1 && this.tableData[endIndex + 1][column.prop] ===
|
||
currentValue) {
|
||
endIndex++
|
||
}
|
||
|
||
const spanCount = endIndex - startIndex + 1
|
||
|
||
if (spanCount > 1) {
|
||
if (rowIndex === startIndex) {
|
||
// 第一行显示合并的单元格
|
||
return {
|
||
rowspan: spanCount,
|
||
colspan: 1
|
||
}
|
||
} else {
|
||
// 其他行隐藏
|
||
return {
|
||
rowspan: 0,
|
||
colspan: 0
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// if (column.prop === 'attachmentType') {
|
||
// // 计算相同地区的连续行数
|
||
// const currentValue = row[column.prop]
|
||
// // if (currentValue == '0') return
|
||
// let startIndex = rowIndex
|
||
// let endIndex = rowIndex
|
||
// //console.log('currentValue', this.tableData)
|
||
// // 向前找到开始位置
|
||
// while (startIndex > 0 && this.tableData[startIndex - 1][column.prop] === currentValue && currentValue !==
|
||
// '0') {
|
||
// startIndex--
|
||
// }
|
||
|
||
// // 向后找到结束位置
|
||
// while (endIndex < this.tableData.length - 1 && this.tableData[endIndex + 1][column.prop] ===
|
||
// currentValue && currentValue !==
|
||
// '0') {
|
||
// endIndex++
|
||
// }
|
||
|
||
// const spanCount = endIndex - startIndex + 1
|
||
|
||
// if (spanCount > 1) {
|
||
// if (rowIndex === startIndex) {
|
||
// // 第一行显示合并的单元格
|
||
// return {
|
||
// rowspan: spanCount,
|
||
// colspan: 1
|
||
// }
|
||
// } else {
|
||
// // 其他行隐藏
|
||
// return {
|
||
// rowspan: 0,
|
||
// colspan: 0
|
||
// }
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
|
||
return {
|
||
rowspan: 1,
|
||
colspan: 1
|
||
}
|
||
},
|
||
locationreload() {
|
||
uni.reload();
|
||
},
|
||
clicktableshow() {
|
||
|
||
this.tableshow = false;
|
||
setTimeout(() => {
|
||
this.tableshow = true;
|
||
}, 100)
|
||
|
||
},
|
||
fuchfxxwt(e) {
|
||
// 复查发现新问题
|
||
if (e) {
|
||
this.activeitem = e;
|
||
}
|
||
if (!this.activeitem.tableLevel4Id) {
|
||
this.$modal.msgError("请先创建检查点!");
|
||
return;
|
||
}
|
||
this.rowitem = this.activeitem;
|
||
this.activeitemtableLevel4Id = this.activeitem.tableLevel4Id;
|
||
this.sjnum = Math.random();
|
||
this.fuchaxwtshow = true;
|
||
|
||
|
||
|
||
|
||
},
|
||
chytypebox(row, type) {
|
||
//查验类型内容展示
|
||
let list = JSON.parse(row.phaseTypesControlInfo);
|
||
let item = list.find(item => item.phaseType == type);
|
||
this.chytypeboxnei = item ? item.standardControlLevel3Name : null; // 如果找到了,返回text,否则返回null;
|
||
this.chytypeboxshow = true;
|
||
},
|
||
fucha(e) {
|
||
// 复查
|
||
if (e) {
|
||
this.activeitem = e;
|
||
}
|
||
if (!this.activeitem.tableLevel4Id) {
|
||
this.$modal.msgError("请先创建检查点!");
|
||
return;
|
||
}
|
||
this.rowitem = this.activeitem;
|
||
this.activeitemtableLevel4Id = this.activeitem.tableLevel4Id;
|
||
this.sjnum = Math.random();
|
||
this.fuchashow = true;
|
||
|
||
|
||
},
|
||
|
||
zhenggai(e) {
|
||
// 整改
|
||
if (e) {
|
||
this.activeitem = e;
|
||
}
|
||
if (!this.activeitem.tableLevel4Id) {
|
||
this.$modal.msgError("请先创建检查点!");
|
||
return;
|
||
}
|
||
this.rowitem = this.activeitem;
|
||
this.activeitemtableLevel4Id = this.activeitem.tableLevel4Id;
|
||
this.sjnum = Math.random();
|
||
this.zhenggaishow = true;
|
||
|
||
|
||
},
|
||
|
||
closefuchaxwt(e) {
|
||
if (e) {
|
||
this.activeitem = e;
|
||
}
|
||
// 复查发现新问题 关闭
|
||
this.rowitem = null;
|
||
this.activeitemtableLevel4Id = 0;
|
||
this.fuchaxwtshow = false;
|
||
this.$refs.showright.close();
|
||
this.getlistinfo(); //获取检查列表
|
||
},
|
||
closefucha() {
|
||
// 复查 关闭
|
||
this.rowitem = null;
|
||
this.activeitemtableLevel4Id = 0;
|
||
this.fuchashow = false;
|
||
this.$refs.showright.close();
|
||
this.getlistinfo(); //获取检查列表
|
||
},
|
||
closezhenggai() {
|
||
// 整改 关闭
|
||
this.rowitem = null;
|
||
this.activeitemtableLevel4Id = 0;
|
||
this.zhenggaishow = false;
|
||
this.$refs.showright.close();
|
||
this.getlistinfo(); //获取检查列表
|
||
},
|
||
|
||
hideKeyboard() {
|
||
uni.hideKeyboard()
|
||
},
|
||
|
||
biangenls() {
|
||
//变更日志
|
||
this.getbglslist();
|
||
//获取变更日志
|
||
|
||
},
|
||
showimg(item) {
|
||
if (!item.imgNum) return;
|
||
this.imgurlslist = JSON.parse(item.imgUrlbase64list);
|
||
|
||
// debugger
|
||
this.imgboxshow = true;
|
||
|
||
},
|
||
recordsformatStr(str, values = "") {
|
||
if (!str) return '';
|
||
|
||
// 解析values参数
|
||
const valueArray = values.split(',')
|
||
.map(v => v.trim())
|
||
.filter(v => v !== '');
|
||
|
||
// 正则匹配所有{数字}占位符
|
||
const regex = /\{(\d+)\}/g;
|
||
const matches = [];
|
||
let lastMatch = null;
|
||
|
||
// 提取所有占位符信息
|
||
let match;
|
||
while ((match = regex.exec(str)) !== null) {
|
||
matches.push({
|
||
index: match.index,
|
||
length: match[0].length,
|
||
number: match[1]
|
||
});
|
||
lastMatch = match;
|
||
}
|
||
|
||
// 无占位符直接返回原始字符串
|
||
if (matches.length === 0) return str;
|
||
|
||
// 构建结果字符串
|
||
let result = '';
|
||
let lastIndex = 0;
|
||
let valueIndex = 0;
|
||
|
||
// 替换所有占位符为values中的值
|
||
for (const item of matches) {
|
||
// 添加占位符前的文本
|
||
result += str.substring(lastIndex, item.index);
|
||
|
||
// 添加替换值(处理值不足的情况)
|
||
const replacement = valueIndex < valueArray.length ?
|
||
String(valueArray[valueIndex]) :
|
||
'';
|
||
|
||
result += replacement;
|
||
|
||
// 更新索引
|
||
lastIndex = item.index + item.length;
|
||
valueIndex++;
|
||
}
|
||
|
||
// 添加剩余文本(包含最后一个占位符后的单位)
|
||
result += str.substring(lastIndex);
|
||
|
||
return result;
|
||
},
|
||
shanchujiancha() {
|
||
//删除
|
||
let vm = this;
|
||
if (!this.activeitem.tableLevel4Id) {
|
||
this.$modal.msgError("无检查点暂不能删除!");
|
||
return false;
|
||
}
|
||
this.$modal.confirm('确定要删除信息吗?').then(() => {
|
||
// debugger
|
||
//padstatus 0--没有tableLevel4Id 1--有tableLevel4Id 2--需要新增的 3--需要修改的 4--删除的
|
||
let newpadstatus = "4";
|
||
const escapedImgUrl = typeof newpadstatus === 'string' ?
|
||
`'${newpadstatus.replace(/'/g, "''")}'` // 转义单引号
|
||
:
|
||
newpadstatus;
|
||
const setClauses = [`padstatus=${newpadstatus}`];
|
||
// 构建完整SQL语句
|
||
const sql =
|
||
`UPDATE projectxianchangtable SET ${setClauses.join(', ')} WHERE uuid=${this.activeitem.uuid}`;
|
||
|
||
plus.sqlite.executeSql({
|
||
name: 'xiaofangdb',
|
||
sql: sql,
|
||
// args: [serverImgUrls, id],
|
||
success: (res) => {
|
||
console.log(`查验状态更新成功,ID: ${this.activeitem.uuid}`, newpadstatus);
|
||
vm.getlistinfo();
|
||
vm.$modal.msgSuccess("删除成功!");
|
||
},
|
||
fail: (error) => {
|
||
console.error(`查验状态更新失败,ID: ${this.activeitem.uuid}`, error);
|
||
|
||
}
|
||
});
|
||
|
||
//this.activenumlist
|
||
// this.activeitem.checkTableId
|
||
// let checkTableIds = this.activenumlist
|
||
|
||
// delsafety_hazard(checkTableIds).then((res) => {
|
||
// // debugger
|
||
// this.$modal.msgSuccess("删除成功!");
|
||
// setTimeout(() => {
|
||
// this.getlistinfo(); //获取检查列表
|
||
// }, 300);
|
||
|
||
// })
|
||
});
|
||
},
|
||
clearSelection() {
|
||
//清空选中项
|
||
this.$refs.pageTable?.clearSelection();
|
||
this.activeitem = null;
|
||
this.activenum = 0;
|
||
|
||
},
|
||
handleSelectionChange(selection) {
|
||
// debugger
|
||
// let del_row = selection.shift();
|
||
// this.$refs.pageTable.toggleRowSelection(del_row, false);
|
||
|
||
// console.log('当前选中的行:', JSON.stringify(selection));
|
||
//this.$refs.pageTable.toggleAllSelection(false);
|
||
// this.$refs.pageTable.clearSelection();
|
||
// this.$refs.pageTable.toggleRowSelection(selection.index, true);
|
||
this.activenumlist = [];
|
||
this.activenum = selection.length;
|
||
// this.activenumlist=selection.map
|
||
for (let s of selection) {
|
||
if (s.tableLevel4Id) {
|
||
this.activenumlist.push(s.tableLevel4Id)
|
||
} else {
|
||
//this.$refs.pageTable.toggleRowSelection(s, false);
|
||
|
||
// this.$refs.pageTable.clearSelection()
|
||
// / this.$modal.msgError("此项没有检查点!");
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
if (selection.length > 1) {
|
||
// debugger
|
||
// this.$modal.msgError("只能选一个!");
|
||
this.activeitem = null;
|
||
// this.$refs.pageTable.toggleRowSelection(selection.detail.index[selection.detail.index.length - 1], false);
|
||
// this.$refs.pageTable.toggleAllSelection(true);
|
||
// this.$refs.pageTable.clearSelection();
|
||
return;
|
||
}
|
||
if (selection.length == 0) {
|
||
this.activeitem = null;
|
||
this.isbutclick = false;
|
||
} else {
|
||
// this.activeitem = this.tableData[selection.detail.index[selection.detail.index.length - 1]];
|
||
|
||
this.activeitem = selection[0];
|
||
}
|
||
if (this.activeitem) {
|
||
//debugger
|
||
if (this.activeitem.tableLevel4Id == null) {
|
||
this.isbutclick = false;
|
||
} else {
|
||
this.isbutclick = true;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
// this.$refs.pageTable.clearSelection();
|
||
|
||
},
|
||
tabsonChange(e) {
|
||
// 标签索引改变时触发(disabled时不会触发)
|
||
this.queryParams.standardTableLevel1Id = e.key;
|
||
this.qingchu();
|
||
console.error('标签索引改变时触发:', e);
|
||
},
|
||
async changexiangmu(e) {
|
||
// debugger
|
||
if (this.queryParams.projectId) {
|
||
this.shujuStore.setactiveprojectid(this.queryParams.projectId);
|
||
this.shujuStore.setactiveprojetname(e.name);
|
||
}
|
||
if (this.queryParams.projectId) {
|
||
|
||
this.$dbUtils.getDataListAll('xiaofangdb', 'projectst1table', {
|
||
projectId: this.queryParams.projectId
|
||
}, {
|
||
byName: 'sortNum',
|
||
byType: 'asc'
|
||
}).then(async (data) => {
|
||
// shujuStore.setgongsishuju(data);
|
||
console.error('项目下1级数据:', data);
|
||
this.currentvalue = 0;
|
||
this.tabslist1 = data;
|
||
this.tabsshow = false;
|
||
setTimeout(() => {
|
||
this.tabsshow = true;
|
||
}, 100)
|
||
|
||
this.currentvalue = 0;
|
||
this.queryParams.standardTableLevel1Id = this.tabslist1[0].key;
|
||
|
||
const xctableExists = await this.$dbUtils.isTable('xiaofangdb', 'projectxianchangtable')
|
||
if (!xctableExists) {
|
||
console.log("现场表不存在")
|
||
this.getjctree();
|
||
return;
|
||
}
|
||
|
||
let datasj = await this.$dbUtils.getprojectcount('xiaofangdb', 'projectxianchangtable', this
|
||
.queryParams
|
||
.projectId)
|
||
console.error('项目条数', datasj)
|
||
this.projectcount = datasj[0].projectcount;
|
||
if (this.projectcount == 0) {
|
||
this.getjctree();
|
||
this.$modal.msgError("暂无当前项目数据请联网下载!");
|
||
|
||
return;
|
||
}
|
||
console.error('标签索引值:', this.currentvalue);
|
||
|
||
|
||
this.getlistinfo(); //获取查验列表
|
||
});
|
||
// this.getlistinfo(); //获取查验列表
|
||
|
||
}
|
||
|
||
|
||
},
|
||
async getlistinfo() {
|
||
//获取检查列表
|
||
|
||
this.activenumlist = [];
|
||
this.activenum = 0;
|
||
this.activeitem = null;
|
||
this.tableData = [];
|
||
this.statistic = '';
|
||
this.getjctree();
|
||
// this.clearSelection(); //清空
|
||
const xctableExists = await this.$dbUtils.isTable('xiaofangdb', 'projectxianchangtable')
|
||
if (!xctableExists) {
|
||
console.log("现场表不存在")
|
||
return;
|
||
}
|
||
let datalist = await this.$dbUtils.getDataListpadstatusAll('xiaofangdb', 'projectxianchangtable', this
|
||
.queryParams);
|
||
|
||
|
||
for (let xx of datalist) {
|
||
if (xx.phaseTypes) {
|
||
xx.phaseTypes = JSON.parse(xx.phaseTypes);
|
||
}
|
||
|
||
|
||
if (xx.locationInfos) {
|
||
xx.locationInfos = JSON.parse(xx.locationInfos);
|
||
}
|
||
|
||
if (xx.records) {
|
||
xx.records = JSON.parse(xx.records);
|
||
}
|
||
if (xx.materialActivityFiles) {
|
||
xx.materialActivityFiles = JSON.parse(xx.materialActivityFiles);
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
this.tableData = datalist;
|
||
console.error('查验列表:', datalist);
|
||
|
||
|
||
|
||
|
||
},
|
||
|
||
|
||
|
||
|
||
|
||
halechange() {
|
||
//查询
|
||
this.getlistinfo(); //获取检查列表
|
||
},
|
||
banhaoselectionEvent(selection, selectObj) {
|
||
console.log('selectionEvent:', selection, selectObj)
|
||
},
|
||
handleLongPress() {
|
||
this.$modal.msgError("只能选一个!");
|
||
},
|
||
openright(item) {
|
||
// /debugger
|
||
// uni.navigateTo({
|
||
// url: `/pages/zhixing/addjianchabiao?isedit=1&projectid=${this.activeitem.projectId}&checkTableId=${this.activeitem.checkTableId}&id1=${this.activeitem.standardCheckTable1Id}&id2=${this.activeitem.standardCheckTable2Id}&id3=${this.activeitem.standardCheckTable3Id}&id4=${this.activeitem.standardCheckTable4Id}&projectName=${this.queryParams.projectname}`,
|
||
// })
|
||
item.isedit = 1;
|
||
// item.projectid = item.projectId;
|
||
// item.projectName = this.queryParams.projectname;
|
||
// item.id1 = item.standardCheckTable1Id;
|
||
// item.id2 = item.standardCheckTable2Id;
|
||
// item.id3 = item.standardCheckTable3Id;
|
||
// item.id4 = item.standardCheckTable4Id;
|
||
this.rowitem = item;
|
||
this.sjnum = Math.random();
|
||
this.$refs.showright.open();
|
||
},
|
||
bianji() {
|
||
if (!this.activeitem.tableLevel4Id) {
|
||
this.activeitem.isedit = 0;
|
||
} else {
|
||
this.activeitem.isedit = 1;
|
||
}
|
||
this.rowitem = this.activeitem;
|
||
this.sjnum = Math.random();
|
||
this.$refs.showright.open();
|
||
},
|
||
closeright() {
|
||
// debugger
|
||
this.rowitem = null;
|
||
this.$refs.showright.close();
|
||
this.getlistinfo(); //获取检查列表
|
||
},
|
||
|
||
sahnchuevent(e) {
|
||
//删除
|
||
this.activenumlist = [];
|
||
this.activenumlist.push(e)
|
||
this.$refs.showright.close();
|
||
this.shanchujiancha();
|
||
|
||
},
|
||
treechange(em, d) {
|
||
// debugger
|
||
|
||
this.queryParams.standardTableLevel2Id = em.id;
|
||
this.getlistinfo(); //获取检查列表
|
||
|
||
},
|
||
qingchu() {
|
||
this.queryParams.standardTableLevel2Id = null;
|
||
this.treelist = [];
|
||
this.getlistinfo(); //获取检查列表
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.zhixing_top {
|
||
width: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
|
||
.querybox {
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
|
||
.querybox_title {
|
||
font-size: 13px;
|
||
text-align: right;
|
||
justify-content: end;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
::v-deep .infotable {
|
||
.xincellclass {}
|
||
|
||
.u-table-header {
|
||
z-index: 0;
|
||
}
|
||
|
||
.u-table-cell {
|
||
.u-table-cell_content {
|
||
padding: 0rpx 16rpx 0rpx 16rpx;
|
||
white-space: normal;
|
||
text-align: left;
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
::v-deep .uni-table {
|
||
// tr:first-child {
|
||
// th:nth-of-type(1) {
|
||
|
||
// /* 你的样式 */
|
||
// .uni-table-checkbox {
|
||
// display: none !important;
|
||
// }
|
||
|
||
// //
|
||
// }
|
||
|
||
// }
|
||
.frisytr {
|
||
.uni-table-checkbox {
|
||
display: none !important;
|
||
}
|
||
}
|
||
|
||
.checkbox__inner {
|
||
z-index: 0 !important;
|
||
}
|
||
}
|
||
|
||
::v-deep .biangengcontent {
|
||
.uni-steps__column-title {
|
||
color: #666 !important;
|
||
}
|
||
|
||
.uni-steps__column-desc {
|
||
color: #666 !important;
|
||
}
|
||
}
|
||
|
||
|
||
::v-deep .mewtable2 {
|
||
.u-table__header {
|
||
.u-checkbox {
|
||
// display: none !important;
|
||
visibility: hidden !important;
|
||
}
|
||
|
||
.u-table__cell {
|
||
//justify-content: center !important;
|
||
min-height: 50px !important;
|
||
|
||
}
|
||
|
||
.u-table__rows {
|
||
::v-deep .u-table__cell {
|
||
//justify-content: center !important;
|
||
// min-height: 50px !important;
|
||
height: auto !important;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
.u-table__body {
|
||
.u-table__rows {
|
||
border-bottom: 1px solid #dadbde !important;
|
||
|
||
.u-table__cell {
|
||
z-index: 0 !important;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style> |