form.vue 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <el-dialog :title="titleMap[mode]" v-model="visible" :width="600" destroy-on-close @closed="$emit('closed')">
  3. <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
  4. <el-form-item label="名称" prop="title">
  5. <el-input v-model="formData.title" clearable placeholder="请输入"></el-input>
  6. <div class="el-form-item-msg"></div>
  7. </el-form-item>
  8. <el-form-item label="图片" prop="img">
  9. <sc-upload v-model="formData.img"></sc-upload>
  10. <div class="el-form-item-msg">建议尺寸 750 * 360 px</div>
  11. </el-form-item>
  12. <el-form-item label="跳转路径" prop="path">
  13. <el-input v-model="formData.path" clearable placeholder="请输入"></el-input>
  14. <div class="el-form-item-msg"></div>
  15. </el-form-item>
  16. <el-form-item label="状态" prop="status">
  17. <el-radio-group v-model="formData.status">
  18. <el-radio-button :label="1">正常</el-radio-button>
  19. <el-radio-button :label="2">禁用</el-radio-button>
  20. </el-radio-group>
  21. </el-form-item>
  22. </el-form>
  23. <template #footer>
  24. <el-button @click="visible=false" size="large">取 消</el-button>
  25. <el-button v-if="mode!='show'" size="large" type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
  26. </template>
  27. </el-dialog>
  28. </template>
  29. <script>
  30. export default {
  31. data(){
  32. return {
  33. channelData:[],
  34. channelState:false,
  35. loading: false,
  36. isSaveing: false,
  37. mode:"add",
  38. titleMap:{
  39. add:"新增幻灯片",
  40. edit:"编辑幻灯片"
  41. },
  42. visible:false,
  43. formData:{},
  44. rules:{
  45. img: [
  46. {required: true, message: '请上传'}
  47. ],
  48. status: [
  49. {required: true, message: '请选择'}
  50. ],
  51. title: [
  52. {required: true, message: '请输入'}
  53. ]
  54. }
  55. }
  56. },
  57. methods:{
  58. open(mode = 'add'){
  59. this.mode = mode;
  60. this.visible = true;
  61. return this
  62. },
  63. //表单注入数据
  64. setData(data){
  65. this.formData = JSON.parse(JSON.stringify(data));
  66. },
  67. async submit(){
  68. var validate = await this.$refs.dialogForm.validate().catch(()=>{});
  69. if(!validate){ return false }
  70. this.isSaveing = true;
  71. let submitData = JSON.parse(JSON.stringify(this.formData));
  72. submitData.type = 2;
  73. var resp = await this.$API.banner.save.post(submitData);
  74. this.isSaveing = false;
  75. if (resp.code == 0) {
  76. return this.$message.error(resp.msg);
  77. }
  78. this.$message.success(resp.msg);
  79. this.visible = false;
  80. this.formData = {};
  81. this.submitState = false;
  82. this.$emit("success");
  83. }
  84. }
  85. }
  86. </script>
  87. <style>
  88. .text-center{text-align: center;}
  89. </style>