detail.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. <template>
  2. <view class="danger-detail-warp">
  3. <view class="table-wrap">
  4. <view class="nav">
  5. <text>隐患等级:{{danger.dangerLevel|dangerLevelFilter}}</text>
  6. <button class="bt warn" @click="handle" v-if="type==='review'">{{danger.taskInsTitle}}</button>
  7. <button class="bt primary" @click="handle" v-if="type==='accept'">{{danger.taskInsTitle}}</button>
  8. <button class="bt success" @click="handle" v-if="type==='recity'">{{danger.taskInsTitle}}</button>
  9. </view>
  10. <view class="table-contain">
  11. <view class="detail-item">
  12. <view class="head">
  13. <text>基本信息</text>
  14. </view>
  15. <view class="table-cont" >
  16. <!-- 基本信息 -->
  17.   <view class="baseInfo">
  18. <text>标题:{{danger.dangerTitle}}</text>
  19. </view>
  20.   <view class="baseInfo">
  21. <text>隐患类别:{{danger.dangerCatTitle|isNull}}</text>
  22. </view>
  23.   <view class="baseInfo">
  24. <text>隐患来源:{{danger.dangerSource|dangerSourceFilter}}</text>
  25. </view>
  26.   <view class="baseInfo">
  27. <text>整改期限:{{danger.dangerDeadLine}}</text>
  28. </view>
  29. <uni-collapse accordion>
  30. <uni-collapse-item title="查看更多">
  31.   <view class="baseInfo">
  32. <text>类别:{{danger.dangerCatTitle|isNull}}</text>
  33. </view>
  34.   <view class="baseInfo">
  35. <text>编码:{{danger.dangerCode|isNull}}</text>
  36. </view>
  37.   <view class="baseInfo">
  38. <text>所在部门:{{danger.groupName|isNull}}</text>
  39. </view>
  40.   <view class="baseInfo">
  41. <text>提交人:{{danger.submitAccountName}}</text>
  42. </view>
  43.   <view class="baseInfo">
  44. <text>提交时间:{{danger.submitTime}}</text>
  45. </view>
  46.   <view class="baseInfo">
  47. <text>评审人:{{danger.reviewAccountName}}</text>
  48. </view>
  49.   <view class="baseInfo">
  50. <text>评审时间:{{danger.reviewTime}}</text>
  51. </view>
  52.   <view class="baseInfo">
  53. <text>整改:{{danger.reviewAccountName}}</text>
  54. </view>
  55.   <view class="baseInfo">
  56. <text>整改时间:{{danger.reviewTime}}</text>
  57. </view>  
  58.   <view class="baseInfo">
  59. <text>原因分析:{{ danger.dangerReason }}</text>
  60. </view>
  61.   <view class="baseInfo">
  62. <text>整改方式:{{ danger.rectifyCat | rectifyFilter }}</text>
  63. </view>
  64.   <view class="baseInfo">
  65. <text>整改措施:{{ danger.rectifyMeasure }} </text>
  66. </view>
  67.   <view class="baseInfo">
  68. <text>整改说明:{{ danger.rectifyRemark }} </text>
  69. </view>
  70.   <view class="baseInfo desc">
  71. <text>描述:</text>
  72. <view class="desc-txt">{{danger.dangerDesc}}</view>
  73. </view>
  74. </uni-collapse-item>
  75. </uni-collapse>  
  76. </view>
  77. </view>
  78. <view class="detail-item">
  79. <view class="head">
  80. <text>历史记录</text>
  81. </view>
  82. <view class="table-cont" >
  83. <view class="record-cont">
  84. <view class="timeline-item" v-for="(taskIns, index ) in flowData.taskInsRecordList" :key="index">
  85. <view class="time row">{{ taskIns.endTime }}</view>
  86. <view class="title row">{{ taskIns.taskInsTitle }}</view>
  87. <view class="desc row">{{ taskIns.accountName }} {{ taskIns.positionName }}-{{ taskIns.groupName }}</view>
  88. <view v-for="(attach, index2) in taskIns.attachList" :key="index2" class="block" @click="previewPic(attach.fileUrl)">
  89. <image class="attachImg" :src="attach.fileUrl" mode="widthFix"></image>
  90. </view>
  91. </view>
  92. </view>
  93. </view>
  94. </view>
  95. </view>
  96. </view>
  97. </view>
  98. </template>
  99. <script>
  100. import {
  101. getDangerDetailsById
  102. } from '@/api/danger';
  103. import {
  104. dangerLevel, dangerSource, dangerStatus, rectifyCat
  105. } from '@/libs/enum';
  106. export default {
  107. filters: {
  108. dangerSourceFilter(ival) {
  109. return dangerSource(ival)
  110. },
  111. dangerLevelFilter(ival) {
  112. return dangerLevel(ival)
  113. },
  114. dangerStatusFilter(ival) {
  115. return dangerStatus(ival)
  116. },
  117. rectifyFilter(ival) {
  118. return rectifyCat(ival)
  119. },
  120. isNull(value){
  121. if(value!=='undefined'&&value!==undefined&&value!==null&&value!==""&&value!==" "){
  122. return value;
  123. }else{
  124. return '--';
  125. }
  126. }
  127. },
  128. data() {
  129. return {
  130. dangerId:undefined,
  131. type:undefined,
  132. riskPointId:undefined,
  133. danger:{
  134. groupId: undefined,
  135. groupName: '',
  136. dangerId: undefined,
  137. dangerSource: undefined,
  138. dangerCode: '',
  139. dangerTitle: '',
  140. dangerDesc: '',
  141. dangerLevel: "",
  142. dangerCatId: undefined,
  143. dangerCatTitle: '',
  144. riskPointId: undefined,
  145. riskPointTitle: '',
  146. submitGroupId: undefined,
  147. submitGroupName: '',
  148. submitPositionId: undefined,
  149. submitPositionName: '',
  150. submitAccountId: undefined,
  151. submitAccountName: '',
  152. submitTime: '',
  153. dangerDeadLine: '',
  154. reviewGroupId: undefined,
  155. reviewGroupName: '',
  156. reviewPositionId: undefined,
  157. reviewPositionName: '',
  158. reviewAccountId: undefined,
  159. reviewAccountName: '',
  160. reviewTime: '',
  161. rectifyGroupId: undefined,
  162. rectifyGroupName: '',
  163. rectifyPositionId: undefined,
  164. rectifyPositionName: '',
  165. rectifyAccountId: undefined,
  166. rectifyAccountName: '',
  167. dangerReason: '',
  168. rectifyCat: 1,
  169. rectifyMeasure: '',
  170. rectifyRemark: '',
  171. rectifyTime: '',
  172. acceptGroupId: undefined,
  173. acceptGroupName: '',
  174. acceptPositionId: undefined,
  175. acceptPositionName: '',
  176. acceptAccountId: undefined,
  177. acceptAccountName: '',
  178. acceptTime: '',
  179. wfDefId: 1,
  180. wfInsId: undefined,
  181. wfInsTitle: '',
  182. wfInsStatus: undefined,
  183. taskDefId: undefined,
  184. taskInsId: undefined,
  185. taskInsTitle: '',
  186. taskInsGroupId: undefined,
  187. taskInsGroupName: '',
  188. taskInsPositionId: undefined,
  189. taskInsPositionName: '',
  190. taskInsAccountId: undefined,
  191. taskInsAccountName: '',
  192. taskInsStatus: undefined,
  193. attachList: [],
  194. taskCode: '',
  195. formCode: '',
  196. fileUrl: ''
  197. },
  198. flowData: {
  199. wfDefId: 1,
  200. wfInsId: undefined,
  201. wfInsTitle: '',
  202. status: undefined,
  203. taskIns: undefined,
  204. taskInsRecordList: []
  205. }
  206. }
  207. },
  208. //监听上个页面传回来参数
  209. onLoad(options) {
  210. //调用页面请求数据接口
  211. if(!options)return;
  212. this.dangerId=options.id;
  213. this.type=options.type;
  214. this.getDetail(options.id);
  215. this.riskPointId = options.id
  216. },
  217. methods: {
  218. getDetail(id){
  219. getDangerDetailsById(id).then((res) => {
  220. this.danger=res.data.danger;
  221. this.flowData = res.data.flow
  222. })
  223. },
  224. handle(){
  225. let type=this.type;
  226. let dangerId=this.dangerId;
  227. if (type == "review") {
  228. //评审
  229. console.log("评审", {dangerId,type})
  230. uni.navigateTo({
  231. url: '/views/danger/review?dangerId=' + dangerId,
  232. });
  233. } else if (type == "recity") {
  234. //整改
  235. console.log("整改",{dangerId,type})
  236. uni.navigateTo({
  237. url: '/views/danger/recity?dangerId=' + dangerId,
  238. });
  239. } else if (type == "accept") {
  240. //验收
  241. console.log("验收",{dangerId,type})
  242. uni.navigateTo({
  243. url: '/views/danger/accept?dangerId=' + dangerId,
  244. });
  245. }
  246. },
  247. previewPic(targetSrc) {
  248. uni.previewImage({
  249. urls:[targetSrc]
  250. })
  251. }
  252. }
  253. }
  254. </script>
  255. <style lang="scss" scoped>
  256. .danger-detail-warp{
  257. padding-bottom:100upx;
  258. background-color: #fff;
  259. min-height:100vh;
  260. .nav{
  261. padding: 14upx;
  262. text-align: right;
  263. display: flex;
  264. justify-content: space-between;
  265. align-items: center;
  266. .bt{
  267. width: 200upx;
  268. line-height: 2;
  269. margin: 0;
  270. &.warn{
  271. color: #fff;
  272. background-color: #e6a23c;
  273. border-color: #e6a23c;
  274. }
  275. &.primary {
  276. background-color:#00A0FF ;
  277. border-color: #00A0FF;
  278. color: #fff;
  279. }
  280. &.success{
  281. color: #fff;
  282. background-color: #67c23a;
  283. border-color: #67c23a;
  284. }
  285. &.danger{
  286. color: #fff;
  287. background-color: #f56c6c;
  288. border-color: #f56c6c;
  289. }
  290. }
  291. }
  292. .table-wrap{
  293. .table-contain{
  294. .detail-item{
  295. .head{
  296. width: 300upx;
  297. height: 58upx;
  298. line-height: 58upx;
  299. color: #FFFFFF;
  300. background: #00A0FF;
  301. border-radius:0 16upx 16upx 0;
  302. padding: 0 20upx;
  303. }
  304. .table-cont {
  305. padding: 0 26upx;
  306. .baseInfo {
  307. height: 78upx;
  308. line-height: 78upx;
  309. border-bottom: 2upx solid #EDE1D9;
  310. &.desc{
  311. height: auto;
  312. line-height: 1.5;
  313. min-height: 78upx;
  314. border-bottom: none;
  315. padding-top: 16upx;
  316. display: flex;
  317. justify-content: flex-start;
  318. .desc-txt{
  319. width: 600upx;
  320. word-break: break-word;
  321. }
  322. }
  323. }
  324. }
  325. .record-cont{
  326. padding: 20upx;
  327. .timeline-item{
  328. width: 50%;
  329. position: relative;
  330. padding-right: 10upx;
  331. box-sizing: border-box;
  332. .attachImg{
  333. display: block;
  334. width: 300upx;
  335. background-color: #ccc;
  336. }
  337. &::after{
  338. width: 16upx;
  339. height: 16upx;
  340. border-radius: 50%;
  341. display: block;
  342. content: "";
  343. background-color:#c0c4cc;
  344. position: absolute;
  345. top: 0;
  346. right:0;
  347. transform: translateX(50%);
  348. }
  349. &::before{
  350. width: 1px;
  351. height: 100%;
  352. display: block;
  353. content: "";
  354. background-color: #c0c4cc;
  355. position: absolute;
  356. top: 0;
  357. right:0;
  358. transform: translateX(50%);
  359. }
  360. .row{
  361. padding: 12upx 0;
  362. }
  363. &:nth-child(2n){
  364. margin-left: 50%;
  365. padding-left: 10upx;
  366. .attachImg{
  367. width: 350upx;
  368. }
  369. &::after{
  370. right: unset;
  371. left: 0;
  372. transform: translateX(-50%);
  373. }
  374. &::before{
  375. right: unset;
  376. left: 0;
  377. transform: translateX(-50%);
  378. }
  379. }
  380. }
  381. }
  382. }
  383. }
  384. }
  385. }
  386. </style>