detailMain.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <template>
  2. <div class="app-container">
  3. <el-tabs v-model="activeName" >
  4. <el-tab-pane label="基本信息" name="MaterialBaseInfo" >
  5. <MaterialBaseInfo :materialId="materialId"></MaterialBaseInfo>
  6. </el-tab-pane>
  7. <el-tab-pane label="物料图册" name="MaterialPictures" >
  8. <MaterialPictures :materialId="materialId"></MaterialPictures>
  9. </el-tab-pane>
  10. <el-tab-pane label="资质信息" name="MaterialQualifications" >
  11. <MaterialQualifications :materialId="materialId"></MaterialQualifications>
  12. </el-tab-pane>
  13. <el-tab-pane label="销售情况" name="MaterialSale" >
  14. <MaterialSale :materialId="materialId"></MaterialSale>
  15. </el-tab-pane>
  16. <el-tab-pane label="附件" name="MaterialAnnex" >
  17. <MaterialAnnex :materialId="materialId"></MaterialAnnex>
  18. </el-tab-pane>
  19. </el-tabs>
  20. <div class="button-container">
  21. <el-button type="danger" @click="qx">取消</el-button>
  22. <el-button type="danger" @click="bc">保存</el-button>
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. import { infoSave } from "@/api/material/extend/material.js";
  28. import MaterialBaseInfo from '@/views/material/extend/baseinfo';
  29. import MaterialAnnex from '@/views/material/extend/annex';
  30. import MaterialPictures from '@/views/material/extend/pictures';
  31. import MaterialQualifications from '@/views/material/extend/qualifications';
  32. import MaterialSale from '@/views/material/extend/sale';
  33. import { EventBus } from '@/views/material/extend/event/event-bus.js';
  34. export default {
  35. name: "MaterialDetailMain",
  36. components: {
  37. MaterialBaseInfo,
  38. MaterialAnnex,
  39. MaterialPictures,
  40. MaterialQualifications,
  41. MaterialSale
  42. },
  43. data() {
  44. return {
  45. activeName: 'MaterialBaseInfo', // 默认激活第一个标签
  46. materialId:'',
  47. dataSave: {
  48. },
  49. };
  50. },
  51. created() {
  52. console.log("1:::"+ this.materialId);
  53. console.log("2:::"+ this.$route.query.materialId);
  54. this.materialId = this.$route.query.materialId;
  55. console.log("3:::"+ this.materialId);
  56. this.$set(this.dataSave, 'materialId', this.materialId);
  57. },
  58. mounted() {
  59. EventBus.$on('sendMaterialInfo', this.handleSubmit);
  60. },
  61. beforeDestroy() {
  62. EventBus.$off('sendMaterialInfo', this.handleSubmit);
  63. },
  64. methods: {
  65. handleSubmit(val){
  66. console.log("E:::" + JSON.stringify(val))
  67. if(JSON.stringify(val).includes('homePicture')){
  68. // 物料图册
  69. this.$set(this.dataSave, 'materialPictures', {});
  70. this.$set(this.dataSave, 'materialPictures', val);
  71. }
  72. if(JSON.stringify(val).includes('annex')){
  73. // 附件
  74. this.$set(this.dataSave, 'materialAnnex', []);
  75. this.$set(this.dataSave, 'materialAnnex', val);
  76. }
  77. if(JSON.stringify(val).includes('suitDept')){
  78. // 适用科室
  79. this.$set(this.dataSave, 'materialSuitDept', []);
  80. this.$set(this.dataSave, 'materialSuitDept', val);
  81. }
  82. },
  83. bc(){
  84. if(this.dataSave.materialSuitDept != undefined && this.dataSave.materialSuitDept.length > 0){
  85. let flag = false;
  86. this.dataSave.materialSuitDept.forEach(e => {
  87. if(e.suitDept == ''){
  88. flag = true;
  89. }
  90. });
  91. if(flag){
  92. this.$message({
  93. message: '无法保存, 当前存在未填写的适用科室信息, 请处理 !',
  94. type: 'error'
  95. });
  96. return;
  97. };
  98. }
  99. // 提交
  100. infoSave(this.dataSave).then(response => {
  101. if(response.code == 200){
  102. this.$message({
  103. message: '保存成功 !',
  104. type: 'success'
  105. });
  106. }
  107. });
  108. },
  109. qx(){
  110. this.$router.go(-1)
  111. }
  112. },
  113. };
  114. </script>
  115. <style>
  116. .button-container {
  117. position: fixed; /* 使用fixed定位,使得容器始终相对于浏览器窗口 */
  118. top: 10px; /* 距离顶部10像素 */
  119. right: 60px; /* 距离右侧10像素 */
  120. z-index: 1000; /* 设置一个较高的z-index确保按钮在其他内容之上 */
  121. }
  122. </style>