ustcyc
2025-01-08 e58b27d9b5b6b3d63267ca89d28ebe9d3363f94b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<template>
    <el-dialog v-model="visible" :title="title" width="900" @close="handleClose">
 
        <el-form :model="form" ref="queryRef">
            <el-table :data="form.tableData" style="width: 100%;">
                <el-table-column prop="index1" label="时段" width="180">
                    <template #default="scope">
                        <el-form-item :prop="`tableData[${scope.$index}].index1`" :rules="formRules.index1">
                            <el-select v-model="scope.row.index1" placeholder="请选择时段" style="width: 100%">
                                <el-option v-for="dict in spikesAndValleys" :key="dict.value" :label="dict.label"
                                    :value="dict.value" />
                            </el-select>
                        </el-form-item>
                    </template>
                </el-table-column>
                <el-table-column prop="index2" label="电价(元)" width="180">
                    <template #default="scope">
                        <el-form-item :prop="`tableData[${scope.$index}].index2`" :rules="formRules.index2">
                            <el-input-number v-model="scope.row.index2" />
                        </el-form-item>
                    </template>
                </el-table-column>
                <el-table-column prop="index3" label="开始时间" width="200">
                    <template #default="scope">
                        <el-form-item :prop="`tableData[${scope.$index}].index3`" :rules="formRules.index3">
                            <el-time-picker v-model="scope.row['index3']" placeholder="请选择开始时间" style="width: 100%" />
                        </el-form-item>
                    </template>
                </el-table-column>
                <el-table-column prop="index4" label="结束时间" width="200">
                    <template #default="scope">
                        <el-form-item :prop="`tableData[${scope.$index}].index4`" :rules="formRules.index4">
                            <el-time-picker v-model="scope.row['index4']" placeholder="请选择结束时间" style="width: 100%" />
                        </el-form-item>
                    </template>
                </el-table-column>
                <el-table-column label="操作" width="100">
                    <template #default="scope">
                        <el-form-item>
                            <el-button link type="primary" icon="Delete" @click="handleDel(scope.row, scope.$index)">
                                删除
                            </el-button>
                        </el-form-item>
                    </template>
                </el-table-column>
            </el-table>
            <div class="mt20 mb20 ml20 text-right">
                <el-button type="primary" icon="Plus" @click="handleAdd">新增</el-button>
            </div>
            <div slot="footer" class="text-right">
                <el-button type="primary" @click="submitForm" :loading="loading">确 定</el-button>
                <el-button @click="handleClose">取 消</el-button>
            </div>
        </el-form>
    </el-dialog>
</template>
<script setup>
const { proxy } = getCurrentInstance();
let props = defineProps(['spikesAndValleys'])
let visible = ref(false)
let title = ref()
let formRules = {
    index1: [{ required: true, trigger: "change", message: "请选择时段" }],
    index2: [{ required: true, trigger: "blur", message: "请输入电价" }],
    index3: [{ required: true, trigger: "change", message: "请选择开始时间" }],
    index4: [{ required: true, trigger: "change", message: "请选择结束时间" }],
}
let loading = ref(false)
let form = ref({
    tableData: [
        { index1: '', index2: 0, index3: '', index4: '' }
    ]
})
function handleClose() {
    visible.value = false
    proxy.$refs.queryRef.resetFields()
    form.value = {
        tableData: [
            { index1: '', index2: 0, index3: '', index4: '' }
        ]
    }
}
function submitForm() {
    proxy.$refs.queryRef.validate(valid => {
        if (valid) { }
    })
 
}
function handleAdd() {
    proxy.$refs.queryRef.validate(valid => {
        if (valid) {
            form.value.tableData.push({ index1: '', index2: 0, index3: '', index4: '' })
        }
    })
 
}
 
function handleDel(row, index) {
    proxy.$modal.confirm('是否确认删除数据项?').then(function () {
        form.value.tableData.splice(index, 1);
    }).then(() => {
        proxy.$modal.msgSuccess("删除成功");
    }).catch(() => { });
}
function handleOpen(row) {
    if (row && row.id) {
        title.value = "编辑"
        form.value = JSON.parse(JSON.stringify(row))
    } else {
        console.log(form.value)
        title.value = "添加"
    }
    visible.value = true
}
defineExpose({ handleOpen })
</script>
 
<style lang='scss' scoped></style>