| | |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 250px)'" @pagination="pagination"></lims-table> |
| | | :height="'calc(100vh - 250px)'" @pagination="pagination"></lims-table> |
| | | <!-- 新增/编辑 --> |
| | | <el-dialog :title="title" :visible.sync="addDlog" width="500px"> |
| | | <el-form :model="addForm" ref="addForm" :rules="addRules" label-position="right" label-width="120px"> |
| | | <el-form-item label="行业" prop="industryIds"> |
| | | <el-select v-model="addForm.industryIds" multiple filterable clearable collapse-tags placeholder="请选择行业" style="width: 100%"> |
| | | <el-option v-for="item in industryOptions" :key="item.id" :label="item.laboratoryName" :value="item.id" /> |
| | | <el-select v-model="addForm.industryIds" multiple filterable clearable collapse-tags placeholder="请选择行业" |
| | | style="width: 100%"> |
| | | <el-option v-for="item in industryOptions" :key="item.id" :label="item.laboratoryName" :value="item.id"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="标准编号" prop="code"> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="是否产品标准" prop="isProduct"> |
| | | <el-select v-model="addForm.isProduct" size="small" clearable placeholder="请选择" style="width: 100%"> |
| | | <el-option label="否" :value="0"> </el-option> |
| | | <el-option label="是" :value="1"> </el-option> |
| | | <el-option label="否" :value="0"></el-option> |
| | | <el-option label="是" :value="1"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="是否启用" prop="isUse"> |
| | | <el-select v-model="addForm.isUse" size="small" clearable placeholder="请选择" style="width: 100%"> |
| | | <el-option label="否" :value="0"> </el-option> |
| | | <el-option label="是" :value="1"> </el-option> |
| | | <el-option label="否" :value="0"></el-option> |
| | | <el-option label="是" :value="1"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="title === '新增'" label="附件"> |
| | | <el-upload ref="addUpload" action="#" :auto-upload="false" multiple :file-list="pendingFiles" |
| | | :on-change="pendingFileChange" :on-remove="pendingFileRemove" :before-upload="beforeFileUpload" |
| | | accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar"> |
| | | <el-button size="small" type="primary">选择附件</el-button><div slot="tip" class="el-upload__tip">支持多个附件,单个不超过10MB</div> |
| | | :on-change="pendingFileChange" :on-remove="pendingFileRemove" :before-upload="beforeFileUpload" |
| | | accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar"> |
| | | <el-button size="small" type="primary">选择附件</el-button> |
| | | <div slot="tip" class="el-upload__tip">支持多个附件,单个不超过200MB</div> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="标准附件" :visible.sync="attachmentDialog" width="760px"> |
| | | <el-upload v-if="currentMethod.id" :action="attachmentAction" :headers="uploadHeader" multiple :show-file-list="false" |
| | | :before-upload="beforeFileUpload" :on-success="attachmentUploadSuccess" |
| | | accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar"> |
| | | <el-upload v-if="currentMethod.id" :action="attachmentAction" :headers="uploadHeader" multiple |
| | | :show-file-list="false" |
| | | :before-upload="beforeFileUpload" :on-success="attachmentUploadSuccess" |
| | | accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar"> |
| | | <el-button size="small" type="primary">上传附件</el-button> |
| | | </el-upload> |
| | | <el-table :data="attachmentList" border size="small" style="margin-top:12px"> |
| | | <el-table-column label="文件名称" prop="fileName" min-width="280" /> |
| | | <el-table-column label="上传时间" prop="createTime" width="170" /> |
| | | <el-table-column label="操作" width="180"><template slot-scope="scope"><el-button type="text" @click="previewAttachment(scope.row)">预览</el-button><el-button type="text" @click="downloadAttachment(scope.row)">下载</el-button><el-button type="text" style="color:#f56c6c" @click="removeAttachment(scope.row)">删除</el-button></template></el-table-column> |
| | | <el-table-column label="文件名称" prop="fileName" min-width="280"/> |
| | | <el-table-column label="上传时间" prop="createTime" width="170"/> |
| | | <el-table-column label="操作" width="180"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="previewAttachment(scope.row)">预览</el-button> |
| | | <el-button type="text" @click="downloadAttachment(scope.row)">下载</el-button> |
| | | <el-button type="text" style="color:#f56c6c" @click="removeAttachment(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | <el-dialog title="预览附件" :visible.sync="previewDialog" fullscreen><file-preview v-if="previewDialog" :current-file="currentAttachment" :file-url="previewUrl" /></el-dialog> |
| | | <el-dialog title="预览附件" :visible.sync="previewDialog" fullscreen> |
| | | <file-preview v-if="previewDialog" :current-file="currentAttachment" :file-url="previewUrl"/> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | addStandardMethod, |
| | | upStandardMethod, selectIndustryOptions, selectAttachments, uploadAttachment, deleteAttachment, |
| | | } from "@/api/cnas/process/method/standardMethod"; |
| | | |
| | | export default { |
| | | name: 'StandardMethod', |
| | | components: { |
| | |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "行业", prop: "industryNames", width: "140px" }, |
| | | { label: "标准编号", prop: "code", width: "100px" }, |
| | | { label: "标准描述", prop: "name", width: "100px" }, |
| | | { label: "备注", prop: "remark" }, |
| | | { label: "资质", prop: "qualificationId" }, |
| | | {label: "行业", prop: "industryNames", width: "140px"}, |
| | | {label: "标准编号", prop: "code", width: "100px"}, |
| | | {label: "标准描述", prop: "name", width: "100px"}, |
| | | {label: "备注", prop: "remark"}, |
| | | {label: "资质", prop: "qualificationId"}, |
| | | { |
| | | label: "是否产品标准", |
| | | prop: "isProduct", |
| | |
| | | } |
| | | }, |
| | | }, |
| | | { label: "创建人", prop: "createUserName" }, |
| | | { label: "创建时间", prop: "createTime" }, |
| | | { label: "更新人", prop: "updateUserName" }, |
| | | { label: "更新时间", prop: "updateTime" }, |
| | | {label: "创建人", prop: "createUserName"}, |
| | | {label: "创建时间", prop: "createTime"}, |
| | | {label: "更新人", prop: "updateUserName"}, |
| | | {label: "更新时间", prop: "updateTime"}, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | |
| | | pendingFiles: [], attachmentDialog: false, attachmentList: [], currentMethod: {}, |
| | | previewDialog: false, currentAttachment: {}, previewUrl: '', |
| | | addRules: { |
| | | code: [{ required: true, message: "请输入标准编号", trigger: "blur" }], |
| | | name: [{ required: true, message: "请输入标准描述", trigger: "blur" }], |
| | | code: [{required: true, message: "请输入标准编号", trigger: "blur"}], |
| | | name: [{required: true, message: "请输入标准描述", trigger: "blur"}], |
| | | isProduct: [ |
| | | { required: true, message: "请选择是否产品标准", trigger: "change" }, |
| | | {required: true, message: "请选择是否产品标准", trigger: "change"}, |
| | | ], |
| | | isUse: [ |
| | | { required: true, message: "请选择是否启用", trigger: "change" }, |
| | | {required: true, message: "请选择是否启用", trigger: "change"}, |
| | | ], |
| | | }, |
| | | }; |
| | |
| | | methods: { |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | let param = {...this.queryParams, ...this.page}; |
| | | delete param.total; |
| | | selectStandardMethodList({ ...param }) |
| | | selectStandardMethodList({...param}) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | pagination({page, limit}) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | |
| | | }, |
| | | openAdd() { |
| | | this.title = "新增"; |
| | | this.addForm = { industryIds: [], isProduct: 1, isUse: 1 }; |
| | | this.addForm = {industryIds: [], isProduct: 1, isUse: 1}; |
| | | this.pendingFiles = []; |
| | | this.addDlog = true; |
| | | }, |
| | |
| | | this.qualificationList = arr; |
| | | }); |
| | | }, |
| | | loadIndustryOptions() { selectIndustryOptions().then(res => { this.industryOptions = res.data || []; }); }, |
| | | loadIndustryOptions() { |
| | | selectIndustryOptions().then(res => { |
| | | this.industryOptions = res.data || []; |
| | | }); |
| | | }, |
| | | submitProduct(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | |
| | | return uploadAttachment(formData, id); |
| | | })); |
| | | }).then(() => { |
| | | this.addLoading = false; |
| | | this.$message.success("提交成功"); |
| | | this.getList(); |
| | | this.addDlog = false; |
| | | }) |
| | | this.addLoading = false; |
| | | this.$message.success("提交成功"); |
| | | this.getList(); |
| | | this.addDlog = false; |
| | | }) |
| | | .catch((err) => { |
| | | this.addLoading = false; |
| | | }); |
| | |
| | | } |
| | | }); |
| | | }, |
| | | beforeFileUpload(file) { if (file.size > 10 * 1024 * 1024) { this.$message.error('上传文件不超过10MB'); return false; } return true; }, |
| | | pendingFileChange(file, files) { this.pendingFiles = files; }, |
| | | pendingFileRemove(file, files) { this.pendingFiles = files; }, |
| | | openAttachments(row) { this.currentMethod = row; this.attachmentDialog = true; this.loadAttachments(); }, |
| | | beforeFileUpload(file) { |
| | | if (file.size > 200 * 1024 * 1024) { |
| | | this.$message.error('上传文件不超过200MB'); |
| | | return false; |
| | | } |
| | | return true; |
| | | }, |
| | | pendingFileChange(file, files) { |
| | | this.pendingFiles = files; |
| | | }, |
| | | pendingFileRemove(file, files) { |
| | | this.pendingFiles = files; |
| | | }, |
| | | openAttachments(row) { |
| | | this.currentMethod = row; |
| | | this.attachmentDialog = true; |
| | | this.loadAttachments(); |
| | | }, |
| | | downloadAttachments(row) { |
| | | selectAttachments({ standardMethodId: row.id }).then(res => { |
| | | selectAttachments({standardMethodId: row.id}).then(res => { |
| | | const attachments = res.data || []; |
| | | if (!attachments.length) this.$message.warning('暂无附件'); |
| | | else if (attachments.length === 1) this.downloadAttachment(attachments[0]); |
| | |
| | | }); |
| | | }, |
| | | previewAttachments(row) { |
| | | selectAttachments({ standardMethodId: row.id }).then(res => { |
| | | selectAttachments({standardMethodId: row.id}).then(res => { |
| | | const attachments = res.data || []; |
| | | if (!attachments.length) this.$message.warning('暂无附件'); |
| | | else if (attachments.length === 1) this.previewAttachment(attachments[0]); |
| | | else this.openAttachments(row); |
| | | }); |
| | | }, |
| | | loadAttachments() { selectAttachments({ standardMethodId: this.currentMethod.id }).then(res => { this.attachmentList = res.data || []; }); }, |
| | | attachmentUploadSuccess(res) { if (res.code === 200) { this.$message.success('上传成功'); this.loadAttachments(); } }, |
| | | downloadAttachment(row) { this.$download.saveAs(row.fileUrl, row.fileName); }, |
| | | previewAttachment(row) { this.currentAttachment = row; this.previewUrl = /\.(jpg|jpeg|png|gif)$/i.test(row.fileUrl) ? this.javaApi + '/img/' + row.fileUrl : this.javaApi + '/word/' + row.fileUrl; this.previewDialog = true; }, |
| | | removeAttachment(row) { this.$confirm('是否删除该附件?', '提示', { type: 'warning' }).then(() => deleteAttachment({ id: row.id })).then(() => this.loadAttachments()); }, |
| | | loadAttachments() { |
| | | selectAttachments({standardMethodId: this.currentMethod.id}).then(res => { |
| | | this.attachmentList = res.data || []; |
| | | }); |
| | | }, |
| | | attachmentUploadSuccess(res) { |
| | | if (res.code === 200) { |
| | | this.$message.success('上传成功'); |
| | | this.loadAttachments(); |
| | | } |
| | | }, |
| | | downloadAttachment(row) { |
| | | this.$download.saveAs(row.fileUrl, row.fileName); |
| | | }, |
| | | previewAttachment(row) { |
| | | this.currentAttachment = row; |
| | | this.previewUrl = /\.(jpg|jpeg|png|gif)$/i.test(row.fileUrl) ? this.javaApi + '/img/' + row.fileUrl : this.javaApi + '/word/' + row.fileUrl; |
| | | this.previewDialog = true; |
| | | }, |
| | | removeAttachment(row) { |
| | | this.$confirm('是否删除该附件?', '提示', {type: 'warning'}).then(() => deleteAttachment({id: row.id})).then(() => this.loadAttachments()); |
| | | }, |
| | | // 删除 |
| | | handleDelete(row) { |
| | | this.$confirm("是否删除该条数据?", "提示", { |
| | |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | delStandardMethod({ id: row.id }).then((res) => { |
| | | delStandardMethod({id: row.id}).then((res) => { |
| | | this.$message.success("删除成功"); |
| | | this.getList(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | .catch(() => { |
| | | }); |
| | | }, |
| | | }, |
| | | computed: { attachmentAction() { return this.javaApi + '/standardMethod/uploadAttachment?standardMethodId=' + this.currentMethod.id; } }, |
| | | computed: { |
| | | attachmentAction() { |
| | | return this.javaApi + '/standardMethod/uploadAttachment?standardMethodId=' + this.currentMethod.id; |
| | | } |
| | | }, |
| | | }; |
| | | </script> |