|
|
- <template>
- <div class="template-table">
- <!-- <SP001 v-if="sn == 'SP0012'" />
- <SWYPFXRYPZB v-if="sn == 'SP001'" /> -->
- <component ref="templateComponent" :is="getTemplateComponent()" :templateData="templateData" :fillType="fillType">
- </component>
- </div>
- </template>
-
- <script>
- import { EventBus } from "@/utils/eventBus"
- //色谱
- import SP001 from './comps/sp/SP001';
- import SWYPFXRYPZB from "./comps/sp/SWYPFXRYPZB.vue";
- import SWYPFXCBYPZB from "./comps/sp/SWYPFXCBYPZB.vue";
- import SWYPBQGZYZBB from "./comps/sp/SWYPBQGZYZBB.vue";
- import SWYPNBGZYZBB from "./comps/sp/SWYPNBGZYZBB.vue";
- //色谱生物样品分析方法学样品制备表-10个类似
- import ZQDYJMD from "./comps/sp/SWYPFXFFXYPZBB/ZQDYJMD.vue";
- import QXWDX from "./comps/sp/SWYPFXFFXYPZBB/QXWDX.vue";
- import CBYHGZYWDX from "./comps/sp/SWYPFXFFXYPZBB/CBYHGZYWDX.vue";
- import Recovery from "./comps/sp/SWYPFXFFXYPZBB/Recovery.vue";
- import RXJZXY from "./comps/sp/SWYPFXFFXYPZBB/RXJZXY.vue";
- import JZXY from "./comps/sp/SWYPFXFFXYPZBB/JZXY.vue";
- import XZXHTYX from "./comps/sp/SWYPFXFFXYPZBB/XZXHTYX.vue";
- import ZDYBS from "./comps/sp/SWYPFXFFXYPZBB/ZDYBS.vue";
- import XSKKX from "./comps/sp/SWYPFXFFXYPZBB/XSKKX.vue";
- import CBYDB from "./comps/sp/SWYPFXFFXYPZBB/CBYDB.vue";
- import Demo from "./comps/sp/Demo.vue";
- //公用
- import SYWZPZJHB from "./comps/gy/SYWZPZJHB.vue";
- import MJYLQSQD from "./comps/gy/MJYLQSQD.vue";
-
- export default {
- name: "TemplateTable",
- components: {
- MJYLQSQD, SYWZPZJHB,
- SP001, SWYPFXRYPZB, Demo, SWYPFXCBYPZB, SWYPBQGZYZBB, SWYPNBGZYZBB,ZQDYJMD,QXWDX,CBYHGZYWDX,Recovery,RXJZXY,JZXY,XZXHTYX,ZDYBS,XSKKX,CBYDB
- },
- props: {
- sn: {
- type: String,
- default: '',
- },
- fillType: {
- type: String,
- default: 'preFill',
- },
- templateData: {
- type: Object,
- default: () => { },
- },
- emitName: {
- type: String,
- default: 'onModifyRecord',
- },
- },
- computed: {
-
- templateComponentMap() {
- if (!this.componentMap) {
- this.componentMap = {
- 'SP001': 'SWYPFXRYPZB',
- 'SP002': 'SWYPFXCBYPZB',
- 'SP003': 'SWYPBQGZYZBB',
- 'SP004': 'SWYPNBGZYZBB',
- 'SP008': 'ZQDYJMD',
- 'SP009': 'Recovery',
- 'SP010': 'QXWDX',
- 'SP011': 'CBYHGZYWDX',
- 'SP012': 'RXJZXY',
- 'SP013': 'JZXY',
- 'SP014': 'XZXHTYX',
- 'SP015': 'ZDYBS',
- 'SP016': 'XSKKX',
- 'SP017': 'CBYDB',
- 'SYWZPZJHB': 'SYWZPZJHB',
- 'MJYLQSQD': 'MJYLQSQD',
- }
- }
- return this.componentMap || "Demo"
- }
- },
- watch: {
- sn: {
- immediate: true,
- handler(v) {
- console.log(v, "sn")
- }
- },
- templateData: {
- immediate: true,
- deep: true,
- handler(v) {
- if (v) {
- if (v.zdxgjl) {
- this.zdxgjl = JSON.parse(v.zdxgjl) || [];
- }
- if (v.fhyjjl) {
- this.fhyjjl = JSON.parse(v.fhyjjl) || [];
- }
- if (v.zdgxjl) {
- this.fieldCheckObj = JSON.parse(v.zdgxjl) || {};
- console.log(this.fieldCheckObj,v.zdgxjl,"v.zdgxjl")
- }
- }
- }
- }
- },
- provide() {
- return {
- //分发给子组件的fillType
- templateFillType: this.fillType,
- getZdxgjl: () => this.zdxgjl ,
- getFhyjjl: () => this.fhyjjl,
- getFieldCheckObj: () => this.fieldCheckObj,
- //更新提交记录
- updateZdxgjl: (data) => {
- this.zdxgjl.unshift(data);
- },
- //更新复核意见记录
- updateFhyjjl: (data) => {
- this.fhyjjl.unshift(data);
- },
- //替换复核意见记录
- replaceFhyjjl: (data) => {
- this.fhyjjl = data;
- },
- //更新字段检查对象
- updateFieldCheckObj: (data) => {
- this.fieldCheckObj = { ...this.fieldCheckObj, ...data };
- },
-
- }
- },
- data() {
- return {
- info: {},
- zdxgjl: [],
- fhyjjl: [],
- fieldCheckObj: {},
- };
- },
- mounted() {
- EventBus.$on('onModifyRecord', (data) => {
- this.$emit(this.emitName, data)
- })
- },
- beforeDestroy() {
- // 记得移除监听,避免内存泄漏
- EventBus.$off('onModifyRecord')
- },
- methods: {
- async getFormData() {
- if(this.fillType === "actFill"){
- //检查是否有未填写的复核意见
- const flag = this.fhyjjl.every((item)=>!!item.content && !!item.reply)
- console.log(this.fhyjjl,flag,"flag")
- if(!flag){
- this.$message.error("疑问项还未回复,请回复后再提交");
- return;
- }
- }
- return await this.$refs.templateComponent.getFormData();
- },
- getResource() {
- return this.$refs.templateComponent.getResource();
- },
- getFilledFormData() {
- return this.$refs.templateComponent.getFilledFormData();
- },
- getTemplateComponent() {
- return this.templateComponentMap[this.sn]
- },
- }
- };
- </script>
- <style rel="stylesheet/scss" lang="scss">
- .template-table {
- background: #fff;
- padding: 10px 10px;
- width: 100%;
- }
- </style>
|