index.vue 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <template>
  2. <view class="document-v" :style="{'padding-bottom': show ? '88rpx' : '0','overflow':showAddSelect?'hidden':''}">
  3. <view class="u-flex top-btn" :class="slide2" v-show="show">
  4. <view class="button-left" @click.stop="bottomfun('cancel')">
  5. <p class="u-m-t-10 u-font-28">取消</p>
  6. </view>
  7. <view class="button-center" @click.stop="bottomfun('select')">
  8. <p class="u-m-t-10 u-font-28">已选中{{this.selectFiles.length}}文件</p>
  9. </view>
  10. <view class="button-right u-m-t-12" @click.stop="bottomfun('checkAll')">
  11. <p class="icon-ym icon-ym-app-checkAll " :style="{'color':this.checkedAll ? '#0293fc' : '#303133'}">
  12. </p>
  13. </view>
  14. </view>
  15. <DocHead @search="search" @change="change" @iconClick="iconClick">
  16. </DocHead>
  17. <mescroll-body ref="mescrollRef" @down="downCallback" :down="downOption" :sticky="false" @up="upCallback"
  18. :up="upOption" :bottombar="false" @init="mescrollInit" top="220">
  19. <DocList :modelValue="changeStyle" :documentList="documentList" @goDetail="goDetail"
  20. @checkboxChange="checkboxChange"></DocList>
  21. </mescroll-body>
  22. <view class="com-addBtn" @click="addFolder()" v-if="!selectFiles.length && current == 0">
  23. <u-icon name="plus" size="48" color="#fff" />
  24. </view>
  25. <view class="u-flex bottom-btn" :class="slide" v-show="show">
  26. <template v-if="current == 0">
  27. <view class="button-preIcon" @click.stop="bottomfun('down')">
  28. <p class="icon-ym icon-ym-app-download u-m-b-8"></p>
  29. <p class="u-m-t-10 u-font-24">下载</p>
  30. </view>
  31. <view class="button-preIcon" @click.stop="bottomfun('share')">
  32. <p class="icon-ym icon-ym-app-share u-m-b-8"></p>
  33. <p class="u-m-t-10 u-font-24">共享</p>
  34. </view>
  35. <view class="button-preIcon" @click.stop="bottomfun('delete')">
  36. <p class="icon-ym icon-ym-app-delete u-m-b-8"></p>
  37. <p class="u-m-t-10 u-font-24">删除</p>
  38. </view>
  39. <view class="button-preIcon" @click.stop="bottomfun('move')">
  40. <p class="icon-ym icon-ym-app-move u-m-b-8"></p>
  41. <p class="u-m-t-10 u-font-24">移动到</p>
  42. </view>
  43. <view class="button-preIcon" @click.stop="bottomfun('restName')" v-if="this.selectFiles.length === 1">
  44. <p class="icon-ym icon-ym-app-rename u-m-b-8"></p>
  45. <p class="u-m-t-10 u-font-24">重命名</p>
  46. </view>
  47. </template>
  48. <template v-if="current == 2">
  49. <view class="button-preIcon" @click.stop="bottomfun('down')">
  50. <p class="icon-ym icon-ym-app-download u-m-b-8"></p>
  51. <p class="u-m-t-10 u-font-24">下载</p>
  52. </view>
  53. </template>
  54. <template v-if="current == 1">
  55. <view class="button-preIcon" @click.stop="bottomfun('shareCancel')">
  56. <p class="icon-ym icon-ym-app-share u-m-b-8"></p>
  57. <p class="u-m-t-10 u-font-24">取消共享</p>
  58. </view>
  59. <view class="button-preIcon" @click.stop="bottomfun('share')" v-if="this.selectFiles.length === 1">
  60. <p class="icon-ym icon-ym-app-share u-m-b-8"></p>
  61. <p class="u-m-t-10 u-font-24">共享</p>
  62. </view>
  63. </template>
  64. <template v-if="current == 3">
  65. <view class="button-preIcon" @click.stop="bottomfun('revert')">
  66. <p class="icon-ym icon-ym-recovery u-m-b-8"></p>
  67. <p class="u-m-t-10 u-font-24">还原</p>
  68. </view>
  69. <view class="button-preIcon" @click.stop="bottomfun('delete')">
  70. <p class="icon-ym icon-ym-app-delete u-m-b-8"></p>
  71. <p class="u-m-t-10 u-font-24">删除</p>
  72. </view>
  73. </template>
  74. </view>
  75. <!-- 重命名弹窗 -->
  76. <uni-popup ref="inputDialog" type="dialog" class="diyPopup">
  77. <uni-popup-dialog ref="inputClose" mode="input" :title="modalTitle" placeholder="请输入内容" before-close
  78. @confirm="restName" @close="closeDialog" class="popup-dialog">
  79. <u-input v-model="modalValue" placeholder="请输入" :auto-height="false" maxlength="99999" height="150"
  80. :clearable="true" :border="true" />
  81. </uni-popup-dialog>
  82. </uni-popup>
  83. <treeCollapse :show="showApply" v-if="showApply" :treeData="folderTreeList" @change="handelClick" mode="right"
  84. @close="close" width="100%" type="doc">
  85. <view class="u-flex u-p-l-32 u-p-r-32" style="justify-content: space-between;height: 88rpx;">
  86. <text style="color: #2979ff;" @click="close()">取消</text>
  87. <text>移动到</text>
  88. <text style="color: #2979ff;" v-if="selectFiles.length" @click="folderMove">移动到此</text>
  89. </view>
  90. </treeCollapse>
  91. <JnpfUserSelect ref="JnpfUsersSelect" multiple @change="shareSubmit" :isInput="false"
  92. v-model="usersSelectValue" />
  93. <AddFilePopup :show="showAddSelect" @confirm="addSelect" @close="showAddSelect = false" title="新建"
  94. :confirmBtn="false" @onCallback="onCallback" :parentId="parentId"></AddFilePopup>
  95. </view>
  96. </template>
  97. <script>
  98. import treeCollapse from '@/components/treeCollapse'
  99. import DocHead from './components/DocHead.vue'
  100. import DocList from './components/DocList.vue'
  101. import AddFilePopup from './components/AddFilePopup.vue'
  102. import mixin from "./mixin.js"
  103. export default {
  104. mixins: [mixin],
  105. components: {
  106. DocHead,
  107. DocList,
  108. AddFilePopup,
  109. treeCollapse
  110. },
  111. data() {
  112. return {
  113. documentList: []
  114. }
  115. },
  116. onLoad(e) {
  117. this.selectFiles = []
  118. this.parentId = e.parentId ? e.parentId : 0
  119. this.current = e.current ? Number(e.current) : 0
  120. },
  121. watch: {
  122. // 在select弹起的时候,重新初始化所有数据
  123. selectFiles: {
  124. handler(val) {
  125. if (!val.length) {
  126. setTimeout(() => {
  127. this.show = false
  128. }, 500)
  129. }
  130. if (val.length === this.documentList.length) {
  131. this.checkedAll = true
  132. } else {
  133. this.checkedAll = false
  134. }
  135. },
  136. immediate: true
  137. }
  138. },
  139. methods: {
  140. search(e) {
  141. this.keyword = e
  142. this.documentList = [];
  143. this.mescroll.resetUpScroll();
  144. }
  145. }
  146. }
  147. </script>
  148. <style lang="scss">
  149. page {
  150. background-color: #f0f2f6;
  151. }
  152. .document-v {
  153. padding-bottom: 88rpx;
  154. height: calc(100vh - 288rpx);
  155. ::v-deep .mescroll-empty {
  156. padding-top: 400rpx;
  157. }
  158. ::v-deep .u-model__title {
  159. padding: 20rpx 0;
  160. }
  161. ::v-deep .u-model__footer__button {
  162. border-right: 1rpx solid #e4e7ed;
  163. height: 76rpx;
  164. line-height: 76rpx;
  165. font-size: 28rpx;
  166. }
  167. .top-btn {
  168. height: 80rpx;
  169. position: fixed;
  170. width: 100%;
  171. top: 0;
  172. left: 0;
  173. background-color: #fff;
  174. /* #ifdef MP-WEIXIN */
  175. z-index: 99;
  176. /* #endif */
  177. /* #ifndef MP-WEIXIN */
  178. z-index: 999;
  179. /* #endif */
  180. justify-content: space-between;
  181. padding: 0 20rpx;
  182. .button-left {
  183. color: #0293fc;
  184. }
  185. .button-right {
  186. width: 30rpx;
  187. height: 30rpx;
  188. }
  189. }
  190. .slide-down2 {
  191. animation: slide-down2 0.5s forwards;
  192. opacity: 1;
  193. transform: translateY(0);
  194. }
  195. .slide-up2 {
  196. animation: slide-up2 0.5s forwards;
  197. opacity: 0;
  198. transform: translateY(-100%);
  199. }
  200. .slide-down {
  201. animation: slide-down 0.5s forwards;
  202. opacity: 1;
  203. transform: translateY(0);
  204. }
  205. .slide-up {
  206. animation: slide-up 0.5s forwards;
  207. opacity: 0;
  208. transform: translateY(100%);
  209. }
  210. .bottom-btn {
  211. height: 100rpx;
  212. position: fixed;
  213. width: 100%;
  214. bottom: 0;
  215. left: 0;
  216. background-color: #0293fc;
  217. z-index: 9;
  218. justify-content: space-around;
  219. .button-preIcon {
  220. color: #fff;
  221. text-align: center;
  222. width: 20%;
  223. }
  224. }
  225. .diyPopup {
  226. .popup-dialog {
  227. .uni-dialog-title {
  228. justify-content: center
  229. }
  230. .uni-dialog-content {
  231. height: 160rpx;
  232. .u-input {
  233. height: 80rpx;
  234. }
  235. }
  236. }
  237. }
  238. @keyframes slide-up {
  239. to {
  240. transform: translateY(0);
  241. opacity: 1;
  242. }
  243. }
  244. @keyframes slide-down {
  245. to {
  246. transform: translateY(100%);
  247. opacity: 0;
  248. }
  249. }
  250. @keyframes slide-up2 {
  251. to {
  252. transform: translateY(0);
  253. opacity: 1;
  254. }
  255. }
  256. @keyframes slide-down2 {
  257. to {
  258. transform: translateY(-100%);
  259. opacity: 0;
  260. }
  261. }
  262. .com-addBtn {
  263. bottom: 320rpx;
  264. right: 66rpx;
  265. }
  266. }
  267. </style>