b04c105982fd7d072d133a1706aefbe48aefb8ee.svn-base 67 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534
  1. <template>
  2. <div style="height:100%;width:100%;">
  3. <el-container style="height:100%;width:100%;">
  4. <!-- <el-aside width="320px" style="border-right:2px solid #d5d5ff;float:left" :style="{'max-height':testHeight+'px','height':testHeight+'px'}">
  5. <span style="display: flex;justify-content: center;align-items: center;border-bottom: 1px solid #ebeef5;">
  6. <el-button size="mini" :class="tabType==1 ? 'skactive' : 'sknormal'" @click="tabChange('1')">当前数据</el-button>
  7. <el-button size="mini" :class="tabType==2 ? 'skactive' : 'sknormal'" @click="tabChange('2')">历史数据</el-button>
  8. <el-button size="mini" :class="tabType==0 ? 'skactive' : 'sknormal'" @click="tabChange('0')">全部数据</el-button>
  9. </span>
  10. <div class="tree" style="
  11. height: calc(100% - 50px);
  12. width: 100%;
  13. overflow: auto;
  14. display: inline-flex;">
  15. <el-tree
  16. :highlight-current="true"
  17. style="height:100%;"
  18. :data="treeData"
  19. node-key="id"
  20. :expand-on-click-node="false"
  21. @node-click = 'treeNodeClickHandler'
  22. ref="jigou_tree"
  23. >
  24. <div class="custom-tree-node" slot-scope="{ node, data }">
  25. <span style="float:left;">{{ data.pnm}}
  26. </span>
  27. </div>
  28. </el-tree>
  29. </div>
  30. </el-aside> -->
  31. <!-- 主要窗口 -->
  32. <el-main id="dxdcListMainsk" style="padding:5px 20px;">
  33. <el-row>
  34. <el-col :span="24">
  35. <el-form :inline="true" size="mini" class="demo-form-inline" style="padding-left: 10px;">
  36. <el-form-item label="督查状态">
  37. <el-select v-model="dcType" clearable placeholder="督查状态">
  38. <el-option label="未督查" value="0"></el-option>
  39. <el-option label="督查中" value="1"></el-option>
  40. <el-option label="已督查" value="2"></el-option>
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label="行政区名称">
  44. <addvSearch
  45. v-model="adName"
  46. :maxHeight='300'
  47. :maxWidth='250'
  48. :rootAddCode='curAdcode_long'
  49. :level='"3"'
  50. :nameOrCode="'name'"
  51. ></addvSearch>
  52. </el-form-item>
  53. <el-form-item label="对象名称">
  54. <el-input v-model="depName" placeholder="对象名称"></el-input>
  55. </el-form-item>
  56. <!-- <el-form-item label="所在组">
  57. <el-autocomplete v-model="groupName" clearable value-key='nm' :fetch-suggestions="querySearchAsync" placeholder="请输入内容"
  58. @select="handleSelect"></el-autocomplete>
  59. </el-form-item> -->
  60. <el-form-item label="督查时间">
  61. <div style="display: flex;">
  62. <!-- <el-date-picker
  63. v-model="dateRange"
  64. type="daterange"
  65. value-format="yyyy-MM-dd"
  66. style="width:280px"
  67. range-separator="至"
  68. start-placeholder="开始日期"
  69. end-placeholder="结束日期"
  70. ></el-date-picker> -->
  71. <el-date-picker
  72. v-model="yearAx"
  73. type="year"
  74. placeholder="选择年">
  75. </el-date-picker>
  76. </div>
  77. </el-form-item>
  78. <el-form-item>
  79. <el-button type="primary" @click="onSubmit" icon="el-icon-search">查询</el-button>
  80. </el-form-item>
  81. </el-form>
  82. </el-col>
  83. </el-row>
  84. <el-table
  85. ref="table"
  86. border
  87. :height="tableHeight"
  88. :data="skDataList"
  89. style="width: 100%"
  90. v-loading="expLoading">
  91. <el-table-column prop="adName" label="行政区划" show-overflow-tooltip min-width="100" align="center"></el-table-column>
  92. <el-table-column prop="nm" label="工程名称" show-overflow-tooltip min-width="80" align="center" fixed="left"></el-table-column>
  93. <el-table-column prop="sceneScore" label="施工现场布置得分" v-if="ownPriv('isGdExpert')" show-overflow-tooltip min-width="70" align="center" ></el-table-column>
  94. <el-table-column prop="tmprScore" label="临时工程得分" v-if="ownPriv('isGdExpert')" show-overflow-tooltip min-width="70" align="center" ></el-table-column>
  95. <el-table-column prop="safScore" label="安全文明施工得分" v-if="ownPriv('isGdExpert')" show-overflow-tooltip min-width="70" align="center" ></el-table-column>
  96. <el-table-column prop="standardTotal" label="工地应计总分" v-if="ownPriv('isGdExpert')" show-overflow-tooltip min-width="70" align="center" ></el-table-column>
  97. <el-table-column prop="standardScore" label="工地得分" v-if="ownPriv('isGdExpert')" show-overflow-tooltip min-width="80" align="center" ></el-table-column>
  98. <el-table-column prop="standardRate" label="工地得分率(%)" v-if="ownPriv('isGdExpert')" show-overflow-tooltip min-width="90" align="center" ></el-table-column>
  99. <el-table-column prop="pbScore" label="党建得分" v-if="ownPriv('isDjExpert')" show-overflow-tooltip min-width="80" align="center" ></el-table-column>
  100. <el-table-column prop="actualScore" label="总分" v-if="ownPriv('isGdExpert') || ownPriv('isDjExpert')" show-overflow-tooltip min-width="80" align="center" ></el-table-column>
  101. <el-table-column prop="groupName" label="所在组" show-overflow-tooltip min-width="80" align="center"></el-table-column>
  102. <el-table-column prop="intm1" label="督查时间" show-overflow-tooltip min-width="100" align="center"></el-table-column>
  103. <!-- <el-table-column prop="uptm" label="更新时间" align="center" :formatter="formatDate" min-width="100"></el-table-column>-->
  104. <!-- <el-table-column-->
  105. <!-- prop="sceneState"-->
  106. <!-- label="施工现场布置状态"-->
  107. <!-- align="center"-->
  108. <!-- min-width="200">-->
  109. <!-- <template slot-scope="scope">-->
  110. <!-- <p style="cursor:pointer;color:#F56C6C;" v-if="scope.row.sceneState == 0 || !scope.row.sceneState">待填报</p>-->
  111. <!-- <p style="cursor:pointer;color:#fbb56d" v-if="scope.row.sceneState == 1">未完成</p>-->
  112. <!-- <p style="cursor:pointer;color:#67C23A" v-if="scope.row.sceneState == 2">已完成</p>-->
  113. <!-- </template>-->
  114. <!-- </el-table-column>-->
  115. <!-- <el-table-column-->
  116. <!-- prop="tmprState"-->
  117. <!-- label="临时工程状态"-->
  118. <!-- align="center"-->
  119. <!-- min-width="150">-->
  120. <!-- <template slot-scope="scope">-->
  121. <!-- <p style="cursor:pointer;color:#F56C6C;" v-if="scope.row.tmprState == 0 || !scope.row.tmprState">待填报</p>-->
  122. <!-- <p style="cursor:pointer;color:#fbb56d" v-if="scope.row.tmprState == 1">未完成</p>-->
  123. <!-- <p style="cursor:pointer;color:#67C23A" v-if="scope.row.tmprState == 2">已完成</p>-->
  124. <!-- </template>-->
  125. <!-- </el-table-column>-->
  126. <!-- <el-table-column-->
  127. <!-- prop="safState"-->
  128. <!-- label="安全文明施工"-->
  129. <!-- align="center"-->
  130. <!-- min-width="150">-->
  131. <!-- <template slot-scope="scope">-->
  132. <!-- <p style="cursor:pointer;color:#F56C6C;" v-if="scope.row.safState == 0 || !scope.row.safState">待填报</p>-->
  133. <!-- <p style="cursor:pointer;color:#fbb56d" v-if="scope.row.safState == 1">未完成</p>-->
  134. <!-- <p style="cursor:pointer;color:#67C23A" v-if="scope.row.safState == 2">已完成</p>-->
  135. <!-- </template>-->
  136. <!-- </el-table-column>-->
  137. <el-table-column prop="investment" label="投资金额(万元)" show-overflow-tooltip min-width="100" align="center">
  138. </el-table-column>
  139. <el-table-column prop="plannedDuration" label="计划工期" show-overflow-tooltip min-width="100" align="center">
  140. </el-table-column>
  141. <el-table-column
  142. prop="state"
  143. label="督查状态"
  144. align="center"
  145. min-width="80">
  146. <template slot-scope="scope">
  147. <span
  148. style="padding: 3px 10px;background:#F56C6C;border-radius:15px;color:rgba(255,255,255,1)"
  149. v-if="scope.row.state == 0"
  150. >未督查</span>
  151. <span
  152. style="padding: 3px 10px;background:#FBB56D;border-radius:15px;color:rgba(255,255,255,1)"
  153. v-if="scope.row.state == 1"
  154. >督查中</span>
  155. <span
  156. style="padding: 3px 10px;background:#63C25E;border-radius:15px;color:rgba(255,255,255,1)"
  157. v-if="scope.row.state == 2"
  158. >已督查</span>
  159. </template>
  160. </el-table-column>
  161. <el-table-column align="center" label="操作" min-width="220" fixed="right">
  162. <template slot-scope="scope">
  163. <div style="display: flex;justify-content: center">
  164. <div>
  165. <el-button size="mini" type="success" v-if="scope.row.rgstrId && scope.row.state != '2'" plain @click="add(scope.row)">督查</el-button>
  166. <el-button size="mini" type="danger" v-if="scope.row.rgstrId && scope.row.state != '2'" plain @click="deleteMember(scope.row)">删除</el-button>
  167. <el-button size="mini" type="danger" v-if="scope.row.rgstrId && scope.row.state != '2'" plain @click="submitHandler(scope.row)">提交</el-button>
  168. </div>
  169. <el-button size="mini" type="warning" v-if="scope.row.rgstrId && scope.row.state == '2'" plain @click="getDe(scope.row)">查看</el-button>
  170. <div style="padding-left: 10px;">
  171. <el-button size="mini" type="warning" v-if="scope.row.rgstrId && scope.row.state == '2'" plain @click="revoke(scope.row)">撤回</el-button>
  172. </div>
  173. </div>
  174. </template>
  175. </el-table-column>
  176. </el-table>
  177. <el-pagination background :pager-count="5" :current-page="pageIndex"
  178. :page-size="pageSize" :page-sizes="[10, 20, 30, 40, 50, 100]"
  179. layout="sizes, total, prev, pager, next" :total="total"
  180. @current-change="pageIndexChange" @size-change="handleSizeChange"
  181. ></el-pagination>
  182. </el-main>
  183. <!-- </el-container> -->
  184. <bzhgdTab v-if="showShuiKuTianBao" :rowData="rowData" :currentObjectRgstrId="currentObjectRgstrId"
  185. :currentResCode="currentResCode" :currentObjectId="currentObjectId"
  186. :currentObjectName="currentResName"
  187. :pType="pType"
  188. :currentNodeId="currentNodeId"
  189. :openType="openType"
  190. @cancelHandler="cancelHandler" @addShuiKuSuccess="addShuiKuSuccess"></bzhgdTab>
  191. </el-container>
  192. <!-- 添加/编辑人员弹窗 -->
  193. <!-- 上传模板弹窗 -->
  194. <shuiku-tian-bao-pl v-if="showShuiKuTianBaoPl"
  195. :showShuiKuTianBaoPl="showShuiKuTianBaoPl"
  196. :id="currentNodeId"
  197. @closePlDialog="closePlDialog"></shuiku-tian-bao-pl>
  198. <!-- 水库信息查看 -->
  199. <!-- 督查弹窗 -->
  200. <el-dialog
  201. title=""
  202. @close="clearForm"
  203. :visible.sync="showDuchaDialog"
  204. width="60%"
  205. center
  206. >
  207. <el-tabs v-model="activeTab" type="card" style="padding:5px 20px;">
  208. <el-tab-pane label="基本信息" name="basicInfo">
  209. <p style="margin-top:10px;margin-bottom: 10px;overflow: hidden;"><i class="el-icon-caret-right"></i><span
  210. style="width:120px;padding-left: 10px">基本信息</span><span class="hrs"></span>
  211. </p>
  212. <div>
  213. <el-form label-width="90px" style="padding: 20px 0;">
  214. <el-form-item label="工程名称">
  215. <el-input v-model="duchaForm.name" :disabled="isEdit"></el-input>
  216. </el-form-item>
  217. <el-form-item label="所在地">
  218. <el-input v-model="duchaForm.loc" :disabled="isEdit"></el-input>
  219. </el-form-item>
  220. <el-form-item label="总投资">
  221. <el-input v-model="duchaForm.investment" :disabled="isEdit"></el-input>
  222. </el-form-item>
  223. <el-form-item label="计划工期">
  224. <el-input v-model="duchaForm.plannedDuration" :disabled="isEdit"></el-input>
  225. </el-form-item>
  226. </el-form>
  227. </div>
  228. </el-tab-pane>
  229. <el-tab-pane label="投保记录基本信息" name="insuranceInfo">
  230. <div >
  231. <el-button :disabled="isEdit" style="margin-left: 1%;" type="primary" @click="showaddtb = true">新增投保记录</el-button>
  232. <div style="margin-top: 1%;display: flex;align-items: center;">
  233. <div style="display: flex;">
  234. <div>
  235. 投保记录年份:
  236. </div>
  237. <el-date-picker
  238. v-model="yearTb"
  239. type="year"
  240. @change="getInsuranceTableDataList"
  241. placeholder="">
  242. </el-date-picker>
  243. </div>
  244. </div>
  245. <el-table
  246. :data="insuranceTableDataList"
  247. border
  248. style="width: 100%;margin-top: 1%;"
  249. >
  250. <el-table-column
  251. label="投保人"
  252. prop="policyholder"
  253. align="center"
  254. >
  255. </el-table-column>
  256. <el-table-column
  257. label="投保人联系电话"
  258. prop="policyholderPhone"
  259. align="center"
  260. >
  261. </el-table-column>
  262. <el-table-column
  263. label="保险公司"
  264. prop="insuranceCompany"
  265. align="center"
  266. >
  267. </el-table-column>
  268. <el-table-column
  269. label="保险机构联系人"
  270. prop="insuranceContactPerson"
  271. align="center"
  272. >
  273. </el-table-column>
  274. <el-table-column
  275. label="保险机构联系电话"
  276. align="center"
  277. prop="insuranceContactPhone"
  278. >
  279. </el-table-column>
  280. <el-table-column
  281. label="安责险保费(万元)"
  282. align="center"
  283. prop="premiumAmount"
  284. >
  285. </el-table-column>
  286. <el-table-column
  287. prop="preventionServiceFee"
  288. label="事故预防服务费(万元)"
  289. align="center"
  290. >
  291. </el-table-column>
  292. <el-table-column
  293. label="投保时间"
  294. prop="insuranceDate"
  295. align="center"
  296. >
  297. </el-table-column>
  298. <el-table-column
  299. label="事故预防服务单位"
  300. prop="preventionServiceUnit"
  301. align="center"
  302. >
  303. </el-table-column>
  304. <el-table-column
  305. label="服务单位联系人"
  306. align="center"
  307. prop="serviceUnitContactPerson"
  308. >
  309. </el-table-column>
  310. <el-table-column
  311. label="服务单位联系电话"
  312. prop="serviceUnitContactPhone"
  313. align="center"
  314. >
  315. </el-table-column>
  316. <el-table-column align="center" label="操作"fixed="right">
  317. <template slot-scope="scope">
  318. <div style="display: flex;justify-content: center">
  319. <el-button size="mini" type="success" :disabled="isEdit" plain @click="editTb(scope.row)">编辑</el-button>
  320. <!-- <el-button size="mini" type="danger" :disabled="isEdit" plain @click="delAx(scope.row)">删除</el-button> -->
  321. </div>
  322. </template>
  323. </el-table-column>
  324. </el-table>
  325. <el-pagination background :current-page="currentPageTb" style="padding: 1%;"
  326. :page-size="pageSizeTb" :page-sizes="[10, 20, 30, 40, 50, 100]"
  327. layout="sizes, total, prev, pager, next" :total="totalTb"
  328. @current-change="pageIndexChangeTb" @size-change="handleSizeChangeTb"
  329. ></el-pagination>
  330. </div>
  331. </el-tab-pane>
  332. <el-tab-pane label="安责险填报" name="aztb">
  333. <el-button :disabled="isEdit" style="margin-left: 1%;" type="primary" @click="showaddaz = true;isadd = true">新增填报</el-button>
  334. <el-table
  335. ref="table"
  336. border
  337. :height="tableHeight*0.5"
  338. :data="aztbDataList"
  339. style="width: 100%;margin-top: 1%;"
  340. :cell-style="{color: '#000000'}"
  341. v-loading="expLoading">
  342. <el-table-column label="安全生产宣传教育培训" show-overflow-tooltip min-width="100" align="center">
  343. <template slot-scope="scope">
  344. <span
  345. style="padding: 3px 10px;border-radius:15px;"
  346. v-if="scope.row.safetyEducation == '1'"
  347. >是</span>
  348. <span
  349. style="padding: 3px 10px;border-radius:15px;"
  350. v-if="scope.row.safetyEducation == '2'"
  351. >否</span>
  352. <span
  353. style="padding: 3px 10px;border-radius:15px;"
  354. v-if="scope.row.safetyEducation == null"
  355. >-</span>
  356. </template>
  357. </el-table-column>
  358. <el-table-column label="安全风险辨识、评估和安全评价" show-overflow-tooltip min-width="100" align="center">
  359. <template slot-scope="scope">
  360. <span
  361. style="padding: 3px 10px;border-radius:15px;"
  362. v-if="scope.row.riskAssessment == '1'"
  363. >是</span>
  364. <span
  365. style="padding: 3px 10px;border-radius:15px;"
  366. v-if="scope.row.riskAssessment == '2'"
  367. >否</span>
  368. <span
  369. style="padding: 3px 10px;border-radius:15px;"
  370. v-if="scope.row.riskAssessment == null"
  371. >-</span>
  372. </template>
  373. </el-table-column>
  374. <el-table-column label="生产安全事故隐患排查" show-overflow-tooltip min-width="100" align="center">
  375. <template slot-scope="scope">
  376. <span
  377. style="padding: 3px 10px;border-radius:15px;"
  378. v-if="scope.row.hazardInvestigation == '1'"
  379. >是</span>
  380. <span
  381. style="padding: 3px 10px;border-radius:15px;"
  382. v-if="scope.row.hazardInvestigation == '2'"
  383. >否</span>
  384. <span
  385. style="padding: 3px 10px;border-radius:15px;"
  386. v-if="scope.row.hazardInvestigation == null"
  387. >-</span>
  388. </template>
  389. </el-table-column>
  390. <el-table-column label="安全生产标准化建设" show-overflow-tooltip min-width="100" align="center">
  391. <template slot-scope="scope">
  392. <span
  393. style="padding: 3px 10px;border-radius:15px;"
  394. v-if="scope.row.standardization == '1'"
  395. >是</span>
  396. <span
  397. style="padding: 3px 10px;border-radius:15px;"
  398. v-if="scope.row.standardization == '2'"
  399. >否</span>
  400. <span
  401. style="padding: 3px 10px;border-radius:15px;"
  402. v-if="scope.row.standardization == null"
  403. >-</span>
  404. </template>
  405. </el-table-column>
  406. <el-table-column label="生产安全事故应急预案编制和演练" show-overflow-tooltip min-width="100" align="center">
  407. <template slot-scope="scope">
  408. <span
  409. style="padding: 3px 10px;border-radius:15px;"
  410. v-if="scope.row.emergencyPlan == '1'"
  411. >是</span>
  412. <span
  413. style="padding: 3px 10px;border-radius:15px;"
  414. v-if="scope.row.emergencyPlan == '2'"
  415. >否</span>
  416. <span
  417. style="padding: 3px 10px;border-radius:15px;"
  418. v-if="scope.row.emergencyPlan == null"
  419. >-</span>
  420. </template>
  421. </el-table-column>
  422. <el-table-column label="安全生产技术推广应用及其他事故预防工作" show-overflow-tooltip min-width="100" align="center">
  423. <template slot-scope="scope">
  424. <span
  425. style="padding: 3px 10px;border-radius:15px;"
  426. v-if="scope.row.techPromotion == '1'"
  427. >是</span>
  428. <span
  429. style="padding: 3px 10px;border-radius:15px;"
  430. v-if="scope.row.techPromotion == '2'"
  431. >否</span>
  432. <span
  433. style="padding: 3px 10px;border-radius:15px;"
  434. v-if="scope.row.techPromotion == null"
  435. >-</span>
  436. </template>
  437. </el-table-column>
  438. <el-table-column label="状态" show-overflow-tooltip min-width="100" align="center">
  439. <template slot-scope="scope">
  440. <span
  441. style="padding: 3px 10px;background:#F56C6C;border-radius:15px;color:rgba(255,255,255,1)"
  442. v-if="scope.row.state == 0"
  443. >未完成</span>
  444. <span
  445. style="padding: 3px 10px;background:#FBB56D;border-radius:15px;color:rgba(255,255,255,1)"
  446. v-if="scope.row.state == 1"
  447. >已完成</span>
  448. </template>
  449. </el-table-column>
  450. <el-table-column align="center" label="操作" min-width="220" fixed="right">
  451. <template slot-scope="scope">
  452. <div style="display: flex;justify-content: center">
  453. <el-button size="mini" type="success" :disabled="isEdit" plain @click="editAx(scope.row)">编辑</el-button>
  454. <el-button size="mini" type="danger" :disabled="isEdit" plain @click="delAx(scope.row)">删除</el-button>
  455. </div>
  456. </template>
  457. </el-table-column>
  458. </el-table>
  459. <el-pagination style="padding: 20px 0;" background :pager-count="5" :current-page="pageIndex1"
  460. :page-size="pageSize1" :page-sizes="[10, 20, 30, 40, 50, 100]"
  461. layout="sizes, total, prev, pager, next" :total="total1"
  462. @current-change="pageIndexChange1" @size-change="handleSizeChange1"
  463. ></el-pagination>
  464. </el-tab-pane>
  465. <div slot="footer" class="dialog-footer">
  466. <el-button @click="showDuchaDialog = false">取消</el-button>
  467. </div>
  468. </el-tabs>
  469. </el-dialog>
  470. <el-dialog
  471. title="安责险填报"
  472. :visible.sync="showaddaz"
  473. width="40%"
  474. center
  475. v-loading="loading"
  476. loading-text="加载中..."
  477. @close="clearLabel"
  478. >
  479. <el-form :model="formObj" :label-width="formLabelWidth" :rules="rules" style="padding: 20px;">
  480. <el-form-item label="是否安全生产宣传教育培训" v-if="rowData.investment >= 400">
  481. <el-radio v-model="formObj.safetyEducation" label="1">是</el-radio>
  482. <el-radio v-model="formObj.safetyEducation" label="2">否</el-radio>
  483. <i v-if="formObj.safetyEducation == '1'" @click="savePic('safetyEducation')" class="el-icon-upload2"></i>
  484. <img v-if="downList.safetyEducationUrl" :src="downList.safetyEducationUrl" style="margin-left:3%;width:40px;height:40px;cursor:pointer;object-fit:cover;border:1px solid #eee;border-radius:4px;" @click="downloadFile(downList.safetyEducationUrl)" title="点击下载" />
  485. </el-form-item>
  486. <el-form-item label="是否安全风险辨识、评估和安全评价" v-if="rowData.investment >= 3000">
  487. <el-radio v-model="formObj.riskAssessment" label="1">是</el-radio>
  488. <el-radio v-model="formObj.riskAssessment" label="2">否</el-radio>
  489. <i v-if="formObj.riskAssessment == '1'" @click="savePic('riskAssessment')" class="el-icon-upload2"></i>
  490. <img v-if="downList.riskAssessmentUrl" :src="downList.riskAssessmentUrl" style="margin-left:3%;width:40px;height:40px;cursor:pointer;object-fit:cover;border:1px solid #eee;border-radius:4px;" @click="downloadFile(downList.riskAssessmentUrl)" title="点击下载" />
  491. </el-form-item>
  492. <el-form-item label="是否生产安全事故隐患排查" v-if="rowData.investment >= 400">
  493. <el-radio v-model="formObj.hazardInvestigation" label="1">是</el-radio>
  494. <el-radio v-model="formObj.hazardInvestigation" label="2">否</el-radio>
  495. <i v-if="formObj.hazardInvestigation == '1'" @click="savePic('hazardInvestigation')" class="el-icon-upload2"></i>
  496. <img v-if="downList.hazardInvestigationUrl" :src="downList.hazardInvestigationUrl" style="margin-left:3%;width:40px;height:40px;cursor:pointer;object-fit:cover;border:1px solid #eee;border-radius:4px;" @click="downloadFile(downList.hazardInvestigationUrl)" title="点击下载" />
  497. </el-form-item>
  498. <el-form-item label="是否安全生产标准化建设" v-if="rowData.investment >= 3000">
  499. <el-radio v-model="formObj.standardization" label="1">是</el-radio>
  500. <el-radio v-model="formObj.standardization" label="2">否</el-radio>
  501. <i v-if="formObj.standardization == '1'" @click="savePic('standardization')" class="el-icon-upload2"></i>
  502. <img v-if="downList.standardizationUrl" :src="downList.standardizationUrl" style="margin-left:3%;width:40px;height:40px;cursor:pointer;object-fit:cover;border:1px solid #eee;border-radius:4px;" @click="downloadFile(downList.standardizationUrl)" title="点击下载" />
  503. </el-form-item>
  504. <el-form-item label="是否生产安全事故应急预案编制和演练" v-if="rowData.investment >= 3000">
  505. <el-radio v-model="formObj.emergencyPlan" label="1">是</el-radio>
  506. <el-radio v-model="formObj.emergencyPlan" label="2">否</el-radio>
  507. <i v-if="formObj.emergencyPlan == '1'" @click="savePic('emergencyPlan')" class="el-icon-upload2"></i>
  508. <img v-if="downList.emergencyPlanUrl" :src="downList.emergencyPlanUrl" style="margin-left:3%;width:40px;height:40px;cursor:pointer;object-fit:cover;border:1px solid #eee;border-radius:4px;" @click="downloadFile(downList.emergencyPlanUrl)" title="点击下载" />
  509. </el-form-item>
  510. <el-form-item label="是否安全生产技术推广应用及其他事故预防工作" v-if="rowData.investment >= 10000">
  511. <el-radio v-model="formObj.techPromotion" label="1">是</el-radio>
  512. <el-radio v-model="formObj.techPromotion" label="2">否</el-radio>
  513. <i v-if="formObj.techPromotion == '1'" @click="savePic('techPromotion')" class="el-icon-upload2"></i>
  514. <img v-if="downList.techPromotionUrl" :src="downList.techPromotionUrl" style="margin-left:3%;width:40px;height:40px;cursor:pointer;object-fit:cover;border:1px solid #eee;border-radius:4px;" @click="downloadFile(downList.techPromotionUrl)" title="点击下载" />
  515. </el-form-item>
  516. </el-form>
  517. <div slot="footer" class="dialog-footer">
  518. <el-button @click="showaddaz = false">取消</el-button>
  519. <el-button v-if="!isadd" type="primary" @click="saveEditax">保存</el-button>
  520. <el-button v-if="isadd" type="primary" @click="saveAddax">保存</el-button>
  521. </div>
  522. </el-dialog>
  523. <!-- 文件上传组件 -->
  524. <el-upload
  525. ref="upload"
  526. class="upload-demo"
  527. :action="uploadUrl"
  528. :on-success="handleUploadSuccess"
  529. :on-error="handleUploadError"
  530. :file-list="fileList"
  531. :auto-upload="false"
  532. :show-file-list="true"
  533. style="display: none;"
  534. >
  535. <el-button size="small" type="primary">点击上传</el-button>
  536. <div slot="tip" class="el-upload__tip">可以上传任意类型文件</div>
  537. </el-upload>
  538. <el-dialog
  539. title=""
  540. @close="clearForm"
  541. :visible.sync="showaddtb"
  542. width="40%"
  543. center
  544. >
  545. <el-form label-width="130px" style="padding: 20px 0;">
  546. <el-form-item label="投保人">
  547. <el-input v-model="insuranceForm.policyholder"></el-input>
  548. </el-form-item>
  549. <el-form-item label="投保人联系电话">
  550. <el-input v-model="insuranceForm.policyholderPhone"></el-input>
  551. </el-form-item>
  552. <el-form-item label="保险公司">
  553. <el-input v-model="insuranceForm.insuranceCompany"></el-input>
  554. </el-form-item>
  555. <el-form-item label="保险机构联系人">
  556. <el-input v-model="insuranceForm.insuranceContactPerson"></el-input>
  557. </el-form-item>
  558. <el-form-item label="保险机构联系电话">
  559. <el-input v-model="insuranceForm.insuranceContactPhone"></el-input>
  560. </el-form-item>
  561. <el-form-item label="安责险保费(单位:万元)">
  562. <el-input v-model="insuranceForm.premiumAmount"></el-input>
  563. </el-form-item>
  564. <el-form-item label="事故预防服务费(单位:万元)">
  565. <el-input v-model="insuranceForm.preventionServiceFee"></el-input>
  566. </el-form-item>
  567. <el-form-item label="投保时间" required>
  568. <el-date-picker
  569. v-model="insuranceForm.insuranceDate"
  570. type="date"
  571. value-format="yyyy-MM-dd HH:mm:ss"
  572. placeholder="" style="width: 100%;">
  573. </el-date-picker>
  574. </el-form-item>
  575. <el-form-item label="事故预防服务单位">
  576. <el-input v-model="insuranceForm.preventionServiceUnit"></el-input>
  577. </el-form-item>
  578. <el-form-item label="服务单位联系人">
  579. <el-input v-model="insuranceForm.serviceUnitContactPerson"></el-input>
  580. </el-form-item>
  581. <el-form-item label="服务单位联系电话">
  582. <el-input v-model="insuranceForm.serviceUnitContactPhone"></el-input>
  583. </el-form-item>
  584. </el-form>
  585. <div style="text-align: center;width: 100%;padding: 20px 0;">
  586. <el-button @click="showaddtb = false">取消</el-button>
  587. <el-button :disabled="isEdit" type="primary" @click="saveTb">保存</el-button>
  588. </div>
  589. </el-dialog>
  590. </div>
  591. </template>
  592. <script>
  593. import request from '../../utils/gw_ajax_request.js'
  594. import {dateFormat} from '../../utils/gw_date.js'
  595. import {getSKList_xsk ,getrgstrIdObject,deleteXSKByObjId,deleteObjByObjId,getList_bzhgd,getrgstrIdObject_jsztfh,getrgstrIdObject_bzhgd_state} from "../../api/duChaTianBao.js";
  596. import addvSearch from "@widget/addvSearch.vue"
  597. import provTreeList from "../../widgets/provTreeList.vue";
  598. import bzhgdTab from "../duChaTianBao/bzhgdTab.vue"
  599. import {curAdcode_short,curAdcode_long} from '@util/global_variable.js'
  600. import {fillColum} from './jieshuizaitifuhe/forDifferentProvince.js'
  601. import { exportModel } from "@util/gw_exportModel";
  602. export default {
  603. components: {
  604. provTreeList: provTreeList,
  605. bzhgdTab:bzhgdTab,
  606. addvSearch
  607. },
  608. props: [],
  609. data() {
  610. return {
  611. isEdit:false,
  612. showaddtb:false,
  613. formObj: {},
  614. loading:false,
  615. aztbDataList: [],
  616. pageIndex1:1,
  617. pageSize1:20,
  618. pageSizeTb:10,
  619. currentPageTb:1,
  620. totalTb:0,
  621. showaddaz:false,
  622. downListInfo: [],
  623. total1:0,
  624. openType:false,
  625. tabType:"0",//0全部数据,1当前数据,2历史数据
  626. dateRange:[],
  627. yearAx:'',
  628. yearTb:'2026',
  629. lyjg:[],
  630. utTypeL:[
  631. {id:'1',name:'企业'},
  632. {id:'2',name:'机关'},
  633. {id:'3',name:'学校'},
  634. {id:'4',name:'2019整改'},
  635. {id:'5',name:'政府机关'}
  636. ],
  637. utPptL:[
  638. {id:'1',name:'节水型'},
  639. {id:'2',name:'非节水型'}
  640. ],
  641. depName:"",
  642. wintCode:"",
  643. engScale:'',
  644. orgName:'',
  645. groupName:'',
  646. groupId:'',
  647. groups:[],
  648. isadd:false,
  649. // sttm:'',
  650. // ettm:'',
  651. adName:'',
  652. treeData:[],
  653. uploadId:'',
  654. dxdcMainHeight: window.innerHeight - 304,
  655. testHeight: window.innerHeight - 111,
  656. skDataList: [],
  657. pageIndex:1,
  658. pageSize:20,
  659. total:0,
  660. tableHeight:0,
  661. currentResCode:'',
  662. currentResName:'',
  663. currentObjectId:'',
  664. currentObjectRgstrId:'',
  665. currentObjectInfoObject:null,
  666. showShuiKuTianBao:false,
  667. currentAdCode:'',
  668. currentNodeId:'',
  669. rsvrName:'',
  670. dcType:'',
  671. rowData:'',
  672. disabled:true,
  673. showShuiKuTianBaoPl:false,
  674. downIcon:'el-icon-download',
  675. insuranceFormId: '', // 当前编辑的安责险记录ID
  676. expLoading:false,
  677. //
  678. repeatId: '',
  679. insuranceTableDataList: [],
  680. showDuchaDetails: false,
  681. zerenrenLabel: '"三个责任人"落实情况',
  682. pType: 129,
  683. fillTableData: [], //根据不同省份赋值
  684. xskInfoDialog: false,
  685. currentDuchaTpe: false,
  686. currentRsCode: '',
  687. xskRgstrId:'',
  688. currentObjId:'',
  689. currentRsName:'',
  690. endTime: '',
  691. curTime: new Date().getTime(),
  692. flage: false,
  693. isDateRange:false,
  694. uploadUrl: '/file/insert', // 上传接口地址
  695. fileList: [],
  696. currentUploadType: '',
  697. uploadFiles: {},
  698. // 督查弹窗相关
  699. showDuchaDialog: false,
  700. activeTab: 'basicInfo',
  701. duchaForm: {
  702. name: '',
  703. adName: '',
  704. groupName: '',
  705. intm: ''
  706. },
  707. downList: {},
  708. insuranceForm: {
  709. }
  710. };
  711. },
  712. computed: {
  713. persId() {
  714. return localStorage.getItem("userid")
  715. ? localStorage.getItem("userid")
  716. : "1098101939614724096";
  717. },
  718. isAdmin:function(){
  719. return localStorage.getItem("isAdmin")? localStorage.getItem("isAdmin"): ''
  720. },
  721. currentRlcode(){
  722. return localStorage.getItem('currentRlcode') ? localStorage.getItem('currentRlcode') : ''
  723. },
  724. isJiangXi(){
  725. return this.currentRlcode.indexOf('36') == '0' ? true :false
  726. },
  727. curAdcode_short(){
  728. return curAdcode_short
  729. },
  730. curAdcode_long(){
  731. return curAdcode_long
  732. }
  733. },
  734. mounted() {
  735. this.$nextTick(function () {
  736. this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 50;
  737. let _self = this;
  738. window.onresize = function() {
  739. _self.tableHeight = window.innerHeight - _self.$refs.table.$el.offsetTop - 50
  740. }
  741. })
  742. this.getSkDataList();
  743. this.getAllGroup();
  744. },
  745. activated(){
  746. this.getLeftTreeData();
  747. this.currentNodeId = "";
  748. this.rsvrName = "";
  749. this.dcType = "";
  750. this.getSkDataList();
  751. },
  752. watch: {
  753. currentNodeId(n,o){
  754. this.getSkDataList();
  755. },
  756. groupName(n,o){
  757. if(n==''){
  758. this.groupId = '';
  759. }
  760. },
  761. // endTime(n,o){
  762. // this.flage = this.endTime ? (eval(this.endTime) < eval(this.curTime) ? true : false) : false
  763. // }
  764. },
  765. methods: {
  766. editTb(row){
  767. this.showaddtb = true;
  768. this.insuranceForm = row
  769. },
  770. pageIndexChangeTb(val){
  771. this.currentPageTb = val;
  772. this.toAddMember(this.rowData);
  773. },
  774. handleSizeChangeTb(val){
  775. this.pageSizeTb = val;
  776. this.toAddMember(this.rowData);
  777. },
  778. async downloadFile(url){
  779. console.log(url)
  780. console.log(this.downListInfo)
  781. let downloadName = ''
  782. this.downListInfo.forEach((item)=>{
  783. if(item.filePath === url){
  784. let downloadName = item.fileName
  785. }
  786. })
  787. let url1 = url
  788. let type = "get";
  789. await exportModel(type,url1,downloadName);
  790. },
  791. savePic(type){
  792. // 保存当前上传类型
  793. this.currentUploadType = type;
  794. // 触发文件选择对话框
  795. if (this.$refs.upload && this.$refs.upload.$refs.input) {
  796. this.$refs.upload.$refs.input.click();
  797. } else {
  798. // 如果上传组件不存在,创建一个临时的文件输入元素
  799. const input = document.createElement('input');
  800. input.type = 'file';
  801. // 移除文件格式限制,允许上传任意类型文件
  802. // input.accept = 'image/*';
  803. input.style.display = 'none';
  804. input.onchange = (e) => {
  805. if (e.target.files && e.target.files[0]) {
  806. const file = e.target.files[0];
  807. this.uploadFiles[type] = file;
  808. // 更新文件列表
  809. this.fileList.push({
  810. name: file.name,
  811. url: URL.createObjectURL(file)
  812. });
  813. this.$message.info('文件已选择,请点击保存按钮上传');
  814. }
  815. document.body.removeChild(input);
  816. };
  817. document.body.appendChild(input);
  818. input.click();
  819. }
  820. },
  821. // 处理文件选择
  822. handleFileChange(file, fileList){
  823. // 存储选择的文件
  824. if (this.currentUploadType) {
  825. this.uploadFiles[this.currentUploadType] = file.raw;
  826. }
  827. this.fileList = fileList;
  828. },
  829. // 处理上传成功
  830. handleUploadSuccess(response, file, fileList){
  831. this.$message.success('上传成功');
  832. // 这里可以根据需要处理上传成功后的逻辑
  833. // 例如更新表单数据或显示上传的图片
  834. console.log('上传成功:', response, this.currentUploadType);
  835. },
  836. // 处理上传失败
  837. handleUploadError(err, file, fileList){
  838. this.$message.error('上传失败,请重试');
  839. console.error('上传失败:', err);
  840. },
  841. saveEditax(){
  842. this.loading = true;
  843. request.post('/bis/insp/anze/record/update',this.formObj).then((res)=>{
  844. if(res.success){
  845. this.uploadFilesFn().then(() => {
  846. this.$message.success('保存成功');
  847. this.showaddaz = false;
  848. this.toAddMember(this.rowData);
  849. this.loading = false;
  850. }).catch(() => {
  851. this.$message.success('基本信息保存成功,但文件上传失败');
  852. this.showaddaz = false;
  853. this.toAddMember(this.rowData);
  854. this.loading = false;
  855. });
  856. }else{
  857. this.loading = false;
  858. this.$message.error(res.message);
  859. }
  860. })
  861. },
  862. saveAddax(){
  863. var par = this.formObj;
  864. par.rgstrId = this.rowData.rgstrId;
  865. par.persId = this.persId;
  866. // 先保存基本信息
  867. this.loading = true;
  868. request.post('/bis/insp/anze/record/add',par).then((res)=>{
  869. if(res.success){
  870. // 然后上传文件
  871. this.uploadId = res.data.id
  872. this.uploadFilesFn().then(() => {
  873. this.$message.success('保存成功');
  874. this.showaddaz = false;
  875. this.loading = false;
  876. this.toAddMember(this.rowData);
  877. }).catch(() => {
  878. this.$message.success('基本信息保存成功,但文件上传失败');
  879. this.showaddaz = false;
  880. this.loading = false;
  881. this.toAddMember(this.rowData);
  882. });
  883. }else{
  884. this.loading = false;
  885. this.$message.error(res.message);
  886. }
  887. })
  888. },
  889. // 上传文件方法
  890. uploadFilesFn() {
  891. return new Promise((resolve, reject) => {
  892. // 检查是否有文件需要上传
  893. const uploadPromises = [];
  894. for (const type in this.uploadFiles) {
  895. const file = this.uploadFiles[type];
  896. if (file) {
  897. // 创建FormData对象
  898. const formData = new FormData();
  899. formData.append('file', file);
  900. formData.append('bizType', type);
  901. formData.append('bizId', this.uploadId);
  902. if(!this.isadd){
  903. formData.append('id', this.formObj.id);
  904. }
  905. // 上传文件
  906. uploadPromises.push(
  907. request.post('/file/insert', formData, {
  908. headers: {
  909. 'Content-Type': 'multipart/form-data'
  910. }
  911. })
  912. );
  913. }
  914. }
  915. if (uploadPromises.length > 0) {
  916. Promise.all(uploadPromises)
  917. .then(results => {
  918. console.log('所有文件上传成功:', results);
  919. resolve();
  920. })
  921. .catch(err => {
  922. console.error('文件上传失败:', err);
  923. reject(err);
  924. });
  925. } else {
  926. // 没有文件需要上传,直接 resolve
  927. resolve();
  928. }
  929. });
  930. },
  931. async editAx(row){
  932. this.downList = {}
  933. await request.post('/file/findAllFile',{bizId:row.id}).then((res)=>{
  934. var a = JSON.parse(JSON.stringify(res.data));
  935. this.downListInfo = a
  936. a.forEach((item)=>{
  937. if(item.bizType==='emergencyPlan'){
  938. this.downList.emergencyPlanUrl ='/pdcApi' + item.filePath;
  939. } else if(item.bizType==='hazardInvestigation'){
  940. this.downList.hazardInvestigationUrl = '/pdcApi' + item.filePath;
  941. } else if(item.bizType==='riskAssessment'){
  942. this.downList.riskAssessmentUrl = '/pdcApi' + item.filePath;
  943. } else if(item.bizType==='safetyEducation'){
  944. this.downList.safetyEducationUrl = '/pdcApi' + item.filePath;
  945. } else if(item.bizType==='standardization'){
  946. this.downList.standardizationUrl = '/pdcApi' + item.filePath;
  947. } else if(item.bizType==='techPromotion'){
  948. this.downList.techPromotionUrl = '/pdcApi' + item.filePath;
  949. }
  950. })
  951. })
  952. console.log(this.downList);
  953. this.showaddaz = true;
  954. this.isadd = false;
  955. this.formObj = row;
  956. },
  957. initScore(row){
  958. if(row.total==null || row.total==0){
  959. return 0.00;
  960. }else{
  961. return ((row.standardScore==null?0:row.standardScore)/(row.total) * 100).toFixed(2);
  962. }
  963. },
  964. clearLabel(){
  965. this.formObj = {
  966. }
  967. },
  968. tabChange(tabType){
  969. this.tabType = tabType;
  970. this.currentNodeId = "";
  971. this.groupName = "";
  972. this.groupId = "";
  973. this.getAllGroup();
  974. this.getLeftTreeData();
  975. // this.getSkDataList();
  976. },
  977. //获取所有的组
  978. getAllGroup(){
  979. var _self = this;
  980. request.get('/dc/user/getGroupByPersid',{params:{'persid':this.persId,'ptype':'129','tabType':this.tabType}}).then((res)=>{
  981. if(res.success){
  982. _self.groups = res.data;
  983. }
  984. })
  985. },
  986. querySearchAsync(queryString, cb) {
  987. var restaurants = this.groups;
  988. var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
  989. clearTimeout(this.timeout);
  990. this.timeout = setTimeout(() => {
  991. cb(results);
  992. }, 1500 * Math.random());
  993. },
  994. createStateFilter(queryString) {
  995. return (state) => {
  996. return (state.nm.toLowerCase().indexOf(queryString.toLowerCase()) != -1);
  997. };
  998. },
  999. handleSelect(item) {
  1000. console.log(item);
  1001. this.groupId = item.id;
  1002. },
  1003. getLeftTreeData(){
  1004. var _self = this;
  1005. _self.lyjg = [];
  1006. request.get('/dc/organization/base/getAllNode',{params:{'userId':this.persId,'orgType':'129','tabType':this.tabType}}).then((res)=>{
  1007. let data = res.data
  1008. data.forEach(ele => {
  1009. if(ele.pid == null || ele.pid == ''){
  1010. ele.pid = '129'
  1011. }
  1012. if(ele.id.length == 6){
  1013. _self.lyjg.push(ele);
  1014. }
  1015. });
  1016. data = _self.getTrees(data)
  1017. _self.currentNodeId = data.length>0?data[0].id:"";
  1018. // _self.isDateRange = this.getBoolDate(data[0].sttm,data[0].entm);
  1019. // _self.flage = _self.isDateRange;
  1020. _self.treeData = data;
  1021. // _self.endTime = data[0]['entm']
  1022. })
  1023. },
  1024. getBoolDate(sttm,entm){
  1025. if(sttm<new Date().getTime() && new Date().getTime()<entm){
  1026. return true;
  1027. }else if(sttm==null || entm==null){
  1028. return true;
  1029. }
  1030. return false;
  1031. },
  1032. clearForm(){
  1033. this.insuranceForm = {
  1034. };
  1035. this.duchaForm = {
  1036. }
  1037. },
  1038. //格式化树形数据
  1039. getTrees(list) {
  1040. //@wxcwater重写方法 适应多个树
  1041. let highLevelLength = 99;//预设最大节点id长度,目前最大应该为12,所以设置为99保证正常
  1042. let _self =this;
  1043. list.forEach((item,index)=>{
  1044. item['pidLength'] = item.pid&&item.pid!=''?item.pid.length:0;
  1045. if(highLevelLength>item.pidLength){
  1046. highLevelLength = item.pidLength;
  1047. }
  1048. });
  1049. console.log(highLevelLength);
  1050. let heightLevelNode = [];
  1051. list.forEach((item,index)=>{
  1052. if(highLevelLength>=item.pidLength){
  1053. heightLevelNode.push(item);
  1054. }
  1055. });
  1056. list.forEach((item,index)=>{
  1057. heightLevelNode.forEach((pItem)=>{
  1058. _self.addTreeNode(pItem,item);
  1059. });
  1060. });
  1061. console.log(heightLevelNode);
  1062. return heightLevelNode;
  1063. },
  1064. addTreeNode:function(treeNode,leafNode){
  1065. let _self = this;
  1066. if(!treeNode.hasOwnProperty('children')){
  1067. treeNode['children'] = [];
  1068. }
  1069. if(leafNode.pid == treeNode.id){
  1070. treeNode.children.push(leafNode);
  1071. return;
  1072. }
  1073. treeNode.children.forEach((item) => {
  1074. _self.addTreeNode(item,leafNode);
  1075. });
  1076. },
  1077. treeNodeClickHandler:function(data,node,tree){
  1078. // this.endTime = data['entm']
  1079. this.currentNodeId = data.id;
  1080. if(this.currentNodeId.length==12){
  1081. this.groupId = data.id;
  1082. this.groupName = data.pnm;
  1083. }
  1084. // this.isDateRange = this.getBoolDate(data.sttm,data.entm);
  1085. // this.flage = this.isDateRange;
  1086. },
  1087. provTreeSelectChangeHandler:function(params){
  1088. this.currentAdCode = params.likeCode;
  1089. this.getSkDataList();
  1090. },
  1091. formatDate(row,column){
  1092. if(row.uptm){
  1093. return (dateFormat(row.uptm,'yyyy-MM-dd'));
  1094. }
  1095. },
  1096. formatEngScal(row,column){
  1097. let engScal = row.engScal;
  1098. let _engScal = '其他';
  1099. switch (engScal) {
  1100. case '1' : _engScal = '大(1)型';break;
  1101. case '2' : _engScal = '大(2)型';break;
  1102. case '3' : _engScal = '中型';break;
  1103. case '4' : _engScal = '小(1)型';break;
  1104. case '5' : _engScal = '小(2)型';break;
  1105. case '9' : _engScal = '其他';break;
  1106. }
  1107. return _engScal;
  1108. },
  1109. getSkDataList:function(){
  1110. let paramStartDate = '';
  1111. let paramEndDate = '';
  1112. if(this.dateRange&&this.dateRange.length>1&&this.dateRange[0]!=''&&this.dateRange[1]!=''){
  1113. paramStartDate = this.dateRange[0];
  1114. paramEndDate = this.dateRange[1];
  1115. }
  1116. let paramsData = {
  1117. 'presId': this.persId,
  1118. "pType": "129",
  1119. "pageSize": this.pageSize,
  1120. year:this.yearAx,
  1121. 'pageNum': this.pageIndex,
  1122. 'id': this.currentNodeId,
  1123. 'nm': this.depName,
  1124. 'state': this.dcType,
  1125. 'adName': this.adName,
  1126. 'sttm': paramStartDate,
  1127. 'entm': paramEndDate,
  1128. 'riverId': this.orgName,
  1129. 'wintCode': this.wintCode,
  1130. 'groupId': this.groupId,
  1131. 'tabType': this.tabType
  1132. }
  1133. if(this.currentRlcode.indexOf('36') == '0'){
  1134. paramsData['repeatId'] = this.repeatId
  1135. }
  1136. this.expLoading = true;
  1137. request.post('/bis/insp/anze/rgstr/findPage',paramsData).then((res) => {
  1138. if (res.success) {
  1139. this.skDataList = res.data.list;
  1140. this.total = res.data.total;
  1141. this.expLoading = false;
  1142. } else {
  1143. }
  1144. });
  1145. // getList_bzhgd(paramsData).then(
  1146. // (res) => {
  1147. // console.log(res);
  1148. // res.data.list.forEach((item)=>{
  1149. // if(item.intm){
  1150. // item.intm1 = dateFormat(item.intm,'yyyy-MM-dd');
  1151. // }
  1152. // })
  1153. // this.skDataList = res.data.list;
  1154. // this.total = res.data.total;
  1155. // this.expLoading = false;
  1156. // this.$nextTick(() => {
  1157. // this.$refs.table.doLayout();
  1158. // });
  1159. // }
  1160. // );
  1161. },
  1162. onSubmit(){
  1163. this.getSkDataList();
  1164. },
  1165. skCancelHandler() {
  1166. this.xskInfoDialog = false
  1167. },
  1168. toCheck(rowData){
  1169. var _self = this;
  1170. this.rowData = rowData;
  1171. // ;
  1172. console.log(rowData);
  1173. // getrgstrIdObject(rowData.code,rowData.objId,_self.pageIndex).then(
  1174. // (res) =>{
  1175. // console.log(res);
  1176. _self.currentResCode = this.rowData.code;
  1177. _self.currentObjectId = this.rowData.objId;
  1178. _self.currentObjectRgstrId = this.rowData.rgstrId;
  1179. _self.currentResName = this.rowData.nm;
  1180. _self.showShuiKuTianBao = true;
  1181. _self.openType = false;
  1182. this.$nextTick(() => {
  1183. if (this.$refs['xskTianBaoRef']) {
  1184. this.$refs['xskTianBaoRef'].showDialog();
  1185. }
  1186. })
  1187. },
  1188. add(rowData){
  1189. this.isEdit = false;
  1190. this.toAddMember(rowData)
  1191. },
  1192. getDe(rowData){
  1193. this.isEdit = true;
  1194. this.toAddMember(rowData)
  1195. },
  1196. toAddMember(rowData){
  1197. this.rowData = rowData;
  1198. var paramsData = {
  1199. rgstrId: rowData.rgstrId
  1200. }
  1201. request.post('/bis/insp/anze/record/list',paramsData).then((res) => {
  1202. if (res.success) {
  1203. this.aztbDataList = res.data.list;
  1204. this.total1 = res.data.total;
  1205. } else {
  1206. }
  1207. });
  1208. request.get(`/bis/insp/anze/rgstr/getBase/${rowData.rgstrId}`).then((res)=>{
  1209. if(res.success){
  1210. this.duchaForm = res.data
  1211. }else{
  1212. }
  1213. });
  1214. var par = {
  1215. pageNum: this.currentPageTb,
  1216. pageSize: this.pageSizeTb,
  1217. projectId: rowData.code,
  1218. year: this.yearTb
  1219. }
  1220. request.post('/att/project/insurance/record/list',par).then((res)=>{
  1221. if(res.success){
  1222. this.insuranceTableDataList = res.data.list;
  1223. this.totalTb = res.data.total;
  1224. }else{
  1225. }
  1226. });
  1227. // request.get(`/bis/insp/anze/rgstr/getRecord/${rowData.rgstrId}`).then((res)=>{
  1228. // if(res.success){
  1229. // this.insuranceForm = res.data
  1230. // this.insuranceFormId = res.data.id;
  1231. // console.log(this.insuranceForm);
  1232. // }else{
  1233. // }
  1234. // });
  1235. // 显示弹窗
  1236. this.showDuchaDialog = true;
  1237. },
  1238. getInsuranceTableDataList(){
  1239. var par = {
  1240. pageNum: this.currentPageTb,
  1241. pageSize: this.pageSizeTb,
  1242. projectId: this.rowData.code,
  1243. year: this.yearTb
  1244. }
  1245. request.post('/att/project/insurance/record/list',par).then((res)=>{
  1246. if(res.success){
  1247. this.insuranceTableDataList = res.data.list;
  1248. this.totalTb = res.data.total;
  1249. }else{
  1250. }
  1251. });
  1252. },
  1253. saveTb() {
  1254. console.log(this.insuranceForm);
  1255. // 验证投保时间是否填写
  1256. if (!this.insuranceForm.insuranceDate) {
  1257. this.$message.error('请填写投保时间');
  1258. return;
  1259. }
  1260. var par = this.insuranceForm;
  1261. par.rgstrId = this.rowData.rgstrId;
  1262. if(this.insuranceFormId){
  1263. par.id = this.insuranceFormId;
  1264. }
  1265. par.projectId = this.rowData.code;
  1266. request.post('/bis/insp/anze/rgstr/addRecord', par).then((res) => {
  1267. if (res.success) {
  1268. this.$message.success('保存成功');
  1269. this.showaddtb = false;
  1270. this.toAddMember(this.rowData);
  1271. } else {
  1272. this.$message.error(res.message);
  1273. }
  1274. });
  1275. },
  1276. cancelHandler(){
  1277. this.showShuiKuTianBao = false;
  1278. },
  1279. addShuiKuSuccess(){
  1280. this.getSkDataList();
  1281. },
  1282. delAx(row){
  1283. this.$confirm('确认删除吗?', '提示', {
  1284. confirmButtonText: '确定',
  1285. cancelButtonText: '取消',
  1286. type: 'warning'
  1287. }).then(() => {
  1288. request.post(`/bis/insp/anze/record/delete/${row.id}`).then((res)=>{
  1289. if(res.success){
  1290. this.$message.success('删除成功');
  1291. this.toAddMember(this.rowData);
  1292. }else{
  1293. this.$message.error(res.message)
  1294. }
  1295. });
  1296. }).catch(() => {
  1297. });
  1298. },
  1299. deleteMember(obj){
  1300. var _self = this;
  1301. this.$confirm('此操作将督查对象从列表中删除,确认删除该对象吗?', '提示', {
  1302. confirmButtonText: '确定',
  1303. cancelButtonText: '取消',
  1304. type: 'warning'
  1305. }).then(() => {
  1306. request.get(`/supervision/plan/cleanObjDataByObjId?objType=129&objId=${obj.objId}`).then((res)=>{
  1307. if(res.success){
  1308. _self.pageIndexChange();
  1309. _self.$message.success('删除成功')
  1310. }else{
  1311. _self.$message.error(res.message)
  1312. }
  1313. });
  1314. }).catch(() => {
  1315. });
  1316. },
  1317. revoke(rowData){
  1318. var _self = this;
  1319. this.$confirm('确定要撤销当前信息吗?', '提示', {
  1320. confirmButtonText: '确定',
  1321. cancelButtonText: '取消',
  1322. type: 'warning'
  1323. }).then(() => {
  1324. let formObj = {
  1325. "rgstrId":rowData.rgstrId,
  1326. "state":"1"
  1327. }
  1328. request.post('/bis/insp/ststn', formObj).then((res) => {
  1329. if (res.success) {
  1330. _self.addShuiKuSuccess();
  1331. _self.$message.success("提交成功");
  1332. } else {
  1333. _self.cancelHandler();
  1334. }
  1335. });
  1336. }).catch(() => {
  1337. });
  1338. },
  1339. submitHandler(rowData){
  1340. var _self = this;
  1341. getrgstrIdObject_bzhgd_state(rowData.rgstrId).then(
  1342. (res) =>{
  1343. // if(res.data.sceneState !='2'){
  1344. // this.$message({
  1345. // message: '施工现场布置状态填报未完成!',
  1346. // type: 'warning'
  1347. // });
  1348. // return
  1349. // }
  1350. // if(res.data.tmprState !='2'){
  1351. // this.$message({
  1352. // message: '临时工程状态填报未完成!',
  1353. // type: 'warning'
  1354. // });
  1355. // return
  1356. // }
  1357. // if(res.data.safState !='2'){
  1358. // this.$message({
  1359. // message: '安全文明施工填报未完成!',
  1360. // type: 'warning'
  1361. // });
  1362. // return
  1363. // }
  1364. this.$confirm('请确认所有信息填报完毕?', '提示', {
  1365. confirmButtonText: '确定',
  1366. cancelButtonText: '取消',
  1367. type: 'warning'
  1368. }).then(() => {
  1369. let formObj = {
  1370. "rgstrId":rowData.rgstrId,
  1371. "state":"2"
  1372. }
  1373. request.post('/bis/insp/ststn', formObj).then((res) => {
  1374. if (res.success) {
  1375. _self.addShuiKuSuccess();
  1376. _self.$message.success("提交成功");
  1377. } else {
  1378. _self.cancelHandler();
  1379. }
  1380. });
  1381. }).catch(() => {
  1382. });
  1383. },(err) =>{
  1384. });
  1385. },
  1386. pageIndexChange(val){
  1387. console.log(val);
  1388. this.pageIndex = val;
  1389. this.getSkDataList();
  1390. },
  1391. handleSizeChange(val){
  1392. this.getSkDataList();
  1393. },
  1394. pageIndexChange1(val){
  1395. this.pageIndex1 = val;
  1396. this.toAddMember(this.rowData);
  1397. this.activeTab = 'aztb';
  1398. },
  1399. handleSizeChange1(val){
  1400. this.pageSize1 = val;
  1401. this.toAddMember(this.rowData);
  1402. this.activeTab = 'aztb';
  1403. },
  1404. // 下载填报模板
  1405. async downloadTemplate(){
  1406. let url = '/pdcApi/dc/impExcel/downloadTemplate/sk?userId='+this.persId+'&id='+this.currentNodeId;
  1407. let downloadName = "小水库填报模板.xls";
  1408. let type = "get";
  1409. await exportModel(type,url,downloadName);
  1410. this.disabled = false;
  1411. },
  1412. showPlDialog(){
  1413. this.showShuiKuTianBaoPl = true
  1414. },
  1415. closePlDialog(val){
  1416. this.showShuiKuTianBaoPl = false
  1417. },
  1418. // 新需求 点击复查显示以前的督查信息
  1419. toShowDuchaDetail(row){
  1420. this.currentResCode = row.code;
  1421. this.currentObjectId = row.objId;
  1422. this.currentObjectRgstrId = row.rgstrId;
  1423. this.currentResName = row.nm;
  1424. this.showDuchaDetails = true
  1425. },
  1426. closeInfoDialog(){
  1427. this.showDuchaDetails = false
  1428. },
  1429. // 加入复查
  1430. joinRecheck(row){
  1431. let _self = this
  1432. let data = {
  1433. regerId: row.rgstrId,
  1434. type: '129'
  1435. }
  1436. this.$confirm('确定加入复查吗?', '提示', {
  1437. confirmButtonText: '确定',
  1438. cancelButtonText: '取消',
  1439. type: 'warning'
  1440. }).then(() => {
  1441. request.post(`/bis/insp/repeat/check/log`, data).then((res)=>{
  1442. if(res.success){
  1443. _self.$message.success('已加入复查')
  1444. _self.getSkDataList();
  1445. }else{
  1446. _self.$message.error(res.message)
  1447. }
  1448. }).catch(err=>{
  1449. _self.$message.error(res.message)
  1450. });
  1451. }).catch(() => {
  1452. });
  1453. }
  1454. },
  1455. };
  1456. </script>
  1457. <style>
  1458. .skactive{
  1459. background: #3f8eff !important;
  1460. color:white !important;
  1461. margin-top: 5px;
  1462. margin-bottom: 5px;
  1463. }
  1464. .sknormal{
  1465. background: white;
  1466. margin-top: 5px;
  1467. margin-bottom: 5px;
  1468. }
  1469. .el-table .warning-row {
  1470. background: oldlace;
  1471. }
  1472. .el-table .success-row {
  1473. background: #f0f9eb;
  1474. }
  1475. #dxdcListMainsk{
  1476. overflow-y: hidden;
  1477. }
  1478. .tab-content {
  1479. padding: 20px 0;
  1480. }
  1481. .dialog-footer {
  1482. text-align: center;
  1483. }
  1484. .el-icon-upload2,.el-icon-circle-plus{
  1485. color: #00bbff;
  1486. font-size: 18px;
  1487. line-height: 12px;
  1488. vertical-align: middle;
  1489. cursor: pointer;
  1490. }
  1491. </style>