checkConstructionReport.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. <!-- 船员管理模块 船员详情页面 -->
  2. <template>
  3. <div class="frame">
  4. <div style="height: 50px">
  5. <auditFlow show-history-flag="true"
  6. :activities="activities"
  7. :message="approveStatus"
  8. :billNo="shipMan.status" />
  9. </div>
  10. <div class="app-container input-form"
  11. id="addConstuctionReport">
  12. <ws-form :model="shipMan"
  13. :show-message="false">
  14. <div class="crewAddTitle clearfix">
  15. <div class="left">
  16. <span class="crewAddTitleMsg">基本信息</span>
  17. </div>
  18. <div class="right">
  19. <ws-button class="editBtn"
  20. @click="back">返 回</ws-button>
  21. <div class="divIcon"
  22. @click="openState(openMsg[0].key)">
  23. <i v-show="openMsg[0].state"
  24. class="iconfont iconopen" />
  25. <i v-show="!openMsg[0].state"
  26. class="iconfont iconclose" />
  27. <!-- <svg-icon class="openCloseIcon" v-show="openMsg[0].state" icon-class="open" />-->
  28. <!-- <svg-icon class="openCloseIcon" v-show="!openMsg[0].state" icon-class="close" />-->
  29. <span class="openClose">{{ openMsg[0].value }}</span>
  30. </div>
  31. </div>
  32. </div>
  33. <transition name="draw">
  34. <div v-show="openMsg[0].state"
  35. class="crewMsg">
  36. <div>
  37. <ws-info-table>
  38. <ws-form-item label="报告类型"
  39. span="1">
  40. <span class="yhellipsis">{{
  41. $ph(shipMan.reportType)
  42. }}</span>
  43. </ws-form-item>
  44. <ws-form-item label="船舶名称">
  45. <span class="yhellipsis">{{
  46. $ph(shipMan.vesselName)
  47. }}</span>
  48. </ws-form-item>
  49. <ws-form-item label="船舶呼号">
  50. <span class="yhellipsis">{{
  51. $ph(shipMan.callSign)
  52. }}</span>
  53. </ws-form-item>
  54. <ws-form-item label="报告日期">
  55. <span class="yhellipsis">{{
  56. $ph(shipMan.reportDate)
  57. }}</span>
  58. </ws-form-item>
  59. <ws-form-item label="时区">
  60. <span class="yhellipsis">{{
  61. $ph(shipMan.timeZone)
  62. }}</span>
  63. </ws-form-item>
  64. <ws-form-item label="船舶状态">
  65. <span class="yhellipsis">{{
  66. $ph(shipMan.shipStatus)
  67. }}</span>
  68. </ws-form-item>
  69. <ws-form-item label="施工地点">
  70. <span class="yhellipsis">{{
  71. $ph(shipMan.constructionSite)
  72. }}</span>
  73. </ws-form-item>
  74. <ws-form-item label="备注">
  75. <span class="yhellipsis">{{
  76. $ph(shipMan.remarks)
  77. }}</span>
  78. </ws-form-item>
  79. </ws-info-table>
  80. </div>
  81. </div>
  82. </transition>
  83. <div class="crewAddTitle clearfix">
  84. <div class="left">
  85. <span class="crewAddTitleMsg">天气及施工信息</span>
  86. </div>
  87. <div class="right"
  88. @click="openState(openMsg[1].key)">
  89. <i v-show="openMsg[1].state"
  90. class="iconfont iconopen" />
  91. <i v-show="!openMsg[1].state"
  92. class="iconfont iconclose" />
  93. <!-- <svg-icon class="openCloseIcon" v-show="openMsg[1].state" icon-class="open" />-->
  94. <!-- <svg-icon class="openCloseIcon" v-show="!openMsg[1].state" icon-class="close" />-->
  95. <span class="openClose">{{ openMsg[1].value }}</span>
  96. </div>
  97. </div>
  98. <transition name="draw">
  99. <div v-show="openMsg[1].state"
  100. class="crewMsg">
  101. <div>
  102. <ws-info-table>
  103. <ws-form-item label="海况">
  104. <span class="yhellipsis">{{
  105. $ph(shipMan.reportDetail.sea)
  106. }}</span>
  107. </ws-form-item>
  108. <ws-form-item label="浪高">
  109. <span class="yhellipsis">{{
  110. $ph(shipMan.reportDetail.swell)
  111. }}</span>
  112. </ws-form-item>
  113. <ws-form-item label="天气及视距">
  114. <span class="yhellipsis">{{
  115. $ph(shipMan.reportDetail.weatherStadia)
  116. }}</span>
  117. </ws-form-item>
  118. <ws-form-item label="风向及风力">
  119. <span class="yhellipsis">{{
  120. $ph(shipMan.reportDetail.windDirection)
  121. }}</span>
  122. </ws-form-item>
  123. <ws-form-item label="施工区段">
  124. <span class="yhellipsis">{{
  125. $ph(shipMan.reportDetail.constructionSection)
  126. }}</span>
  127. </ws-form-item>
  128. <ws-form-item label="工程量">
  129. <span class="yhellipsis">{{
  130. $ph(shipMan.reportDetail.quantityWork)
  131. }}</span>
  132. <div class="rightDiv">m³</div>
  133. </ws-form-item>
  134. <ws-form-item label="船次">
  135. <span class="yhellipsis">{{
  136. $ph(shipMan.reportDetail.shipTimes)
  137. }}</span>
  138. </ws-form-item>
  139. <ws-form-item label="停工时长">
  140. <span class="yhellipsis">{{
  141. $ph(shipMan.reportDetail.downtime)
  142. }}</span>
  143. <div class="rightDiv">h</div>
  144. </ws-form-item>
  145. <ws-form-item label="停工原因">
  146. <span class="yhellipsis">{{
  147. $ph(shipMan.reportDetail.downtimeReasons)
  148. }}</span>
  149. </ws-form-item>
  150. <ws-form-item label="生产时长">
  151. <span class="yhellipsis">{{
  152. $ph(shipMan.reportDetail.runningTime)
  153. }}</span>
  154. <div class="rightDiv">h</div>
  155. </ws-form-item>
  156. <ws-form-item label="主机(左)运转时长">
  157. <span class="yhellipsis">{{
  158. $ph(shipMan.reportDetail.hostLeftRunningTime)
  159. }}</span>
  160. <div class="rightDiv">h</div>
  161. </ws-form-item>
  162. <ws-form-item label="主机(右)运转时长"
  163. class="remark">
  164. <span class="yhellipsis">{{
  165. $ph(shipMan.reportDetail.hostRightRunningTime)
  166. }}</span>
  167. <div class="rightDiv">h</div>
  168. </ws-form-item>
  169. <ws-form-item label="副机运转时长">
  170. <span class="yhellipsis">{{
  171. $ph(shipMan.reportDetail.secondaryMachineRunningTime)
  172. }}</span>
  173. <div class="rightDiv">h</div>
  174. </ws-form-item>
  175. </ws-info-table>
  176. </div>
  177. </div>
  178. </transition>
  179. <div class="crewAddTitle clearfix">
  180. <div class="left">
  181. <span class="crewAddTitleMsg">油水存量、消耗及接收信息</span>
  182. </div>
  183. <div class="right"
  184. @click="openState(openMsg[2].key)">
  185. <i v-show="openMsg[2].state"
  186. class="iconfont iconopen" />
  187. <i v-show="!openMsg[2].state"
  188. class="iconfont iconclose" />
  189. <!-- <svg-icon class="openCloseIcon" v-show="openMsg[2].state" icon-class="open" />-->
  190. <!-- <svg-icon class="openCloseIcon" v-show="!openMsg[2].state" icon-class="close" />-->
  191. <span class="openClose">{{ openMsg[2].value }}</span>
  192. </div>
  193. </div>
  194. <transition name="draw">
  195. <div v-show="openMsg[2].state"
  196. class="crewMsg">
  197. <div>
  198. <ws-info-table>
  199. <ws-form-item label="重油补给">
  200. <span class="yhellipsis">{{
  201. $ph(shipMan.reportDetail.heavyOilSupply)
  202. }}</span>
  203. <div class="rightDiv">MT</div>
  204. </ws-form-item>
  205. <ws-form-item label="轻油补给">
  206. <span class="yhellipsis">{{
  207. $ph(shipMan.reportDetail.lightOilSupply)
  208. }}</span>
  209. <div class="rightDiv">MT</div>
  210. </ws-form-item>
  211. <ws-form-item label="重油消耗">
  212. <span class="yhellipsis">{{
  213. $ph(shipMan.reportDetail.heavyOilDeplete)
  214. }}</span>
  215. <div class="rightDiv">MT</div>
  216. </ws-form-item>
  217. <ws-form-item label="轻油消耗">
  218. <span class="yhellipsis">{{
  219. $ph(shipMan.reportDetail.lightOilDeplete)
  220. }}</span>
  221. <div class="rightDiv">MT</div>
  222. </ws-form-item>
  223. <ws-form-item label="重油存量">
  224. <span class="yhellipsis">{{
  225. $ph(shipMan.reportDetail.heavyOilStock)
  226. }}</span>
  227. <div class="rightDiv">MT</div>
  228. </ws-form-item>
  229. <ws-form-item label="轻油存量">
  230. <span class="yhellipsis">{{
  231. $ph(shipMan.reportDetail.lightOilStock)
  232. }}</span>
  233. <div class="rightDiv">MT</div>
  234. </ws-form-item>
  235. <ws-form-item label="主机系统油补给">
  236. <span class="yhellipsis">{{
  237. $ph(shipMan.reportDetail.mainOilSupply)
  238. }}</span>
  239. <div class="rightDiv">L</div>
  240. </ws-form-item>
  241. <ws-form-item label="副机系统油补给">
  242. <span class="yhellipsis">{{
  243. $ph(shipMan.reportDetail.auxiliaryOilSupply)
  244. }}</span>
  245. <div class="rightDiv">L</div>
  246. </ws-form-item>
  247. <ws-form-item label="主机系统油消耗">
  248. <span class="yhellipsis">{{
  249. $ph(shipMan.reportDetail.mainOilDeplete)
  250. }}</span>
  251. <div class="rightDiv">L</div>
  252. </ws-form-item>
  253. <ws-form-item label="副机系统油消耗">
  254. <span class="yhellipsis">{{
  255. $ph(shipMan.reportDetail.auxiliaryOilDeplete)
  256. }}</span>
  257. <div class="rightDiv">L</div>
  258. </ws-form-item>
  259. <ws-form-item label="主机系统油存量">
  260. <span class="yhellipsis">{{
  261. $ph(shipMan.reportDetail.mainOilStock)
  262. }}</span>
  263. <div class="rightDiv">L</div>
  264. </ws-form-item>
  265. <ws-form-item label="副机系统油存量">
  266. <span class="yhellipsis">{{
  267. $ph(shipMan.reportDetail.auxiliaryOilStock)
  268. }}</span>
  269. <div class="rightDiv">L</div>
  270. </ws-form-item>
  271. <ws-form-item label="主机重油消耗">
  272. <span class="yhellipsis">{{
  273. $ph(shipMan.reportDetail.mainHeavyOilSupply)
  274. }}</span>
  275. <div class="rightDiv">MT</div>
  276. </ws-form-item>
  277. <ws-form-item label="主机轻油消耗">
  278. <span class="yhellipsis">{{
  279. $ph(shipMan.reportDetail.mainLightOilSupply)
  280. }}</span>
  281. <div class="rightDiv">MT</div>
  282. </ws-form-item>
  283. <ws-form-item label="副机轻油消耗">
  284. <span class="yhellipsis">{{
  285. $ph(shipMan.reportDetail.auxiliaryLightOilSupply)
  286. }}</span>
  287. <div class="rightDiv">MT</div>
  288. </ws-form-item>
  289. <ws-form-item label="日用淡水补给">
  290. <span class="yhellipsis">{{
  291. $ph(shipMan.reportDetail.dailyWaterSupply)
  292. }}</span>
  293. <div class="rightDiv">MT</div>
  294. </ws-form-item>
  295. <ws-form-item label="日用淡水消耗">
  296. <span class="yhellipsis">{{
  297. $ph(shipMan.reportDetail.dailyWaterDeplete)
  298. }}</span>
  299. <div class="rightDiv">MT</div>
  300. </ws-form-item>
  301. <ws-form-item label="日用淡水存量">
  302. <span class="yhellipsis">{{
  303. $ph(shipMan.reportDetail.dailyWaterStock)
  304. }}</span>
  305. <div class="rightDiv">MT</div>
  306. </ws-form-item>
  307. </ws-info-table>
  308. </div>
  309. </div>
  310. </transition>
  311. <div class="crewAddTitle clearfix">
  312. <div class="left">
  313. <span class="crewAddTitleMsg">附件</span>
  314. </div>
  315. </div>
  316. <transition name="draw">
  317. <div class="crewMsg">
  318. <div>
  319. <ws-upload ref="upload"
  320. table-name="noonreport_dynamic_report_info"
  321. oss-key="deploy"
  322. class="upButton"
  323. :comp-id="compId"
  324. :appendix-ids="appendixIds" />
  325. </div>
  326. </div>
  327. </transition>
  328. </ws-form>
  329. </div>
  330. </div>
  331. </template>
  332. <script>
  333. import { getReportInfoById, getDynamicHistorys } from '@/model/crew/index'
  334. import WsUpload from '@/components/WsUpload'
  335. import auditFlow from '@/components/WinseaCom/auditFlow.vue'
  336. export default {
  337. components: { WsUpload, auditFlow },
  338. name: 'basicMsg',
  339. data () {
  340. return {
  341. compId: localStorage.getItem('ws-pf_compId'),
  342. seafarerId: localStorage.getItem('ws-pf_platformCrewSeafarerId'),
  343. openMsg: [
  344. {
  345. key: 0,
  346. value: '收起',
  347. state: true
  348. },
  349. {
  350. key: 1,
  351. value: '收起',
  352. state: true
  353. },
  354. {
  355. key: 2,
  356. value: '收起',
  357. state: true
  358. },
  359. {
  360. key: 3,
  361. value: '收起',
  362. state: true
  363. }
  364. ],
  365. shipMan: {
  366. reportType: '',
  367. reportDetail: ''
  368. },
  369. // 新上传
  370. oldAppendixIds: '',
  371. newAppendixs: [],
  372. onChangeFlag: false,
  373. appendixIds: '',
  374. activities: [],
  375. approveStatus: ''
  376. }
  377. },
  378. created () { },
  379. mounted () {
  380. this.initData()
  381. document.getElementById('addConstuctionReport').style.cssText =
  382. 'background-color: white; overflow-y:scroll;height:' +
  383. (document.body.clientHeight - 40) +
  384. 'px'
  385. },
  386. beforeDestroy () {
  387. localStorage.setItem('ws_dynamicReport_id', '')
  388. },
  389. props: [],
  390. methods: {
  391. initData () {
  392. getReportInfoById({
  393. id: localStorage.getItem('ws_dynamicReport_id')
  394. }).toPromise().then(response => {
  395. this.shipMan = response
  396. if (this.shipMan.appendixFileUrls) {
  397. this.appendixIds = this.shipMan.appendixFileUrls // 用于回显
  398. this.oldAppendixIds = this.shipMan.appendixFileUrls // 用于下一次点击保存给saveFiles接口传参
  399. }
  400. // 操作历史
  401. getDynamicHistorys({
  402. id: response.id
  403. }).toPromise().then(response => {
  404. this.activities = response
  405. })
  406. })
  407. },
  408. // 展开状态
  409. openState (key) {
  410. this.openMsg[key].state = !this.openMsg[key].state
  411. if (this.openMsg[key].state) {
  412. this.openMsg[key].value = '收起'
  413. } else {
  414. this.openMsg[key].value = '展开'
  415. }
  416. },
  417. back () {
  418. localStorage.setItem('ws_dynamicReport_id', '')
  419. this.$router.back(-1)
  420. }
  421. },
  422. watch: {
  423. state (val) {
  424. if (val == 'basicMsg') {
  425. this.getShipMsg()
  426. }
  427. }
  428. }
  429. }
  430. </script>
  431. <style lang="scss" scoped>
  432. .yhellipsis {
  433. width: 95%;
  434. }
  435. .frame {
  436. padding: 0px 15px 15px 15px;
  437. background-color: white;
  438. }
  439. .frameTitle {
  440. background-color: #fff;
  441. }
  442. .frameCenter {
  443. background-color: #fff;
  444. padding: 0px 15px 45px 15px;
  445. height: calc(100vh - 90px);
  446. overflow-y: auto;
  447. }
  448. .crewAddButton {
  449. height: 50px;
  450. line-height: 50px;
  451. padding-right: 10px;
  452. }
  453. .crewAddTitle {
  454. font-size: 16px;
  455. color: #333;
  456. font-weight: bold;
  457. height: 60px;
  458. line-height: 60px;
  459. }
  460. .left {
  461. float: left;
  462. }
  463. .right {
  464. font-size: 14px;
  465. font-weight: 500;
  466. cursor: pointer;
  467. float: right;
  468. }
  469. .crewAddTitleMsg::before {
  470. content: '▍';
  471. color: #1d6ced;
  472. }
  473. .uphead {
  474. margin-bottom: 10px;
  475. display: inline-block;
  476. position: relative;
  477. height: 60px;
  478. line-height: 60px;
  479. }
  480. .img {
  481. position: absolute;
  482. display: inline-block;
  483. height: 60px;
  484. width: 60px;
  485. border-radius: 50%;
  486. }
  487. .kyc-passin0 {
  488. font-size: 14px;
  489. margin-left: 70px;
  490. color: #666666;
  491. position: absolute;
  492. top: 14px;
  493. width: 80px;
  494. height: 30px;
  495. line-height: 30px;
  496. text-align: center;
  497. border: 1px solid #cccccc;
  498. border-radius: 5px;
  499. }
  500. .kyc-passin {
  501. width: 85px;
  502. opacity: 0;
  503. margin-left: 70px;
  504. }
  505. .talk {
  506. font-size: 12px;
  507. color: #999999;
  508. }
  509. .draw-enter-active,
  510. .draw-leave-active {
  511. transition: all 0.4s;
  512. }
  513. .draw-enter,
  514. .draw-leave-active {
  515. transform: translateY(-45px);
  516. opacity: 0;
  517. }
  518. .add {
  519. margin-right: 15px;
  520. }
  521. .add,
  522. .openClose {
  523. display: inline-block;
  524. }
  525. /deep/ .edit-input .el-input__inner {
  526. width: 95%;
  527. }
  528. .certificateEdit .el-input--medium {
  529. border-left: none;
  530. }
  531. .el-dialog__body {
  532. padding: 10px;
  533. }
  534. .Yhsearch {
  535. margin-bottom: 10px;
  536. }
  537. .divIcon {
  538. display: inline-block;
  539. }
  540. .editBtn {
  541. margin-right: 10px;
  542. }
  543. /deep/ .labelDiv label {
  544. display: block;
  545. }
  546. .rightDiv {
  547. width: 5%;
  548. float: right;
  549. }
  550. .remark {
  551. border-bottom: 1px solid #cccccc;
  552. }
  553. .upButton {
  554. background: #ffffff;
  555. margin-top: -20px !important;
  556. /deep/.el-button--primary {
  557. display: none !important;
  558. }
  559. /deep/.tip {
  560. display: none !important;
  561. }
  562. /deep/.el-upload-list__item .el-icon-close {
  563. display: none !important;
  564. }
  565. /deep/.el-upload-list__item-delete:nth-last-of-type(1) {
  566. display: none !important;
  567. }
  568. }
  569. </style>