edit.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <div>
  3. <el-button size="mini" @click="onShow()" v-if="status() == '新建'" :type="!data.disabled?'':'primary'" :disabled="!data.disabled">编 辑</el-button>
  4. <el-drawer
  5. title="编辑活动"
  6. :visible.sync="drawer"
  7. size="800px"
  8. direction="rtl"
  9. append-to-body
  10. :show-close="false">
  11. <div class="drawer__panel">
  12. <el-form :model="form" :rules="rules" ref="form" label-width="100px" size="small">
  13. <el-form-item label="活动名称" prop="name">
  14. <el-input v-model="form.name" placeholder="请输入活动名称" clearable></el-input>
  15. </el-form-item>
  16. <el-form-item label="活动类型" prop="type">
  17. <el-select v-model="form.type" placeholder="请选择类型" style="width:100%" clearable>
  18. <el-option
  19. v-for="item in campaigntypeList()"
  20. :key="item.index"
  21. :label="item.value"
  22. :value="item.value">
  23. </el-option>
  24. </el-select>
  25. </el-form-item>
  26. <el-form-item label="负责人">
  27. <el-input v-model="form.director" placeholder="请输入负责人"></el-input>
  28. </el-form-item>
  29. <el-form-item label="地址">
  30. <el-input v-model="form.address" placeholder="请输入地址"></el-input>
  31. </el-form-item>
  32. <el-form-item label="开始日期" prop="begdate">
  33. <el-date-picker
  34. v-model="form.begdate"
  35. type="date"
  36. value-format="yyyy-MM-dd"
  37. placeholder="选择日期"
  38. style="width:100%">
  39. </el-date-picker>
  40. </el-form-item>
  41. <el-form-item label="结束日期" prop="enddate">
  42. <el-date-picker
  43. v-model="form.enddate"
  44. type="date"
  45. value-format="yyyy-MM-dd"
  46. placeholder="选择日期"
  47. style="width:100%">
  48. </el-date-picker>
  49. </el-form-item>
  50. </el-form>
  51. </div>
  52. <div class="fixed__btn__panel">
  53. <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
  54. <el-button size="small" type="primary" @click="submit()" class="normal-btn-width">确 定</el-button>
  55. </div>
  56. </el-drawer>
  57. </div>
  58. </template>
  59. <script>
  60. export default {
  61. props:['data'],
  62. inject:['campaigntypeList','status'],
  63. data () {
  64. return {
  65. drawer:false,
  66. form:{
  67. "sat_campaignid":0,
  68. "name":"",
  69. "director":"",
  70. "address":"",
  71. "type":"",
  72. "begdate":"",
  73. "enddate": ""
  74. },
  75. rules:{
  76. name:[
  77. { required: true, message: '请输入活动名称', trigger: 'blur' },
  78. ],
  79. type:[
  80. { required: true, message: '请选择活动类型', trigger: 'change' }
  81. ],
  82. begdate: [
  83. { required: true, message: '请选择开始日期', trigger: 'change' }
  84. ],
  85. enddate: [
  86. { validator:this.validateEndDate, trigger: 'change' }
  87. ],
  88. },
  89. options:[]
  90. }
  91. },
  92. methods:{
  93. onShow () {
  94. this.drawer = true
  95. this.form = Object.assign({},this.form,this.data)
  96. },
  97. validateEndDate(rule, value, callback){
  98. let start = (new Date(this.form.begdate)).getTime()
  99. let end = (new Date(this.form.enddate)).getTime()
  100. if (value === '' || !value) {
  101. this.form.enddate = ''
  102. callback();
  103. } else if (end < start) {
  104. callback(new Error('结束日期不能小于开始日期'))
  105. } else {
  106. callback();
  107. }
  108. },
  109. restForm () {
  110. this.form = {
  111. "sat_campaignid":0,
  112. "name":"",
  113. "director":"",
  114. "address":"",
  115. "type":"",
  116. "begdate":"",
  117. "enddate": ""
  118. }
  119. },
  120. submit () {
  121. this.$refs['form'].validate(async (valid) => {
  122. if (!valid) return false
  123. const res = await this.$api.requested({
  124. "classname":"webmanage.saletool.orderclue.ordercluecampaign",
  125. "method": "insertormodify_campaign",
  126. "content": this.form
  127. })
  128. this.tool.showMessage(res,()=>{
  129. this.dialogFormVisible = false
  130. this.$refs.form.resetFields()
  131. this.$emit('onSuccess')
  132. this.restForm()
  133. })
  134. });
  135. }
  136. }
  137. }
  138. </script>
  139. <style scoped>
  140. .dialog-footer{
  141. margin-top:32px;
  142. text-align: center;
  143. }
  144. </style>