内外部会议

This commit is contained in:
zyn
2023-10-16 13:36:45 +08:00
parent 3e961a66ef
commit 57ae69b55b
5 changed files with 164 additions and 54 deletions
@@ -4,6 +4,7 @@
<el-form-item <el-form-item
:label="config.attrName" :label="config.attrName"
:prop="config.attrField" :prop="config.attrField"
:rules="rules"
:label-width="labelWidth" :label-width="labelWidth"
class="add-form-item" class="add-form-item"
:class="{'form-item-disabled': disabled}" :class="{'form-item-disabled': disabled}"
@@ -197,6 +198,9 @@ export default {
showModifyName: { showModifyName: {
type: Boolean, type: Boolean,
default: false default: false
},
rules: {
type: Array
} }
}, },
watch: { watch: {
@@ -3,6 +3,7 @@
<el-form-item <el-form-item
:label="config.attrName" :label="config.attrName"
:prop="config.attrField" :prop="config.attrField"
:rules="rules"
label-width="150px" label-width="150px"
class="add-form-item" class="add-form-item"
:class="{'form-item-disabled': disabled}" :class="{'form-item-disabled': disabled}"
@@ -40,6 +41,9 @@ export default {
span: { span: {
type: Number, type: Number,
default: 24 default: 24
},
rules: {
type: Array
} }
}, },
computed: { computed: {
@@ -55,8 +59,8 @@ export default {
}, },
methods: { methods: {
handleChange (event) { handleChange (event) {
const value = event.target.value // const value = event.target.value
this.$emit('input', value) this.$emit('input', event)
} }
} }
} }
@@ -4,7 +4,7 @@
size="800px" size="800px"
:visible="visible" :visible="visible"
:wrapperClosable="false" :wrapperClosable="false"
@close="onClose"> :before-close="beforeClose">
<div class="drawer-content"> <div class="drawer-content">
<el-form <el-form
:model="form" :model="form"
@@ -97,12 +97,12 @@
class="common-button-primary" class="common-button-primary"
icon="el-icon-check" icon="el-icon-check"
type="primary" type="primary"
@click="onSearch">搜索 @click="onSearch('search')">搜索
</el-button> </el-button>
<el-button <el-button
class="common-button-default" class="common-button-default"
icon="el-icon-close" icon="el-icon-close"
@click="onClose">取消 @click="onCancel('cancel')">取消
</el-button> </el-button>
</div> </div>
</el-drawer> </el-drawer>
@@ -148,17 +148,30 @@ export default {
default: () => ({}) default: () => ({})
}, },
}, },
data () {
return {
type: 'cancel'
}
},
methods: { methods: {
beforeClose (done) { beforeClose (done) {
this.$emit('update:visible', false) switch (this.type) {
done() case "search":
this.onSearch()
break
case 'cancel':
this.onCancel()
break
}
}, },
onSearch () { onSearch (type) {
this.type = type
this.$emit('search') this.$emit('search')
this.$emit('update:visible', false) this.$emit('update:visible', false)
}, },
onClose () { onCancel(type) {
this.$emit('clearSearch', {}) this.type = type
this.$emit('resetAdvancedSearchForm')
this.$emit('update:visible', false) this.$emit('update:visible', false)
} }
} }
@@ -117,30 +117,31 @@
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="议题名称" prop="agendaName" label-width="150px" class="add-form-item"> <el-form-item label="议题名称" :prop="'meetingTopicList.' + index + '.agendaName'" :rules="rules.agendaName" label-width="150px" class="add-form-item">
<el-input v-model="item.agendaName" <el-input v-model="item.agendaName"
placeholder="请输入议题名称" placeholder="请输入议题名称"
clearable></el-input> clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<custom-file <customFile
:config="{ :config="{
attrName: '议题材料', attrName: '议题材料',
attrField: 'agendaMaterials' attrField: `meetingTopicList.${index}.agendaMaterials`
}" }"
:rules="rules.agendaMaterials"
v-model="item.agendaMaterials" v-model="item.agendaMaterials"
></custom-file> ></customFile>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="汇报人" prop="reporter" label-width="150px" class="add-form-item"> <el-form-item label="汇报人" :prop="'meetingTopicList.' + index + '.reporter'" :rules="rules.reporter" label-width="150px" class="add-form-item">
<el-input v-model="item.reporter" <el-input v-model="item.reporter"
placeholder="请输入汇报人" placeholder="请输入汇报人"
clearable></el-input> clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="汇报人单位" prop="reportingUnit" label-width="150px" class="add-form-item"> <el-form-item label="汇报人单位" :prop="'meetingTopicList.' + index + '.reportingUnit'" :rules="rules.reportingUnit" label-width="150px" class="add-form-item">
<el-input v-model="item.reportingUnit" <el-input v-model="item.reportingUnit"
placeholder="请输入汇报人单位" placeholder="请输入汇报人单位"
clearable></el-input> clearable></el-input>
@@ -149,9 +150,10 @@
<el-col :span="24"> <el-col :span="24">
<CustomTextarea <CustomTextarea
:config="{ :config="{
attrName: '议题主要内容', attrName: '议题主要内容',
attrField: 'agendaContent' attrField: `meetingTopicList.${index}.agendaContent`
}" }"
:rules="rules.agendaContent"
v-model="item.agendaContent" v-model="item.agendaContent"
></CustomTextarea> ></CustomTextarea>
</el-col> </el-col>
@@ -241,28 +243,44 @@ export default {
{type: 'string', max: 500, message: '议题主要内容不能超过500个字符', trigger: 'change'} {type: 'string', max: 500, message: '议题主要内容不能超过500个字符', trigger: 'change'}
], ],
} }
return { const form = {
rules, meetingName: '',
isSubmit: false, meetingOrganizer: '',
reloadForm: true meetingTime: '',
} meetingAddress: '',
}, participants: '',
computed: { meetingMinutes: '',
form () { meetingContent: '',
if (JSON.stringify(this.editForm) !== '{}') { firstMeetingType: '',
return { ...this.editForm } secondMeetingType: '',
} else { meetingTopicList: [
const meetingTopicItem = { {
agendaName: '', agendaName: '',
agendaMaterials: '', agendaMaterials: '',
reporter: '', reporter: '',
reportingUnit: '', reportingUnit: '',
agendaContent: '' agendaContent: ''
} }
const form = { ]
meetingTopicList: [ meetingTopicItem ] }
} return {
return { ...form } rules,
form,
isSubmit: false,
reloadForm: true,
api: {
add: 'lawss/insideOutsideMeeting/addMeetingInfo',
delete :'lawss/insideOutsideMeeting/deleteMeetingInfo',
update: 'lawss/insideOutsideMeeting/updateMeetingInfo'
}
}
},
watch: {
editForm (val) {
if (this.title === '编辑') {
this.form = { ...this.editForm }
} else {
this.resetForm()
} }
} }
}, },
@@ -286,12 +304,55 @@ export default {
}) })
this.form.meetingTopicList = [ ...res ] this.form.meetingTopicList = [ ...res ]
}, },
resetForm () {
this.form = {
meetingName: '',
meetingOrganizer: '',
meetingTime: '',
meetingAddress: '',
participants: '',
meetingMinutes: '',
meetingContent: '',
firstMeetingType: '',
secondMeetingType: '',
meetingTopicList: [
{
agendaName: '',
agendaMaterials: '',
reporter: '',
reportingUnit: '',
agendaContent: ''
}
]
}
},
onClose () { onClose () {
this.$emit('update:showDrawer', false) this.$emit('update:showDrawer', false)
this.$refs['formRef'].resetFields() this.$refs['formRef'].resetFields()
this.resetForm()
}, },
onSubmit () { onSubmit () {
console.log(this.form) this.$refs.formRef.validate(valid => {
if (valid) {
if (this.title === '新增') {
this.$http._postData(this.api.add, this.form).then(res => {
if (res.ok) {
this.$message.success('新增成功')
this.onClose()
this.$emit('load')
}
})
} else {
this.$http._putData(this.api.update, this.form).then(res => {
if (res.ok) {
this.$message.success('修改成功')
this.onClose()
this.$emit('load')
}
})
}
}
})
} }
} }
} }
+46 -18
View File
@@ -3,14 +3,14 @@
<!--搜索区--> <!--搜索区-->
<div class="search-area"> <div class="search-area">
<el-form :modal="searchForm" :inline="true" class="label-input-form"> <el-form :modal="searchForm" :inline="true" class="label-input-form">
<el-formItem label="会议名称" prop="name" class="search-item"> <el-formItem label="会议名称" prop="meetingName" class="search-item">
<el-input v-model="searchForm.name" clearable placeholder="根据会议名称查找" :maxlength="100" @keyup.enter.native="onSearch"/> <el-input v-model="searchForm.meetingName" clearable placeholder="根据会议名称查找" :maxlength="100" @keyup.enter.native="onSearch"/>
</el-formItem> </el-formItem>
<el-formItem label="会议主办单位" prop="unit" class="search-item"> <el-formItem label="会议主办单位" prop="meetingOrganizer" class="search-item">
<el-input v-model="searchForm.unit" clearable placeholder="根据会议主办单位查找" :maxlength="100" @keyup.enter.native="onSearch"/> <el-input v-model="searchForm.meetingOrganizer" clearable placeholder="根据会议主办单位查找" :maxlength="100" @keyup.enter.native="onSearch"/>
</el-formItem> </el-formItem>
<el-formItem label="会议时间" prop="time" class="search-item"> <el-formItem label="会议时间" prop="meetingTime" class="search-item">
<el-input v-model="searchForm.time" clearable placeholder="根据会议时间查找" :maxlength="100" @keyup.enter.native="onSearch"/> <el-input v-model="searchForm.meetingTime" clearable placeholder="根据会议时间查找" :maxlength="100" @keyup.enter.native="onSearch"/>
</el-formItem> </el-formItem>
<el-form-item class="search-item btn-box"> <el-form-item class="search-item btn-box">
<el-button <el-button
@@ -129,9 +129,9 @@
<loading :loading="loading">数据获取中...</loading> <loading :loading="loading">数据获取中...</loading>
</div> </div>
<!-- 高级搜索 --> <!-- 高级搜索 -->
<AdvancedSearch :visible.sync="advancedSearchVisible" :form="searchForm" :dict="dict" @search="onSearch"></AdvancedSearch> <AdvancedSearch :visible.sync="advancedSearchVisible" :form="advancedSearchForm" :dict="dict" @search="onSearch" @resetAdvancedSearchForm="resetAdvancedSearchForm"></AdvancedSearch>
<!-- 新增编辑 --> <!-- 新增编辑 -->
<editDrawer :dict="dict" :showDrawer.sync="showDrawer" :title="titleDrawer" :editForm="editForm"></editDrawer> <editDrawer ref="editDrawerRef" :dict="dict" :showDrawer.sync="showDrawer" :title="titleDrawer" :editForm="editForm" @load="getData"></editDrawer>
<!-- 导入 --> <!-- 导入 -->
<ImportZip :visible.sync="importModalShowFlag" :action="importExcelUrl"></ImportZip> <ImportZip :visible.sync="importModalShowFlag" :action="importExcelUrl"></ImportZip>
<!-- 导出 --> <!-- 导出 -->
@@ -155,6 +155,7 @@ export default {
data(){ data(){
return { return {
searchForm: {}, searchForm: {},
advancedSearchForm: {},
data: [], data: [],
total: 0, total: 0,
selectedList: [], selectedList: [],
@@ -167,7 +168,10 @@ export default {
importExcelUrl: '', importExcelUrl: '',
// 高级搜索 // 高级搜索
advancedSearchVisible: false, advancedSearchVisible: false,
editForm: void 0 editForm: void 0,
api: {
delete :'lawss/insideOutsideMeeting/deleteMeetingInfo'
}
} }
}, },
created() { created() {
@@ -177,21 +181,31 @@ export default {
methods: { methods: {
async getData () { async getData () {
this.searchForm.pageSize = this.searchForm.pageSize || this.$store.getters.userInfo.configContent this.searchForm.pageSize = this.searchForm.pageSize || this.$store.getters.userInfo.configContent
this.searchForm.page = this.searchForm.page || 0 this.searchForm.page = this.searchForm.page || 1
let params = { ...this.searchForm } let params = { ...this.searchForm, ...this.advancedSearchForm }
const res = await this.$http._getData('lawss/insideOutsideMeeting/page', params) const res = await this.$http._getData('lawss/insideOutsideMeeting/page', params, {_this:this,loading: 'loading'})
if (res.ok) { if (res.ok && res.data) {
this.data = res.data if (res.data.list && res.data.list.length > 0) {
this.data = res.data.list
}
this.total = res.data.count
} }
}, },
onSearch(){ onSearch(){
console.log(this.searchForm) this.getData()
}, },
onClear () { onClear () {
this.$set(this, 'searchForm', {}) this.$set(this, 'searchForm', {})
this.$set(this, 'advancedSearchForm', {})
this.getData()
},
resetAdvancedSearchForm () {
this.$set(this, 'advancedSearchForm', {})
this.getData()
}, },
// 高级搜索 // 高级搜索
advancedSearch () { advancedSearch () {
this.$set(this, 'advancedSearchForm', {})
this.advancedSearchVisible = true this.advancedSearchVisible = true
}, },
// 选择项勾选改变 // 选择项勾选改变
@@ -254,7 +268,6 @@ export default {
this.showDrawer = false this.showDrawer = false
switch (type) { switch (type) {
case 'add': case 'add':
this.$set(this, 'editForm', {})
this.titleDrawer = '新增' this.titleDrawer = '新增'
break break
case 'edit': case 'edit':
@@ -262,10 +275,25 @@ export default {
this.$set(this, 'editForm', row) this.$set(this, 'editForm', row)
break break
} }
this.showDrawer = true this.$nextTick(()=>{
this.showDrawer = true
})
}, },
onDelete (id) { onDelete (id) {
alert('删除' + id) this.$confirm('确认删除这些数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
confirmButtonClass: 'common-button-primary',
roundButton: true
}).then(() => {
this.$http._deleteData(this.api.delete, { meetingId: id }).then(res => {
if (res.ok) {
this.$message.success('删除成功')
this.getData()
}
})
})
}, },
getDicTypeListCode () { getDicTypeListCode () {
// 查询各下拉框数据 // 查询各下拉框数据