|
@@ -1,6 +1,7 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <div class="flex-card" v-if="cardInfo.value == 1" :style="cardBoxStyle">
|
|
|
+ <!-- 普通卡片布局 -->
|
|
|
+ <div v-if="cardInfo.value == 1" class="flex-card" :style="cardBoxStyle">
|
|
|
<div v-for="(dataInfo, dataIndex) in cardList" :key="dataIndex" class="box-card">
|
|
|
<el-card :style="cardStyle">
|
|
|
<div slot="header" :style="cardInfo.title.class != '' && cardInfo.title.class ? JSON.parse(cardInfo.title.class) : {}" class="clearfix">
|
|
@@ -82,26 +83,34 @@
|
|
|
<el-checkbox v-model="dataInfo.checked" @change="checkChange"></el-checkbox>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div v-else>
|
|
|
+ <el-button size="mini" type="text">操作1 </el-button>
|
|
|
+ <el-button size="mini" type="text">操作2 </el-button>
|
|
|
+ <el-button size="mini" type="text">操作3 </el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="flex-card" v-else :style="cardBoxStyle">
|
|
|
- <div v-for="(data, dataIndex) in cardList" :key="dataIndex" class="box-card">
|
|
|
- <el-card>
|
|
|
- <el-image class="img" :style="{ height: cardInfo.imgHeight + 'px' }" :src="imgVal(data)" alt="" />
|
|
|
- <div class="title" :style="titleStyle">
|
|
|
- <span v-if="cardInfo.title.text != ''">
|
|
|
- {{ cardInfo.title.text + ':' }}
|
|
|
- </span>
|
|
|
- <el-tooltip v-if="cardInfo.title.model != ''" effect="dark" placement="right-start">
|
|
|
- <div slot="content">
|
|
|
- {{ getModelName(cardInfo.title.model, data, 'title') }}
|
|
|
- </div>
|
|
|
- <span>
|
|
|
- {{ getModelName(cardInfo.title.model, data, 'title') }}
|
|
|
+ <!-- 图文卡片布局(上下) -->
|
|
|
+ <div v-else-if="cardInfo.value == 2" class="flex-card" :style="cardBoxStyle">
|
|
|
+ <div v-for="(dataInfo, dataIndex) in cardList" :key="dataIndex" class="box-card">
|
|
|
+ <el-card :style="cardStyle">
|
|
|
+ <el-image class="img" :style="{ height: cardInfo.imgHeight + 'px' }" :src="imgVal(dataInfo)" alt="" />
|
|
|
+ <div :style="cardInfo.title.class != '' && cardInfo.title.class ? JSON.parse(cardInfo.title.class) : {}">
|
|
|
+ <div :style="titleStyle">
|
|
|
+ <span v-if="cardInfo.title.text != ''">
|
|
|
+ {{ cardInfo.title.text + ':' }}
|
|
|
</span>
|
|
|
- </el-tooltip>
|
|
|
+ <el-tooltip v-if="cardInfo.title.model != ''" effect="dark" placement="right-start">
|
|
|
+ <div slot="content">
|
|
|
+ {{ getModelName(cardInfo.title, dataInfo, 'title') }}
|
|
|
+ </div>
|
|
|
+ <span>
|
|
|
+ {{ getModelName(cardInfo.title, dataInfo, 'title') }}
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div v-if="cardInfo.info.data.length > 0" :style="cardInfo.info.class != '' && cardInfo.info.class ? JSON.parse(cardInfo.info.class) : {}">
|
|
|
<el-row :gutter="10">
|
|
@@ -111,10 +120,10 @@
|
|
|
<div class="right">
|
|
|
<el-tooltip v-if="item.model != ''" effect="dark" placement="right-start">
|
|
|
<div slot="content">
|
|
|
- {{ getModelName(item.model, data, 'info') }}
|
|
|
+ {{ getModelName(item, dataInfo, 'info') }}
|
|
|
</div>
|
|
|
<span>
|
|
|
- {{ getModelName(item.model, data, 'info') }}
|
|
|
+ {{ getModelName(item, dataInfo, 'info') }}
|
|
|
</span>
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
@@ -122,32 +131,118 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<div class="footer" v-if="btnList.length > 0">
|
|
|
- <template v-for="(item, i) in btnList">
|
|
|
- <template v-if="item.value == 'edit'">
|
|
|
- <el-button size="mini" type="text" :key="i" :disabled="config.webType == 3 && [1, 2, 5].indexOf(data.flowState) > -1" @click="columnBtnsHandel(item.value, data)"
|
|
|
- >{{ item.label }}
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- <template v-if="item.value == 'remove'">
|
|
|
- <el-button
|
|
|
- size="mini"
|
|
|
- type="text"
|
|
|
- :key="i"
|
|
|
- class="JNPF-table-delBtn"
|
|
|
- :disabled="config.webType == 3 && [1, 2, 3, 5].indexOf(data.flowState) > -1"
|
|
|
- @click="columnBtnsHandel(item.value, data, item)"
|
|
|
- >{{ item.label }}
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- <template v-if="item.value == 'detail'">
|
|
|
- <el-button size="mini" type="text" :key="i" @click="columnBtnsHandel(item.value, data)">
|
|
|
- {{ item.label }}
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- <template v-if="item.value == 'rowJournal'">
|
|
|
- <el-button size="mini" type="text" :key="i" @click="columnBtnsHandel(item.value, data)">{{ item.label }}</el-button>
|
|
|
+ <div class="btns">
|
|
|
+ <template v-for="(item, i) in btnList">
|
|
|
+ <template v-if="item.value == 'edit'">
|
|
|
+ <el-button size="mini" type="text" :key="i" :disabled="config.webType == 3 && [1, 2, 5].indexOf(data.flowState) > -1" @click="columnBtnsHandel(item.value, dataInfo)"
|
|
|
+ >{{ item.label }}
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template v-if="item.value == 'remove'">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ :key="i"
|
|
|
+ class="JNPF-table-delBtn"
|
|
|
+ :disabled="config.webType == 3 && [1, 2, 3, 5].indexOf(dataInfo.flowState) > -1"
|
|
|
+ @click="columnBtnsHandel(item.value, dataInfo, item)"
|
|
|
+ >{{ item.label }}
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template v-if="item.value == 'detail'">
|
|
|
+ <el-button size="mini" type="text" :key="i" @click="columnBtnsHandel(item.value, dataInfo)">
|
|
|
+ {{ item.label }}
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template v-if="item.value == 'rowJournal'">
|
|
|
+ <el-button size="mini" type="text" :key="i" @click="columnBtnsHandel(item.value, dataInfo)">{{ item.label }}</el-button>
|
|
|
+ </template>
|
|
|
</template>
|
|
|
- </template>
|
|
|
+ </div>
|
|
|
+ <div class="check">
|
|
|
+ <el-checkbox v-model="dataInfo.checked" @change="checkChange"></el-checkbox>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ <el-button size="mini" type="text">操作1 </el-button>
|
|
|
+ <el-button size="mini" type="text">操作2 </el-button>
|
|
|
+ <el-button size="mini" type="text">操作3 </el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 图文卡片布局(左右) -->
|
|
|
+ <div v-else-if="cardInfo.value == 3" class="flex-card" :style="cardBoxStyle">
|
|
|
+ <div v-for="(dataInfo, dataIndex) in cardList" :key="dataIndex" class="box-card">
|
|
|
+ <el-card :style="cardStyle">
|
|
|
+ <div class="flex">
|
|
|
+ <div class="flex-left">
|
|
|
+ <el-image class="img" :style="{ height: cardInfo.imgHeight + 'px' }" :src="imgVal(dataInfo)" alt="" />
|
|
|
+ </div>
|
|
|
+ <div class="flex-right">
|
|
|
+ <div class="item-left" :style="cardInfo.info.class != '' && cardInfo.info.class ? JSON.parse(cardInfo.info.class) : {}">
|
|
|
+ <div v-if="cardInfo.info.data.length > 0">
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col v-for="(item, index) in cardInfo.info.data" :key="index" :span="cardInfo.info.col">
|
|
|
+ <div class="flex-row" :style="infoStyle">
|
|
|
+ <div class="left" v-if="item.text != ''">{{ item.text + ':' }}</div>
|
|
|
+ <div class="right">
|
|
|
+ <el-tooltip v-if="item.model != ''" effect="dark" placement="right-start">
|
|
|
+ <div slot="content">
|
|
|
+ {{ getModelName(item, dataInfo, 'info') }}
|
|
|
+ </div>
|
|
|
+ <span>
|
|
|
+ {{ getModelName(item, dataInfo, 'info') }}
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="item-right">
|
|
|
+ <div class="item-footer" v-if="btnList.length > 0">
|
|
|
+ <div class="item-btns" v-for="(item, i) in btnList" :key="i">
|
|
|
+ <div v-if="item.value == 'edit'">
|
|
|
+ <el-button size="mini" type="primary" :disabled="config.webType == 3 && [1, 2, 5].indexOf(data.flowState) > -1" @click="columnBtnsHandel(item.value, dataInfo)"
|
|
|
+ >{{ item.label }}
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <div v-if="item.value == 'remove'">
|
|
|
+ <el-button size="mini" type="danger" :disabled="config.webType == 3 && [1, 2, 3, 5].indexOf(dataInfo.flowState) > -1" @click="columnBtnsHandel(item.value, dataInfo, item)"
|
|
|
+ >{{ item.label }}
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <div v-if="item.value == 'detail'">
|
|
|
+ <el-button size="mini" type="warning" @click="columnBtnsHandel(item.value, dataInfo)">
|
|
|
+ {{ item.label }}
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <div v-if="item.value == 'rowJournal'">
|
|
|
+ <el-button size="mini" type="success" @click="columnBtnsHandel(item.value, dataInfo)">{{ item.label }}</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="check">
|
|
|
+ <el-checkbox v-model="dataInfo.checked" @change="checkChange"></el-checkbox>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="item-footer" v-else>
|
|
|
+ <div class="item-btns">
|
|
|
+ <el-button size="mini" type="primary">编辑 </el-button>
|
|
|
+ </div>
|
|
|
+ <div class="item-btns">
|
|
|
+ <el-button size="mini" type="danger">删除 </el-button>
|
|
|
+ </div>
|
|
|
+ <div class="item-btns">
|
|
|
+ <el-button size="mini" type="warning">详情 </el-button>
|
|
|
+ </div>
|
|
|
+ <div class="check">
|
|
|
+ <el-checkbox disabled></el-checkbox>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-card>
|
|
@@ -158,6 +253,7 @@
|
|
|
|
|
|
<script>
|
|
|
import { dataapiDetail, dataapiUrl } from '@/api/systemData/dataInterface'
|
|
|
+import { comUrl } from '@/utils/define'
|
|
|
export default {
|
|
|
props: {
|
|
|
cardInfo: {
|
|
@@ -241,6 +337,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
async created() {
|
|
|
+
|
|
|
// console.log(this.columnList)
|
|
|
await this.columnList.forEach(async (item) => {
|
|
|
if (item.propsUrl && item.propsUrl.length) {
|
|
@@ -307,13 +404,15 @@ export default {
|
|
|
let records = this.cardList.filter((item) => item.checked == true)
|
|
|
this.$parent.handleSelectionChange({ records: records })
|
|
|
},
|
|
|
- imgVal(val) {
|
|
|
+ imgVal(data) {
|
|
|
if (this.modelList.length > 0) {
|
|
|
return 'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg'
|
|
|
} else {
|
|
|
if (this.cardInfo.imgModel && this.cardInfo.imgModel != '') {
|
|
|
- if (val[this.cardInfo.imgModel] != '' && val[this.cardInfo.imgModel] != undefined && val[this.cardInfo.imgModel] != null) {
|
|
|
- return val[this.cardInfo.imgModel].split(',')[0]
|
|
|
+ let imgFiledId = this.columnList.find((val) => val.propId == this.cardInfo.imgModel)?.field
|
|
|
+ if (imgFiledId && data[imgFiledId] != '' && data[imgFiledId].length) {
|
|
|
+ let url = data[imgFiledId].split(',')[0]
|
|
|
+ return comUrl + '/api/file/getFileInputStreamById/' + url
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -457,12 +556,13 @@ export default {
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
padding-top: 10px;
|
|
|
- border-top: 1px solid #ccc;
|
|
|
+ // border-top: 1px solid #ebeef5;
|
|
|
.btns {
|
|
|
width: 90%;
|
|
|
}
|
|
|
.check {
|
|
|
flex: 1;
|
|
|
+ text-align: right;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -472,4 +572,36 @@ export default {
|
|
|
:deep(.el-card__body) {
|
|
|
padding: 0 !important;
|
|
|
}
|
|
|
+
|
|
|
+.flex-left {
|
|
|
+ width: 40%;
|
|
|
+}
|
|
|
+
|
|
|
+.flex-right {
|
|
|
+ flex: 1;
|
|
|
+ display: flex;
|
|
|
+ .item-left {
|
|
|
+ width: 70%;
|
|
|
+ }
|
|
|
+ .item-right {
|
|
|
+ flex: 1;
|
|
|
+ .item-footer {
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ padding: 0 10px;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ .item-btns {
|
|
|
+ margin-top: 10px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ .check {
|
|
|
+ position: absolute;
|
|
|
+ right: 10px;
|
|
|
+ bottom: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|