forked from ZhanLi/ScientificSystem
		
	
		
			
	
	
		
			309 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			309 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|  | <template> | ||
|  |   <div class="app-container"> | ||
|  |     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | ||
|  |       <el-form-item label="项目名称" prop="name"> | ||
|  |         <el-input | ||
|  |           v-model="queryParams.name" | ||
|  |           placeholder="请输入项目名称" | ||
|  |           clearable | ||
|  |           @keyup.enter.native="handleQuery" | ||
|  |         /> | ||
|  |       </el-form-item> | ||
|  |       <el-form-item label="项目创建时间" prop="createTime"> | ||
|  |         <el-date-picker clearable | ||
|  |                         v-model="queryParams.createTime" | ||
|  |                         type="date" | ||
|  |                         value-format="yyyy-MM-dd" | ||
|  |                         placeholder="请选择项目创建时间"> | ||
|  |         </el-date-picker> | ||
|  |       </el-form-item> | ||
|  |       <el-form-item> | ||
|  |         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | ||
|  |         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | ||
|  |       </el-form-item> | ||
|  |     </el-form> | ||
|  | 
 | ||
|  |     <el-row :gutter="10" class="mb8"> | ||
|  |       <el-col :span="1.5"> | ||
|  |         <el-button | ||
|  |           type="primary" | ||
|  |           plain | ||
|  |           icon="el-icon-plus" | ||
|  |           size="mini" | ||
|  |           @click="handleAdd" | ||
|  |           v-hasPermi="['scientific:project:add']" | ||
|  |         >新增</el-button> | ||
|  |       </el-col> | ||
|  |       <el-col :span="1.5"> | ||
|  |         <el-button | ||
|  |           type="success" | ||
|  |           plain | ||
|  |           icon="el-icon-edit" | ||
|  |           size="mini" | ||
|  |           :disabled="single" | ||
|  |           @click="handleUpdate" | ||
|  |           v-hasPermi="['scientific:project:edit']" | ||
|  |         >修改</el-button> | ||
|  |       </el-col> | ||
|  |       <el-col :span="1.5"> | ||
|  |         <el-button | ||
|  |           type="danger" | ||
|  |           plain | ||
|  |           icon="el-icon-delete" | ||
|  |           size="mini" | ||
|  |           :disabled="multiple" | ||
|  |           @click="handleDelete" | ||
|  |           v-hasPermi="['scientific:project:remove']" | ||
|  |         >删除</el-button> | ||
|  |       </el-col> | ||
|  |       <el-col :span="1.5"> | ||
|  |         <el-button | ||
|  |           type="warning" | ||
|  |           plain | ||
|  |           icon="el-icon-download" | ||
|  |           size="mini" | ||
|  |           @click="handleExport" | ||
|  |           v-hasPermi="['scientific:project:export']" | ||
|  |         >导出</el-button> | ||
|  |       </el-col> | ||
|  |     </el-row> | ||
|  | 
 | ||
|  |     <el-table v-loading="loading" :data="projectList" @selection-change="handleSelectionChange"> | ||
|  |       <el-table-column type="selection" width="55" align="center" /> | ||
|  |       <el-table-column label="项目名称" align="center" prop="name" /> | ||
|  |       <el-table-column label="项目创建时间" align="center" prop="createTime" width="180"> | ||
|  |         <template slot-scope="scope"> | ||
|  |           <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | ||
|  |         </template> | ||
|  |       </el-table-column> | ||
|  |       <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||
|  |         <template slot-scope="scope"> | ||
|  |           <el-button | ||
|  |             size="mini" | ||
|  |             type="text" | ||
|  |             icon="el-icon-edit" | ||
|  |             @click="handleUpdate(scope.row)" | ||
|  |             v-hasPermi="['scientific:project:edit']" | ||
|  |           >修改</el-button> | ||
|  |           <el-button | ||
|  |             size="mini" | ||
|  |             type="text" | ||
|  |             icon="el-icon-delete" | ||
|  |             @click="handleDelete(scope.row)" | ||
|  |             v-hasPermi="['scientific:project:remove']" | ||
|  |           >删除</el-button> | ||
|  |         </template> | ||
|  |       </el-table-column> | ||
|  |     </el-table> | ||
|  | 
 | ||
|  |     <pagination | ||
|  |       v-show="total>0" | ||
|  |       :total="total" | ||
|  |       :page.sync="queryParams.pageNum" | ||
|  |       :limit.sync="queryParams.pageSize" | ||
|  |       @pagination="getList" | ||
|  |     /> | ||
|  | 
 | ||
|  |     <!-- 添加或修改科研管理对话框 --> | ||
|  |     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | ||
|  |       <el-form ref="form" :model="form" :rules="rules" label-width="80px"> | ||
|  |         <el-form-item label="项目名称" prop="name"> | ||
|  |           <el-input v-model="form.name" placeholder="请输入项目名称" /> | ||
|  |         </el-form-item> | ||
|  |         <el-form-item label="项目类别" prop="category"> | ||
|  |           <el-input v-model="form.category" placeholder="请输入项目类别" /> | ||
|  |         </el-form-item> | ||
|  |         <el-form-item label="项目创建时间" prop="createTime"> | ||
|  |           <el-date-picker clearable | ||
|  |                           v-model="form.createTime" | ||
|  |                           type="datetime" | ||
|  |                           value-format="yyyy-MM-dd HH:mm:ss" | ||
|  |                           placeholder="请选择项目创建时间"> | ||
|  |           </el-date-picker> | ||
|  |         </el-form-item> | ||
|  |       </el-form> | ||
|  |       <div slot="footer" class="dialog-footer"> | ||
|  |         <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | ||
|  |         <el-button @click="cancel">取 消</el-button> | ||
|  |       </div> | ||
|  |     </el-dialog> | ||
|  |   </div> | ||
|  | </template> | ||
|  | 
 | ||
|  | <script> | ||
|  | import { listProject, getProject, delProject, addProject, updateProject } from "@/api/scientific/project"; | ||
|  | 
 | ||
|  | export default { | ||
|  |   name: "Project", | ||
|  |   data() { | ||
|  |     return { | ||
|  |       // 按钮loading
 | ||
|  |       buttonLoading: false, | ||
|  |       // 遮罩层
 | ||
|  |       loading: true, | ||
|  |       // 选中数组
 | ||
|  |       ids: [], | ||
|  |       // 非单个禁用
 | ||
|  |       single: true, | ||
|  |       // 非多个禁用
 | ||
|  |       multiple: true, | ||
|  |       // 显示搜索条件
 | ||
|  |       showSearch: true, | ||
|  |       // 总条数
 | ||
|  |       total: 0, | ||
|  |       // 科研管理表格数据
 | ||
|  |       projectList: [], | ||
|  |       // 弹出层标题
 | ||
|  |       title: "", | ||
|  |       // 是否显示弹出层
 | ||
|  |       open: false, | ||
|  |       // 查询参数
 | ||
|  |       queryParams: { | ||
|  |         pageNum: 1, | ||
|  |         pageSize: 10, | ||
|  |         projectId: undefined, | ||
|  |         handbookId: undefined, | ||
|  |         category: undefined, | ||
|  |         name: undefined, | ||
|  |         createTime: undefined | ||
|  |       }, | ||
|  |       // 表单参数
 | ||
|  |       form: {}, | ||
|  |       // 表单校验
 | ||
|  |       rules: { | ||
|  |         id: [ | ||
|  |           { required: true, message: "不能为空", trigger: "blur" } | ||
|  |         ], | ||
|  |         projectId: [ | ||
|  |           { required: true, message: "项目id不能为空", trigger: "blur" } | ||
|  |         ], | ||
|  |         handbookId: [ | ||
|  |           { required: true, message: "指南id不能为空", trigger: "blur" } | ||
|  |         ], | ||
|  |         category: [ | ||
|  |           { required: true, message: "项目类别不能为空", trigger: "blur" } | ||
|  |         ], | ||
|  |         name: [ | ||
|  |           { required: true, message: "项目名称不能为空", trigger: "blur" } | ||
|  |         ], | ||
|  |       }, | ||
|  |       handbookName: undefined, | ||
|  |     }; | ||
|  |   }, | ||
|  |   created() { | ||
|  |     this.getList(); | ||
|  |   }, | ||
|  |   methods: { | ||
|  |     /** 查询科研管理列表 */ | ||
|  |     getList() { | ||
|  |       this.loading = true; | ||
|  |       this.queryParams.handbookId = this.$route.query && this.$route.query.handbookId; | ||
|  |       this.handbookName = this.$route.query && this.$route.query.handbookname; | ||
|  | 
 | ||
|  |       listProject(this.queryParams).then(response => { | ||
|  |         this.projectList = response.rows; | ||
|  |         this.total = response.total; | ||
|  |         this.loading = false; | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 取消按钮
 | ||
|  |     cancel() { | ||
|  |       this.open = false; | ||
|  |       this.reset(); | ||
|  |     }, | ||
|  |     // 表单重置
 | ||
|  |     reset() { | ||
|  |       this.form = { | ||
|  |         id: undefined, | ||
|  |         projectId: undefined, | ||
|  |         handbookId: undefined, | ||
|  |         category: undefined, | ||
|  |         name: undefined, | ||
|  |         createTime: undefined | ||
|  |       }; | ||
|  |       this.resetForm("form"); | ||
|  |     }, | ||
|  |     /** 搜索按钮操作 */ | ||
|  |     handleQuery() { | ||
|  |       this.queryParams.pageNum = 1; | ||
|  |       this.getList(); | ||
|  |     }, | ||
|  |     /** 重置按钮操作 */ | ||
|  |     resetQuery() { | ||
|  |       this.resetForm("queryForm"); | ||
|  |       this.handleQuery(); | ||
|  |     }, | ||
|  |     // 多选框选中数据
 | ||
|  |     handleSelectionChange(selection) { | ||
|  |       this.ids = selection.map(item => item.id) | ||
|  |       this.single = selection.length!==1 | ||
|  |       this.multiple = !selection.length | ||
|  |     }, | ||
|  |     /** 新增按钮操作 */ | ||
|  |     handleAdd() { | ||
|  |       this.reset(); | ||
|  |       this.open = true; | ||
|  |       this.title = "添加科研管理"; | ||
|  |     }, | ||
|  |     /** 修改按钮操作 */ | ||
|  |     handleUpdate(row) { | ||
|  |       this.loading = true; | ||
|  |       this.reset(); | ||
|  |       const id = row.id || this.ids | ||
|  |       getProject(id).then(response => { | ||
|  |         this.loading = false; | ||
|  |         this.form = response.data; | ||
|  |         this.open = true; | ||
|  |         this.title = "修改科研管理"; | ||
|  |       }); | ||
|  |     }, | ||
|  |     /** 提交按钮 */ | ||
|  |     submitForm() { | ||
|  |       this.$refs["form"].validate(valid => { | ||
|  |         if (valid) { | ||
|  |           this.buttonLoading = true; | ||
|  |           if (this.form.id != null) { | ||
|  |             updateProject(this.form).then(response => { | ||
|  |               this.$modal.msgSuccess("修改成功"); | ||
|  |               this.open = false; | ||
|  |               this.getList(); | ||
|  |             }).finally(() => { | ||
|  |               this.buttonLoading = false; | ||
|  |             }); | ||
|  |           } else { | ||
|  |             addProject(this.form).then(response => { | ||
|  |               this.$modal.msgSuccess("新增成功"); | ||
|  |               this.open = false; | ||
|  |               this.getList(); | ||
|  |             }).finally(() => { | ||
|  |               this.buttonLoading = false; | ||
|  |             }); | ||
|  |           } | ||
|  |         } | ||
|  |       }); | ||
|  |     }, | ||
|  |     /** 删除按钮操作 */ | ||
|  |     handleDelete(row) { | ||
|  |       const ids = row.id || this.ids; | ||
|  |       this.$modal.confirm('是否确认删除科研管理编号为"' + ids + '"的数据项?').then(() => { | ||
|  |         this.loading = true; | ||
|  |         return delProject(ids); | ||
|  |       }).then(() => { | ||
|  |         this.loading = false; | ||
|  |         this.getList(); | ||
|  |         this.$modal.msgSuccess("删除成功"); | ||
|  |       }).catch(() => { | ||
|  |       }).finally(() => { | ||
|  |         this.loading = false; | ||
|  |       }); | ||
|  |     }, | ||
|  |     /** 导出按钮操作 */ | ||
|  |     handleExport() { | ||
|  |       this.download('scientific/project/export', { | ||
|  |         ...this.queryParams | ||
|  |       }, `project_${new Date().getTime()}.xlsx`) | ||
|  |     } | ||
|  |   } | ||
|  | }; | ||
|  | </script> |