7 changed files with 158 additions and 1 deletions
			
			
		@ -1,4 +1,6 @@ | 
				
			|||||||
import WkbTag from './tag'; | 
					import WkbTag from './tag'; | 
				
			||||||
import ListTable from './list-table'; | 
					import ListTable from './list-table'; | 
				
			||||||
 | 
					import SearchRow from './search-row'; | 
				
			||||||
 | 
					import ModifyForm from './modify-form'; | 
				
			||||||
 | 
					
 | 
				
			||||||
export { WkbTag, ListTable }; | 
					export { WkbTag, ListTable, SearchRow }; | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,2 @@ | 
				
			|||||||
 | 
					import ModifyForm from "./src/modifyForm.vue" | 
				
			||||||
 | 
					export default ModifyForm; | 
				
			||||||
@ -0,0 +1,66 @@ | 
				
			|||||||
 | 
					<template> | 
				
			||||||
 | 
					    <div class="modify-form"> | 
				
			||||||
 | 
					        <el-form label-position="right" :class="class" :label-width="width ? width + 'px' : ''" :model="param" | 
				
			||||||
 | 
					            ref="modifyForm" :rules="rules"> | 
				
			||||||
 | 
					            <slot></slot> | 
				
			||||||
 | 
					            <el-form-item class="form-btns"> | 
				
			||||||
 | 
					                <el-button type="info" @click="formConfirm">确定</el-button> | 
				
			||||||
 | 
					                <el-button type="info" @click="emit('cancel')">取消</el-button> | 
				
			||||||
 | 
					            </el-form-item> | 
				
			||||||
 | 
					        </el-form> | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					</template> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts" setup> | 
				
			||||||
 | 
					import { onMounted, ref, watch } from "vue"; | 
				
			||||||
 | 
					import { FormInstance } from "element-plus"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const prop = defineProps({ | 
				
			||||||
 | 
					    width: { | 
				
			||||||
 | 
					        type: Number, | 
				
			||||||
 | 
					        default: 80, | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					    param: { | 
				
			||||||
 | 
					        type: Object, | 
				
			||||||
 | 
					        default: {}, | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					    rules: { | 
				
			||||||
 | 
					        type: Object, | 
				
			||||||
 | 
					        default: {}, | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					    class: { | 
				
			||||||
 | 
					        type: String, | 
				
			||||||
 | 
					        default: '', | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					const emit = defineEmits(["confirm", "cancel"]); | 
				
			||||||
 | 
					const modifyForm = ref<FormInstance>(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const formConfirm = () => { | 
				
			||||||
 | 
					    if (!modifyForm.value) return; | 
				
			||||||
 | 
					    modifyForm.value?.validate((valid, fields) => { | 
				
			||||||
 | 
					        if (valid) { | 
				
			||||||
 | 
					            emit("confirm"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const clearValidate = () => { | 
				
			||||||
 | 
					    modifyForm.value?.clearValidate(); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					watch(() => prop.param, () => { | 
				
			||||||
 | 
					    modifyForm.value?.clearValidate(); | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					onMounted(() => { | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					</script> | 
				
			||||||
 | 
					<style lang="scss" scoped> | 
				
			||||||
 | 
					//@import url(); 引入公共css类 | 
				
			||||||
 | 
					.modify-form { | 
				
			||||||
 | 
					    .el-select { | 
				
			||||||
 | 
					        width: 100%; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					</style> | 
				
			||||||
@ -0,0 +1,2 @@ | 
				
			|||||||
 | 
					import SearchRow from "./src/searchRow.vue" | 
				
			||||||
 | 
					export default SearchRow; | 
				
			||||||
@ -0,0 +1,63 @@ | 
				
			|||||||
 | 
					<template> | 
				
			||||||
 | 
					    <div class="search-row"> | 
				
			||||||
 | 
					        <div class="left"> | 
				
			||||||
 | 
					            <span class="title" v-if="title">{{ title }}</span> | 
				
			||||||
 | 
					            <el-button v-if="fresh" type="info" icon="Refresh" @click="emit('query')"> </el-button> | 
				
			||||||
 | 
					            <el-button v-if="add" type="primary" icon="Plus" @click="emit('add')"> 添加 </el-button> | 
				
			||||||
 | 
					            <el-button v-if="del" type="danger" icon="Delete" @click="emit('delete')"> 删除 </el-button> | 
				
			||||||
 | 
					            <slot name="left"></slot> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					        <div class="query"> | 
				
			||||||
 | 
					            <slot></slot> | 
				
			||||||
 | 
					            <el-button v-if="query" type="primary" icon="Search" @click="emit('query')"> 查询 </el-button> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					</template> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts" setup> | 
				
			||||||
 | 
					import { onMounted, defineProps, defineEmits } from "vue"; | 
				
			||||||
 | 
					const prop = defineProps({ | 
				
			||||||
 | 
					    title: { | 
				
			||||||
 | 
					        type: String, | 
				
			||||||
 | 
					        default: null | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					    fresh: { | 
				
			||||||
 | 
					        type: Boolean, | 
				
			||||||
 | 
					        default: true, | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					    add: { | 
				
			||||||
 | 
					        type: Boolean, | 
				
			||||||
 | 
					        default: true, | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					    del: { | 
				
			||||||
 | 
					        type: Boolean, | 
				
			||||||
 | 
					        default: true, | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					    query: { | 
				
			||||||
 | 
					        type: Boolean, | 
				
			||||||
 | 
					        default: true, | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const emit = defineEmits(["query", "add", "delete"]); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					onMounted(() => { }); | 
				
			||||||
 | 
					</script> | 
				
			||||||
 | 
					<style lang="scss" scoped> | 
				
			||||||
 | 
					//@import url(); 引入公共css类 | 
				
			||||||
 | 
					.query { | 
				
			||||||
 | 
					    text-align: right; | 
				
			||||||
 | 
					    float: right; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.left { | 
				
			||||||
 | 
					    float: left; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.title { | 
				
			||||||
 | 
					    font-weight: bold; | 
				
			||||||
 | 
					    padding-right: 15px; | 
				
			||||||
 | 
					    font-size: 20px; | 
				
			||||||
 | 
					    min-width: 20px; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					</style> | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue