TableEdit.vue 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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="编码" 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="status">
  9. <el-input placeholder="请输入" class="inputs" v-model.trim="form.status" autocomplete="off"></el-input>
  10. </el-form-item>
  11. </div>
  12. <div class="lists">
  13. <el-form-item label="风机名称" prop="name">
  14. <el-input placeholder="请输入" class="inputs" v-model="form.name" autocomplete="off"></el-input>
  15. </el-form-item>
  16. <el-form-item label="首次并网时间" prop="firstintegratedtime">
  17. <el-date-picker style="width: 200px" v-model="form.firstintegratedtime" type="date" placeholder="选择日期">
  18. </el-date-picker>
  19. </el-form-item>
  20. </div>
  21. <div class="lists">
  22. <el-form-item label="风场编号" prop="windpowerstationid">
  23. <!-- <el-select v-model="form.windpowerstationid" placeholder="请选择" clearable>
  24. <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
  25. </el-option>
  26. </el-select> -->
  27. <el-cascader
  28. @change="windpowerstationidChange"
  29. placeholder="请选择"
  30. v-model="form.windpowerstationid"
  31. :options="windpowerstationid_options"
  32. style="width: 200px"
  33. :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children'}"
  34. clearable />
  35. </el-form-item>
  36. <el-form-item label="工程编号" prop="projectid">
  37. <el-input placeholder="请输入" class="inputs" v-model.trim="form.projectid" autocomplete="off"></el-input>
  38. </el-form-item>
  39. </div>
  40. <div class="lists">
  41. <el-form-item label="线路编号" prop="lineid">
  42. <!-- <el-input class="inputs" v-model.trim="form.lineid" autocomplete="off"></el-input> -->
  43. <el-cascader
  44. placeholder="请选择"
  45. v-model="form.lineid"
  46. :options="lineid_options"
  47. style="width: 200px"
  48. :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children'}"
  49. clearable />
  50. </el-form-item>
  51. <el-form-item label="地球纬度" prop="latitude">
  52. <el-input placeholder="请输入" class="inputs" v-model.trim="form.latitude" autocomplete="off"></el-input>
  53. </el-form-item>
  54. </div>
  55. <div class="lists">
  56. <el-form-item label="地球经度" prop="longitude">
  57. <el-input placeholder="请输入" class="inputs" v-model="form.longitude" autocomplete="off"></el-input>
  58. </el-form-item>
  59. <el-form-item label="机型" prop="modelid">
  60. <el-input placeholder="请输入" class="inputs" v-model.trim="form.modelid" autocomplete="off"></el-input>
  61. </el-form-item>
  62. </div>
  63. <div class="lists">
  64. <el-form-item label="图片" prop="photo">
  65. <el-input placeholder="请输入" class="inputs" v-model="form.photo" autocomplete="off">
  66. </el-input>
  67. </el-form-item>
  68. <el-form-item label="标杆风机" prop="standardid">
  69. <el-input placeholder="请输入" class="inputs" v-model.trim="form.standardid" autocomplete="off"></el-input>
  70. </el-form-item>
  71. </div>
  72. </el-form>
  73. <div slot="footer" class="dialog-footer">
  74. <el-button @click="close">取 消</el-button>
  75. <el-button type="primary" @click="save">确 定</el-button>
  76. </div>
  77. </el-dialog>
  78. </template>
  79. <script>
  80. import api from '@/api/station'
  81. import dayjs from "dayjs";
  82. import { recursionTree, recursionTreeChildren } from '@/utils/deepTree'
  83. export default {
  84. name: 'TableEdit',
  85. props: {
  86. // options: {
  87. // type: Array,
  88. // default: []
  89. // },
  90. stationList: {
  91. type: Array,
  92. default: []
  93. },
  94. },
  95. data() {
  96. return {
  97. optionsAll: [],
  98. windpowerstationid_options: [],
  99. lineid_options: [],
  100. form: {
  101. id: '',
  102. name: '',
  103. code: '',
  104. },
  105. rules: {
  106. id: [{ required: true, trigger: 'blur', message: '请输入' }],
  107. name: [{ required: true, trigger: 'blur', message: '请输入' }],
  108. status: [{ required: true, trigger: 'blur', message: '请输入' }],
  109. firstintegratedtime: [{ required: true, trigger: 'blur', message: '请输入' }],
  110. windpowerstationid: [{ required: true, trigger: 'blur', message: '请输入' }],
  111. projectid: [{ required: true, trigger: 'blur', message: '请输入' }],
  112. lineid: [{ required: true, trigger: 'blur', message: '请输入' }],
  113. latitude: [{ required: true, trigger: 'blur', message: '请输入' }],
  114. longitude: [{ required: true, trigger: 'blur', message: '请输入' }],
  115. modelid: [{ required: true, trigger: 'blur', message: '请输入' }],
  116. photo: [{ required: true, trigger: 'blur', message: '请输入' }],
  117. standardid: [{ required: true, trigger: 'blur', message: '请输入' }],
  118. },
  119. title: '',
  120. dialogFormVisible: false,
  121. idAdd: true,
  122. }
  123. },
  124. created() {
  125. },
  126. methods: {
  127. windpowerstationidChange(data){
  128. if(data){
  129. this.lineid_options = recursionTreeChildren(data[data.length - 1], this.optionsAll)
  130. }
  131. },
  132. getTree() {
  133. api.newtreeTreels({tag:2}).then(res => {
  134. if (res.data) {
  135. this.windpowerstationid_options = res.data
  136. }
  137. })
  138. api.newtreeTreels({tag:4}).then(res => {
  139. if (res.data) {
  140. this.optionsAll = res.data
  141. }
  142. })
  143. },
  144. showEdit(row) {
  145. this.getTree()
  146. if (!row) {
  147. this.title = '添加'
  148. this.idAdd = true
  149. } else {
  150. this.title = '编辑'
  151. this.idAdd = false
  152. this.form = Object.assign({}, row)
  153. // this.lineid_options = recursionTreeChildren(this.form.windpowerstationid, this.optionsAll)
  154. }
  155. this.dialogFormVisible = true
  156. },
  157. close() {
  158. this.$refs['form'].resetFields()
  159. this.form = this.$options.data().form
  160. this.dialogFormVisible = false
  161. this.$emit('fetch-data')
  162. },
  163. save() {
  164. this.$refs['form'].validate(async (valid) => {
  165. if (valid) {
  166. this.form.windpowerstationid = this.form.windpowerstationid[this.form.windpowerstationid.length - 1]
  167. this.form.lineid = this.form.lineid[this.form.lineid.length - 1]
  168. this.form.firstintegratedtime = dayjs(this.form.firstintegratedtime).format("YYYY-MM-DD")
  169. api.addWindturbine(this.form).then(res => {
  170. if (res.data) {
  171. this.$message({
  172. type: 'success',
  173. message: '添加成功!'
  174. });
  175. this.$emit('save-success');
  176. this.dialogFormVisible = false
  177. }
  178. })
  179. } else {
  180. return false
  181. }
  182. })
  183. },
  184. handleChange() {
  185. },
  186. onBlur(val, param) {
  187. if (typeof (this.form[param]) !== 'number') {
  188. this.form[param] = val.replace(/[^0-9]/ig, "")
  189. }
  190. },
  191. },
  192. }
  193. </script>
  194. <style lang="less" scoped>
  195. .inputs {
  196. width: 200px;
  197. }
  198. .lists {
  199. display: flex;
  200. flex-direction: row;
  201. align-items: center;
  202. justify-content: space-between;
  203. }
  204. </style>