|
@@ -0,0 +1,390 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <view class="mainBox">
|
|
|
|
|
+ <uni-nav-bar fixed="true" statusBar="true" left-icon="back" title="选择" @clickLeft="back">
|
|
|
|
|
+ <!--右菜单-->
|
|
|
|
|
+ <template slot="right">
|
|
|
|
|
+ <u-button type="success" size="small" class="u-reset-button" @click="$refs.treePicker._show()"
|
|
|
|
|
+ text="文件夹"></u-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </uni-nav-bar>
|
|
|
|
|
+
|
|
|
|
|
+ <view class="wrapper">
|
|
|
|
|
+ <u-list class="listContent">
|
|
|
|
|
+ <checkbox-group v-for="(item, index) in listData" :key="index" @change="e => selectVal(e, item, index)">
|
|
|
|
|
+ <label>
|
|
|
|
|
+ <view class="listBox">
|
|
|
|
|
+ <view class="listBox-sel">
|
|
|
|
|
+ <checkbox :value="item.code" color="#fff" :disabled="item.disabled"
|
|
|
|
|
+ :checked="item.checked" />
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="listBox-con">
|
|
|
|
|
+ <view class="listBox-top">
|
|
|
|
|
+ <view class="listBox-name">
|
|
|
|
|
+ {{ item.name }}
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="listBox-code">
|
|
|
|
|
+ {{ item.code }}
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="listBox-bottom">
|
|
|
|
|
+ <view>文件名称:{{ item.storagePath[0].name }}</view>
|
|
|
|
|
+ <view>版本:{{ item.version }}</view>
|
|
|
|
|
+ <view>创建人:{{ item.createUserName }}</view>
|
|
|
|
|
+ <view>创建时间:{{ item.createTime }}</view>
|
|
|
|
|
+
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </label>
|
|
|
|
|
+ </checkbox-group>
|
|
|
|
|
+ <u-empty class="noDate" style="margin-top: 20vh" v-if="!listData.length"></u-empty>
|
|
|
|
|
+ </u-list>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <view class="footer">
|
|
|
|
|
+ <view class="bottom" v-if="this.isAll==1">
|
|
|
|
|
+ <checkbox v-if="!seletedAll" color="#fff" :checked="seletedAll" @tap="_seletedAll">全选</checkbox>
|
|
|
|
|
+ <checkbox class="select-all" color="#fff" v-else :checked="seletedAll" @tap="_seletedAll">取消全选
|
|
|
|
|
+ </checkbox>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <u-button type="success" size="small" class="u-reset-button" :disabled="!checkListLen" @click="jumpAdd">
|
|
|
|
|
+ <view class="selBtn">选择( {{ checkListLen }} )</view>
|
|
|
|
|
+ </u-button>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <ba-tree-picker ref="treePicker" key="verify" :multiple="false" @select-change="confirm" title="选择文件夹"
|
|
|
|
|
+ :localdata="classificationList" valueKey="id" textKey="name" childrenKey='sonDirectoryList' />
|
|
|
|
|
+ </view>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script>
|
|
|
|
|
+ import {
|
|
|
|
|
+ getDocTreeListAPI,
|
|
|
|
|
+ filePageAPI
|
|
|
|
|
+ } from './api';
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ import baTreePicker from '@/components/ba-tree-picker/ba-tree-picker.vue'
|
|
|
|
|
+ export default {
|
|
|
|
|
+ components: {
|
|
|
|
|
+ baTreePicker
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ data() {
|
|
|
|
|
+ return {
|
|
|
|
|
+
|
|
|
|
|
+ pickTabIndex: 1,
|
|
|
|
|
+ popupShow: false, //右侧搜索窗
|
|
|
|
|
+ typeIndex: 1,
|
|
|
|
|
+ listData: [], //列表数据
|
|
|
|
|
+ classificationList: [], //分类数据
|
|
|
|
|
+ seletedAll: false, //全选状态,
|
|
|
|
|
+ isAll: '',
|
|
|
|
|
+ fileId:[]
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ //选择的列表长度
|
|
|
|
|
+ computed: {
|
|
|
|
|
+
|
|
|
|
|
+ checkListLen() {
|
|
|
|
|
+
|
|
|
|
|
+ return this.listData.filter(el => el.checked).length
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+ onLoad({
|
|
|
|
|
+ isAll,fileId
|
|
|
|
|
+ }) {
|
|
|
|
|
+ this.isAll = isAll //1多选 2单选
|
|
|
|
|
+ this.fileId=JSON.parse(fileId)
|
|
|
|
|
+ this.userInfo = uni.getStorageSync('userInfo')
|
|
|
|
|
+ this.getClassify()
|
|
|
|
|
+ },
|
|
|
|
|
+ onShow() {},
|
|
|
|
|
+ methods: {
|
|
|
|
|
+
|
|
|
|
|
+ //列表数据
|
|
|
|
|
+ async getList() {
|
|
|
|
|
+ this._getClassifyList()
|
|
|
|
|
+ },
|
|
|
|
|
+ async _getClassifyList() {
|
|
|
|
|
+ uni.showLoading({
|
|
|
|
|
+ title: '数据加载中'
|
|
|
|
|
+ })
|
|
|
|
|
+ const params = {
|
|
|
|
|
+ directoryId: this.categoryLevelId,
|
|
|
|
|
+ fileType: 0,
|
|
|
|
|
+ lcyStatus: "1"
|
|
|
|
|
+ }
|
|
|
|
|
+ filePageAPI(params).then(res => {
|
|
|
|
|
+ uni.hideLoading()
|
|
|
|
|
+
|
|
|
|
|
+ this.listData = res.list.map(item=>{
|
|
|
|
|
+ if(this.fileId.includes(item.id)){
|
|
|
|
|
+ item['disabled']=true
|
|
|
|
|
+ }
|
|
|
|
|
+ return item
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ confirm([id]) {
|
|
|
|
|
+ this.categoryLevelId = id
|
|
|
|
|
+
|
|
|
|
|
+ this.getList()
|
|
|
|
|
+ },
|
|
|
|
|
+ async getClassify() {
|
|
|
|
|
+ getDocTreeListAPI({
|
|
|
|
|
+ type: 0,
|
|
|
|
|
+ currentUserId: this.userInfo.userId
|
|
|
|
|
+ }).then(res => {
|
|
|
|
|
+ this.classificationList = res
|
|
|
|
|
+ this.categoryLevelId=res[0].id
|
|
|
|
|
+ console.log(this.classificationList, 'this.classificationList')
|
|
|
|
|
+
|
|
|
|
|
+ this.getList()
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ //勾选
|
|
|
|
|
+ selectVal(e, val, index) {
|
|
|
|
|
+
|
|
|
|
|
+ this.$set(this.listData[index], 'checked', !this.listData[index].checked)
|
|
|
|
|
+
|
|
|
|
|
+ if (this.isAll != 1) {
|
|
|
|
|
+ this.listData.forEach((item, i) => {
|
|
|
|
|
+ if (item.id != val.id) {
|
|
|
|
|
+ this.$set(this.listData[i], 'checked', false)
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ } else {
|
|
|
|
|
+
|
|
|
|
|
+ this.seletedAll = !this.listData.some(item => !item.checked)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+ //全选按钮
|
|
|
|
|
+ _seletedAll() {
|
|
|
|
|
+ if (!this.seletedAll) {
|
|
|
|
|
+ this.seletedAll = true
|
|
|
|
|
+ this.listData.map(item => {
|
|
|
|
|
+ this.$set(item, 'checked', true)
|
|
|
|
|
+ })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.seletedAll = false
|
|
|
|
|
+ this.listData.map(item => {
|
|
|
|
|
+ this.$set(item, 'checked', false)
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ //跳转回添加页面
|
|
|
|
|
+ jumpAdd() {
|
|
|
|
|
+ uni.$emit(
|
|
|
|
|
+ 'setDocList',
|
|
|
|
|
+ this.listData.filter(item => item.checked).map(item=>item.id)
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ uni.navigateBack()
|
|
|
|
|
+ },
|
|
|
|
|
+ //返回添加页
|
|
|
|
|
+ backAdd() {
|
|
|
|
|
+ uni.navigateBack()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
|
+ .mainBox {
|
|
|
|
|
+ height: 100vh;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+
|
|
|
|
|
+ .wrapper {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .searchBox {
|
|
|
|
|
+ padding: 10rpx 0;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ background-color: #dedede;
|
|
|
|
|
+ height: 90rpx;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ line-height: 90rpx;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-around;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+
|
|
|
|
|
+ input {
|
|
|
|
|
+ height: 78rpx;
|
|
|
|
|
+ width: 65%;
|
|
|
|
|
+ background: #f9f9f9 !important;
|
|
|
|
|
+ margin: 0 10rpx;
|
|
|
|
|
+ padding: 0 10rpx;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ border-radius: 5rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .searchBtn {
|
|
|
|
|
+ height: 80rpx;
|
|
|
|
|
+ background: #f9f9f9 !important;
|
|
|
|
|
+ color: #676767;
|
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
|
+ padding: 0 42rpx;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ outline: none;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ width: 260rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .icon-sousuo {
|
|
|
|
|
+ font-size: 22px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .text {
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ margin-left: 10px;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .tab-title {
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ top: 190rpx;
|
|
|
|
|
+ z-index: 99;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ height: $tab-height;
|
|
|
|
|
+ line-height: $tab-height;
|
|
|
|
|
+ background-color: #ffffff;
|
|
|
|
|
+ border-bottom: 2rpx solid #f2f2f2;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+
|
|
|
|
|
+ .tab-item {
|
|
|
|
|
+ width: 25%;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
|
+ color: $uni-text-color-grey;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .tab-item.active {
|
|
|
|
|
+ color: $j-primary-border-green;
|
|
|
|
|
+ border-bottom: 1px solid $j-primary-border-green;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .tab-item.filter {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ padding: 0px 30rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .uni-icons {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ padding-top: 5px;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .screenIcon {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ width: 80px;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+
|
|
|
|
|
+ .screenText {
|
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
|
+ color: $uni-text-color-grey;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .listContent {
|
|
|
|
|
+ height: 100% !important;
|
|
|
|
|
+
|
|
|
|
|
+ .listBox {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ // height: 180rpx;
|
|
|
|
|
+ padding: 20rpx 0;
|
|
|
|
|
+ border-bottom: 2rpx solid #e5e5e5;
|
|
|
|
|
+
|
|
|
|
|
+ .listBox-sel {
|
|
|
|
|
+ height: 90rpx;
|
|
|
|
|
+ width: 80rpx;
|
|
|
|
|
+ // line-height: 90rpx;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+
|
|
|
|
|
+ checkbox {
|
|
|
|
|
+ transform: scale(1.2);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .listBox-con {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ // display: flex;
|
|
|
|
|
+ // flex-wrap: wrap;
|
|
|
|
|
+ // justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ padding: 0 18rpx 0 0;
|
|
|
|
|
+
|
|
|
|
|
+ .listBox-top {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ padding-bottom: 10rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .listBox-name,
|
|
|
|
|
+ .listBox-code {
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+ font-size: $uni-font-size-sm;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .listBox-bottom {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ font-size: $uni-font-size-sm;
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+
|
|
|
|
|
+ >view {
|
|
|
|
|
+ width: 50%;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .noDate {
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //底部按钮
|
|
|
|
|
+ .footer {
|
|
|
|
|
+ height: 90rpx;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ bottom: 0;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100rpx;
|
|
|
|
|
+ border-top: 1rpx solid #eeecec;
|
|
|
|
|
+ background-color: #ffffff;
|
|
|
|
|
+ z-index: 999;
|
|
|
|
|
+
|
|
|
|
|
+ .bottom {
|
|
|
|
|
+ margin-left: 10rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .u-reset-button {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ right: 10rpx;
|
|
|
|
|
+ top: 20rpx;
|
|
|
|
|
+ width: 150rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+</style>
|