dispatch.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. define({
  2. name: "delivery",
  3. template: `
  4. <div>
  5. <el-form label-width="15%" >
  6. <div id="vue_head">
  7. <div class="base_set">
  8. <div class="vue-main-title">
  9. <div class="vue-main-title-left"></div>
  10. <div class="vue-main-title-content">配送</div>
  11. </div>
  12. <div class="vue-main-form">
  13. <el-form-item label="运费配置">
  14. <el-radio v-model="form.dispatch.dispatch_type" :label="1">统一邮费</el-radio>
  15. <el-radio v-model="form.dispatch.dispatch_type" :label="0">运费模板</el-radio>
  16. </el-form-item>
  17. <el-form-item label=" ">
  18. <div>
  19. <el-input v-model="form.dispatch.dispatch_price" style="width:30%;" v-if="form.dispatch.dispatch_type == 1">
  20. <template slot="append">元</template>
  21. </el-input>
  22. <div v-if="(Number(form.dispatch.dispatch_price) < 0 || form.dispatch.dispatch_price == '') && form.dispatch.dispatch_type" class="tip-bg">请输入大于等于0的数</div>
  23. <el-select v-model="form.dispatch.dispatch_id" placeholder="请选择运费模板" v-if="form.dispatch.dispatch_type == 0" clearable filterable allow-create default-first-option>
  24. <el-option :label="item.dispatch_name" :value="item.id" v-for="(item,index) in form.dispatch_templates" :key="index">{{item.dispatch_name}}</el-option>
  25. </el-select>
  26. </div>
  27. </el-form-item>
  28. <el-form-item label="配送方式" v-if="form.dispatchTypesSetting.length > 0">
  29. <el-checkbox-group v-model="form.dispatch.dispatch_type_ids">
  30. <el-checkbox :label="item.id" :value="item.id" v-for="(item,index) in form.dispatchTypesSetting" :key="index">{{item.name}}</el-checkbox>
  31. </el-checkbox-group>
  32. </el-form-item>
  33. </div>
  34. </div>
  35. </div>
  36. </el-form>
  37. </div>
  38. `,
  39. data(){
  40. return {
  41. freight_list:[{
  42. id:0,
  43. name:"默认模板"
  44. },{
  45. id:1,
  46. name:"其他模板"
  47. }],
  48. yesRegular:true,
  49. }
  50. },
  51. watch:{
  52. 'form.dispatch.dispatch_type':{
  53. handler(val, olVal) {
  54. if(this.form.dispatch.dispatch_type) {
  55. this.yesRegular = this.form.dispatch.dispatch_price == "" ? false : true;
  56. }
  57. },
  58. deep:true
  59. },
  60. 'form.dispatch.dispatch_price':{
  61. handler(val, olVal){
  62. let regular = new RegExp(/^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/)
  63. let dispatchPrice = regular.test(this.form.dispatch.dispatch_price);
  64. if(!dispatchPrice){
  65. this.yesRegular = false
  66. return
  67. }
  68. this.yesRegular = true
  69. },
  70. deep:true
  71. }
  72. },
  73. mounted() {
  74. let dispatch_type_ids_list = []
  75. this.form.dispatch.dispatch_type_ids.forEach(element => {
  76. dispatch_type_ids_list.push(element * 1)
  77. });
  78. if(this.form.dispatch.dispatch_id == null || this.form.dispatch.dispatch_id == 0){
  79. this.form.dispatch.dispatch_id = ""
  80. }
  81. this.form.dispatch.dispatch_type_ids = dispatch_type_ids_list
  82. },
  83. methods: {
  84. extraDate(){
  85. },
  86. validate(){
  87. if(!this.yesRegular){
  88. return false;
  89. }else{
  90. let new_dispatch_type_ids = [];
  91. for(let item of this.form.dispatch.dispatch_type_ids) {
  92. for(let citem of this.form.dispatchTypesSetting) {
  93. if(item == citem.id) {
  94. new_dispatch_type_ids.push(item)
  95. }
  96. }
  97. }
  98. return {
  99. dispatch_type:this.form.dispatch.dispatch_type,
  100. dispatch_price:this.form.dispatch.dispatch_price ? this.form.dispatch.dispatch_price : "",
  101. dispatch_type_ids:new_dispatch_type_ids,
  102. dispatch_id:this.form.dispatch.dispatch_id
  103. };
  104. }
  105. }
  106. },
  107. style: `.tip-bg {
  108. color: #EE3939;
  109. font-size: 12px;
  110. line-height: 1;
  111. margin-top: 10px;
  112. }`,
  113. props: {
  114. form: {
  115. type: Object,
  116. default() {
  117. return {}
  118. }
  119. }
  120. }
  121. })