| @ -0,0 +1,224 @@ | |||||
| <template> | |||||
| <div> | |||||
| <div class="edit-container"> | |||||
| <div class="edit-top"> | |||||
| <div class="left-top"> | |||||
| <img src="@/assets/images/back.png" @click="cancel()" /> | |||||
| <div class="left-title"></div> | |||||
| </div> | |||||
| <div class="center-top"> | |||||
| </div> | |||||
| <div class="right-top"> | |||||
| <el-button @click="cancel()">{{ $t('form.cancel') }}</el-button> | |||||
| <el-button type="primary" @click="handleExport" v-if="showExportBtn">{{ | |||||
| $t('page.business.study.studyMethod.daochu') }}</el-button> | |||||
| <el-button type="primary" @click="yuedu" v-if="form.zt == 0 && !showExportBtn">{{ | |||||
| $t('page.business.study.studyMethod.yuedu') }}</el-button> | |||||
| </div> | |||||
| </div> | |||||
| <div class="edit-content "> | |||||
| <div class="pdf-layout"> | |||||
| <div class="pdf-content"> | |||||
| <pdf id="pdfBox" :page="pageNum" :src="pdfSrc" @progress="loadedRatio = $event" | |||||
| @num-pages="totalPages = $event"></pdf> | |||||
| </div> | |||||
| <div class="btn-layout" v-if="totalPages"> | |||||
| <div class="pageNum">{{ pageNum }} / {{ totalPages }}</div> | |||||
| <el-button-group> | |||||
| <el-button round plain type="primary" icon="el-icon-arrow-left" size="mini" | |||||
| @click="prePage">上一页</el-button> | |||||
| <el-button round plain type="primary" size="mini" @click="nextPage">下一页<i | |||||
| class="el-icon-arrow-right el-icon--right"></i></el-button> | |||||
| </el-button-group> | |||||
| </div> | |||||
| <div ref="contentToPdf"> | |||||
| <div class="content-title"> | |||||
| <div class="line"></div> | |||||
| <div class="subtitle"> {{ $t('page.business.study.studyMethod.qmhz') }}</div> | |||||
| </div> | |||||
| <el-table v-loading="loading" :data="list"> | |||||
| <el-table-column :label="$t('page.business.study.studyMethod.qmr')" prop="qmrMc" /> | |||||
| <el-table-column :label="$t('page.business.study.studyMethod.qmsj')" prop="createTime" /> | |||||
| <el-table-column :label="$t('page.business.study.studyMethod.qmyy')" prop="qmyy" /> | |||||
| <el-table-column :label="$t('page.business.study.studyMethod.remark')" prop="remark" /> | |||||
| </el-table> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| <Yd ref="Yd" @callback="closeYd" /> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import { studyMethod_readList, studyMethod_export } from '@/api/business/study/studyMethod' | |||||
| import html2canvas from 'html2canvas'; | |||||
| import { PDFDocument } from 'pdf-lib' | |||||
| import { mapGetters } from 'vuex' | |||||
| import pdf from 'vue-pdf' | |||||
| import Yd from './Yd.vue' | |||||
| export default { | |||||
| name: "Xq", | |||||
| components: { pdf, Yd }, | |||||
| data() { | |||||
| return { | |||||
| showExportBtn: false, | |||||
| pdfSrc: '', | |||||
| open: false, | |||||
| pageNum: 1, | |||||
| loadedRatio: 0, // 当前页面的加载进度,范围是0-1 ,等于1的时候代表当前页已经完全加载完成了 | |||||
| totalPages: 0, //pdf总页数 | |||||
| form: {}, | |||||
| list: [], | |||||
| loading: false, | |||||
| } | |||||
| }, | |||||
| computed: { | |||||
| ...mapGetters([ | |||||
| 'nickName','name' | |||||
| ]), | |||||
| }, | |||||
| created() { | |||||
| }, | |||||
| methods: { | |||||
| yuedu() { | |||||
| this.$refs.Yd.show(this.form) | |||||
| }, | |||||
| cancel() { | |||||
| this.$emit('close') | |||||
| }, | |||||
| show(row) { | |||||
| this.showExportBtn = false | |||||
| this.open = true | |||||
| this.form = row | |||||
| this.pdfSrc = process.env.VUE_APP_FILE_DOMAIN + row.fileUrl | |||||
| this.getPageNum() | |||||
| }, | |||||
| showExport(row) { | |||||
| this.loading = true | |||||
| this.open = true | |||||
| this.showExportBtn = true | |||||
| this.form = row | |||||
| this.pdfSrc = process.env.VUE_APP_FILE_DOMAIN + row.fileUrl | |||||
| studyMethod_readList({ studyMethodId: row.id }).then(response => { | |||||
| this.list = response.data | |||||
| this.loading = false | |||||
| this.getPageNum() | |||||
| }) | |||||
| }, | |||||
| // 获取PDF总页数 | |||||
| getPageNum() { | |||||
| let loadingTask = pdf.createLoadingTask(this.pdfSrc); | |||||
| loadingTask.promise | |||||
| .then((pdf) => { | |||||
| this.totalPages = pdf.numPages; | |||||
| this.loadPdfFromUrl() | |||||
| // this.$nextTick(() => { | |||||
| // this.setWatermarkContent(); | |||||
| // }); | |||||
| }) | |||||
| .catch((err) => { | |||||
| this.$message.msgError("pdf加载失败"); | |||||
| }); | |||||
| }, | |||||
| // 上一页 | |||||
| prePage() { | |||||
| let page = this.pageNum; | |||||
| page = page > 1 ? page - 1 : this.totalPages; | |||||
| this.pageNum = page; | |||||
| window.scrollTo(0, 0); | |||||
| }, | |||||
| // 下一页 | |||||
| nextPage() { | |||||
| let page = this.pageNum; | |||||
| page = page < this.totalPages ? page + 1 : 1; | |||||
| this.pageNum = page; | |||||
| window.scrollTo(0, 0); | |||||
| }, | |||||
| closeYd(val) { | |||||
| this.form.zt = val | |||||
| }, | |||||
| handleExport() { | |||||
| studyMethod_export({studyMethodId: this.form.id}).then(response => { | |||||
| let fileUrl = response.data.fileUrl | |||||
| this.$download.saveAs(process.env.VUE_APP_FILE_DOMAIN + fileUrl, this.form.ffmc + ".pdf"); | |||||
| }) | |||||
| } | |||||
| } | |||||
| } | |||||
| </script> | |||||
| <style lang="scss"> | |||||
| .pdf-layout { | |||||
| display: flex; | |||||
| flex-direction: column; | |||||
| align-items: center; | |||||
| } | |||||
| .pdf-content { | |||||
| min-width: 1000px; | |||||
| min-height: 550px; | |||||
| position: relative; | |||||
| margin: 0 auto | |||||
| } | |||||
| .btn-layout { | |||||
| display: flex; | |||||
| flex-direction: column; | |||||
| align-items: center; | |||||
| } | |||||
| .content-edit { | |||||
| background: #f5f5f5; | |||||
| padding: 0; | |||||
| .edit-top { | |||||
| background: #fff; | |||||
| padding: 10px 20px; | |||||
| margin-bottom: 10px; | |||||
| display: flex; | |||||
| flex-direction: row; | |||||
| align-items: center; | |||||
| justify-content: space-between; | |||||
| .left-top { | |||||
| flex-shrink: 0; | |||||
| display: flex; | |||||
| flex-direction: row; | |||||
| align-items: center; | |||||
| img { | |||||
| height: 16px; | |||||
| margin-right: 20px; | |||||
| cursor: pointer; | |||||
| } | |||||
| .right-top {} | |||||
| } | |||||
| } | |||||
| .edit-content { | |||||
| background: #fff; | |||||
| padding: 20px; | |||||
| min-height: 500px; | |||||
| .edit-form { | |||||
| width: 800px; | |||||
| margin: 0 auto; | |||||
| } | |||||
| } | |||||
| } | |||||
| </style> | |||||
| @ -0,0 +1,205 @@ | |||||
| G<template> | |||||
| <div> | |||||
| <!-- 新增试验间弹窗 --> | |||||
| <el-dialog :title="$t('page.business.study.studyMethod.scff')" :visible.sync="open" width="400px" append-to-body | |||||
| :close-on-click-modal="false"> | |||||
| <el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('page.business.study.studyMethod.mc')" prop="ffmc"> | |||||
| <el-input type="text" v-model="form.ffmc" maxlength="20" | |||||
| :placeholder="$t('form.placeholderInput')" /> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-row> | |||||
| <!-- 方法 --> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('page.business.study.studyMethod.ff')" prop="fileUlr"> | |||||
| <el-upload class="upload-demo" :before-upload="handleBeforeUpload" :on-error="handleUploadError" | |||||
| :on-exceed="handleExceed" :on-success="handleUploadSuccess" :show-file-list="true" :headers="headers" | |||||
| :on-remove="handleRemove" :action="uploadFileUrl" accept=".pdf" :limit="1" :file-list="fileList"> | |||||
| <el-button size="small" type="primary">{{ $t('page.business.study.studyMethod.scwj') }}</el-button> | |||||
| <div slot="tip" class="el-upload__tip">{{ $t('page.business.study.studyMethod.wjm') }}</div> | |||||
| </el-upload> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('form.qmyy')" prop="qmyy"> | |||||
| <el-input type="text" :value="form.qmyy" maxlength="50" disabled | |||||
| :placeholder="$t('form.placeholderInput')" /> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('form.remark')" prop="qmbz"> | |||||
| <el-input type="textarea" v-model="form.qmbz" :rows="2" maxlength="500" | |||||
| :placeholder="$t('form.placeholderInput')"> | |||||
| </el-input> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('form.signer')"> | |||||
| <el-input type="text" v-model="nickName" maxlength="50" disabled | |||||
| :placeholder="$t('form.placeholderInput')" /> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('form.password')" prop="qmrmm"> | |||||
| <el-input type="password" v-model="form.qmrmm" maxlength="20" | |||||
| :placeholder="$t('form.placeholderInput')" /> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| </el-form> | |||||
| <div slot="footer" class="dialog-footer"> | |||||
| <el-button type="primary" @click="save">{{ $t('form.confirm') }}</el-button> | |||||
| <el-button @click="cancel">{{ $t('form.cancel') }}</el-button> | |||||
| </div> | |||||
| </el-dialog> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import { studyMethod_save } from "@/api/business/study/studyMethod" | |||||
| import { mapGetters } from 'vuex' | |||||
| import { getToken } from "@/utils/auth" | |||||
| export default { | |||||
| name: "XzSyj", | |||||
| components: {}, | |||||
| data() { | |||||
| return { | |||||
| open: false, | |||||
| form: { | |||||
| mc: '', | |||||
| fileUrl: '', | |||||
| fileName: '' | |||||
| }, | |||||
| uploadFileUrl: process.env.VUE_APP_BASE_API + "/file/upload", | |||||
| headers: { | |||||
| Authorization: "Bearer " + getToken(), | |||||
| }, | |||||
| fileList: [], | |||||
| rules: { | |||||
| ffmc: [{ | |||||
| required: true, | |||||
| message: ' ', | |||||
| trigger: 'blur' | |||||
| }], | |||||
| fileUrl: [{ | |||||
| required: true, | |||||
| message: ' ', | |||||
| trigger: 'blur' | |||||
| }], | |||||
| qmrmm: [{ | |||||
| required: true, | |||||
| message: ' ', | |||||
| trigger: 'blur' | |||||
| }], | |||||
| } | |||||
| } | |||||
| }, | |||||
| computed: { | |||||
| ...mapGetters([ | |||||
| 'nickName','name' | |||||
| ]), | |||||
| }, | |||||
| created() { | |||||
| }, | |||||
| methods: { | |||||
| cancel() { | |||||
| this.open = false | |||||
| }, | |||||
| reset() { | |||||
| this.form = { | |||||
| ffmc: null, | |||||
| fileUrl: '', | |||||
| fileName: '', | |||||
| qmrmm: null, | |||||
| kssyyl: '', | |||||
| qmyy: '上传文件', | |||||
| bjbz: '' | |||||
| } | |||||
| this.fileList = [] | |||||
| this.resetForm("form") | |||||
| }, | |||||
| show(study) { | |||||
| this.reset() | |||||
| this.form.studyId = study.id | |||||
| this.form.studySubjectId = study.studySubjectId | |||||
| this.open = true | |||||
| }, | |||||
| save() { | |||||
| this.$refs["form"].validate(valid => { | |||||
| if (valid) { | |||||
| studyMethod_save(this.form).then(response => { | |||||
| this.open = false | |||||
| this.$emit('callback') | |||||
| }) | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 上传前校检格式和大小 | |||||
| handleBeforeUpload(file) { | |||||
| let fileType = ['pdf'] | |||||
| // 校检文件类型 | |||||
| if (fileType) { | |||||
| const fileName = file.name.split('.') | |||||
| const fileExt = fileName[fileName.length - 1] | |||||
| const isTypeOk = fileType.indexOf(fileExt) >= 0 | |||||
| if (!isTypeOk) { | |||||
| this.$modal.msgError('文件格式不正确,请上传pdf格式文件!') | |||||
| return false | |||||
| } | |||||
| } | |||||
| // 校检文件名是否包含特殊字符 | |||||
| if (file.name.includes(',')) { | |||||
| this.$modal.msgError('文件名不正确,不能包含英文逗号!') | |||||
| return false | |||||
| } | |||||
| this.$modal.loading("正在上传文件,请稍候...") | |||||
| this.number++ | |||||
| return true | |||||
| }, | |||||
| // 文件个数超出 | |||||
| handleExceed() { | |||||
| this.$modal.msgError('上传文件数量不能超过1个!') | |||||
| }, | |||||
| // 上传失败 | |||||
| handleUploadError(err) { | |||||
| this.$modal.msgError("上传文件失败,请重试") | |||||
| this.$modal.closeLoading() | |||||
| }, | |||||
| // 上传成功回调 | |||||
| handleUploadSuccess(res, file) { | |||||
| console.log(res) | |||||
| if (res.code === 200) { | |||||
| this.form.fileUrl = res.data.url | |||||
| this.form.fileName = res.data.name | |||||
| this.fileList.push({ name: res.data.name, url: res.data.url }) | |||||
| this.$modal.closeLoading() | |||||
| } else { | |||||
| this.number-- | |||||
| this.$modal.closeLoading() | |||||
| this.$modal.msgError(res.msg) | |||||
| this.$refs.fileUpload.handleRemove(file) | |||||
| } | |||||
| }, | |||||
| handleRemove() { | |||||
| this.form.fileUrl = '' | |||||
| this.form.fileName = '' | |||||
| this.fileList = [] | |||||
| } | |||||
| } | |||||
| } | |||||
| </script> | |||||
| @ -0,0 +1,109 @@ | |||||
| <template> | |||||
| <div> | |||||
| <!-- 阅读弹窗 --> | |||||
| <el-dialog :title="$t('page.business.study.studyMethod.yuedu')" :visible.sync="open" width="500px" append-to-body | |||||
| :close-on-click-modal="false"> | |||||
| <el-form ref="form" :model="form" :rules="rules" label-width="120px"> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('form.qmyy')" prop="qmyy"> | |||||
| <el-input type="text" :value="form.qmyy" maxlength="50" disabled | |||||
| :placeholder="$t('form.placeholderInput')" /> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('form.remark')" prop="remark"> | |||||
| <el-input type="textarea" v-model="form.remark" :rows="5" maxlength="500" | |||||
| :placeholder="$t('form.placeholderInput')"> | |||||
| </el-input> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('form.signer')"> | |||||
| <el-input type="text" v-model="nickName" maxlength="50" disabled | |||||
| :placeholder="$t('form.placeholderInput')" /> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <el-form-item :label="$t('form.password')" prop="qmrmm"> | |||||
| <el-input type="password" v-model="form.qmrmm" maxlength="20" | |||||
| :placeholder="$t('form.placeholderInput')" /> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| </el-form> | |||||
| <div slot="footer" class="dialog-footer"> | |||||
| <el-button type="primary" @click="save">{{ $t('form.confirm') }}</el-button> | |||||
| <el-button @click="cancel">{{ $t('form.cancel') }}</el-button> | |||||
| </div> | |||||
| </el-dialog> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import { studyMethod_read } from "@/api/business/study/studyMethod" | |||||
| import { mapGetters } from 'vuex' | |||||
| export default { | |||||
| name: "Yd", | |||||
| data() { | |||||
| return { | |||||
| open: false, | |||||
| form: {}, | |||||
| rules: { | |||||
| qmrmm: [{ | |||||
| required: true, | |||||
| message: ' ', | |||||
| trigger: 'blur' | |||||
| }] | |||||
| } | |||||
| } | |||||
| }, | |||||
| computed: { | |||||
| ...mapGetters([ | |||||
| 'nickName','name' | |||||
| ]), | |||||
| }, | |||||
| created() { | |||||
| }, | |||||
| methods: { | |||||
| cancel() { | |||||
| this.open = false | |||||
| }, | |||||
| reset() { | |||||
| this.form = { | |||||
| studyMethodId: null, | |||||
| qmyy: '阅读', | |||||
| remark: '', | |||||
| qmrmm: null | |||||
| } | |||||
| this.resetForm("form") | |||||
| }, | |||||
| show(row) { | |||||
| this.reset() | |||||
| this.form.studyMethodId = row.id | |||||
| this.open = true | |||||
| }, | |||||
| save() { | |||||
| this.$refs["form"].validate(valid => { | |||||
| if (valid) { | |||||
| this.$modal.loading() | |||||
| studyMethod_read(this.form).then(response => { | |||||
| this.open = false | |||||
| this.$emit('callback', 1) | |||||
| this.$modal.closeLoading() | |||||
| }).finally(() => { | |||||
| this.$modal.closeLoading() | |||||
| }) | |||||
| } | |||||
| }) | |||||
| } | |||||
| } | |||||
| } | |||||
| </script> | |||||
| @ -0,0 +1,211 @@ | |||||
| <!-- 试验方法列表 --> | |||||
| <template> | |||||
| <div> | |||||
| <div class="tbbd-list" v-show="!showDetail"> | |||||
| <div class="tbbd-search"> | |||||
| <el-form :model="searchForm" ref="searchForm" class="search-area" :inline="true" label-width="88px"> | |||||
| <el-row> | |||||
| <el-col :span="24"> | |||||
| <!-- 方法名称 --> | |||||
| <el-form-item :label="$t('page.business.study.studyMethod.ffmc')" prop="ffmc"> | |||||
| <el-input v-model="searchForm.ffmc" :placeholder="$t('form.placeholderInput')" clearable | |||||
| @keyup.enter.native="search" /> | |||||
| </el-form-item> | |||||
| <!-- 创建人 --> | |||||
| <el-form-item :label="$t('page.business.study.studyMethod.cjr')" prop="cjr"> | |||||
| <el-input v-model="searchForm.cjr" :placeholder="$t('form.placeholderInput')" clearable | |||||
| @keyup.enter.native="search" /> | |||||
| </el-form-item> | |||||
| <!-- 创建时间 --> | |||||
| <el-form-item :label="$t('page.business.study.studyMethod.cjsj') + ':'"> | |||||
| <el-date-picker v-model="daterange" class="chat-histogram-daterange" type="daterange" | |||||
| range-separator="-" :start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')" | |||||
| value-format="yyyy-MM-dd" @change="search" style="width: 250px;" /> | |||||
| </el-form-item> | |||||
| <!-- 状态 --> | |||||
| <el-form-item :label="$t('page.business.study.studyMethod.zt') + ':'" prop="zt"> | |||||
| <el-select v-model="searchForm.zt" :placeholder="$t('form.placeholderSelect')" clearable | |||||
| @change="search"> | |||||
| <el-option :label="$t('page.business.study.studyMethod.yidu')" :value="1" /> | |||||
| <el-option :label="$t('page.business.study.studyMethod.weidu')" :value="0" /> | |||||
| </el-select> | |||||
| </el-form-item> | |||||
| <el-form-item> | |||||
| <el-button type="primary" icon="el-icon-search" @click="search">{{ $t('form.search') }}</el-button> | |||||
| <el-button icon="el-icon-refresh" @click="reset">{{ $t('form.reset') }}</el-button> | |||||
| </el-form-item> | |||||
| </el-col> | |||||
| </el-row> | |||||
| </el-form> | |||||
| </div> | |||||
| <div class="tbbd-content"> | |||||
| <el-row class="add-box"> | |||||
| <el-col> | |||||
| <el-button type="primary" icon="el-icon-plus" @click="add()" v-hasPermi="['business:studyMethod:upload']">{{ | |||||
| $t('page.business.study.studyMethod.scff') }}</el-button> | |||||
| </el-col> | |||||
| </el-row> | |||||
| <el-table v-loading="loading" :data="list"> | |||||
| <el-table-column :label="$t('page.business.study.studyMethod.ffmc')" prop="ffmc" /> | |||||
| <el-table-column :label="$t('page.business.study.studyMethod.cjsj')" prop="createTime" /> | |||||
| <el-table-column :label="$t('page.business.study.studyMethod.cjr')" prop="userMc" /> | |||||
| <el-table-column :label="$t('page.business.study.studyMethod.zt')" prop="status" align="center" width="100"> | |||||
| <template slot-scope="scope"> | |||||
| <span v-if="scope.row.zt != 0">{{ $t('page.business.study.studyMethod.yidu') }}</span> | |||||
| <span v-if="scope.row.zt === 0">{{ $t('page.business.study.studyMethod.weidu') }}</span> | |||||
| </template> | |||||
| </el-table-column> | |||||
| <el-table-column :label="$t('form.operate')" align="left" fixed="right" width="200"> | |||||
| <template slot-scope="scope"> | |||||
| <!-- 阅读 --> | |||||
| <el-button type="text" @click="detail(scope.row)" v-hasPermi="['business:studyMethod:read']">{{ | |||||
| $t('page.business.study.studyMethod.yuedu') }}</el-button> | |||||
| <!-- 导出 --> | |||||
| <el-button type="text" @click="showExport(scope.row)" v-hasPermi="['business:studyMethod:download']">{{ | |||||
| $t('page.business.study.studyMethod.daochu') }}</el-button> | |||||
| </template> | |||||
| </el-table-column> | |||||
| </el-table> | |||||
| <pagination v-show="total > 0" :total="total" :page.sync="searchForm.pageNum" :limit.sync="searchForm.pageSize" | |||||
| @pagination="getList" /> | |||||
| </div> | |||||
| </div> | |||||
| <!-- 新增 --> | |||||
| <Xz key="Xz" ref="Xz" @callback="search" /> | |||||
| <!-- 详情 --> | |||||
| <Xq key="Xq" ref="Xq" v-show="showDetail" @close="xqClose" /> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import { studyMethod_list } from '@/api/business/study/studyMethod' | |||||
| import Xz from "./syff/Xz"; | |||||
| import Xq from "./syff/Xq"; | |||||
| import { mapGetters } from 'vuex' | |||||
| import moment from "moment"; | |||||
| export default { | |||||
| name: 'SyffList', | |||||
| props: { | |||||
| study: { | |||||
| type: Object, | |||||
| default: () => { | |||||
| return {} | |||||
| } | |||||
| } | |||||
| }, | |||||
| computed: { | |||||
| ...mapGetters([ | |||||
| 'id' | |||||
| ]), | |||||
| }, | |||||
| watch: { | |||||
| study: { | |||||
| handler(newVal) { | |||||
| this.searchForm.studySn = newVal.sn | |||||
| this.searchForm.studyMc = newVal.name | |||||
| this.searchForm.studyId = newVal.id | |||||
| this.searchForm.studySubjectId = newVal.studySubjectId | |||||
| this.leader = newVal.leader | |||||
| this.search() | |||||
| }, | |||||
| immediate: true, | |||||
| deep: true | |||||
| } | |||||
| }, | |||||
| components: { Xz, Xq }, | |||||
| data() { | |||||
| return { | |||||
| showDetail: false, | |||||
| daterange: [], | |||||
| showFh: false, | |||||
| daterange: [], | |||||
| searchForm: { | |||||
| pageNum: 1, | |||||
| pageSize: 10, | |||||
| studyId: '', | |||||
| syjh: '', | |||||
| syqy: '', | |||||
| qyr: '', | |||||
| jsr: '', | |||||
| startDate: '', | |||||
| endDate: '' | |||||
| }, | |||||
| loading: false, | |||||
| total: 0, | |||||
| list: [], | |||||
| currentRow: null | |||||
| } | |||||
| }, | |||||
| created() { }, | |||||
| methods: { | |||||
| search() { | |||||
| this.searchForm.pageNum = 1 | |||||
| this.getList() | |||||
| }, | |||||
| reset() { | |||||
| this.resetForm("searchForm") | |||||
| this.search() | |||||
| }, | |||||
| getList() { | |||||
| if (this.daterange != null && this.daterange.length > 0) { | |||||
| this.searchForm.startDate = this.daterange[0] + " 00:00:00" | |||||
| this.searchForm.endDate = this.daterange[1] + " 23:59:59" | |||||
| } else { | |||||
| this.searchForm.startDate = '' | |||||
| this.searchForm.endDate = '' | |||||
| } | |||||
| this.loading = true | |||||
| studyMethod_list(this.searchForm).then(response => { | |||||
| this.list = response.rows | |||||
| this.total = response.total | |||||
| this.loading = false | |||||
| }) | |||||
| }, | |||||
| add() { | |||||
| this.$refs.Xz.show(this.study); | |||||
| }, | |||||
| detail(row) { | |||||
| this.showDetail = true | |||||
| this.$emit('showDetail', this.showDetail) | |||||
| this.$refs.Xq.show(row) | |||||
| }, | |||||
| showExport(row) { | |||||
| this.showDetail = true | |||||
| this.$emit('showDetail', this.showDetail) | |||||
| this.$refs.Xq.showExport(row) | |||||
| }, | |||||
| xqClose() { | |||||
| this.showDetail = false | |||||
| this.$emit('showDetail', this.showDetail) | |||||
| this.search() | |||||
| }, | |||||
| } | |||||
| } | |||||
| </script> | |||||
| <style lang="scss" scoped> | |||||
| .tbbd-list { | |||||
| .tbbd-search { | |||||
| background: #fff; | |||||
| padding: 20px; | |||||
| margin-bottom: 10px; | |||||
| .right-btn { | |||||
| text-align: right | |||||
| } | |||||
| } | |||||
| .tbbd-content { | |||||
| padding: 20px; | |||||
| background: #fff; | |||||
| .add-box { | |||||
| margin-bottom: 10px; | |||||
| } | |||||
| } | |||||
| } | |||||
| </style> | |||||