|
|
- import moment from "moment";
- export default {
- dicts: ['business_pztj','business_cctj','business_nddw','business_tjdw','business_yxqdw','business_rqcz'],
- props: {
- templateData: {
- type: Object,
- default: () => { },
- },
- },
- watch: {
- templateData: {
- immediate: true,
- deep: true,
- handler(v) {
- if (v) {
- let n = { ...v };
- this.formData =n;
- if(v.resource){//试验试剂信息
- this.resource = JSON.parse(v.resource);
- }
- if (v.bdnr) {
- this.formData = { ...n, ...JSON.parse(v.bdnr) };
- }
- console.log(v,"formData from templateData")
- this.setTemplateData(n);
- }
- }
- }
- },
- data() {
- return {
- formData: {},
- templateDetail: {},
- resource: [],//试验试剂信息
- }
- },
- mounted() {
- // this.setTemplateStatus("actFill");
- this.setTemplateStatus(this.fillType);
- },
- unmounted() {
- this.setTemplateStatus("");
- this.setTemplateData({});
- },
- methods: {
- getResource(){
- return this.resource;
- },
- //统一校验form表单是否填写
- async validFormFields(refArr = []) {
- let result = {};
- const refs = refArr.map(ref => {
- const refData = this.$refs[ref].getFormData();
- return refData;
- });
- const validFormData = await Promise.all(refs).catch(err => {
- // this.$message.error(err);
- if(err.errorType && err.errorType === "step"){
- this.$message.error("请添加步骤");
- return
- }
- console.log(err,"err")
- this.$message.error("表单内容未填完,请填写后再提交");
- });
- if(validFormData){
- validFormData.forEach(item => {
- result = {...result,...item}
- })
- return result;
- }
- return false;
- },
- //试验配制条件options
- getDictOptions(dictType) {
- return this.dict.type[dictType] || [];
- },
- setTemplateStatus(status) {
- this.$store.commit('template/SET_TEMPLATE_STATUS', status)
- },
- setConditionOptions(options) {
- this.$store.commit('template/SET_CONDITION_OPTIONS', options)
- },
- setTemplateData(data) {
- this.$store.commit('template/SET_TEMPLATE_DATA', data)
- },
- //统一处理删除行
- deleteRow(index) {
- this.$refs.stepTableRef.deleteRow(index);
- },
- //获取版本号
- getVersionNum() {
- return this.formData.versionNum || "";
- },
- //统一处理blur事件,因为有效周期和过期日期是相关的,所以需要在有效周期失焦时更新过期日期
- onHandleBlur(fields) {
- const { key, effectivePeriodUnit, effectivePeriod, codeSTD, targetStartSolution } = fields;
- const { createTime } = this.formData;
- if (key === "effectivePeriod") {//统一处理有效周期失焦,计算失效事件,保证字段名不能变
- const start = moment(createTime);
- const end = start.add(Number(effectivePeriod), effectivePeriodUnit).format("YYYY-MM-DD HH:mm:ss");
- this.$refs.stepFormPackageRef.updateFormData("expireDate", end);
- } else if (key === "codeSTD") {//起始编号STD失焦时,更新stepDataSource
- const arr = Array.from({ length: codeSTD }, (item, index) => ({
- actSolutionVolumePrecision: 3,//小数点精度默认为3
- actSolutionConcentrationPrecision: 3,//小数点精度默认为3
- targetDiluentVolumePrecision: 3,//小数点精度默认为3
- targetStartSolutionVolumePrecision: 3,//小数点精度默认为3
- targetSolutionCode: `STD${Number(codeSTD) - index}`
- }));
- this.$refs.stepTableRef.updateDataSource(arr);
- } else if (key === "targetStartSolution") {//起始溶液体积失焦时,更新目标溶液预计浓度
- const arr = this.$refs.stepTableRef.getDataSource();
- arr.forEach((item, rowIndex) => {
- this.updateTargetStartSolutionVolume(rowIndex, item, targetStartSolution);
- })
- }
- },
- //统一处理table失焦事件
- onHandleTableBlur(params) {
- const { rowIndex, colKey, value, item } = params;
- console.log(rowIndex, colKey, value, item, "params")
- if (colKey === "targetSolutionVolume" || colKey === "targetSolutionConcentration" || colKey === "targetStartSolutionVolumePrecision" || colKey === "targetDiluentVolumePrecision") {
- const volume = this.$refs.stepFormPackageRef.getFormDataByKey("targetStartSolution") || 0;
- if (volume) {
- this.updateTargetStartSolutionVolume(rowIndex, item, volume);
- }
- }
- },
- //更新起始溶液体积时,更新目标溶液预计浓度
- updateTargetStartSolutionVolume(rowIndex, item, volume) {
- const precision = item.targetStartSolutionVolumePrecision || 0;
- const concentration = item.targetSolutionConcentration || 0;
- const targetVolume = item.targetSolutionVolume || 0;
- //目标溶液预计浓度:(目标溶液预计体积 乘以 起始溶液浓度)除以 起始溶液体积
- const result = ((concentration * targetVolume) / volume).toFixed(precision);
- this.$refs.stepTableRef.updateDataSourceByRowIndex(rowIndex, { targetStartSolutionVolume: result });
- if (targetVolume) {
- //预设稀释液体积:目标溶液预计体积 减去 源溶液预计体积;
- const precision1 = item.targetDiluentVolumePrecision || 0;
- const result1 = (targetVolume - result).toFixed(precision1);
- this.$refs.stepTableRef.updateDataSourceByRowIndex(rowIndex, { targetDiluentVolume: result1 });
- }
- }
-
- },
-
- }
|