addMobiel.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <el-dialog
  3. :title="modalTitle"
  4. :visible.sync="modalVisible"
  5. :width="formLabelWidth"
  6. top="2vh"
  7. @close="handleCancel">
  8. <div class="mobile">
  9. <el-form label-width="90px" :model="form" :rules="rules" ref="from" class="from">
  10. <el-form-item label="碳汇量:" prop="orderCarbonAmount">
  11. <el-input type="text" v-model="form.orderCarbonAmount" :disabled="limit.isRead"></el-input>
  12. </el-form-item>
  13. <el-form-item label="购买区域:">
  14. <el-cascader
  15. ref="areaSelect"
  16. v-model="form.area"
  17. style="width:100%;"
  18. :props="areaProps"
  19. clearable
  20. ></el-cascader>
  21. </el-form-item>
  22. <el-form-item label="购买对象:">
  23. <el-input type="text" v-model="form.applyCustomName" :disabled="true"></el-input>
  24. </el-form-item>
  25. <el-form-item label="购买类别:" prop="productTypeGuid">
  26. <el-checkbox-group v-model="form.productTypeGuid">
  27. <el-checkbox
  28. v-for="(item,index) in buyTypeList"
  29. :label="item.guid"
  30. :key="index"
  31. >{{item.type_name}}</el-checkbox>
  32. </el-checkbox-group>
  33. </el-form-item>
  34. </el-form>
  35. </div>
  36. <div slot="footer" class="dialog-footer">
  37. <el-button @click="handleCancel">取 消</el-button>
  38. <el-button type="primary" @click="submit" v-if="!limit.isRead">确 定</el-button>
  39. </div>
  40. </el-dialog>
  41. </template>
  42. <script>
  43. import { listProductType , areaTree ,createOrder } from "@/api/order/subscription";
  44. export default {
  45. name: 'addMobiel',
  46. props: {
  47. visible: {
  48. type: Boolean,
  49. default: false
  50. },
  51. title: {
  52. type: String,
  53. default: 'title'
  54. },
  55. action: {
  56. type: String,
  57. default: 'add'
  58. },
  59. selectRow: {
  60. type: Object,
  61. default:null
  62. }
  63. },
  64. watch: {
  65. visible(newVal, oldVal) {
  66. this.modalVisible = newVal;
  67. },
  68. title(newVal, oldVal) {
  69. this.modalTitle = newVal;
  70. },
  71. action(newVal, oldVal) {
  72. this.modalAction = newVal;
  73. },
  74. selectRow(newVal, oldVal) {
  75. this.modalSelectRow = newVal;
  76. }
  77. },
  78. data() {
  79. return {
  80. modalTitle: this.title,
  81. modalVisible: this.visible,
  82. modalAction: this.action,
  83. modalSelectRow: this.selectRow,
  84. formLabelWidth: '624px',
  85. //窗口权限
  86. limit: {
  87. isRead: false, //是否只读
  88. isAdd: false //是否可写
  89. },
  90. //购买类型
  91. buyTypeList:[],
  92. //验证
  93. rules: {
  94. orderCarbonAmount: [{ required: true, message: '购买碳汇量不能为空!', trigger: 'blur' }],
  95. productTypeGuid: [{ required: true, message: ' 购买类别不能为空!', trigger: 'blur' }]
  96. },
  97. //行政区域
  98. areaProps:{
  99. lazy: true,
  100. checkStrictly:false,
  101. lazyLoad (node, resolve) {
  102. if (node.level === 0) {
  103. resolve( [{ label: '重庆市',value:'156050',leaf:false }] );
  104. }else{
  105. let params = {
  106. upCode:node.data.value
  107. }
  108. areaTree(params).then(res => {
  109. const areas = res.retBody.map((value,i) => ({
  110. value:value.code,
  111. label:value.name,
  112. leaf:value.level >= 5
  113. }))
  114. resolve(areas)
  115. })
  116. }
  117. }
  118. },
  119. //表单
  120. form: {
  121. orderType:1,
  122. applyCostomerId:'',
  123. productTypeGuid:[],
  124. area:[]
  125. }
  126. };
  127. },
  128. created() {
  129. switch (this.modalAction) {
  130. case 'edit':
  131. this.limit.isAdd = true;
  132. this.form.orderCarbonAmount = this.modalSelectRow.amount
  133. this.form.applyCostomerId = this.modalSelectRow.applyCustomerId
  134. this.form.guid = this.modalSelectRow.guid
  135. this.form.applyCustomName = this.modalSelectRow.applyCustomName
  136. this.getType()
  137. break;
  138. default:
  139. break;
  140. }
  141. },
  142. methods: {
  143. getType(){
  144. listProductType().then(res => {
  145. if (res.retHead.errCode === 0) {
  146. this.buyTypeList = res.retBody
  147. }
  148. });
  149. },
  150. //表单提交
  151. submit() {
  152. this.$refs.from.validate(valid => {
  153. if (valid) {
  154. let params = Object.assign({},this.form)
  155. params.villageId = params.area.length == 0 ? "" : params.area[4]
  156. params.productTypeGuid = params.productTypeGuid.join(';')
  157. createOrder(params).then(res => {
  158. if (res.retHead.errCode === 0) {
  159. this.msgSuccess("操作成功");
  160. this.modalVisible = false
  161. this.$emit('closeModal', true);
  162. }
  163. });
  164. } else {
  165. return false;
  166. }
  167. });
  168. },
  169. //窗口关闭
  170. handleCancel() {
  171. this.$emit('closeModal', false);
  172. }
  173. }
  174. };
  175. </script>
  176. <style lang="scss" scoped>
  177. </style>