123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473 |
- <template>
- <div class="AddChemicalAndCommonMappingWrapper clearfix" @click="close">
- <crumbs
- title="化验大小项与公表项对应维护-添加关联"
- class="topBack"
- :param="$route.params"
- linkTo="ChemicalAndCommonMapping"
- ></crumbs>
- <div class="AddChemicalAndCommonMappingBox clearfix">
- <div class="titleBox clearfix">
- <p class="title">关联化验项</p>
- <p class="title">关联公表项</p>
- </div>
-
- <div class="leftBox clearfix" >
- <div class="itemLabel clearfix">
- <label class="itemLabelName">选择化验大项:</label>
- <input class="searchInput" @focus="focuInput" type="text" v-model = "mealText">
- <span class="searchName" @click="searchMealItem(1)">搜索</span>
- <ul
- v-if="showMealNameList&&mealNameList.length >0"
- class="itemList mealNameList"
- ref="mealNameList"
- >
- <li
- v-for="item in mealNameList"
- class="mealNameItem ellipsis"
- :title="item.conceptName"
- @click="selectMealName(item)"
- :key="item.conceptId">
- {{item.conceptName}}
- </li>
- </ul>
- </div>
- <div class="itemLabel clearfix">
- <label class="itemLabelName isRequired">已选择化验大项:</label>
- <span class="selectItemName">{{form.mealName}}</span>
- </div>
- <div class="itemLabel clearfix">
- <label class="itemLabelName">选择化验小项:</label>
- <input class="searchInput" @focus="focuInput" type="text" v-model = "itemText">
- <span class="searchName" @click="searchMealItem(2)">搜索</span>
- <ul
- v-if="showItemNameList&&itemNameList.length >0"
- class="itemList itemNameList"
- ref="itemNameList"
- >
- <li
- v-for="item in itemNameList"
- class="mealNameItem ellipsis"
- :title="item.conceptName"
- @click="selectItemName(item)"
- :key="item.conceptId">
- {{item.conceptName}}
- </li>
- </ul>
- </div>
- <div class="itemLabel">
- <label class="itemLabelName">已选择化验小项:</label>
- <span class="selectItemName">{{form.itemName}}</span>
- </div>
- </div>
- <div class="midBox">
- <img class="midLogo" src="../../images/relation.png" alt="">
- <p class="midTitle">相互关联</p>
- </div>
- <div class="rightBox">
- <div class="itemLabel">
- <label class="itemLabelName">选择公表项:</label>
- <input class="searchInput" @focus="focuInput" type="text" v-model = "uniqueText">
- <span class="searchName" @click="searchMealItem(3)">搜索</span>
- <ul
- v-if="showUniqueNameList&&uniqueNameList.length >0"
- class="itemList uniqueNameList"
- ref="uniqueNameList"
- >
- <li
- v-for="item in uniqueNameList"
- class="mealNameItem ellipsis"
- :title="item.conceptName"
- @click="selectUniqueName(item)"
- :key="item.conceptName">
- {{item.conceptName}}
- </li>
- </ul>
- </div>
- <div class="itemLabel">
- <label class="itemLabelName isRequired">已选择公表项:</label>
- <span class="selectItemName">{{form.uniqueName}}</span>
- </div>
- </div>
- </div>
- <div class="btn">
- <!-- <span class="sumbit" @click="submitForm">建立关联</span> -->
- <el-button
- type="primary"
- :disabled = 'saveDisable'
- @click="submitForm"
- >建立关联</el-button>
- </div>
- </div>
- </template>
- <script>
- import api from '@api/icss.js';
- export default {
- name: 'AddChemicalAndCommonMapping',
- data() {
- return {
- mealText: '', //化验大项搜索文字内容
- itemText: '', //化验小项搜索文字内容
- uniqueText: '', //公表项搜索文字内容
- isEdit: false,
- mealNameList:[],
- itemNameList: [],
- uniqueNameList:[],
- showMealNameList: false,
- showItemNameList: false,
- showUniqueNameList: false,
- form: {
- mealName: '', //大项名称
- mealId: '', //大项Id
- itemName: '', //小项名称
- itemId: '', //小项Id
- uniqueName: '', //公表名称,必填
- uniqueId:'' //公表项Id
- },
- saveDisable: false //保存按钮禁止点击
- }
- },
- created() {
- //修改(不需要)
- // const { isEdit, data } = this.$route.params
- // if(isEdit) {
- // this.isEdit = isEdit;
- // this.form.mealName = data.mealName
- // this.form.itemName = data.itemName
- // this.form.uniqueName = data.uniqueName
- // }
- },
- methods: {
- close() {
- this.mealNameList = [];
- this.itemNameList =[];
- this.uniqueNameList = [];
- this.showSearchList()
- },
- searchMealItem(type) {
- if( type == '1' || type == '2') {
- this.getTagList(type)
- } else if ( type == '3') {
- this.getAllLisConcept()
- }
- },
- getTagList(type) {
- let param = {
- relationPosition: 3
- }
- if (type == 1) {
- param.name = this.mealText.trim();
- param.typeId = 12
- } else if (type == 2) {
- param.name = this.itemText.trim();
- param.typeId = 13
- }
- if(!param.name) {
- return
- }
- api.getConceptInfoAssay(param).then((res) => {
- if (res.data.code === '0') {
- if (type == 1) {
- this.mealNameList = res.data.data;
- this.showSearchList('showMealNameList')
- } else if (type == 2) {
- this.itemNameList = res.data.data;
- this.showSearchList('showItemNameList')
- }
- }
- })
- },
- getAllLisConcept() {
- const param = {
- conceptName: this.uniqueText
- }
- if(!param.conceptName) {
- return
- }
- api.getAllLisConcept(param).then((res) => {
- if(res.data.code === '0') {
- this.uniqueNameList = res.data.data
- this.showSearchList('showUniqueNameList')
- }
- })
- },
- focuInput() {
- this.showSearchList()
- },
- showSearchList(type) {
- this.showMealNameList = false
- this.showItemNameList = false
- this.showUniqueNameList = false
- if(type === 'showMealNameList') {
- this.showMealNameList = true
- } else if (type === 'showItemNameList') {
- this.showItemNameList = true
- } else if (type === 'showUniqueNameList'){
- this.showUniqueNameList = true
- }
- },
- selectMealName(item) {
- this.form.mealName = item.conceptName
- this.form.mealId = item.conceptId
- // this.$refs['mealNameList'].style.display='none'
- this.mealText = ''
- this.mealNameList = []
- },
- selectItemName(item) {
- this.form.itemName = item.conceptName
- this.form.itemId = item.conceptId
- this.itemText = ''
- this.itemNameList = []
- },
- selectUniqueName(item) {
- this.form.uniqueName = item.conceptName
- this.form.uniqueId = item.conceptId
- //搜索公表项自动填充大小项(目前暂时不需要)
- // let nameArr = item.conceptName.split('--');
- // this.form.mealName = nameArr[0]
- // this.form.itemName = nameArr[1]
- // this.$refs['uniqueNameList'].style.display='none'
- this.uniqueText = ''
- this.uniqueNameList = []
- },
- initForm() {
- this.form.mealName = ''
- this.form.mealId = ''
- this.form.itemName = ''
- this.form.itemId = ''
- this.form.uniqueName = ''
- this.form.uniqueId = ''
- },
- submitForm() {
- const { itemId, mealId, uniqueId } = this.form
- if (!mealId || !uniqueId) {
- this.warning('请填写相关数据')
- return
- }
- //通过必填验证,提交保存
- const param = {
- "itemId": itemId,
- "mealId": mealId,
- "uniqueId": uniqueId
- }
- this.showSaveDialog(param);
- },
- saveLisMapping(param, msg, type) {
- api.saveLisMapping(param).then((res) => {
- if (res.data.code === '0') {
- this.warning(res.data.msg || msg, type);
- // this.$router.push({name: 'ChemicalAndCommonMapping'});
- this.initForm();
- } else {
- this.warning(res.data.msg)
- }
- this.saveDisable = false
- })
- },
- showSaveDialog(param) {
- // 修改(不需要)
- // if(this.isEdit) {
- // this.saveLisMapping(param)
- // } else {
- this.saveDisable = true //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
- api.hasLisMapping(param).then((res) => {
- if (!res.data.data) {
- this.saveLisMapping(param, '关联建立成功', 'success' )
- } else {
- this.showConfirmDialog('该关联已存在是否替换旧的关系信息', () => {
- this.saveLisMapping(param, '关联建立成功', 'success' )
- });
- }
- }).catch((err) => {
- this.warning(err);
- })
- // }
- },
- showConfirmDialog(msg, resolve) {
- this.$confirm(msg, '提示', {
- customClass: 'confirmRealation',
- confirmButtonText: '是',
- cancelButtonText: '否',
- cancelButtonClass: 'cancelButton',
- type: 'warning'
- }).then(() => {
- resolve();
- }).catch(() => {
- this.saveDisable = false
- this.warning('建立失败','error')
- });
- },
- warning(msg, type) {
- this.$message({
- showClose: true,
- message: msg,
- type: type || 'warning'
- })
- },
- }
- }
- </script>
- <style lang="less">
- .AddChemicalAndCommonMappingWrapper {
- .AddChemicalAndCommonMappingBox {
- min-width: 940px;
- }
- color: #606266;
- .topBack {
- top: 0;
- }
- // .groupTitle {
- // width: calc(100% - 50px);
- // height: 40px;
- // background: #fff;
- // padding: 0 20px 0 30px;
- // margin-bottom: 20px;
- // line-height: 40px;
- // position: relative;
- // z-index: 5;
- // }
- .titleBox {
- padding: 0 0 10px 0px;
- }
- .title {
- width: 50%;
- float: left;
- font-size: 14px;
- }
- .AddChemicalAndCommonMappingBox {
- padding: 20px 30px 20px 30px;
- margin: 70px 20px 0 20px;
- background: #fff;
- }
- .leftBox , .midBox, .rightBox{
- width: 40%;
- float: left;
- min-height: 200px;
- font-size: 14px;
- }
- .midBox {
- width: 6%;
- padding: 50px 0 0 0;
- text-align: center;
- }
- .midTitle {
- width: 40px;
- margin: 0 auto;
- }
- .midLogo {
- margin: 0 auto;
- }
- .leftBox, .rightBox {
- border: 1px solid #a9a9a9;
- padding: 20px 20px;
- }
- .itemLabel {
- width: 100%;
- min-height: 50px;
- line-height: 50px;
- position: relative;
- }
- .itemLabelName, .searchInput, .searchName{
- float: left;
- color: #606266;
- }
- .itemLabelName {
- width: 150px;
- }
- .isRequired::before {
- content: '*';
- color: red;
- }
- .searchInput, .mealNameItem {
- padding: 0 5px;
- }
- .searchInput, .searchName {
- display: inline-block;
- height: 32px;
- line-height: 32px;
- border: 1px solid #a9a9a9;
- margin: 8px 0 0 0;
- }
- .searchName {
- text-align: center;
- border-left: none;
- cursor: pointer;
- padding: 0 12px;
- font-size: 16px;
- }
- .itemList {
- position: absolute;
- background: #fff;
- width: 162px;
- max-height: 150px;
- border: 1px solid #a9a9a9;
- left: 150px;
- top: 42px;
- z-index: 2;
- overflow-y: auto;
- }
- .itemList {
- width: calc(100% - 131px);
- }
- .mealNameItem {
- height: 30px;
- line-height: 30px;
- font-size: 14px;
- cursor: pointer;
- }
- .mealNameItem:hover {
- background: #f5f7fa;
- }
- .selectItemName {
- display: inline-block;
- width: calc(100% - 160px);
- }
- .btn {
- position: relative;
- background-color: #fff;
- margin: 0px 20px;
- padding: 20px;
- min-width: 960px;
- height: 80px;
- .el-button {
- position: absolute;
- right: 80px;
- top: 20px;
- }
- }
- .sumbit {
- position: absolute;
- display: inline-block;
- width: 80px;
- height: 30px;
- line-height: 30px;
- border: 1px solid #a9a9a9;
- text-align: center;
- right: 100px;
- }
- }
- .confirmRealation {
- .cancelButton{
- border: 1px solid #a9a9a9;
- span {
- color: #606266;
- }
- }
- }
- </style>
|