7 changed files with 158 additions and 1 deletions
@ -1,4 +1,6 @@
@@ -1,4 +1,6 @@
|
||||
import WkbTag from './tag'; |
||||
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 @@
@@ -0,0 +1,2 @@
|
||||
import ModifyForm from "./src/modifyForm.vue" |
||||
export default ModifyForm; |
@ -0,0 +1,66 @@
@@ -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 @@
@@ -0,0 +1,2 @@
|
||||
import SearchRow from "./src/searchRow.vue" |
||||
export default SearchRow; |
@ -0,0 +1,63 @@
@@ -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