index.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <script setup>
  2. import {
  3. ref
  4. } from "vue";
  5. import {
  6. onLoad,
  7. } from "@dcloudio/uni-app";
  8. import {
  9. getImportantDetail,
  10. } from "@/api/work/important.js";
  11. let detail = ref({});
  12. const getDeatil = function(id) {
  13. getImportantDetail({
  14. id
  15. }).then(res => {
  16. detail.value = res.data;
  17. conbineFileList(res.data.files)
  18. })
  19. }
  20. // 组合附件数据
  21. function conbineFileList(list) {
  22. // 添加上传成功标识
  23. const statusList = list.map(item => {
  24. let orginal = {
  25. ...item
  26. }
  27. return Object.assign(
  28. orginal, {
  29. status: 'success'
  30. })
  31. })
  32. // 照片附件
  33. let listPhoto = statusList.filter(item => ['101', '102', '103', '104', '105'].includes(item.fileType))
  34. uploadListPhoto.value = listPhoto
  35. // 视频附件
  36. let listVideo = statusList.filter(item => ['202', '203'].includes(item.fileType));
  37. uploadListVideo.value = listVideo;
  38. // 其他附件
  39. let exceptPhotoList = statusList.filter(item => !listPhoto.includes(item));
  40. uploadListFile.value = exceptPhotoList.filter(item => !listVideo.includes(item));
  41. console.log(uploadListFile.value);
  42. // 上传数据
  43. const dataList = list.map(item => {
  44. let orginal = {
  45. ...item
  46. }
  47. return {
  48. id: orginal.id,
  49. fileName: orginal.fileName,
  50. fileType: orginal.fileType,
  51. fileAddre: orginal.fileAddre
  52. }
  53. })
  54. // 备份初始数据
  55. listFileOrginal = dataList
  56. }
  57. // ====================附件上传
  58. let listFileOrginal = [] //原始数据--备份比较用
  59. let uploadListPhoto = ref([]) //上传列表--图片
  60. let uploadListVideo = ref([]) //上传列表--视频
  61. let uploadListFile = ref([]) //上传列表--文件
  62. // 播放文件--视频
  63. function videoClick(event) {
  64. showFile(event.fileType, event.url)
  65. }
  66. // 文件预览
  67. function showFile(type, filePath) {
  68. uni.navigateTo({
  69. url: `/pages/projectInfo/media/index?type=${type}&filePath=${filePath}`
  70. })
  71. }
  72. onLoad(options => {
  73. getDeatil(options.id)
  74. })
  75. </script>
  76. <template>
  77. <view class="container">
  78. <page-title>详情</page-title>
  79. <view class="cards-list">
  80. <view class="card only-card">
  81. <view class="card-item first-card-item">
  82. <view class="card-item-name">主持人</view>
  83. <view class="card-item-content">{{detail.host || "--"}}</view>
  84. </view>
  85. <view class="card-item">
  86. <view class="card-item-name">会议地点</view>
  87. <view class="card-item-content">{{detail.host || "--"}}</view>
  88. </view>
  89. <view class="card-item">
  90. <view class="card-item-name">会议类型</view>
  91. <view class="card-item-content">{{detail.kindName || "--"}}</view>
  92. </view>
  93. <view class="card-item">
  94. <view class="card-item-name">日期</view>
  95. <view class="card-item-content">{{detail.meetingDate || "--"}}</view>
  96. </view>
  97. <view class="card-item">
  98. <view class="card-item-name">参会人员</view>
  99. </view>
  100. <view class="item-textarea">{{detail.joinPerson}}</view>
  101. </view>
  102. <view class="card only-card">
  103. <view class="card-item first-card-item">
  104. <view class="card-item-name">会议主题</view>
  105. <view class="card-item-content">{{detail.meetingTitle || "--"}}</view>
  106. </view>
  107. <view class="card-item">
  108. <view class="card-item-name">会议内容</view>
  109. </view>
  110. <view class="item-textarea">{{detail.content}}</view>
  111. <view class="card-item">
  112. <view class="card-item-name">解决问题</view>
  113. </view>
  114. <view class="item-textarea">{{detail.solveProblem}}</view>
  115. </view>
  116. <view class="card only-card">
  117. <view class="card-item first-card-item">
  118. <view class="card-item-name">工作计划</view>
  119. </view>
  120. <view style="height: 20rpx; width: 100%;"></view>
  121. <uni-table stripe emptyText="暂无更多数据">
  122. <!-- 表头行 -->
  123. <uni-tr>
  124. <uni-th align="center">负责人</uni-th>
  125. <uni-th align="center">完成内容</uni-th>
  126. <uni-th align="center">完成日期</uni-th>
  127. </uni-tr>
  128. <!-- 表格数据行 -->
  129. <uni-tr v-for="(item,index) in detail.plans" :key="index">
  130. <uni-td align="center">{{item.mainPerson}}</uni-td>
  131. <uni-td align="center">{{item.planContent}}</uni-td>
  132. <uni-td align="center">{{item.endDate}}</uni-td>
  133. </uni-tr>
  134. </uni-table>
  135. </view>
  136. <view class="card only-card">
  137. <view class="card-item first-card-item">
  138. <view class="card-item-name">附件信息</view>
  139. </view>
  140. <view style="height: 20rpx; width: 100%;"></view>
  141. <!-- 附件(照片) -->
  142. <view class="card-item flex-align-start">
  143. <view class="card-item-name" style="min-width: 156rpx;">图片附件</view>
  144. <u-upload :fileList="uploadListPhoto" uploadIcon="plus"></u-upload>
  145. </view>
  146. <!-- 附件(视频) -->
  147. <view class="card-item flex-align-start">
  148. <view class="card-item-name" style="min-width: 156rpx;">视频附件</view>
  149. <u-upload :fileList="uploadListVideo" @onVideoClick="videoClick" name="file" uploadIcon="plus"
  150. accept="video"></u-upload>
  151. </view>
  152. <!-- 附件(文件) -->
  153. <view class="card-item flex-align-start">
  154. <view class="card-item-name" style="min-width: 156rpx;">其他附件</view>
  155. <view class="upload-file-area">
  156. <view class="upload-file-name" v-for="(item,index) in uploadListFile" :key="index"
  157. @click="showFile('pdf',item.url)">
  158. {{item.fileId}}
  159. </view>
  160. </view>
  161. </view>
  162. </view>
  163. <view style="height: 50rpx; width: 100%;"></view>
  164. </view>
  165. </view>
  166. </template>
  167. <style lang="scss" scoped>
  168. .item-textarea {
  169. width: 100%;
  170. min-height: 168rpx;
  171. padding: 20rpx;
  172. margin-top: 24rpx;
  173. box-sizing: border-box;
  174. border-radius: 20rpx;
  175. border: 2rpx solid #D0D9E7;
  176. }
  177. ::v-deep .uni-table {
  178. // 改表头字体样式
  179. .uni-table-th,
  180. .uni-table-th-content {
  181. background-color: #DCE8FD;
  182. color: #343437;
  183. font-size: 26rpx;
  184. font-weight: normal;
  185. }
  186. .uni-table-tr:nth-of-type(2n + 1) {
  187. background-color: #F5F9FF !important;
  188. }
  189. .uni-table-tr {
  190. background-color: #fff !important;
  191. }
  192. }
  193. </style>