阅行客电子档案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

288 lines
9.3 KiB

2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <el-dialog class="detail-dialog" :visible.sync="detailVisible" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body title="流程详情">
  3. <div class="setting-dialog">
  4. <ul class="detail-info">
  5. <li><span>流程名称</span>{{ selectRow.flowableName || selectRow.title }}</li>
  6. <li v-if="!isCenterProcess"><span>流程结果</span><p :class="['row-state', !isHistroy?'ing-state':(selectRow.endTime?'end-state':'cancel-state')]">{{ !isHistroy ? '进行中' : ( selectRow.endTime ? '已完成' : '已取消') }}</p></li>
  7. <li v-if="isCenterProcess">
  8. <span>流程结果</span>
  9. <p v-if="selectRow.status === 1" class="row-state ing-state">运行中</p>
  10. <p v-if="selectRow.status === 2" class="row-state case-cancel">已取消</p>
  11. <p v-if="selectRow.status === 3" class="row-state end-state">已完成</p>
  12. <p v-if="selectRow.status === 4" class="row-state cancel-state">不通过</p>
  13. </li>
  14. <!-- 等门类树更改之后再显示 -->
  15. <!-- <li><span>所属全宗</span>全宗A</li> -->
  16. <li v-if="selectRow.endTime || selectRow.complete_time"><span>结束时间</span>{{ (selectRow.endTime || selectRow.complete_time) | parseTime }}</li>
  17. <li v-else><span>结束时间</span>-</li>
  18. </ul>
  19. <!-- 1.归档 index=1 2.退回 index=2 3.开放 index=6 4.销毁index=7 5.利用index=3 6.内部移交index=4 7.外部移交index=5 -->
  20. <!-- 归档 / 退档 -->
  21. <!-- <ul class="detail-type-info">
  22. <li><span>原始位置</span>整编库</li>
  23. <li><span>目标位置</span>管理库</li>
  24. </ul> -->
  25. <!-- 赋权审批 -->
  26. <!-- <ul class="detail-type-info">
  27. <li><span>利用目的</span>资料查阅</li>
  28. <li><span>赋权开始</span>2022-10-01 10:23:56</li>
  29. <li><span>赋权结束</span>2022-10-07 10:23:56</li>
  30. </ul> -->
  31. <!-- 内部移交 -->
  32. <!-- <ul class="detail-type-info">
  33. <li><span>目标全宗</span>全宗B</li>
  34. </ul> -->
  35. <!-- 开发鉴定 / 销毁鉴定 -->
  36. <!-- <ul class="detail-type-info">
  37. <li><span>申请缘由</span>开放学习</li>
  38. </ul> -->
  39. <!-- <div class="detail-arrow" @click="isExpend = !isExpend"><i :class="[ isExpend ? 'arrow-up':'']" /></div>
  40. <el-collapse-transition>
  41. <div v-show="isExpend" class="service-detail">
  42. <h4>业务详情</h4>
  43. <ul class="detail-list">
  44. <li><span>业务类型</span>归档审批</li>
  45. <li><span>原始位置</span>全宗A-整理库-门类A</li>
  46. <li><span>目标位置</span>全宗A-整理库-门类A</li>
  47. <li><span>赋权类型</span>-</li>
  48. <li><span>起始时间</span>-</li>
  49. <li><span>终止时间</span>-</li>
  50. <li><span>利用目的</span>-</li>
  51. <li><span>业务状态</span>已完成</li>
  52. <li><span>审批状态</span>通过</li>
  53. </ul>
  54. </div>
  55. </el-collapse-transition> -->
  56. <div class="detail-tab tab-content">
  57. <ul class="tab-nav">
  58. <li :class="{'active-tab-nav': activeIndex == 0 }" @click="changeActiveTab(0)">档案列表</li>
  59. <li :class="{'active-tab-nav': activeIndex == 1 }" @click="changeActiveTab(1)">任务列表</li>
  60. <li :class="{'active-tab-nav': activeIndex == 2 }" @click="changeActiveTab(2)">流程图</li>
  61. </ul>
  62. <div v-if="activeIndex == 0" class="double-click-btn"><i class="iconfont icon-zhuyi-lan" /><span>双击列表数据查看详情</span></div>
  63. <component :is="comName" class="component-cont" :table-data="tableData" :src-img="srcImg" :task-table-list="taskTableList" :is-utilize="isUtilize" :set-page="setPage" @page-change="pageChangeHandler" @size-change="sizeChangeHandler" />
  64. </div>
  65. <div slot="footer" class="dialog-footer">
  66. <el-button type="primary" @click="detailVisible=false">确定</el-button>
  67. </div>
  68. </div>
  69. </el-dialog>
  70. </template>
  71. <script>
  72. import { FetchGenProcessDiagram, FetchTaskByProcinstId } from '@/api/system/flowable'
  73. import { FetchBusinessFlowDetails } from '@/api/archivesManage/library'
  74. import processImg from './processImg/index'
  75. import businessDetails from './businessDetails/index'
  76. import taskList from './taskList/index'
  77. // import approvalList from './approvalList/index'
  78. export default {
  79. name: 'Detail',
  80. components: {
  81. processImg,
  82. businessDetails,
  83. taskList
  84. // approvalList
  85. },
  86. props: {
  87. isHistroy: {
  88. type: Boolean,
  89. default: false
  90. },
  91. isCenterProcess: {
  92. type: Boolean,
  93. default: false
  94. }
  95. },
  96. data() {
  97. return {
  98. detailVisible: false,
  99. isExpend: false,
  100. activeIndex: 0,
  101. selectRow: {},
  102. srcImg: '',
  103. taskTableList: [],
  104. tableData: [],
  105. isUtilize: false,
  106. setPage: {
  107. total: 0,
  108. size: 10,
  109. page: 0
  110. }
  111. }
  112. },
  113. computed: {
  114. comName: function() {
  115. if (this.activeIndex === 0) {
  116. return 'businessDetails'
  117. } else if (this.activeIndex === 1) {
  118. return 'taskList'
  119. } else if (this.activeIndex === 2) {
  120. return 'processImg'
  121. }
  122. return 'businessDetails'
  123. }
  124. },
  125. mounted() {
  126. },
  127. methods: {
  128. changeActiveTab(data) {
  129. this.activeIndex = data
  130. if (this.activeIndex === 0) {
  131. this.setPage.page = 0
  132. this.getBusinessFlowDetails()
  133. } else if (this.activeIndex === 1) {
  134. this.getTaskByProcinstId()
  135. } else if (this.activeIndex === 2) {
  136. this.getProcessImg()
  137. }
  138. },
  139. getBusinessFlowDetails() {
  140. const params = {
  141. 'businessId': (this.selectRow && this.selectRow.businessId) ? this.selectRow.businessId : this.selectRow.id,
  142. 'page': this.setPage.page,
  143. 'size': this.setPage.size
  144. }
  145. FetchBusinessFlowDetails(params).then((res) => {
  146. if (res.code !== 500) {
  147. console.log(res)
  148. this.baseInfo = res.businessFlow
  149. if (res.businessFlow.businessType === 5) {
  150. this.isUtilize = true
  151. res.details.content.forEach(item => {
  152. item.utilizeType = item.utilizeType.split(',').map(Number)
  153. })
  154. } else {
  155. this.isUtilize = false
  156. res.details.content.forEach(item => {
  157. item.utilizeType = []
  158. })
  159. }
  160. this.tableData = res.details.content
  161. this.setPage.total = res.details.totalElements
  162. } else {
  163. this.$message({ message: '获取数据失败', type: 'error', offset: 8 })
  164. }
  165. }).catch(err => {
  166. console.log(err)
  167. })
  168. },
  169. getProcessImg() {
  170. this.srcImg = ''
  171. FetchGenProcessDiagram({ 'processId': this.selectRow.procInstId }).then((res) => {
  172. this.srcImg = res
  173. }).catch(err => {
  174. console.log(err)
  175. })
  176. },
  177. getTaskByProcinstId() {
  178. this.taskTableList = []
  179. FetchTaskByProcinstId({ 'procinstId': this.selectRow.procInstId }).then((res) => {
  180. this.taskTableList = res
  181. }).catch(err => {
  182. console.log(err)
  183. })
  184. },
  185. // 当前页改变
  186. pageChangeHandler(e) {
  187. this.setPage.page = e
  188. this.getBusinessFlowDetails()
  189. },
  190. // 每页条数改变
  191. sizeChangeHandler(e) {
  192. this.setPage.size = e
  193. this.setPage.page = 0
  194. this.getBusinessFlowDetails()
  195. }
  196. }
  197. }
  198. </script>
  199. <style lang='scss' scoped>
  200. .detail-dialog{
  201. .detail-info,
  202. .detail-list,
  203. .detail-type-info{
  204. display: flex;
  205. justify-content: space-between;
  206. flex-wrap: wrap;
  207. padding-top: 10px;
  208. font-size: 14px;
  209. line-height: 30px;
  210. color: #545B65;
  211. li{
  212. display: flex;
  213. justify-content: flex-start;
  214. width: 50%;
  215. span{
  216. display: inline-block;
  217. width: 75px;
  218. text-align: right;
  219. color: #0C0E1E;
  220. }
  221. p.row-state{
  222. display: block;
  223. font-size: 14px;
  224. height: 26px;
  225. line-height: 26px;
  226. margin-top: 2px;
  227. }
  228. }
  229. }
  230. .detail-type-info{
  231. padding-top: 0;
  232. }
  233. .detail-arrow{
  234. position: relative;
  235. width: 64px;
  236. height: 16px;
  237. margin: 10px auto;
  238. background-color:#E8F2FF;
  239. border-radius: 3px;
  240. cursor: pointer;
  241. i{
  242. position: absolute;
  243. left: 50%;
  244. top: 50%;
  245. display: block;
  246. width: 9px;
  247. height: 5px;
  248. margin-top: -2px;
  249. margin-left: -4px;
  250. background: url('~@/assets/images/icon/arrow.png') no-repeat center center;
  251. transition: all ease-in 0.5s;
  252. &.arrow-up {
  253. transform: rotate(180deg);
  254. }
  255. }
  256. }
  257. .service-detail{
  258. padding: 8px 12px;
  259. background-color: #F6F8FC;
  260. font-size: 14px;
  261. h4{
  262. position: relative;
  263. padding-left: 10px;
  264. color: #0C0E1E;
  265. &::before {
  266. content: "";
  267. position: absolute;
  268. left: 0;
  269. top: 50%;
  270. width: 3px;
  271. height: 14px;
  272. background-color: #0348F3;
  273. transform: translateY(-50%);
  274. }
  275. }
  276. .detail-list{
  277. p{
  278. width: 33%;
  279. }
  280. }
  281. }
  282. }
  283. </style>