Files
jnpf_app/pages/workFlow/document/components/DocList.vue
2026-01-04 11:09:06 +08:00

183 lines
3.7 KiB
Vue

<template>
<view class="" v-if="list.length">
<view class="doc-list" v-if="modelValue">
<checkbox-group @change="checkboxChange" @click.stop>
<label class="item-label" v-for="(item,index) in list" :key="index">
<view class="u-flex item-label-left u-line-1" @click.stop="goDetail(item)">
<view class="doc-icon">
<u-image :src="getRecordImg(item.fileExtension)" width="74" height="74" />
</view>
<view class="text">
<p class="u-m-l-10 u-m-b-8 u-font-28 name u-line-1">{{item.fullName}}</p>
<p class="u-m-l-10 u-m-t-8 u-font-24 time">
{{item.time ? jnpf.toDate(item.time, 'yyyy-MM-dd HH:mm:ss') :''}}
</p>
</view>
</view>
<checkbox :value="item.id" :checked="item.checked" activeBackgroundColor="#0177FF" iconColor="#fff"
style="transform:scale(0.7)" />
</label>
</checkbox-group>
</view>
<view class="u-flex u-p-l-20 u-p-r-20 doc-list2 u-p-t-20" v-else>
<checkbox-group @change="checkboxChange" @click.stop class="checkbox-group">
<label class="group-label" v-for="(item,index) in list" :key="index">
<view class="u-flex-col doc-list-inner" @click.stop="goDetail(item)">
<view class="doc-icon u-flex">
<u-image :src="getRecordImg(item.fileExtension)" width="84" height="84" />
</view>
<view class="u-flex doc-name" @click.stop>
<view class="u-line-1 name">{{item.fullName}}</view>
<checkbox :value="item.id" :checked="item.checked" activeBackgroundColor="#0177FF"
iconColor="#fff" style="transform:scale(0.7)" />
</view>
</view>
</label>
</checkbox-group>
</view>
</view>
</template>
<script>
import mixin from "../mixin.js"
export default {
name: 'DocList',
mixins: [mixin],
props: {
modelValue: {
type: Boolean,
default: true
},
documentList: {
type: Array,
default: () => []
}
},
data() {
return {
list: []
}
},
watch: {
documentList: {
handler(val) {
this.list = val
},
immediate: true,
deep: true
}
},
methods: {
goDetail(item) {
this.$emit('goDetail', item)
},
checkboxChange(e) {
this.$emit('checkboxChange', e.detail.value)
}
}
}
</script>
<style lang="scss">
.doc-list {
background-color: #FFFFFF;
position: relative;
width: 100%;
display: flex;
flex-direction: column;
padding: 0 20rpx;
.item-label {
position: relative;
display: flex;
flex-direction: row;
align-items: center;
border-bottom: 1rpx solid #f0f2f6;
height: 126rpx;
.item-label-left {
flex: 1;
.doc-icon {
width: 74rpx;
height: 74rpx;
img {
width: 100%;
height: 100%;
}
}
.text {
width: 80%;
.name {
color: #303133;
}
.time {
color: #909399;
}
}
}
.uni-checkbox-wrapper {
.uni-checkbox-input {
margin: 0 !important;
}
}
}
}
.doc-list2 {
background-color: #fff;
.doc-list-inner {
width: 100%;
background-color: #f2f3f7;
padding: 12rpx 12rpx 0 12rpx;
margin-bottom: 20rpx;
border-radius: 8rpx;
.doc-icon {
width: 100%;
background-color: #FFFFFF;
border-radius: 8rpx;
height: 160rpx;
justify-content: center;
}
.doc-name {
width: 100%;
height: 73rpx;
.name {
text-align: left;
flex: 1;
}
::v-deep .uni-checkbox-wrapper {
.uni-checkbox-input {
margin: 0;
}
}
}
}
}
.checkbox-group {
display: flex;
flex-wrap: wrap;
width: 100%;
justify-content: space-between;
.group-label {
width: 48%;
}
::v-deep .uni-label-pointer {
width: 48%;
display: flex;
text-align: center;
}
}
</style>