• table动态表格 Jim


    <template>
        <a-card title="保养计划">
            <a-table
                :columns="columns"
                :dataSource="dataSource"
                :pagination="false"
            >
                <!-- 厂站 -->
                <template slot="name" slot-scope="text, record">
                    <div key="name">
                        <a-input
                            v-if="record.editable"
                            style="margin: -5px 0;"
                            :value="text"
                            allowClear
                            placeholder="请输入厂站"
                            @change="e => handleChange(e.target.value, record.key, 'name')"
                        />
                        <template v-else>{{ text }}</template>
                    </div>
                </template>
                <!-- 设备名称 -->
                <template slot="cname" slot-scope="text, record">
                    <div key="cname">
                        <a-input
                            v-if="record.editable"
                            style="margin: -5px 0;"
                            :value="text"
                            allowClear
                            placeholder="请输入设备名称"
                            @change="e => handleChange(e.target.value, record.key, 'cname')"
                        />
                        <template v-else>{{ text }}</template>
                    </div>
                </template>
                <!-- 上次保养日期 -->
                <template slot="time" slot-scope="text, record">
                    <div key="time">
                        <a-input
                            v-if="record.editable"
                            style="margin: -5px 0;"
                            :value="text"
                            allowClear
                            placeholder="请输入设备名称"
                            @change="e => handleChange(e.target.value, record.key, 'time')"
                        />
                        <template v-else>{{ text }}</template>
                    </div>
                </template>
                <!-- 保养周期(天) -->
                <template slot="day" slot-scope="text, record">
                    <div key="day">
                        <a-input
                            v-if="record.editable"
                            style="margin: -5px 0;"
                            :value="text"
                            allowClear
                            placeholder="请输入保养周期(天)"
                            @change="e => handleChange(e.target.value, record.key, 'day')"
                        />
                        <template v-else>{{ text }}</template>
                    </div>
                </template>
                <!-- 下次保养日期 -->
                <template slot="begin_time" slot-scope="text, record">
                    <div key="begin_time">
                        <a-date-picker
                            v-if="record.editable"
                            style=" 100%; margin: -5px 0;"
                            :value="text"
                            allowClear
                            v-model="begin_times"
                            format="HH:mm"
                            placeholder="请选择开始时间"
                            @change="e => handleChange(begin_times, record.key, 'begin_time')"
    
                        />
                        <template v-else>{{ text }}</template>
                    </div>
                </template>
    
                <!-- 按钮 -->
                <template slot="operation" slot-scope="text, record">
                    <template v-if="record.editable">
                        <span v-if="record.isNew">
                            <a @click="saveRow(record.key)">新增</a>
                            <a-divider type="vertical" />
                            <a-popconfirm :title="$t('deleteConfirm')" @confirm="remove(record.key)">
                                <a>删除</a>
                            </a-popconfirm>
                        </span>
                        <span v-else>
                            <a @click="saveRow(record.key)">保存</a>
                            <a-divider type="vertical" />
                            <a @click="cancle(record.key)">取消</a>
                        </span>
                    </template>
                    <span v-else>
                        <a @click="toggle(record.key)">编辑</a>
                        <a-divider type="vertical" />
                        <a-popconfirm :title="$t('deleteConfirm')" @confirm="remove(record.key)">
                            <a>删除</a>
                        </a-popconfirm>
                    </span>
                </template>
            </a-table>
            <a-button v-show="dataSource.length!==1" style=" 100%; margin-top: 16px; margin-bottom: 8px;" type="dashed" icon="plus" @click="newMember">新增计划</a-button>
        </a-card>
    </template>
    
    <script>
    const columns = [
        {
            title: '厂站',
            dataIndex: 'name',
            key: 'name',
            //  '20%',
            scopedSlots: { customRender: 'name' }
        },
        {
            title: '设备名称',
            dataIndex: 'cname',
            key: 'cname',
            //  '20%',
            scopedSlots: { customRender: 'cname' }
        },
        {
            title: '上次保养日期',
            dataIndex: 'time',
            key: 'time',
            //  '40%',
            scopedSlots: { customRender: 'time' }
        },
        {
            title: '保养周期(天)',
            dataIndex: 'day',
            key: 'day',
            //  '40%',
            scopedSlots: { customRender: 'day' }
        },
        {
            title: '下次保养日期',
            dataIndex: 'begin_time',
            key: 'begin_time',
            //  '40%',
            scopedSlots: { customRender: 'begin_time' }
        },
        {
            title: '操作',
            key: 'operation',
             '10%',
            scopedSlots: { customRender: 'operation' }
        }
    ]
    
    const dataSource = [
        {
            key: 1,
            name: '小明777',
            cname: '001',
            editable: false,
            time: '行政部',
            day: '1',
            begin_time: '2021-09-29'
        }
    ]
    
    export default {
        name: 'UserForm',
        // i18n: require('./i18n-user'),
        data () {
            return {
                columns,
                dataSource,
                newTabIndex: 0,
                begin_times: undefined
            }
        },
        computed: {
            dataColumns () {
                return this.columns.map(column => {
                    column.title = this.$t('table.' + column.key)
                    return column
                })
            }
        },
        methods: {
            handleSubmit (e) {
                e.preventDefault()
            },
            newMember () {
                const activeKey = `newKey${this.newTabIndex++}`
                this.dataSource.push({
                    key: activeKey,
                    name: '',
                    cname: '',
                    time: '',
                    day: '',
                    begin_time: '',
                    editable: true,
                    isNew: true
                })
            },
            remove (key) {
                const newData = this.dataSource.filter(item => item.key !== key)
                this.dataSource = newData
            },
            saveRow (key) {
                let target = this.dataSource.filter(item => item.key === key)[0]
                target.editable = false
                target.isNew = false
            },
            toggle (key) {
                let target = this.dataSource.filter(item => item.key === key)[0]
                target.editable = !target.editable
            },
            getRowByKey (key, newData) {
                const data = this.dataSource
                return (newData || data).filter(item => item.key === key)[0]
            },
            cancle (key) {
                let target = this.dataSource.filter(item => item.key === key)[0]
                target.editable = false
            },
            handleChange (value, key, column) {
                const newData = [...this.dataSource]
                const target = newData.filter(item => key === item.key)[0]
                if (target) {
                    target[column] = value
                    this.dataSource = newData
                }
            }
        }
    }
    </script>
    
    <style scoped lang="less">
    /deep/.ant-card-body {
        padding: 0;
    }
    
    /deep/.ant-card-head {
        padding: 0;
    }
    
    /deep/.ant-card-head-title {
        padding: 0;
    }
    </style>
  • 相关阅读:
    zw字王《中华大字库》2018版升级项目正式启动
    字王大藏经体v0.1概念版
    zw-clay字王胶泥体系列
    中文字库的造与创
    【转】Delphi+Halcon实战一:两行代码识别QR二维码
    zw.delphi不同版本程序运行速度测试
    《zw版·Halcon入门教程与内置demo》
    字王·百字工程·第一阶段纪念
    黑天鹅算法与大数据的四个层次
    zw版足彩大数据&报价
  • 原文地址:https://www.cnblogs.com/huoshengmiao/p/15324146.html
Copyright © 2020-2023  润新知