TableEdit.vue 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <template>
  2. <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
  3. <el-form ref="form" :model="form" :rules="rules" label-width="120px">
  4. <div class="lists">
  5. <el-form-item label="id" prop="id">
  6. <el-input placeholder="请输入" class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
  7. </el-form-item>
  8. <el-form-item label="名称" prop="name">
  9. <el-input placeholder="请输入" class="inputs" v-model.trim="form.name" autocomplete="off"></el-input>
  10. </el-form-item>
  11. </div>
  12. <div class="lists">
  13. <el-form-item label="别称" prop="aname">
  14. <el-input placeholder="请输入" class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input>
  15. </el-form-item>
  16. <el-form-item label="编码" prop="code">
  17. <el-input placeholder="请输入" class="inputs" v-model="form.code" autocomplete="off"></el-input>
  18. </el-form-item>
  19. </div>
  20. <div class="lists">
  21. <el-form-item label="地址" prop="address">
  22. <el-input placeholder="请输入" class="inputs" v-model="form.address" autocomplete="off"></el-input>
  23. </el-form-item>
  24. <el-form-item label="电话" prop="telephone">
  25. <el-input placeholder="请输入" class="inputs" v-model.number="form.telephone" autocomplete="off"
  26. @blur="onBlur(form.telephone,'telephone')"></el-input>
  27. </el-form-item>
  28. </div>
  29. <div class="lists">
  30. <el-form-item label="装机容量" prop="capacity">
  31. <el-input placeholder="请输入" class="inputs" v-model="form.capacity" autocomplete="off"></el-input>
  32. </el-form-item>
  33. <el-form-item label="容量单位" prop="capacityunit">
  34. <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacityunit" autocomplete="off"></el-input>
  35. </el-form-item>
  36. </div>
  37. <div class="lists">
  38. <el-form-item label="装机数量" prop="quantity">
  39. <el-input placeholder="请输入"class="inputs" v-model.number="form.quantity" autocomplete="off"
  40. @blur="onBlur(form.quantity,'quantity')">
  41. </el-input>
  42. </el-form-item>
  43. <el-form-item label="地球经度" prop="longitude">
  44. <el-input placeholder="请输入" class="inputs" v-model.trim="form.longitude" autocomplete="off"></el-input>
  45. </el-form-item>
  46. </div>
  47. <div class="lists">
  48. <el-form-item label="地球纬度" prop="latitude">
  49. <el-input placeholder="请输入" class="inputs" v-model="form.latitude" autocomplete="off"></el-input>
  50. </el-form-item>
  51. <el-form-item label="图片" prop="photo">
  52. <el-input placeholder="请输入" class="inputs" v-model.trim="form.photo" autocomplete="off"></el-input>
  53. </el-form-item>
  54. </div>
  55. <div class="lists">
  56. <el-form-item label="公司编号" prop="companyid">
  57. <el-select style="width: 200px;" v-model="form.companyid" placeholder="请选择" clearable>
  58. <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
  59. </el-option>
  60. </el-select>
  61. </el-form-item>
  62. <el-form-item label="系统厂家" prop="systemmanufact">
  63. <el-input placeholder="请输入" class="inputs" v-model.trim="form.systemmanufact" autocomplete="off"></el-input>
  64. </el-form-item>
  65. </div>
  66. <div class="lists">
  67. <el-form-item label="场长" prop="headfarm">
  68. <el-input placeholder="请输入" class="inputs" v-model="form.headfarm" autocomplete="off"></el-input>
  69. </el-form-item>
  70. <el-form-item label="场长电话" prop="headfarmphone">
  71. <el-input placeholder="请输入" class="inputs" v-model.number="form.headfarmphone" autocomplete="off"
  72. @blur="onBlur(form.headfarmphone,'headfarmphone')"></el-input>
  73. </el-form-item>
  74. </div>
  75. <div class="lists">
  76. <el-form-item label="机型" prop="model">
  77. <el-input placeholder="请输入" class="inputs" v-model="form.model" autocomplete="off"></el-input>
  78. </el-form-item>
  79. <el-form-item label="顺序" prop="ordernum">
  80. <el-input placeholder="请输入" class="inputs" v-model.number="form.ordernum" autocomplete="off"
  81. @blur="onBlur(form.ordernum,'ordernum')">
  82. </el-input>
  83. </el-form-item>
  84. </div>
  85. <div class="lists">
  86. <el-form-item label="海拔高度" prop="height">
  87. <el-input placeholder="请输入" class="inputs" v-model.trim="form.height" autocomplete="off"></el-input>
  88. </el-form-item>
  89. <el-form-item label="区域编号" prop="regionid">
  90. <!-- <el-input placeholder="请输入"class="inputs" v-model.trim="form.regionid" autocomplete="off"></el-input> -->
  91. <el-cascader
  92. v-model="form.regionid"
  93. :options="options"
  94. style="width: 200px"
  95. :props="{ checkStrictly: true, emitPath: true, label: 'name', value: 'id' , children:'children'}"
  96. />
  97. </el-form-item>
  98. </div>
  99. </el-form>
  100. <div slot="footer" class="dialog-footer">
  101. <el-button @click="close">取 消</el-button>
  102. <el-button type="primary" @click="save">确 定</el-button>
  103. </div>
  104. </el-dialog>
  105. </template>
  106. <script>
  107. import api from '@/api/station'
  108. export default {
  109. name: 'TableEdit',
  110. props: {
  111. options: {
  112. type: Array,
  113. default: []
  114. },
  115. stationList: {
  116. type: Array,
  117. default: []
  118. },
  119. },
  120. data() {
  121. return {
  122. form: {
  123. id: '',
  124. name: '',
  125. regionid: '',
  126. aname: '',
  127. code: '',
  128. address: '',
  129. telephone: '',
  130. capacity: '',
  131. capacityunit: '',
  132. quantity: '',
  133. longitude: '',
  134. latitude: '',
  135. photo: '',
  136. companyid: '',
  137. systemmanufact: '',
  138. headfarm: '',
  139. headfarmphone: '',
  140. model: '',
  141. ordernum: '',
  142. height: '',
  143. },
  144. rules: {
  145. id: [{ required: true, trigger: 'blur', message: '请输入' }],
  146. name: [{ required: true, trigger: 'blur', message: '请输入' }],
  147. regionid: [{ required: true, trigger: 'blur', message: '请输入' }],
  148. aname: [{ required: true, trigger: 'blur', message: '请输入' }],
  149. code: [{ required: true, trigger: 'blur', message: '请输入' }],
  150. address: [{ required: true, trigger: 'blur', message: '请输入' }],
  151. telephone: [{ required: true, trigger: 'blur', message: '请输入' }],
  152. capacity: [{ required: true, trigger: 'blur', message: '请输入' }],
  153. capacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
  154. quantity: [{ required: true, trigger: 'blur', message: '请输入' }],
  155. longitude: [{ required: true, trigger: 'blur', message: '请输入' }],
  156. latitude: [{ required: true, trigger: 'blur', message: '请输入' }],
  157. photo: [{ required: true, trigger: 'blur', message: '请输入' }],
  158. companyid: [{ required: true, trigger: 'blur', message: '请输入' }],
  159. systemmanufact: [{ required: true, trigger: 'blur', message: '请输入' }],
  160. headfarm: [{ required: true, trigger: 'blur', message: '请输入' }],
  161. headfarmphone: [{ required: true, trigger: 'blur', message: '请输入' }],
  162. model: [{ required: true, trigger: 'blur', message: '请输入' }],
  163. ordernum: [{ required: true, trigger: 'blur', message: '请输入' }],
  164. height: [{ required: true, trigger: 'blur', message: '请输入' }],
  165. },
  166. title: '',
  167. dialogFormVisible: false,
  168. idAdd: true,
  169. }
  170. },
  171. created() { },
  172. methods: {
  173. showEdit(row) {
  174. if (!row) {
  175. this.title = '添加'
  176. this.idAdd = true
  177. } else {
  178. this.title = '编辑'
  179. this.idAdd = false
  180. this.form = Object.assign({}, row)
  181. this.form.regionid = row.regionid.split(",")
  182. }
  183. this.dialogFormVisible = true
  184. },
  185. close() {
  186. this.$refs['form'].resetFields()
  187. this.form = this.$options.data().form
  188. this.dialogFormVisible = false
  189. this.$emit('fetch-data')
  190. },
  191. save() {
  192. console.log(this.form);
  193. this.$refs['form'].validate(async (valid) => {
  194. if (valid) {
  195. this.form.regionid = this.form.regionid.join(",")
  196. api.addWindpowerstation(this.form).then(res => {
  197. if (res.data) {
  198. this.$message({
  199. type: 'success',
  200. message: '添加成功!'
  201. });
  202. this.$emit('save-success');
  203. this.dialogFormVisible = false
  204. }
  205. })
  206. } else {
  207. return false
  208. }
  209. })
  210. },
  211. handleChange() {
  212. },
  213. onBlur(val, param) {
  214. if (typeof (this.form[param]) !== 'number') {
  215. this.form[param] = val.replace(/[^0-9]/ig, "")
  216. }
  217. },
  218. },
  219. }
  220. </script>
  221. <style lang="less" scoped>
  222. .inputs {
  223. width: 200px;
  224. }
  225. .lists {
  226. display: flex;
  227. flex-direction: row;
  228. align-items: center;
  229. justify-content: space-between;
  230. }
  231. </style>