78263 内外部会议-添加调取课题功能

This commit is contained in:
zyn
2023-11-10 15:13:11 +08:00
parent 4b28d6e5fd
commit f35962eb69
3 changed files with 301 additions and 14 deletions
@@ -0,0 +1,238 @@
<template>
<el-dialog
title="政策课题"
:visible.sync="show"
width="1100px"
custom-class="demo-drawer"
:close-on-click-modal="false"
@close=""
append-to-body
>
<!--搜索区-->
<div class="search-area">
<el-form :modal="searchForm" :inline="true" class="label-input-form">
<el-formItem label="课题名称" prop="topicName" class="search-item">
<el-input v-model="searchForm.topicName" clearable placeholder="请输入课题名称" :maxlength="100" @keyup.enter.native="onSearch"/>
</el-formItem>
<el-formItem label="课题承办单位" prop="organizer" class="search-item">
<el-input v-model="searchForm.organizer" clearable placeholder="请输入课题承办单位" :maxlength="100" @keyup.enter.native="onSearch"/>
</el-formItem>
<el-formItem label="启动时间" prop="startTime" class="search-item">
<el-date-picker
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
type="date"
clearable
:editable="true"
placeholder="请选择启动时间"
v-model="searchForm.startTime"
>
</el-date-picker>
</el-formItem>
<el-formItem label="课题状态" prop="topicStatus" class="search-item">
<el-select v-model="searchForm.topicStatus"
placeholder="请选择课题状态"
clearable>
<el-option
v-for="opt in topicStatusOptions"
:key="opt.value"
:value="!opt.value ? '' : opt.value" :label="opt.label"
>
{{ opt.label }}
</el-option>
</el-select>
</el-formItem>
<el-form-item class="search-item btn-box">
<el-button
type="primary"
size="mini"
class="common-button-primary"
v-btn-permission="'91821ac75391d6e77388f13b68803396'"
@click="onSearch">
查询
</el-button>
<el-button
size="mini"
class="common-button-default"
v-btn-permission="'22a0ea67e20998458c519281980a3af2'"
@click="onClear">清空
</el-button>
</el-form-item>
</el-form>
</div>
<!-- 表格 -->
<div class="content">
<el-table
ref="selection"
:data="data"
tooltip-effect="dark"
style="width: 100%;overflow-y: auto;overflow-x: hidden;"
:height="300"
border
class="drag-table"
@sort-change="sortChange"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px', fontWeight: 'bold', height: '48px', padding: 0}"
:cell-style="{padding: 0}"
@selection-change="selectionChange"
>
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
prop="topicName"
label="课题名称"
align="center"
sortable="custom"
>
<template slot-scope="{row, column, $index}">
<a class="table-jump" style="color: #2d8cf0" @click="handlePreview(row.id)">{{ row.topicName }}</a>
</template>
</el-table-column>
<el-table-column
prop="organizer"
label="课题承办单位"
align="center"
sortable="custom"
>
</el-table-column>
<el-table-column
prop="startTime"
label="启动时间"
align="center"
sortable="custom"
>
</el-table-column>
<el-table-column
prop="topicStatus"
label="课题状态"
align="center"
sortable="custom"
>
</el-table-column>
</el-table>
<pagination style="position: relative" :page="searchForm.page" :total="total" @pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
<loading :loading="loading">数据获取中...</loading>
</div>
<div slot="footer">
<el-button class="common-button-default" round icon="el-icon-close" @click="handleCancel">取消</el-button>
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="handleDragIn">带入</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: "TopicsTable",
data () {
const topicStatusOptions = [
{
label: '进行中',
value: '进行中'
},
{
label: '已结题',
value: '已结题'
},
]
return {
show: false,
searchForm: {},
api: {
page: 'lawss/sarLawsTopic/page'
},
// 列表
data: [],
total: 0,
loading: false,
selectedList: [],
topicStatusOptions,
}
},
methods: {
async getData () {
this.searchForm.pageSize = this.searchForm.pageSize || this.$store.getters.userInfo.configContent
this.searchForm.page = this.searchForm.page || 1
let params = { ...this.searchForm }
const res = await this.$http._getData(this.api.page, params, {_this:this,loading: 'loading'})
if (res.ok && res.data) {
this.data = res.data.list
this.total = res.data.count
}
},
open () {
this.$set(this, 'searchForm', {})
this.getData()
this.show = true
},
// 选择项勾选改变
selectionChange (data) {
this.selectedList = data
},
// 表格排序
sortChange({ column, prop, order }) {
this.searchForm.sortField = prop
this.searchForm.sortMode = 'asc'
if (order === 'descending') {
this.searchForm.sortMode = 'desc'
}
if (!order) {
this.searchForm.sortField = ''
this.searchForm.sortMode = ''
}
this.getData()
},
// 分页点击后方法
pageChange (page) {
this.searchForm.page = page
this.getData()
},
// 分页每页显示数改变后方法
pageSizeChange (pageSize) {
this.searchForm.pageSize = pageSize
this.getData()
},
// 点击查看
handlePreview(id) {
let routeUrl = this.$router.resolve({
name: 'policyTopicsDetail',
params: { id }
})
window.open(routeUrl.href, '_blank')
},
onSearch () {
this.searchForm.page = 1
this.getData()
},
onClear () {
this.$set(this, 'searchForm', {})
this.getData()
},
handleCancel () {
this.show = false
},
handleDragIn () {
if (this.selectedList.length === 0) {
return this.$message.warning('请选择要带入的课题信息')
}
if (this.selectedList.length > 1) {
return this.$message.warning('最多可以带入一条课题信息')
}
this.$emit('dragIn', this.selectedList[0])
this.show = false
},
}
}
</script>
<style scoped lang="less">
/deep/ .demo-drawer{
.el-dialog__body{
padding: 0 20px;
}
.el-dialog__footer {
padding: 0 20px 20px;
}
}
</style>
@@ -21,6 +21,20 @@
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="课题名称" prop="topicName" label-width="150px" class="add-form-item">
<el-input v-model="form.topicName"
placeholder="请输入课题名称"
clearable></el-input>
<el-button
type="primary"
class="common-button-primary"
size="mini"
style="position:absolute;top: 10px;right: 0;"
@click="handleGetTopic"
>调取课题</el-button>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="会议主办单位" prop="meetingOrganizer" label-width="150px" class="add-form-item">
<el-input v-model="form.meetingOrganizer"
@@ -165,6 +179,7 @@
<el-button icon="el-icon-check" type="primary" @click="onSubmit" :loading="isSubmit">提交</el-button>
<el-button icon="el-icon-close" @click="onClose">取消</el-button>
</div>
<TopicsTable ref="TopicsTableRef" @dragIn="dragIn"></TopicsTable>
</el-drawer>
</template>
@@ -172,12 +187,15 @@
import CustomDatePick from '@/components/CustomFormComponents/DatePicker'
import CustomFile from '@/components/CustomFormComponents/File'
import CustomTextarea from '@/components/CustomFormComponents/Textarea'
import TopicsTable from "./TopicsTable";
export default {
name: "editDrawer",
components: {
CustomDatePick,
CustomFile,
CustomTextarea
CustomTextarea,
TopicsTable
},
props: {
dict: {
@@ -353,6 +371,12 @@ export default {
}
}
})
},
handleGetTopic () {
this.$refs.TopicsTableRef.open()
},
dragIn (val) {
this.$set(this.form, 'topicName', val.topicName)
}
}
}
@@ -7,18 +7,6 @@
v-model="form.meetingName"
:disabled="disabled">
</InputFormItem>
<DatePickerFormItem label="会议时间"
prop="meetingTime"
v-model="form.meetingTime"
:disabled="disabled">
</DatePickerFormItem>
<InputFormItem label="参会人员"
prop="participants"
v-model="form.participants"
:disabled="disabled">
</InputFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="会议主办单位"
prop="meetingOrganizer"
v-model="form.meetingOrganizer"
@@ -37,6 +25,31 @@
:disabled="disabled">
</UploadFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="课题名称"
prop="topicName"
v-model="form.topicName"
:disabled="disabled">
<el-button
type="primary"
class="common-button-primary"
size="mini"
style="height: 40px;margin-top: 5px;"
:disabled="disabled"
@click="handleGetTopic"
>调取课题</el-button>
</InputFormItem>
<DatePickerFormItem label="会议时间"
prop="meetingTime"
v-model="form.meetingTime"
:disabled="disabled">
</DatePickerFormItem>
<InputFormItem label="参会人员"
prop="participants"
v-model="form.participants"
:disabled="disabled">
</InputFormItem>
</el-col>
<el-col :span="24">
<TextareaFormItem label="会议主要内容"
prop="meetingContent"
@@ -45,6 +58,7 @@
</TextareaFormItem>
</el-col>
</el-row>
<TopicsTable ref="TopicsTableRef" @dragIn="dragIn"></TopicsTable>
</div>
</template>
@@ -53,13 +67,16 @@ import InputFormItem from '@/components/hzwlComponents/InputFormItem'
import DatePickerFormItem from '@/components/hzwlComponents/DatePickerFormItem'
import UploadFormItem from "@/components/hzwlComponents/UploadFormItem";
import TextareaFormItem from "@/components/hzwlComponents/TextareaFormItem";
import TopicsTable from '@/pages/policyRegulation/meeting/components/TopicsTable.vue'
export default {
name: "Basic",
components: {
InputFormItem,
DatePickerFormItem,
UploadFormItem,
TextareaFormItem
TextareaFormItem,
TopicsTable
},
props: {
form: {
@@ -74,6 +91,14 @@ export default {
type: Object,
required: true
}
},
methods: {
handleGetTopic () {
this.$refs.TopicsTableRef.open()
},
dragIn (val) {
this.$set(this.form, 'topicName', val.topicName)
}
}
}
</script>