saveTemplate.vue 5.07 KB
<template>
	<div style="display: inline;" class="save-temp">
		<el-button type="text" size="mini" @click="openSavDialog()"><span>保存模板</span></el-button>
		<el-dialog custom-class="save-dialog" :visible.sync="dialogSavFormVisible"  title="保存模板" :modal-append-to-body="false"
      :lock-scroll="false" :show-close="true" :close-on-click-modal="false" :close-on-press-escape="false" v-dialogDrag @close="cancelDialog()">
      <el-form ref="dialogForm" :model="tdtmplDialog" label-width="120px" label-position="right" label-suffix=":" :rules="rules">
        <el-row>
          <el-col :span="22">
            <el-form-item label="模板名称" prop="tmplnam">
              <span>{{tdtmplDialog.tmpltyp}}-{{transName.toUpperCase()}}-{{tdtmplDialog.ownref}}-</span>
              <el-input style="width:60%;" v-model="tdtmplDialog.tmplnam" maxlength="60"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="22">
            <el-form-item label="模板类型" prop="tmpltyp">
              <el-radio-group v-model="tdtmplDialog.tmpltyp">
                <el-radio label="C" :disabled="isDisabled">公共</el-radio>
                <el-radio label="O">机构</el-radio>
                <el-radio label="P">个人</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
          <el-button @click="cancelDialog">取 消</el-button>
          <el-button type="primary" @click="submitDialog" :loading="loadingSavStatus">确 定</el-button>
      </div>
    </el-dialog>
	</div>
</template>
<script>
import TdTmplModel, { Pattern } from "~/page/Statics/TdTmpl/TdTmplModel.js";
import { saveInfo } from "~/service/manage/tdtmpl.js";
import Utils from "~/utils";
import Api from '~/service/Api';
export default {
	data() {
		return {
			tdtmplDialog: new TdTmplModel().data.TdTmpl,
			rules: Pattern,
			dialogSavFormVisible:false,
			loadingSavStatus: false,
		}
	},
	props: {
		rowData: {
			type: Object,
			default: () => {}
		}
	},
	computed: {
		isDisabled () {
			if (this.$store.state.UserContext.currentOrg && this.$store.state.UserContext.currentOrg.level === 0) {
        return false;
			} else {
        return true;
      }
		},
		transName () {
			return this.rowData.inifrm.toLowerCase()
		}
	},
	mounted() {
	},
	methods: {
		// 打开模态框
    openSavDialog(){
      this.tdtmplDialog.tmpltyp = 'O';
      this.dialogSavFormVisible = true;
		},
		getModuleRouter() {
			let router = this.$router
			let moduleRouter = ''
			router.options.routes.forEach((item1) => {
				if (item1.name == 'index') {
					item1.children.forEach((item2) => {
						if (item2.path == '/business') {
							for(let i = 0; i < item2.children.length; i++) {
								let item3 = item2.children[i]
								let path = item3.path.toLowerCase()
								if (path == this.transName) {
									moduleRouter = item3.meta.module || 'business'
									break;
								}
							}
						}
					})
				}
			})
			return moduleRouter;
		},
		initModelData () {
			return new Promise(async (resolve) => {
				this.tdtmplDialog.tmpltrn = this.transName
				let grp = this.rowData.objtyp.toLowerCase() + 'grp'
				let params = {
					transName: this.tdtmplDialog.tmpltrn,
					businessInr: this.rowData.inr,
					businessType: 'TRN',
					operation: 'view',
					[grp]: {
						rec: {}
					}
				};
				this.loadingSavStatus = true;
				let moduleRouter = this.getModuleRouter()
				const rtnmsg = await Api.post(`/${moduleRouter}/${this.transName}/init`, params);
				this.loadingSavStatus = false;
				if (rtnmsg.respCode === SUCCESS) {
					this.tdtmplDialog.tmpltxt = JSON.stringify(rtnmsg.data);
					resolve('1')
				}
			})
		},
		submitDialog () {
			this.$refs.dialogForm.validate((validated) => {
				console.log('111', validated)
        if(validated){
					this.loadingSavStatus = true;
					console.log('222')
					this.initModelData().then((resModel) => {
						if (resModel == '1') {
							saveInfo(this.tdtmplDialog).then((res)=>{
								if(res.respCode == 'AAAAAA'){
									this.$notify.success("保存成功!");
								} else {
									this.$notify.error(res.respMsg);
								}
								// 关闭弹框
								this.cancelDialog();
								this.loadingSavStatus = false;
							}).catch((err)=>{
								this.loadingSavStatus = false;
								this.$notify.error(err.respMsg);
							});
						}
					})
        } else {
          Utils.formValidateTips(this.$refs.dialogForm.fields)
        }
      })
		},
		// 【取消】按钮
    cancelDialog(){
      this.dialogSavFormVisible = false;
      this.tdtmplDialog.inr = '';
      this.tdtmplDialog.ownref = '';
      this.tdtmplDialog.tmplnam = '';
      this.tdtmplDialog.tmpltyp = '';
      this.tdtmplDialog.tmpltxt = '';
      this.tdtmplDialog.tmplbchs = [];
      this.tdtmplDialog.tmpltrn = '';
      this.tdtmplDialog.tmplusr = '';
      this.tdtmplDialog.tmpldat = '';
      this.$refs['dialogForm'].resetFields();
    },
	}
}
</script>
<style lang="less" scoped>
.save-temp {
	/deep/ .el-dialog__body {
		height: calc(100% - 110px)!important;
	}
}
</style>