recompose.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <el-dialog
  3. title="水权设置"
  4. :visible.sync="dialogVisible"
  5. :close-on-click-modal="false"
  6. :close-on-press-escape="false"
  7. @close="handleClose"
  8. width="950px"
  9. >
  10. <el-form
  11. ref="baseForm"
  12. class="base-form"
  13. label-position="right"
  14. label-width="130px"
  15. :model="baseForm"
  16. :rules="rules"
  17. size="small"
  18. >
  19. <el-row>
  20. <el-form-item label="电表品牌型号:" prop="productName">
  21. <el-select
  22. placeholder="请输入"
  23. disabled
  24. style="width:250px;"
  25. v-model="textarea">
  26. </el-select>
  27. </el-form-item>
  28. </el-row>
  29. <el-row>
  30. <el-form-item label="区域:" prop="productName">
  31. <el-select
  32. placeholder="请输入"
  33. disabled
  34. style="width:250px;"
  35. v-model="textarea">
  36. </el-select>
  37. <span>(上级组织:xxxx镇 总面积:56665亩 额定水权:6555m³ 剩余水权:6544)</span>
  38. </el-form-item>
  39. </el-row>
  40. <el-row>
  41. <el-form-item label="面积:" prop="productName">
  42. <el-input
  43. placeholder="请输入"
  44. v-model="textarea"
  45. style="width:250px;"
  46. >
  47. </el-input>
  48. <span style="margin-left:5px">亩</span>
  49. </el-form-item>
  50. </el-row>
  51. <el-row>
  52. <el-form-item label="额定水权:" prop="productName">
  53. <el-input
  54. placeholder="请输入"
  55. style="width:250px;"
  56. v-model="textarea">
  57. </el-input>
  58. <span style="margin-left:5px">m³ (上年实际用水量:65546m³ 剩余水权:6555m³)</span>
  59. </el-form-item>
  60. </el-row>
  61. <el-row>
  62. <el-form-item label="亩均水权:">
  63. <el-input
  64. placeholder="请输入"
  65. style="width:250px;"
  66. v-model="textarea">
  67. </el-input>
  68. <span style="margin-left:5px">亩/m³</span>
  69. </el-form-item>
  70. </el-row>
  71. </el-form>
  72. <div style="text-align: right">
  73. <el-button type="info" plain @click="resetForm('baseForm')"
  74. >取消</el-button
  75. >
  76. <el-button
  77. type="primary"
  78. @click="submitForm('baseForm')"
  79. :disabled="dialogSubmitLoading"
  80. :loading="dialogSubmitLoading"
  81. >确定</el-button
  82. >
  83. </div>
  84. </el-dialog>
  85. </template>
  86. <script>
  87. import { assign } from 'lodash-es';
  88. export default {
  89. props: {
  90. data: {
  91. default() {
  92. return {};
  93. }
  94. },
  95. visible: {
  96. type: Boolean,
  97. default: false
  98. }
  99. },
  100. data() {
  101. return {
  102. dialogSubmitLoading: false,
  103. dialogVisible: false,
  104. baseForm: {
  105. productValue: '',
  106. productName: '',
  107. stockAmount: '',
  108. goodsUnit: '',
  109. goodsSpecValue: '',
  110. imageArr1: [],
  111. supplierId: '',
  112. imageArr2: []
  113. },
  114. hasFetched: false,
  115. rules: {
  116. stockAmount: [
  117. { required: true, message: '请选择负责人', trigger: 'blur' }
  118. ],
  119. sourceinfoId: [
  120. { required: true, message: '请选择管辖范围', trigger: 'blur' }
  121. ],
  122. productName: [
  123. { required: true, message: '请输入协会名称', trigger: 'blur' }
  124. ],
  125. supplierId: [
  126. { required: false, message: '请输入协会介绍', trigger: 'blur' }
  127. ],
  128. goodsSpecValue: [
  129. { required: true, message: '请选择规格', trigger: 'blur' }
  130. ]
  131. }
  132. };
  133. },
  134. watch: {
  135. visible(val) {
  136. if (val !== this.dialogVisible) {
  137. this.dialogVisible = val;
  138. if (val) {
  139. assign(this.baseForm, this.data);
  140. if (!this.hasFetched) {
  141. this.hasFetched = true;
  142. }
  143. }
  144. }
  145. },
  146. data: {
  147. deep: true,
  148. handler(val) {
  149. assign(this.baseForm, val);
  150. }
  151. }
  152. },
  153. methods: {
  154. resetForm(formName) {
  155. this.dialogVisible = false;
  156. },
  157. submitForm(formName) {
  158. this.$refs[formName].validate((valid) => {
  159. console.log(valid)
  160. })
  161. },
  162. handleClose() {
  163. this.$emit('update:visible', false);
  164. this.resetForm('baseForm');
  165. },
  166. }
  167. };
  168. </script>
  169. <style lang="scss" scoped>
  170. .input-number {
  171. width: 100%;
  172. }
  173. .base-form {
  174. max-height: 70vh;
  175. overflow-y: auto;
  176. overflow-x: hidden;
  177. padding: 0 20px;
  178. }
  179. </style>
  180. <style lang="css" scoped>
  181. ::v-deep .el-dialog__header {
  182. border-bottom: 1px solid #ebeef5;
  183. }
  184. </style>