阅行客电子档案
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.

240 lines
7.1 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years 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 }}</li>
  6. <li><span>流程结果</span><p :class="['row-state', !isHistroy?'ing-state':(selectRow.endTime?'end-state':'cancel-state')]">{{ !isHistroy ? '进行中' : ( selectRow.endTime ? '已完成' : '已取消') }}</p></li>
  7. <li><span>所属全宗</span>全宗A</li>
  8. <li v-if="selectRow.endTime"><span>结束时间</span>{{ selectRow.endTime | parseTime }}</li>
  9. <li v-else><span>结束时间</span>-</li>
  10. </ul>
  11. <!-- 归档 / 退档 -->
  12. <!-- <ul class="detail-type-info">
  13. <li><span>原始位置</span>整编库</li>
  14. <li><span>目标位置</span>管理库</li>
  15. </ul> -->
  16. <!-- 赋权审批 -->
  17. <!-- <ul class="detail-type-info">
  18. <li><span>利用目的</span>资料查阅</li>
  19. <li><span>赋权开始</span>2022-10-01 10:23:56</li>
  20. <li><span>赋权结束</span>2022-10-07 10:23:56</li>
  21. </ul> -->
  22. <!-- 内部移交 -->
  23. <!-- <ul class="detail-type-info">
  24. <li><span>目标全宗</span>全宗B</li>
  25. </ul> -->
  26. <!-- 开发鉴定 / 销毁鉴定 -->
  27. <!-- <ul class="detail-type-info">
  28. <li><span>申请缘由</span>开放学习</li>
  29. </ul> -->
  30. <!-- <div class="detail-arrow" @click="isExpend = !isExpend"><i :class="[ isExpend ? 'arrow-up':'']" /></div>
  31. <el-collapse-transition>
  32. <div v-show="isExpend" class="service-detail">
  33. <h4>业务详情</h4>
  34. <ul class="detail-list">
  35. <li><span>业务类型</span>归档审批</li>
  36. <li><span>原始位置</span>全宗A-整理库-门类A</li>
  37. <li><span>目标位置</span>全宗A-整理库-门类A</li>
  38. <li><span>赋权类型</span>-</li>
  39. <li><span>起始时间</span>-</li>
  40. <li><span>终止时间</span>-</li>
  41. <li><span>利用目的</span>-</li>
  42. <li><span>业务状态</span>已完成</li>
  43. <li><span>审批状态</span>通过</li>
  44. </ul>
  45. </div>
  46. </el-collapse-transition> -->
  47. <div class="detail-tab tab-content">
  48. <ul class="tab-nav">
  49. <li :class="{'active-tab-nav': activeIndex == 0 }" @click="changeActiveTab(0)">档案列表</li>
  50. <li :class="{'active-tab-nav': activeIndex == 1 }" @click="changeActiveTab(1)">任务列表</li>
  51. <li :class="{'active-tab-nav': activeIndex == 2 }" @click="changeActiveTab(2)">流程图</li>
  52. </ul>
  53. <div v-if="activeIndex == 0" class="double-click-btn"><i class="iconfont icon-zhuyi-lan" /><span>双击列表数据查看详情</span></div>
  54. <component :is="comName" class="component-cont" :src-img="srcImg" :task-table-list="taskTableList" />
  55. </div>
  56. <div slot="footer" class="dialog-footer">
  57. <el-button type="primary" @click="detailVisible=false">确定</el-button>
  58. </div>
  59. </div>
  60. </el-dialog>
  61. </template>
  62. <script>
  63. import { FetchGenProcessDiagram, FetchTaskByProcinstId } from '@/api/system/flowable'
  64. import processImg from './processImg/index'
  65. import businessDetails from './businessDetails/index'
  66. import taskList from './taskList/index'
  67. // import approvalList from './approvalList/index'
  68. export default {
  69. name: 'Detail',
  70. components: {
  71. processImg,
  72. businessDetails,
  73. taskList
  74. // approvalList
  75. },
  76. props: {
  77. isHistroy: {
  78. type: Boolean,
  79. default: false
  80. }
  81. },
  82. data() {
  83. return {
  84. detailVisible: false,
  85. isExpend: false,
  86. activeIndex: 0,
  87. selectRow: {},
  88. srcImg: '',
  89. taskTableList: []
  90. }
  91. },
  92. computed: {
  93. comName: function() {
  94. if (this.activeIndex === 0) {
  95. return 'businessDetails'
  96. } else if (this.activeIndex === 1) {
  97. return 'taskList'
  98. } else if (this.activeIndex === 2) {
  99. return 'processImg'
  100. }
  101. return 'businessDetails'
  102. }
  103. },
  104. methods: {
  105. changeActiveTab(data) {
  106. this.activeIndex = data
  107. if (this.activeIndex === 1) {
  108. this.getTaskByProcinstId()
  109. } else if (this.activeIndex === 2) {
  110. this.getProcessImg()
  111. }
  112. },
  113. getProcessImg() {
  114. this.srcImg = ''
  115. FetchGenProcessDiagram({ 'processId': this.selectRow.procinstId }).then((res) => {
  116. this.srcImg = res
  117. }).catch(err => {
  118. console.log(err)
  119. })
  120. },
  121. getTaskByProcinstId() {
  122. this.taskTableList = []
  123. FetchTaskByProcinstId({ 'procinstId': this.selectRow.procinstId }).then((res) => {
  124. this.taskTableList = res
  125. }).catch(err => {
  126. console.log(err)
  127. })
  128. }
  129. }
  130. }
  131. </script>
  132. <style lang='scss' scoped>
  133. .detail-tab{
  134. position: relative;
  135. }
  136. .detail-dialog{
  137. .detail-info,
  138. .detail-list,
  139. .detail-type-info{
  140. display: flex;
  141. justify-content: space-between;
  142. flex-wrap: wrap;
  143. padding-top: 10px;
  144. font-size: 14px;
  145. line-height: 30px;
  146. color: #545B65;
  147. li{
  148. display: flex;
  149. justify-content: flex-start;
  150. width: 50%;
  151. span{
  152. display: inline-block;
  153. width: 75px;
  154. text-align: right;
  155. color: #0C0E1E;
  156. }
  157. p.row-state{
  158. display: block;
  159. font-size: 14px;
  160. height: 26px;
  161. line-height: 26px;
  162. margin-top: 2px;
  163. }
  164. }
  165. }
  166. .detail-type-info{
  167. padding-top: 0;
  168. }
  169. .detail-arrow{
  170. position: relative;
  171. width: 64px;
  172. height: 16px;
  173. margin: 10px auto;
  174. background-color:#E8F2FF;
  175. border-radius: 3px;
  176. cursor: pointer;
  177. i{
  178. position: absolute;
  179. left: 50%;
  180. top: 50%;
  181. display: block;
  182. width: 9px;
  183. height: 5px;
  184. margin-top: -2px;
  185. margin-left: -4px;
  186. background: url('~@/assets/images/icon/arrow.png') no-repeat center center;
  187. transition: all ease-in 0.5s;
  188. &.arrow-up {
  189. transform: rotate(180deg);
  190. }
  191. }
  192. }
  193. .service-detail{
  194. padding: 8px 12px;
  195. background-color: #F6F8FC;
  196. font-size: 14px;
  197. h4{
  198. position: relative;
  199. padding-left: 10px;
  200. color: #0C0E1E;
  201. &::before {
  202. content: "";
  203. position: absolute;
  204. left: 0;
  205. top: 50%;
  206. width: 3px;
  207. height: 14px;
  208. background-color: #0348F3;
  209. transform: translateY(-50%);
  210. }
  211. }
  212. .detail-list{
  213. p{
  214. width: 33%;
  215. }
  216. }
  217. }
  218. .double-click-btn{
  219. position: absolute;
  220. right: 0;
  221. top: 0;
  222. display: flex;
  223. justify-content: flex-start;
  224. align-items: center;
  225. line-height: 26px;
  226. span{
  227. display: inline-block;
  228. font-size: 12px;
  229. color: #545B65;
  230. }
  231. i{
  232. display: inline-block;
  233. color: #0348F3;
  234. }
  235. }
  236. }
  237. </style>