classifyDia.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <template>
  2. <div class="predict-classify-dialog">
  3. <el-dialog
  4. :visible.sync="isOpenDialog"
  5. :close-on-click-modal="false"
  6. :modal-append-to-body='false'
  7. :title="title==='添加' ? $t('Table.add_btn') : $t('Table.edit_btn')"
  8. @close="cancelHandle"
  9. custom-class="dialog"
  10. center
  11. width="650px"
  12. v-dialogDrag>
  13. <div class="dialog-main">
  14. <el-form
  15. ref="diaForm"
  16. label-position="left"
  17. hide-required-asterisk
  18. label-width="120px"
  19. :model="formData"
  20. :rules="formRules">
  21. <el-form-item :label="$t('EtaBasePage.parent_menu')" v-if="formData.Level>0">
  22. <el-tooltip class="item" effect="dark" :content="getParentName" placement="top">
  23. <span class="parentStr">{{getParentName}}</span>
  24. </el-tooltip>
  25. </el-form-item>
  26. <el-form-item :label="$t('EtaBasePage.menu_name')" prop="classify_name">
  27. <el-input
  28. v-model="formData.classify_name"
  29. style="width: 80%"
  30. :placeholder="$t('Dialog.require_vaild')"></el-input>
  31. </el-form-item>
  32. </el-form>
  33. </div>
  34. <div class="dia-bot">
  35. <el-button type="primary" style="margin-right:20px" @click="saveHandle"><!-- 保存 -->{{$t('Dialog.confirm_save_btn')}}</el-button>
  36. <el-button type="primary" plain @click="cancelHandle"><!-- 取消 -->{{$t('Dialog.cancel_btn')}}</el-button>
  37. </div>
  38. </el-dialog>
  39. </div>
  40. </template>
  41. <script>
  42. import * as preDictEdbInterface from '@/api/modules/predictEdbApi.js';
  43. export default {
  44. props: {
  45. isOpenDialog: {
  46. type: Boolean,
  47. },
  48. //标题
  49. title: {
  50. type: String,
  51. default: '添加'
  52. },
  53. form: {
  54. type: Object,
  55. }
  56. },
  57. watch: {
  58. 'isOpenDialog': {
  59. handler(newval) {
  60. if(newval) {
  61. this.formData = {...this.form};
  62. }
  63. }
  64. }
  65. },
  66. computed:{
  67. getParentName(){
  68. const arr=this.formData.parentArr||[]
  69. let strArr=arr.reverse().map(item=>{
  70. return item.classifyName
  71. })
  72. return strArr.join('/')
  73. }
  74. },
  75. data () {
  76. return {
  77. formData: {},
  78. formRules: {
  79. classify_name:[
  80. { required: true, message: this.$t('EtaBasePage.input_menu_msg'), trigger: 'blur' },
  81. ]
  82. },
  83. };
  84. },
  85. methods: {
  86. async saveHandle() {
  87. await this.$refs.diaForm.validate()
  88. const { classify_name,classify_id,Level,ParentId} = this.formData;
  89. const { Ret,Msg } = this.title==='添加'
  90. ? await preDictEdbInterface.classifyAdd({ ClassifyName:classify_name,ParentId,Level})
  91. : await preDictEdbInterface.classifyEdit({ ClassifyName:classify_name, ClassifyId:classify_id })
  92. if( Ret !== 200) return
  93. this.$message.success(Msg);
  94. this.cancelHandle();
  95. this.$emit('successCallback')
  96. },
  97. /* 取消 */
  98. cancelHandle() {
  99. this.formData = {}
  100. this.$refs.diaForm.resetFields();
  101. this.$emit('update:isOpenDialog',false)
  102. },
  103. },
  104. created() {},
  105. mounted() {},
  106. }
  107. </script>
  108. <style lang='scss'>
  109. .predict-classify-dialog {
  110. .parentStr{
  111. display: block;
  112. width: 304px;
  113. overflow: hidden;
  114. white-space: nowrap;
  115. text-overflow: ellipsis;
  116. }
  117. .dialog-main {
  118. padding-left: 50px;
  119. }
  120. .el-cascader .el-input {
  121. width: 100%;
  122. }
  123. .dia-bot {
  124. margin: 52px 0 30px;
  125. display: flex;
  126. justify-content: center;
  127. }
  128. }
  129. </style>