FieldMatch.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <template>
  2. <div>
  3. <crumbs :title="title" :param="$route.params" linkTo="BaseField"></crumbs>
  4. <div class="contents">
  5. <div class="content">
  6. <el-form ref="form" :label-position="labelPosition" label-width="118px" :model="form" :rules="rules">
  7. <el-form-item label="所属医院:" prop="hospitalId">
  8. <el-select v-model="form.hospitalId"
  9. placeholder="请选择"
  10. @change="getQcFlawList"
  11. size="small">
  12. <el-option
  13. v-for="item in hisTypes"
  14. :key="item.val"
  15. :label="item.name"
  16. :value="Number(item.val)">
  17. </el-option>
  18. </el-select>
  19. </el-form-item>
  20. <el-form-item label="所属模块:" prop="modeId">
  21. <el-select v-model="form.modeId"
  22. placeholder="请选择"
  23. @change="getQcFlawList"
  24. size="small">
  25. <el-option
  26. v-for="item in fieldTypes"
  27. :key="item.val"
  28. :label="item.name"
  29. :value="Number(item.val)">
  30. </el-option>
  31. </el-select>
  32. </el-form-item>
  33. <el-form-item label="备注:" prop="tagName">
  34. <el-input type="text" placeholder="请输入备注" v-model="form.tagName"></el-input>
  35. </el-form-item>
  36. <el-form-item label="显示名称:" prop="name">
  37. <el-input type="text" placeholder="请输入显示名称" v-model="form.name"></el-input>
  38. </el-form-item>
  39. <el-form-item label="取值字段:" prop="value">
  40. <el-input type="text" placeholder="请输入取值字段" v-model="form.val"></el-input>
  41. </el-form-item>
  42. <el-form-item label="关联缺陷条目:" prop="casesEntryIds">
  43. <el-select filterable
  44. multiple
  45. v-model="casesEIds"
  46. placeholder="请选择"
  47. class="big-select"
  48. size="small">
  49. <el-option
  50. v-for="item in flawList"
  51. :key="item.id"
  52. :label="item.name"
  53. :value="String(item.id)">
  54. </el-option>
  55. </el-select>
  56. </el-form-item>
  57. <el-form-item>
  58. <el-checkbox v-model="form.addLine" :true-label="Number(1)" :false-label="Number(0)">换行</el-checkbox>
  59. <el-checkbox v-model="form.position" :true-label="Number(1)" :false-label="Number(0)">靠右显示</el-checkbox>
  60. <el-checkbox v-model="form.bold" :true-label="Number(1)" :false-label="Number(0)">内容加粗</el-checkbox>
  61. <el-checkbox v-model="form.retract" :true-label="Number(1)" :false-label="Number(0)">缩进</el-checkbox>
  62. </el-form-item>
  63. <el-button class="disclButn" size="small" type="primary" :disabled = 'saveDisable' @click="comfirn('form')">确定</el-button>
  64. </el-form>
  65. </div>
  66. </div>
  67. </div>
  68. </template>
  69. <script type="text/javascript">
  70. import api from '@api/qualityControl.js';
  71. export default {
  72. name:'FieldMatch',
  73. data(){
  74. return{
  75. // data:{},
  76. list:[],
  77. labelPosition:'left',
  78. isFirst:true,
  79. title:'字段映射维护-添加映射字段',
  80. casesEIds:'',
  81. form:{
  82. tagType:1, //固定
  83. modeId:"",
  84. hospitalId:"",
  85. name:'',
  86. val:'',
  87. tagName:'',
  88. addLine:0,
  89. bold:0,
  90. position:0,
  91. retract:0,
  92. casesEntryIds:'',
  93. },
  94. id:null,
  95. rules:{
  96. hospitalId:{ required: true, message: '请选择所属医院', trigger: ['blur', 'change']},
  97. modeId:{ required: true, message: '请选择所属模块', trigger: ['blur', 'change']},
  98. tagName:{ required: true, message: '请输入备注', trigger: ['blur', 'change']},
  99. /*name:[{ required: true, message: '请输入显示名称',trigger: ['blur', 'change'] }],*/
  100. },
  101. copy:null,
  102. saveDisable: false, //保存按钮禁止点击
  103. flawList:[],
  104. hisTypes:[],
  105. fieldTypes:[],
  106. }
  107. },
  108. created(){
  109. this.getAllTypes();
  110. let info = this.$route.params.info;
  111. if(info){
  112. const infoCopy = Object.assign({},info);
  113. infoCopy.casesEntryIds?this.casesEIds = infoCopy.casesEntryIds.split(","):'';
  114. this.title='字段映射维护-修改映射字段';
  115. this.form = infoCopy;
  116. this.getQcFlawList();
  117. }
  118. },
  119. watch:{
  120. "casesEIds":function(val){
  121. this.form.casesEntryIds = val.join(",");
  122. }
  123. },
  124. methods:{
  125. getQcFlawList(val){
  126. const { hospitalId, modeId } = this.form
  127. if(hospitalId === '' || modeId === ''){
  128. return
  129. }
  130. const param={modeId:modeId,hospitalId:hospitalId,name:""};
  131. api.getQcFlawList(param).then((res)=>{
  132. if(res.data.code==="0") {
  133. const data = res.data.data;
  134. this.flawList = data.records;
  135. }else{
  136. this.warning("获取缺陷条目失败");
  137. }
  138. });
  139. },
  140. getAllTypes(){
  141. if(localStorage.getItem("qcModuleTypes")){
  142. this.hisTypes = JSON.parse(localStorage.getItem("qcHospitalTypes"));
  143. this.fieldTypes = JSON.parse(localStorage.getItem("qcModuleTypes"));
  144. return ;
  145. }
  146. //获取枚举信息
  147. api.getQcTypes().then((res)=>{
  148. if(res.data.code==="0"){
  149. const data = res.data.data;
  150. localStorage.setItem("qcFieldTypes",JSON.stringify(data[11]));
  151. localStorage.setItem("qcModuleTypes",JSON.stringify(data[12]));
  152. localStorage.setItem("qcHospitalTypes",JSON.stringify(data[13]));
  153. }else{
  154. this.warning("获取枚举信息失败");
  155. }
  156. });
  157. },
  158. comfirn(form){
  159. /*if(!this.form.name.trim() || !this.form.refreshTime.trim()){
  160. this.$message({
  161. message:'请填写相关内容',
  162. type:'warning'
  163. });
  164. return
  165. }*/
  166. this.$refs[form].validate((valid) => {
  167. if (valid) {
  168. if(this.id){//修改
  169. const param = Object.assign({},this.form,{id:this.id});
  170. this.saveDisable = true; //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
  171. api.addFieldMatch(param).then((res)=>{
  172. if(res.data.code==0){
  173. this.$message({
  174. message:"修改成功",
  175. type:'success'
  176. });
  177. //返回带搜索条件的首页
  178. this.$router.push({
  179. name: 'BaseField',
  180. params: Object.assign({}, this.$route.params, {currentPage: 1})
  181. });
  182. }else{
  183. this.$message({
  184. message:res.data.msg,
  185. type:'warning'
  186. });
  187. }
  188. this.saveDisable = false
  189. })
  190. }else{//添加
  191. const params = Object.assign({},this.form);
  192. this.saveDisable = true; //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
  193. api.addFieldMatch({questionWrapper:params}).then((res)=>{
  194. if(res.data.code==0){
  195. this.$message({
  196. message:"添加成功",
  197. type:'success'
  198. });
  199. this.$router.push({name: 'BaseField'});
  200. }else{
  201. this.$message({
  202. message:res.data.msg,
  203. type:'warning'
  204. });
  205. }
  206. this.saveDisable = false
  207. })
  208. }
  209. } else {
  210. return false;
  211. }
  212. });
  213. },
  214. }
  215. }
  216. </script>
  217. <style lang="less" scoped>
  218. .content {
  219. background: #fff;
  220. padding: 20px 20px 50px;
  221. color: #545455;
  222. min-width: 980px;
  223. position: relative;
  224. }
  225. .el-form-item{
  226. width: 600px;
  227. }
  228. .el-select.big-select{
  229. width: 360px;
  230. }
  231. </style>