form.vue 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <template>
  2. <el-dialog :title="titleMap[mode]" v-model="visible" :width="600" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
  3. <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
  4. <el-form-item label="联系人" prop="username">
  5. <el-input v-model="formData.username" clearable placeholder="请输入"></el-input>
  6. <div class="el-form-item-msg"></div>
  7. </el-form-item>
  8. <el-form-item label="联系电话" prop="mobile">
  9. <el-input v-model="formData.mobile" clearable placeholder="请输入"></el-input>
  10. <div class="el-form-item-msg"></div>
  11. </el-form-item>
  12. <el-form-item label="详细地址" prop="address">
  13. <el-input v-model="formData.address" clearable placeholder="请输入"></el-input>
  14. <div class="el-form-item-msg"></div>
  15. </el-form-item>
  16. </el-form>
  17. <template #footer>
  18. <el-button @click="visible=false" >取 消</el-button>
  19. <el-button type="primary" :loading="isSaveing" @click="submit()">提交</el-button>
  20. </template>
  21. </el-dialog>
  22. </template>
  23. <script>
  24. export default {
  25. data(){
  26. return {
  27. loading: false,
  28. mode:"add",
  29. titleMap:{
  30. add:"更新地址",
  31. edit:"更新地址"
  32. },
  33. visible: false,
  34. isSaveing: false,
  35. formData:{},
  36. submitState:false,
  37. disabled:false,
  38. rules:{
  39. username: [
  40. {required: true, message: '请输入'}
  41. ],
  42. mobile: [
  43. {required: true, message: '请输入'}
  44. ],
  45. address: [
  46. {required: true, message: '请输入'}
  47. ]
  48. },
  49. sms:""
  50. }
  51. },
  52. methods:{
  53. open(mode = 'add'){
  54. this.mode = mode;
  55. this.visible = true;
  56. return this
  57. },
  58. //表单注入数据
  59. setData(data){
  60. data.address = data.region+data.address;
  61. this.formData = data;
  62. },
  63. async submit(){
  64. var validate = await this.$refs.dialogForm.validate().catch(()=>{});
  65. if(!validate){ return false }
  66. this.isSaveing = true;
  67. let submitData = JSON.parse(JSON.stringify(this.formData));
  68. var resp = await this.$API.order.save.post(submitData);
  69. this.isSaveing = false;
  70. if (resp.code !== 1) {
  71. return this.$message.error(resp.msg);
  72. }
  73. this.$message.success(resp.msg);
  74. this.visible = false;
  75. this.formData = {};
  76. this.submitState = false;
  77. this.$emit("success");
  78. }
  79. }
  80. }
  81. </script>
  82. <style>
  83. .mt20 {margin-top: 20px;}
  84. .login-msg-yzm {display: flex;width: 100%;}
  85. .login-msg-yzm .el-button {margin-left: 10px;--el-button-size:42px;}
  86. </style>