|
@@ -2,7 +2,7 @@
|
|
|
* @Author : yuanrunwei
|
|
|
* @Date : 2021-11-01 18:02:58
|
|
|
* @LastEditors : yuanrunwei
|
|
|
- * @LastEditTime : 2021-12-06 17:32:53
|
|
|
+ * @LastEditTime : 2021-12-06 19:51:14
|
|
|
* @FilePath : \spfm-market-front\src\pages\main\performance\components\table.vue
|
|
|
-->
|
|
|
<template>
|
|
@@ -20,25 +20,18 @@
|
|
|
<template #default="scope">
|
|
|
<div v-if="type === 'edit'">
|
|
|
<el-input
|
|
|
- v-if="scope.row[`${props}_${type}`]"
|
|
|
+ v-if="scope.row[`edit`]"
|
|
|
v-model="scope.row[props]"
|
|
|
autosize
|
|
|
type="textarea"
|
|
|
+ @change="handleModify"
|
|
|
/>
|
|
|
-
|
|
|
- <el-button
|
|
|
- size="mini"
|
|
|
- class="margin-top-10"
|
|
|
- @click="handleEdit({ scope, type, props })"
|
|
|
- >
|
|
|
- {{ !scope.row[`${props}_${type}`] ? "编辑" : "完成" }}
|
|
|
- </el-button>
|
|
|
</div>
|
|
|
<div v-else-if="type === 'textarea'">
|
|
|
- <pre>{{ scope.row[props] }}</pre>
|
|
|
+ <pre class="simple-table-break">{{ scope.row[props] }}</pre>
|
|
|
</div>
|
|
|
<div v-else-if="type === 'date'">
|
|
|
- <div>{{ $formatDate(scope.row[props], "YYYY-MM-DD") }}</div>
|
|
|
+ <div>{{ $formatDate(scope.row[props], "YYYY-MM-DD") }}</div>
|
|
|
</div>
|
|
|
<div v-else-if="type === 'click'">
|
|
|
<div
|
|
@@ -52,7 +45,9 @@
|
|
|
</template>
|
|
|
<template v-if="children">
|
|
|
<el-table-column
|
|
|
- v-for="({ props, label, width, align }, index) in children"
|
|
|
+ v-for="(
|
|
|
+ { props, label, width, align, type }, index
|
|
|
+ ) in children"
|
|
|
:key="index"
|
|
|
:prop="props"
|
|
|
:width="width"
|
|
@@ -60,23 +55,15 @@
|
|
|
:align="align || 'center'"
|
|
|
>
|
|
|
<template #default="scope">
|
|
|
- <div>{{ scope.row[props] }}</div>
|
|
|
- </template>
|
|
|
- <template v-if="children">
|
|
|
- <el-table-column
|
|
|
- v-for="(
|
|
|
- { props, label, width, align }, index
|
|
|
- ) in children"
|
|
|
- :key="index"
|
|
|
- :prop="props"
|
|
|
- :width="width"
|
|
|
- :label="label"
|
|
|
- :align="align || 'center'"
|
|
|
- >
|
|
|
- <template #default="scope">
|
|
|
- <div>{{ scope.row[props] }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
+ <div v-if="type === 'edit'">
|
|
|
+ <el-input
|
|
|
+ v-model="scope.row[props]"
|
|
|
+ @change="handleModify"
|
|
|
+ autosize
|
|
|
+ type="textarea"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div v-else>{{ scope.row[props] }}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</template>
|
|
@@ -142,15 +129,8 @@ export default {
|
|
|
},
|
|
|
computed: {
|
|
|
computed_list() {
|
|
|
- const object = {};
|
|
|
- this.config
|
|
|
- .filter(({ type }) => type === "edit")
|
|
|
- .forEach(({ props, type }) => {
|
|
|
- object[`${props}_${type}`] = false;
|
|
|
- });
|
|
|
return this.list.map((element) => ({
|
|
|
...element,
|
|
|
- ...object,
|
|
|
}));
|
|
|
},
|
|
|
},
|
|
@@ -170,9 +150,8 @@ export default {
|
|
|
handleClick(props, row) {
|
|
|
this.$emit(props, row);
|
|
|
},
|
|
|
- handleEdit({ scope, type, props }) {
|
|
|
- scope.row[`${props}_${type}`] = !scope.row[`${props}_${type}`];
|
|
|
- this.$emit(props, scope.row);
|
|
|
+ handleModify() {
|
|
|
+ this.$emit("modify", this.computed_list);
|
|
|
},
|
|
|
},
|
|
|
};
|