|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<div class="flex-card" v-if="cardInfo.value == 1" :style="cardBoxStyle">
|
|
|
- <div v-for="(data, dataIndex) in cardList" :key="dataIndex" class="box-card">
|
|
|
+ <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">
|
|
|
<div class="titleLeft" :style="titleStyle">
|
|
@@ -9,10 +9,10 @@
|
|
|
</span>
|
|
|
<el-tooltip v-if="cardInfo.title.model != ''" effect="dark" placement="right-start">
|
|
|
<div slot="content">
|
|
|
- {{ getModelName(cardInfo.title.model, data, 'title') }}
|
|
|
+ {{ getModelName(cardInfo.title, dataInfo, 'title') }}
|
|
|
</div>
|
|
|
<span>
|
|
|
- {{ getModelName(cardInfo.title.model, data, 'title') }}
|
|
|
+ {{ getModelName(cardInfo.title, dataInfo, 'title') }}
|
|
|
</span>
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
@@ -22,10 +22,10 @@
|
|
|
</span>
|
|
|
<el-tooltip v-if="cardInfo.subTitle.model != ''" effect="dark" placement="right-start">
|
|
|
<div slot="content">
|
|
|
- {{ getModelName(cardInfo.subTitle.model, data, 'subTitle') }}
|
|
|
+ {{ getModelName(cardInfo.subTitle, dataInfo, 'subTitle') }}
|
|
|
</div>
|
|
|
<span>
|
|
|
- {{ getModelName(cardInfo.subTitle.model, data, 'subTitle') }}
|
|
|
+ {{ getModelName(cardInfo.subTitle, dataInfo, 'subTitle') }}
|
|
|
</span>
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
@@ -38,10 +38,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>
|
|
@@ -49,38 +49,43 @@
|
|
|
</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>
|
|
|
+ <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, 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(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 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>
|
|
|
- </template>
|
|
|
- </template>
|
|
|
+ </div>
|
|
|
+ <div class="check">
|
|
|
+ <el-checkbox v-model="dataInfo.checked" @change="checkChange"></el-checkbox>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="flex-card" v-else :style="cardBoxStyle">
|
|
|
+ <div class="flex-card" v-else-if="cardInfo.value == 2" :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="" />
|
|
@@ -150,6 +155,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { dataapiDetail, dataapiUrl } from '@/api/systemData/dataInterface'
|
|
|
export default {
|
|
|
props: {
|
|
|
cardInfo: {
|
|
@@ -167,7 +173,7 @@ export default {
|
|
|
cardData: {
|
|
|
type: Array,
|
|
|
default: () => {
|
|
|
- return {}
|
|
|
+ return []
|
|
|
}
|
|
|
},
|
|
|
columnList: {
|
|
@@ -201,30 +207,10 @@ export default {
|
|
|
cardBoxStyle() {
|
|
|
let style = {
|
|
|
'--gridTemplateColumns': this.cardInfo.rowNum,
|
|
|
- '--gridTemplateRows': this.cardInfo.rowNum,
|
|
|
gap: `${this.cardInfo.gap}px`
|
|
|
}
|
|
|
return { ...style }
|
|
|
},
|
|
|
- cardList() {
|
|
|
- if (this.modelList.length > 0) {
|
|
|
- return 10
|
|
|
- } else {
|
|
|
- if (this.cardData.length > 0) {
|
|
|
- return this.cardData.map((item) => {
|
|
|
-
|
|
|
- // let data = {}
|
|
|
- this.columnList.forEach((column) => {
|
|
|
- console.log(column);
|
|
|
-
|
|
|
- // if (column.propId == this.cardInfo.subTitle.model) {
|
|
|
- // data.subTitle = item[column.field]
|
|
|
- // }
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
infoStyle() {
|
|
|
let style = {
|
|
|
fontSize: this.cardInfo.info.size + 'px',
|
|
@@ -248,13 +234,41 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
data() {
|
|
|
- return {}
|
|
|
+ return {
|
|
|
+ cardList: []
|
|
|
+ }
|
|
|
},
|
|
|
- created() {
|
|
|
- console.log(this.columnList)
|
|
|
- console.log(this.cardData);
|
|
|
-
|
|
|
- this.columnList.forEach((item) => {
|
|
|
+ async created() {
|
|
|
+ // console.log(this.columnList)
|
|
|
+ await this.columnList.forEach(async (item) => {
|
|
|
+ if (item.propsUrl && item.propsUrl.length) {
|
|
|
+ await dataapiDetail(item.params.propsUrl).then(async (res) => {
|
|
|
+ let { data, code } = res.data
|
|
|
+ if (code == 200) {
|
|
|
+ await dataapiUrl(data.apiUrl).then((result) => {
|
|
|
+ // console.log(result)
|
|
|
+ if (this.cardInfo.title.model == item.propId) {
|
|
|
+ this.cardInfo.title.apiData = result.data.data
|
|
|
+ this.cardInfo.title.apiProps = item.params.apiProps
|
|
|
+ }
|
|
|
+ if (this.cardInfo.subTitle.model == item.propId) {
|
|
|
+ this.cardInfo.title.apiData = result.data.data
|
|
|
+ this.cardInfo.title.apiProps = item.params.apiProps
|
|
|
+ }
|
|
|
+ if (this.cardInfo.info.data.length > 0) {
|
|
|
+ this.cardInfo.info.data.map((val) => {
|
|
|
+ if (val.model == item.propId) {
|
|
|
+ val.apiData = result.data.data
|
|
|
+ val.apiProps = item.params.apiProps
|
|
|
+ return val
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // if(res.)
|
|
|
+ })
|
|
|
+ }
|
|
|
if (this.cardInfo.title.model == item.propId) {
|
|
|
this.cardInfo.title.field = item.field
|
|
|
}
|
|
@@ -270,8 +284,27 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ if (this.modelList.length > 0) {
|
|
|
+ this.cardList = 10
|
|
|
+ } else {
|
|
|
+ if (this.cardData.length > 0) {
|
|
|
+ this.cardList = this.cardData.map((item) => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ checked: false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 1000)
|
|
|
},
|
|
|
methods: {
|
|
|
+ checkChange() {
|
|
|
+ let records = this.cardList.filter((item) => item.checked == true)
|
|
|
+ this.$parent.handleSelectionChange({ records: records })
|
|
|
+ },
|
|
|
imgVal(val) {
|
|
|
if (this.modelList.length > 0) {
|
|
|
return 'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg'
|
|
@@ -288,7 +321,7 @@ export default {
|
|
|
},
|
|
|
getModelName(model, item, type) {
|
|
|
if (this.modelList.length > 0) {
|
|
|
- let name = this.modelList.find((m) => m.__vModel__ == model)
|
|
|
+ let name = this.modelList.find((m) => m.__vModel__ == model.model)
|
|
|
if (name != undefined) {
|
|
|
return `$${name.__config__.label}$`
|
|
|
} else {
|
|
@@ -296,17 +329,50 @@ export default {
|
|
|
}
|
|
|
} else {
|
|
|
if (type == 'title') {
|
|
|
- if (this.cardInfo.title.model == model) {
|
|
|
- return item[this.cardInfo.title.field]
|
|
|
+ if (this.cardInfo.title.model == model.model) {
|
|
|
+ if (model.apiData) {
|
|
|
+ let result = model.apiData.find((val) => {
|
|
|
+ if (val[model.apiProps.value] == item[this.cardInfo.title.field]) {
|
|
|
+ return val
|
|
|
+ }
|
|
|
+ })?.[model.apiProps.label]
|
|
|
+ if (result != undefined) {
|
|
|
+ return result
|
|
|
+ } else {
|
|
|
+ return item[this.cardInfo.title.field]
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return item[this.cardInfo.title.field]
|
|
|
+ }
|
|
|
}
|
|
|
} else if (type == 'subTitle') {
|
|
|
- if (this.cardInfo.subTitle.model == model) {
|
|
|
+ if (model.apiData) {
|
|
|
+ let result = model.apiData.find((val) => {
|
|
|
+ if (val[model.apiProps.value] == item[this.cardInfo.subTitle.field]) {
|
|
|
+ return val
|
|
|
+ }
|
|
|
+ })?.[model.apiProps.label]
|
|
|
+ if (result != undefined) {
|
|
|
+ return result
|
|
|
+ } else {
|
|
|
+ return item[this.cardInfo.subTitle.field]
|
|
|
+ }
|
|
|
+ } else {
|
|
|
return item[this.cardInfo.subTitle.field]
|
|
|
}
|
|
|
} else if (type == 'info') {
|
|
|
- let field = this.cardInfo.info.data.find((val) => val.model == model)?.field
|
|
|
+ let field = this.cardInfo.info.data.find((val) => val.model == model.model)?.field
|
|
|
if (field != undefined) {
|
|
|
- return item[field]
|
|
|
+ let result = model.apiData.find((val) => {
|
|
|
+ if (val[model.apiProps.value] == item[field]) {
|
|
|
+ return val
|
|
|
+ }
|
|
|
+ })?.[model.apiProps.label]
|
|
|
+ if (result != undefined) {
|
|
|
+ return result
|
|
|
+ } else {
|
|
|
+ return item[field]
|
|
|
+ }
|
|
|
} else {
|
|
|
return ''
|
|
|
}
|
|
@@ -323,7 +389,8 @@ export default {
|
|
|
.flex-card {
|
|
|
display: grid;
|
|
|
grid-template-columns: repeat(var(--gridTemplateColumns), 1fr);
|
|
|
- grid-template-rows: repeat(var(--gridTemplateRows), 1fr);
|
|
|
+ padding: 10px 0;
|
|
|
+ // grid-template-rows: repeat(var(--gridTemplateRows), 1fr);
|
|
|
// justify-content: space-between;
|
|
|
}
|
|
|
@media screen and (max-width: 1400px) {
|
|
@@ -380,9 +447,17 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
.footer {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
padding-top: 10px;
|
|
|
-
|
|
|
border-top: 1px solid #ccc;
|
|
|
+ .btns {
|
|
|
+ width: 90%;
|
|
|
+ }
|
|
|
+ .check {
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
:deep(.el-card__header) {
|