1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291 |
- <template>
- <el-scrollbar style="height: 100%" ref="elscrollbar" id="message-container">
- <div class="NoiseTemplateWrapper TemplateWrapper knowledgeWrapper">
- <crumbs
- :title="'静态信息维护-' + title"
- class="topBack"
- :param="$route.params"
- linkTo="StaticInfo"
- ></crumbs>
- <div class="info-container">
- <el-form :rules="rules1" :model="form" label-width="160px" ref="groups1" size="mini">
- <div class="container_top">
- <div v-if="!isEdit" style="margin-right: 40px">
- <el-form-item label="选择标准术语:" prop="selectedTerm">
- <el-select
- v-model="form.selectedTerm"
- filterable
- remote
- clearable
- :loading="showDrop"
- loading-text="加载中..."
- @change="changeWord"
- @visible-change="handleVisible"
- value-key="id"
- @clear="handleClear"
- ref="termName"
- placeholder="搜索"
- :remote-method="searchTerms"
- >
- <el-option
- v-for="(term, idx) in terms"
- :key="idx"
- :label="
- term.name +
- (term.typeName ? '(' + term.typeName + ')' : '')
- "
- :value="term"
- :title="
- term.name +
- (term.typeName ? '(' + term.typeName + ')' : '')
- "
- ></el-option>
- </el-select>
- </el-form-item>
- </div>
- <el-form-item label="已选择标准术语:" label-width="160px">
- {{
- form.selectedTermName
- }}
- </el-form-item>
- </div>
- </el-form>
- <div class="tabs_box">
- <div class="tabs">
- <div
- class="tabs_pane"
- :style="
- tabActive == 'one'
- ? { color: '#fff', background: '#00c7da' }
- : ''
- "
- @click="tabActiveChange('one')"
- v-if="staticTabShow"
- >
- 静态信息
- <img
- @click.stop="handleStaticTab"
- src="@/images/tab_add.png"
- alt
- v-if="AssesComSHow && !AssesTabSHow"
- />
- <img
- v-if="AssesTabSHow && AssesComSHow"
- @click.stop="closeStaticTab"
- src="@/images/tab_close.png"
- alt
- />
- </div>
- <div
- class="tabs_pane"
- :style="
- tabActive == 'two'
- ? { color: '#fff', background: '#00c7da' }
- : ''
- "
- @click="tabActiveChange('two')"
- v-if="AssesTabSHow && AssesComSHow"
- >
- 评估内容
- <img
- v-if="!staticTabShow"
- @click.stop="handleAssesTab"
- src="@/images/tab_add.png"
- alt
- />
- <img
- v-if="staticTabShow"
- @click.stop="closeAssesTab"
- src="@/images/tab_close.png"
- alt
- />
- </div>
- </div>
- </div>
- <p class="line"></p>
- <div class="tab_box_left" v-show="tabActive == 'one'" v-if="staticTabShow">
- <el-form :rules="rules" :model="form" label-width="160px" ref="groups" size="mini">
- <div
- v-if="
- form.selectedTerm &&
- (form.typeId == 1 ||
- form.typeId == 3 ||
- form.typeId == 4 ||
- form.typeId == 5 ||
- form.typeId == 6)
- "
- >
- <el-form-item
- :label="titleChange"
- prop="titleChange"
- label-width="160px"
- style="margin-bottom: 20px"
- >
- <el-input v-model="form.titleChange"></el-input>
- </el-form-item>
- </div>
- <div v-if="!upload">
- <DevInfo
- v-for="(f, i) in form.prags"
- :key="(i + 1) * 10000 + showType"
- :data="f"
- :index="i"
- :total="form.prags.length"
- :isEdit="isEdit"
- :isCopy="isCopy"
- ref="subForm"
- @add="addParagraph(i)"
- @del="delParagraph"
- @reOrder="reOrder"
- :showType="showType"
- ></DevInfo>
- </div>
- <div v-if="upload">
- <el-form-item label="标题名称搜索:" prop="fileTitle" label-width="160px">
- <el-input v-model="form.fileTitle"></el-input>
- </el-form-item>
- </div>
- <div>
- <el-form-item
- v-if="upload"
- label="上传文件:"
- ref="upload"
- prop="fileList"
- label-width="160px"
- >
- <el-upload
- @mouseenter.native="handleMouseenter"
- @mouseleave.native="handleMouseleave"
- class="upload-demo"
- :action="config.urls.promptServer"
- name="upfile"
- :multiple="false"
- :limit="1"
- :on-preview="handlePreview"
- :on-remove="handleRemove"
- :before-upload="handleBeforeUpLoad"
- :before-remove="beforeRemove"
- :on-change="handleChange"
- :on-success="handleSuccess"
- :show-file-list="showFileList"
- :file-list="form.fileList"
- >
- <el-button size="small" type="primary" v-if="showUpLoad">点击上传</el-button>
- <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
- </el-upload>
- <span class="tipInfo" v-show="isShowTip">
- {{
- form.fileList[0] && form.fileList[0].name
- }}
- </span>
- <!-- <el-button size="small" type="primary" >点击上传</el-button> -->
- </el-form-item>
- </div>
- <el-form-item label-width="160px">
- <div class="uploadInfo" v-if="isSuccessUpload === 1">文件上传中,请稍等...</div>
- </el-form-item>
- </el-form>
- </div>
- <div v-if="AssesComSHow && AssesTabSHow" v-show="tabActive == 'two'">
- <AddAssess @scrollTo="scrollTo" :childScaleData="scaleData" ref="assessRef" />
- </div>
- </div>
- <div class="btn">
- <el-button type="primary" :disabled="saveDisable" @click="submitForm">确 定</el-button>
- </div>
- </div>
- </el-scrollbar>
- </template>
- <script>
- /**
- *
- */
- import api from '@api/knowledgeTree.js';
- import DevInfo from './DevInfo';
- import config from '@api/config';
- import $ from 'jquery';
- import AddAssess from './AddAssess';
- export default {
- name: 'AddDevKnow',
- components: {
- DevInfo,
- AddAssess
- },
- data() {
- return {
- staticTabShow: true,
- AssesTabSHow: true,
- staticComShow: true,
- AssesComSHow: false,
- toAssesTermId: null,
- scaleData: null,
- isFixedTop: true,
- isEdit: false,
- isCopy: false,
- title: '添加',
- termTypes: [],
- terms: [], //术语列表
- form: {
- conceptId: '', //术语id
- isTip: 0, //是否要覆盖,0不覆盖,1覆盖
- selectedTerm: '', //术语标签
- termType: '',
- typeId: '',
- selectedTermName: '',
- selectedTermType: '',
- // titleChange: '',
- fileList: [],
- name: '',
- prags: [
- {
- //单个段落相关
- title: '',
- content: '',
- isReason: 0,
- orderNo: 0,
- position: [],
- text: ''
- }
- ],
- fileTitle: '',
- titleChange: ''
- },
- rules1: {
- selectedTerm: [
- { required: true, message: '请选择标准术语', trigger: 'change' }
- ]
- },
- rules: {
- fileTitle: [
- { required: true, message: '请输入标题名称', trigger: 'change' },
- {
- validator: (rule, value, callback) => {
- if (value.trim().length > 30) {
- callback(new Error('标题名称不能超过30字'));
- } else {
- callback();
- }
- },
- trigger: 'change'
- }
- ],
- fileList: [
- { required: true, message: '请上传文件', trigger: 'change' }
- ],
- titleChange: [
- // {
- // validator: (rule, value, callback) => {
- // if (!value.trim()) {
- // callback(
- // new Error('请输入' + this.titleChange.replace(':', ''))
- // );
- // } else {
- // callback();
- // }
- // },
- // trigger: 'change'
- // },
- { max: 30, message: '标题最多30字', trigger: 'change' }
- ]
- },
- saveDisable: false, //保存按钮禁止点击
- showDrop: false, //下拉框显示文字bug1774
- config: config,
- showUpLoad: true,
- showFileList: false,
- upload: false,
- showConfirm: true,
- isSuccessUpload: 0, //是否上传成功 0: 不在上传 1: 上传过程中 2: 上传成功
- isShowTip: false,
- showType: -1, // 1 诊断 2 药品 3检验套餐 4检验细项 5检查 6检查子 7手术和操作 8量表
- editCount: -1, // 页面会否被编辑 >0被编辑 =0 未编辑
- startCount: -1,
- isSaveSuccess: false, // 是否保存成功
- tabActive: 'one'
- };
- },
- watch: {
- showType: {
- handler(newVal, oldVal) {
- if (newVal !== oldVal) {
- this.form.prags = this.form.prags.map(item => {
- return { ...item, position: [] };
- });
- }
- }
- },
- form: {
- handler(newName, oldName) {
- this.editCount++;
- },
- deep: true,
- immediate: true
- }
- },
- created: function() {
- const { isEdit, data, isCopy } = this.$route.params;
- if (isEdit || isCopy) {
- const loading = this.$loading({
- lock: true,
- text: 'Loading',
- spinner: 'el-icon-loading',
- background: 'rgba(0, 0, 0, 0.7)'
- });
- this.showType = data.type; // 编辑页确认显示类型
- this.isEdit = isEdit;
- this.isCopy = isCopy;
- this.title = isEdit ? '修改' : isCopy ? '复制' : '添加';
- (isEdit || isCopy) && this.changeWord(data);
- api
- .getBaseRecordById({ id: data.id })
- .then(res => {
- if (res.data.code == '0') {
- const data = res.data.data;
- console.log('dwadfesvgeosboau13131213h', data.scale);
- if (data.type === 8) {
- this.AssesComSHow = true;
- if (data.scale) {
- this.scaleData = data.scale;
- this.AssesTabSHow = true;
- } else {
- this.AssesTabSHow = false;
- }
- }
- if (this.form.typeId === 82 || this.form.typeId === 83) {
- // console.log('data',data)
- this.form.fileList =
- data &&
- data.map(it => {
- return JSON.parse(it.content);
- });
- this.showFileList = true;
- this.showUpLoad = false;
- } else {
- this.conceptId = data.id;
- this.form.typeId = data.type;
- this.form.name = data.name;
- this.form.titleChange =
- data.type == 1
- ? data.clinicalPathwayName
- : data.type == 3 ||
- data.type == 4 ||
- data.type == 5 ||
- data.type == 6
- ? data.noticeName
- : '';
- this.form.selectedTermName =
- data.name + (data.typeName ? '(' + data.typeName + ')' : '');
- this.form.selectedTerm =
- data.name + (data.typeName ? '(' + data.typeName + ')' : '');
- if (isCopy) {
- this.handleClear();
- }
- if (data.details.length) {
- this.form.prags =
- data &&
- data.details.map(it => {
- return {
- title: it.title,
- position: it.contentType?it.contentType.split(","):[],
- content: it.content.replace(
- /{imageUrlPrefix}/g,
- config.imgHost
- ),
- // isReason:it.isReason,
- text: it.text,
- disabled: true
- };
- });
- } else {
- this.staticTabShow = false;
- this.tabActiveChange('two');
- }
- }
- }
- setTimeout(() => {
- loading.close();
- }, 200);
- })
- .catch(error => {
- loading.close();
- if (error.code === '900010001') {
- return false;
- }
- console.log(error);
- });
- }
- setTimeout(() => {
- this.startCount = this.editCount;
- }, 500);
- },
- mounted() {},
- beforeRouteLeave(to, from, next) {
- // if (this.isSuccessUpload === 1) {
- // this.$confirm('文件正在上传,是否确定返回?', '提示', {
- // confirmButtonText: '确定',
- // cancelButtonText: '取消',
- // cancelButtonClass: 'cancel',
- // type: 'warning'
- // })
- // .then(() => {
- // next();
- // })
- // .catch(() => {});
- // // this.warning('还有未保存的文件,是否确定返回?');
- // } else if (this.isSuccessUpload === 2) {
- // this.$confirm('还有未保存的文件,是否确定返回?', '提示', {
- // confirmButtonText: '确定',
- // cancelButtonText: '取消',
- // cancelButtonClass: 'cancel',
- // type: 'warning'
- // })
- // .then(() => {
- // next();
- // })
- // .catch(() => {});
- // } else {
- // next();
- // }
- if (this.startCount !== this.editCount && !this.isSaveSuccess) {
- this.$alert('还有未保存的内容,确定要退出当前页面吗?', '提示', {
- confirmButtonText: '确定',
- // cancelButtonText: '取消',
- // cancelButtonClass: 'leaveBtn',
- // customClass: 'leaveBox',
- type: 'warning'
- })
- .then(() => {
- next();
- })
- .catch(() => {});
- } else {
- next();
- }
- },
- methods: {
- scrollTo(dom) {
- var div = this.$refs['elscrollbar'].$refs['wrap'];
- if (dom >= 0) {
- div.scrollTop += dom - 120;
- } else {
- div.scrollTop -= Math.abs(dom) + 120;
- }
- },
- handleStaticTab() {
- this.AssesTabSHow = true;
- this.AssesComSHow = true;
- this.tabActiveChange('two');
- },
- handleAssesTab() {
- this.staticTabShow = true;
- this.form.prags = [
- {
- //单个段落相关
- title: '',
- content: '',
- isReason: 0,
- orderNo: 0,
- position: [],
- text: ''
- }
- ];
- this.tabActiveChange('one');
- },
- closeStaticTab() {
- this.$alert('确定要删除该标签?删除后该标签内容将会被清空!', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- // cancelButtonClass: 'leaveBtn',
- // customClass: 'leaveBox',
- type: 'warning'
- })
- .then(() => {
- this.staticTabShow = false;
- this.tabActiveChange('two');
- })
- .catch(() => {});
- },
- closeAssesTab() {
- this.$alert('确定要删除该标签?删除后该标签内容将会被清空!', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- // cancelButtonClass: 'leaveBtn',
- // customClass: 'leaveBox',
- type: 'warning'
- })
- .then(() => {
- this.AssesTabSHow = false;
- // this.AssesComSHow = false;
- this.tabActiveChange('one');
- })
- .catch(() => {});
- },
- tabActiveChange(type) {
- this.tabActive = type;
- if (type == 'two') {
- setTimeout(() => {
- this.$refs.assessRef.resizeTable();
- }, 200);
- }
- },
- handleClear() {
- this.form.selectedTermName = '';
- this.form.selectedTerm = '';
- this.form.titleChange = '';
- },
- handleMouseenter() {
- if (this.form.fileList.length !== 0) {
- this.isShowTip = true;
- }
- },
- handleMouseleave() {
- this.isShowTip = false;
- },
- changeWord(newVal) {
- if (newVal.typeName == '量表') {
- this.AssesComSHow = true;
- } else {
- this.staticTabShow = true;
- this.AssesComSHow = false;
- this.tabActive = 'one';
- }
- this.toAssesTermId = newVal.id;
- this.showType = newVal.type || -1;
- const name = newVal.name;
- const typeName = newVal.typeName;
- const type = newVal.type;
- this.form.selectedTermName =
- name + (typeName ? '(' + typeName + ')' : '');
- // this.form.selectedTerm = name + (typeName ? '(' + typeName + ')' : '');
- this.form.name = name;
- this.form.fileList = [];
- this.showFileList = false;
- this.form.typeId = type || '';
- this.showUpLoad = true;
- this.titleChange =
- type == 1
- ? '临床路径标题:'
- : type == 3 || type == 4 || type == 5 || type == 6
- ? '注意事项标题:'
- : '';
- this.form.fileTitle = '';
- if (newVal.typeId === 82 || newVal.typeId === 83) {
- this.upload = true;
- this.form.fileTitle = newVal.title;
- } else {
- this.upload = false;
- }
- },
- handleVisible(flag) {
- if (!flag) {
- this.terms = [];
- }
- },
- reOrder(isUp, i) {
- // isUp: 1 上升 0 下降
- let div = this.$refs['elscrollbar'].$refs['wrap'];
- let temp = {},
- it = {};
- if (isUp === 1) {
- if (i === 0) {
- this.warning('已经是第一个,不能再升啦!');
- return;
- }
- temp = Object.assign(this.form.prags[i - 1]);
- it = Object.assign(this.form.prags[i]);
- this.form.prags.splice(i - 1, 2, it, temp);
- this.$nextTick(() => {
- div.scrollTop = this.$refs.subForm[i - 1].$el.offsetTop - 48;
- });
- } else {
- if (i === this.form.prags.length - 1) {
- this.warning('已经是最后一个,不能再降啦!');
- return;
- }
- temp = Object.assign(this.form.prags[i + 1]);
- it = Object.assign(this.form.prags[i]);
- this.form.prags.splice(i, 2, temp, it);
- }
- },
- addParagraph(i) {
- this.form.prags.splice(i + 1, 0, {
- title: '',
- content: '',
- isReason: 0,
- position: [],
- text: ''
- });
- //添加段落光标自动落到新增的段落中
- setTimeout(() => {
- this.$refs.subForm[i + 1].$el
- .getElementsByClassName('el-input__inner')[0]
- .focus();
- });
- },
- delParagraph(i) {
- if (this.form.prags.length == 1) {
- this.warning('只剩一个段落,不能再删啦!');
- return;
- }
- this.showConfirmDialog('确定要删除该段落?', () => {
- this.form.prags.splice(i, 1);
- });
- },
- back() {
- this.$router.go(-1);
- },
- searchTerms(query) {
- if (!query.trim()) {
- this.form.terms = [];
- return;
- }
- //搜索术语列表
- this.showDrop = true;
- api
- .staticKnowledgeBaseInfo({ inputStr: query.trim(), types: [0] })
- .then(res => {
- this.showDrop = false;
- if (res.data.code === '0') {
- this.terms = res.data.data;
- } else {
- this.warning('数据获取失败');
- }
- });
- },
- mapStringToNum(str) {
- return str.split(',').map(it => {
- return +it;
- });
- },
- // 额外的表单检验
- formVal() {
- let positiontemp = this.form.prags.map(item => {
- return [...item.position];
- });
- let positionArr = positiontemp.reduce(function(a, b) {
- return a.concat(b);
- }); // 所有被选中的值集合
- // console.log(positionArr, 'positionArr');
- // console.log(this.showType, '当前页的显示类型');
- let isVisFlag = positionArr.some(item => item === '2');
- let isDiagFlag = positionArr.some(item => item === '3');
- // console.log(isVisFlag, 'isVisFlag是否显示');
- if (
- (this.showType == 3 ||
- this.showType == 4 ||
- this.showType == 5 ||
- this.showType == 6) &&
- isVisFlag
- ) {
- // console.log("进入校验");
- //若医学术语为检验/检查,且内容类型选择了注意事项,此时“注意事项标题”是必填项
- this.$refs.groups && this.$refs.groups.clearValidate();
- this.rules.titleChange.push({
- required: true,
- message: '请输入注意事项标题',
- trigger: 'change'
- });
- this.$refs.groups && this.$refs.groups.validateField('titleChange');
- this.$refs.groups && this.$refs.groups.validateField('selectedTerm');
- this.rules.titleChange = this.rules.titleChange.slice(0, 1);
- if (this.form.titleChange.trim() !== '') {
- // console.log('内容不为空');
- return true;
- } else {
- var div = this.$refs['elscrollbar'].$refs['wrap'];
- this.$nextTick(() => {
- div.scrollTop = 0;
- });
- return false;
- }
- // return;
- } else if (isDiagFlag && this.showType == 1) {
- // 若医学术语为诊断,且内容类型选择了临床路径,此时“临床路径标题”是必填项
- this.$refs.groups && this.$refs.groups.clearValidate();
- this.rules.titleChange.push({
- required: true,
- message: '请输入临床路径标题',
- trigger: 'change'
- });
- this.$refs.groups && this.$refs.groups.validateField('titleChange');
- this.$refs.groups && this.$refs.groups.validateField('selectedTerm');
- this.rules.titleChange = this.rules.titleChange.slice(0, 1);
- if (this.form.titleChange.trim() !== '') {
- // console.log('内容不为空');
- return true;
- } else {
- var div = this.$refs['elscrollbar'].$refs['wrap'];
- this.$nextTick(() => {
- div.scrollTop = 0;
- });
- return false;
- }
- }
- },
- async submitForm() {
- let all = [];
- let goOn = true,
- it = null;
- let assessRule = false;
- let viewHeight = 0; // 定位到表单校验的高度
- let viewHeightArr = []; // 表单校验出错高度的所有数组
- let outIsVia = true; // 外层验证是否通过
- let fvalidate1 = new Promise((resolve, reject) => {
- //wanglei 添加promise
- this.$refs.groups1.validate((valid, object) => {
- if (valid) {
- resolve(true);
- } else {
- reject('top', object);
- return false;
- }
- });
- });
- all.push(fvalidate1);
- if (this.staticTabShow) {
- if (this.isSuccessUpload === 1) {
- this.warning('文件上传中,请稍等');
- return;
- }
- let flagVal = this.formVal(); // 额外的表单校验
- if (flagVal === false) return;
- //验证外层表单
- let fvalidate = new Promise((resolve, reject) => {
- //wanglei 添加promise
- this.$refs.groups &&
- this.$refs.groups.validate((valid, object) => {
- if (valid) {
- resolve(true);
- } else {
- reject('f', object);
- return false;
- }
- });
- });
- // end....
- //验证段落表单
- // return;
- all.push(fvalidate);
- if (this.form.typeId !== 82 && this.form.typeId !== 83) {
- for (let i = 0; i < this.$refs.subForm.length; i++) {
- all.push(
- new Promise((resolve, reject) => {
- it = this.$refs.subForm[i];
- // viewHeight += it.$el.getBoundingClientRect().top;
- it.$refs.form.validate((valid, object) => {
- if (!valid) {
- reject('f', object);
- goOn = false;
- viewHeightArr.push(it.$el);
- } else {
- resolve(true);
- }
- });
- })
- );
- }
- }
- }
- // 表单验证
- if (this.$refs.assessRef) {
- all.push(...this.$refs.assessRef.assessCommit());
- }
- // 批量处理Promise返回
- let transferedPromises = promises => {
- // 返回一个处理之后的promise数组
- return promises.map(promise => {
- return promise.then(res => res).catch(err => err);
- });
- };
- let promiseArr = transferedPromises(all);
- await Promise.all(promiseArr).then(resArr => {
- let cErrIndex = resArr.findIndex(item => item.type == 'c');
- let fErrIndex = resArr.findIndex(item => item == 'f');
- let topErrIndex = resArr.findIndex(item => item == 'top');
- if (topErrIndex != -1) {
- outIsVia = false;
- var div = this.$refs['elscrollbar'].$refs['wrap'];
- this.$nextTick(() => {
- div.scrollTop = 0;
- });
- } else if (cErrIndex != -1 && fErrIndex != -1) {
- if (this.staticTabShow) {
- goOn = false;
- }
- this.tabActive = 'one';
- this.$message({
- showClose: true,
- message: `"静态信息"和"评估内容"标签内有未填写项目,请填写完整或者删除该标签!`,
- type: 'warning'
- });
- } else if (cErrIndex != -1 && fErrIndex == -1) {
- this.tabActive = 'two';
- this.$message({
- showClose: true,
- message: `"评估内容"标签内有未填写项目,请填写完整或者删除该标签!`,
- type: 'warning'
- });
- let cErrArr = resArr.filter(item => item.type == 'c');
- if (cErrArr) {
- cErrArr = Object.keys(cErrArr[0].object);
- }
- this.$nextTick(() => {
- setTimeout(() => {
- let domTop = this.$refs.assessRef.getDom(cErrArr[0]);
- var div = this.$refs['elscrollbar'].$refs['wrap'];
- if (domTop >= 0) {
- div.scrollTop += domTop - 120;
- } else {
- div.scrollTop -= Math.abs(domTop) + 120;
- }
- }, 100);
- });
- } else if (cErrIndex == -1 && fErrIndex != -1&&this.form.typeId=='8') {
- this.tabActive = 'one';
- this.$message({
- showClose: true,
- message: `"静态信息"标签内有未填写项目,请填写完整或者删除该标签!`,
- type: 'warning'
- });
- } else {
- assessRule = true;
- }
- });
- if (this.staticTabShow && !goOn) {
- setTimeout(() => {
- var div = this.$refs['elscrollbar'].$refs['wrap'];
- if (outIsVia) {
- // 外层校验通过,跳转至下层校验具体位置
- let sTop = viewHeightArr[0].getBoundingClientRect().top;
- this.$nextTick(() => {
- if (sTop >= 0) {
- div.scrollTop += sTop - 120;
- } else {
- div.scrollTop -= Math.abs(sTop) + 120;
- }
- });
- } else {
- // 外层校验没通过,页面滚动到顶部
- this.$nextTick(() => {
- div.scrollTop = 0;
- });
- }
- }, 200);
- return;
- }
- if (!assessRule) return;
- //通过必填验证,提交保存
- let param = [];
- // const item = this.form.prags;
- if (this.form.typeId === 82 || this.form.typeId === 83) {
- if (this.form.fileList.length === 0) {
- this.warning('文件未上传,不存储数据');
- return;
- }
- param.push(
- Object.assign(
- {},
- {
- position: this.form.typeId === 82 ? '8' : '9',
- conceptId: this.form.conceptId,
- title: this.form.fileTitle,
- orderNo: 0,
- content: JSON.stringify(this.form.fileList[0])
- }
- )
- );
- } else {
- // if (this.staticTabShow) {
- // }
- let data = this.form.prags,
- tempArr = [],
- paramsAll = {},
- types = this.form.typeId;
- for (let i = 0; i < data.length; i++) {
- let obj = {};
- obj.content = data[i].content;
- obj.text = data[i].text;
- obj.conceptId = data[i].conceptId;
- obj.orderNo = i;
- obj.title = data[i].title;
- obj.contentType = data[i].position.join(',');
- tempArr.push(obj);
- }
- paramsAll.clinicalPathwayName = types == 1 ? this.form.titleChange : '';
- paramsAll.id = this.conceptId;
- paramsAll.name = this.form.name;
- paramsAll.noticeName =
- types == 3 || types == 4 || types == 5 || types == 6
- ? this.form.titleChange
- : '';
- paramsAll.type = this.form.typeId;
- if (this.staticTabShow) {
- paramsAll.details = tempArr;
- } else {
- paramsAll.details = null;
- }
- param = paramsAll;
- if (!param.details) param.details = [];
- param.details.forEach(item => {
- let regExp = new RegExp(config.imgHost, 'g');
- item.content = item.content.replace(regExp, '{imageUrlPrefix}');
- });
- // 评估内容的数据
- param.scale = {};
- console.log(
- 'this.AssesComSHow',
- this.AssesComSHow,
- 'AssesTabSHow',
- this.AssesTabSHow
- );
- if (this.AssesComSHow && this.AssesTabSHow) {
- const assessParam = this.$refs.assessRef.formtParams();
- param.scale = assessParam;
- param.scale.conceptId = this.toAssesTermId;
- const userInfo = localStorage.getItem('userLoginDTO');
- param.scale.modifier = userInfo.linkman;
- }
- }
- // return;
- // this.showSaveDialog(param,'是否'+(this.isEdit?'修改':'保存')+'该静态知识?');
- console.log('param-------');
- console.dir(param);
- // return;
- if (!this.isEdit) {
- // 新增页面
- this.saveDisable = true;
- this.sendSaveOrEdit(param);
- return;
- }
- this.showSaveDialog(
- param,
- '<div><p style="color: #333333">确定保存修改内容?</p><p style="color: #D70A25">保存后将覆盖原有数据,且原有数据无法恢复。</p></div>'
- );
- },
- showSaveDialog(param, msg) {
- this.showConfirmDialog(msg, () => {
- this.saveDisable = true; //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
- this.sendSaveOrEdit(param);
- });
- },
- //保存编辑 接口
- sendSaveOrEdit(param) {
- this.isCopy && (param.id = undefined);
- param.source = 1; //0:医院端 1:云平台
- api
- .saveBaseOrUpdateRecord(param)
- .then(res => {
- if (res.data.code === '0') {
- this.isSuccessUpload = 0; // 修改文件上传状态为0
- this.warning(res.data.msg || '保存成功', 'success');
- this.isSaveSuccess = true; // 保存成功,可正常退出
- //返回带搜索条件的首页
- this.$router.push({
- name: 'StaticInfo',
- params: Object.assign({}, this.$route.params, {
- currentPage: 1
- })
- });
- } else {
- this.warning(res.data.msg);
- }
- this.saveDisable = false;
- })
- .catch(err => {
- if (err.code === '900010001') {
- return false;
- }
- this.saveDisable = false;
- this.warning(err);
- });
- },
- // 弹出窗
- showConfirmDialog(msg, resolve) {
- this.$alert(msg, '提示', {
- confirmButtonText: '确定',
- // cancelButtonText: '取消',
- // cancelButtonClass: 'cancel',
- // confirmButtonClass: 'confirmBtn',
- dangerouslyUseHTMLString: true,
- type: 'warning'
- })
- .then(() => {
- resolve();
- })
- .catch(() => {});
- },
- warning(msg, type) {
- this.$message({
- showClose: true,
- message: msg,
- type: type || 'warning',
- duration:1000
- });
- },
- handleChange(file, fileList) {
- // if(fileList&&fileList[0]&&fileList[0].response&&fileList[0].response.code==='0'){
- // this.showUpLoad = false
- // this.showFileList = true
- // }else{
- // this.showUpLoad = true
- // this.showFileList = false
- // }
- // console.log(fileList,this.form.fileList,'aa')
- },
- handleSuccess(response, file, fileList) {
- if (response.code == '0') {
- this.showFileList = true;
- this.form.fileList = [];
- this.form.fileList.push({
- name: response.data.title,
- url: response.data.url,
- size: response.data.size
- });
- this.showUpLoad = false;
- if (!this.form.fileTitle) {
- this.form.fileTitle = response.data.title;
- }
- this.isSuccessUpload = 2; // 上传成功状态
- this.$refs.upload && this.$refs.upload.clearValidate(); // 清除校验
- } else {
- this.warning(response.msg || '上传失败');
- // this.form.fileList = []
- this.showUpLoad = true;
- this.showFileList = false;
- this.form.fileList = [];
- }
- },
- handleRemove(file, fileList) {
- this.showUpLoad = true;
- this.form.fileList = [];
- this.isSuccessUpload = 0;
- },
- handleBeforeUpLoad(file) {
- // 上传过程中 上传按钮 隐藏
- this.isSuccessUpload = 1; // 上传过程中
- this.showFileList = true; // 新增 进度条 显示
- this.$refs.upload && this.$refs.upload.clearValidate(); // 清除校验
- this.showUpLoad = false;
- if (file.size / 1024 / 1024 >= 500) {
- this.warning('文件上传失败,超出大小限制500MB');
- this.form.fileList = [];
- this.showConfirm = false;
- return false;
- } else {
- this.showConfirm = true;
- }
- },
- handlePreview(file) {},
- beforeRemove(file, fileList) {
- if (this.showConfirm) {
- return this.$alert(`确定移除 ${file.name}?`, '', {
- cancelButtonClass: 'cacelBtn'
- });
- }
- }
- }
- };
- </script>
- <style lang="less" scoped>
- @import '../../less/common.less';
- .cell .el-button.delete:focus {
- color: red !important;
- }
- .topBack {
- top: 0;
- }
- .info-container {
- // background: #fff;
- // padding: 20px 0;
- margin: 60px 20px -20px 20px;
- min-width: 960px;
- .el-input__inner {
- width: 200px;
- }
- .el-form-item__label {
- text-align: left;
- }
- .add-prg .el-form-item {
- margin-bottom: 20px;
- }
- // .el-form-item {
- // margin-bottom: 8px !important;
- // }
- }
- // .cancel span {
- // color: #22ccc8;
- // }
- .line {
- // border-top: 1px #dcdfe6 solid;
- background: #dcdfe6;
- height: 12px;
- }
- .NoiseTemplateWrapper .info-container .el-input__inner {
- width: 250px;
- }
- // .NoiseTemplateWrapper .el-select .el-input .el-icon-circle-close{
- // display: inherit!important;
- // }
- .cacelBtn {
- color: #22ccc8 !important;
- }
- .upload-demo {
- width: 300px;
- /deep/.el-upload-list__item .el-icon-close-tip {
- display: none !important;
- }
- /deep/.el-upload-list__item .el-upload-list__item-name {
- max-width: 250px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- /deep/ .focusing {
- // border: 1px solid transparent !important;
- outline: transparent !important;
- }
- }
- .uploadInfo {
- margin-top: -20px;
- color: #606266;
- }
- .tipInfo {
- position: absolute;
- // position: relative;
- line-height: 24px;
- top: -56px;
- left: 20px;
- // background-color: transparent;
- // color: #606266;
- padding: 3px 10px;
- border-radius: 4px;
- margin: 100px auto;
- background-color: #4d4d4d;
- text-align: center;
- color: #fff;
- font-size: 14px;
- }
- .tipInfo:before {
- content: '';
- display: block;
- position: absolute;
- // bottom: 9px;
- top: -10px;
- left: 18px;
- border-bottom: 6px solid #4d4d4d;
- border-top: 6px solid transparent;
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- // border-right: 6px solid #4D4D4D;
- }
- .btn {
- text-align: right;
- margin: 10px 20px;
- padding: 30px;
- background: #fff;
- }
- .el-message-box {
- /deep/ .el-icon-warning {
- background-color: transparent !important;
- // display: none;
- }
- /deep/ .el-message-box__message {
- margin: 24px 0px;
- }
- // /deep/ .confirmBtn {
- // // position: relative;
- // // right: 240px !important;
- // // top: 0px;
- // background-color: #fff !important;
- // span {
- // color: #48c5d7 !important;
- // }
- // }
- /deep/ .cancel {
- background-color: #d7d7d7;
- border-color: transparent !important;
- span {
- color: #fff;
- }
- }
- }
- /deep/ .el-tabs__header {
- padding: 0 10px !important;
- }
- .container_top {
- display: flex;
- padding: 20px 30px;
- }
- .tabs_box {
- display: flex;
- align-items: center;
- }
- .tabs {
- display: flex;
- margin: 0px 30px;
- font-size: 14px;
- height: 31px;
- .tabs_pane {
- position: relative;
- width: 92px;
- height: 32px;
- border-radius: 6px 6px 0px 0px;
- border: 1px solid #00c7da;
- text-align: center;
- line-height: 32px;
- margin-right: 32px;
- box-sizing: border-box;
- color: #00c7da;
- cursor: pointer;
- img {
- position: absolute;
- right: -18px;
- bottom: 0;
- width: 18px;
- height: 18px;
- }
- }
- }
- .tab_box_left {
- padding: 30px;
- }
- /deep/ .el-form-item.is-success .el-input__inner,
- .el-form-item.is-success .el-textarea__inner {
- border-color: #c9c9c9 !important;
- }
- /deep/ .el-form-item.is-success .el-textarea__inner {
- border-color: #c9c9c9 !important;
- }
- /deep/ .el-form-item.is-success .el-textarea__inner {
- border-color: #c9c9c9 !important;
- }
- </style>
|