AddNode.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <div>
  3. <el-dialog v-model="dialogVisible" title="添加模型定义" width="30%" @close="closes">
  4. <!-- -->
  5. <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm"
  6. status-icon>
  7. <el-form-item label="模型名称" prop="name">
  8. <el-input v-model="ruleForm.name"></el-input>
  9. </el-form-item>
  10. <el-form-item label="电压等级" prop="flashName">
  11. <el-select @change="flashCase" v-model="ruleForm.flashName" placeholder="请选择电压等级">
  12. <template v-for="(item, index) in flashLel">
  13. <el-option :label="item.name" :value="item.id" />
  14. </template>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item label="接线方式" prop="linkStyle">
  18. <el-select @change="moduleChange" v-model="ruleForm.linkStyle" placeholder="请选择接线方式">
  19. <template v-for="(item, index) in moduleList">
  20. <el-option v-if="ruleForm.flashName == '' || ruleForm.flashName == item.vol_level_id"
  21. :label="item.name" :value="item.id" />
  22. </template>
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item label="间隔类型" prop="moduleId">
  26. <el-select @change="flashChange" v-model="ruleForm.moduleId" placeholder="请选择间隔类型">
  27. <template v-for="(item, index) in selectList">
  28. <el-option :label="item.name" :value="item.id" />
  29. </template>
  30. </el-select>
  31. </el-form-item>
  32. </el-form>
  33. <template #footer>
  34. <span class="dialog-footer">
  35. <el-button @click="cancels">取消</el-button>
  36. <el-button type="primary" @click="sureClick">
  37. 确定
  38. </el-button>
  39. </span>
  40. </template>
  41. </el-dialog>
  42. </div>
  43. </template>
  44. <script>
  45. import { ref, unref, onMounted, toRefs, reactive, watch } from 'vue';
  46. import systemRow from '@/api/systemRow';
  47. import litLine from '@/api/litLine';
  48. import cid from '@/api/cid/cid';
  49. import { ElMessage } from 'element-plus';
  50. export default {
  51. props: {
  52. nodeMos: {
  53. type: Boolean,
  54. required: true,
  55. },
  56. goMap: {
  57. type: Function,
  58. required: true
  59. },
  60. needRow: {
  61. type: Object,
  62. require: true
  63. }
  64. },
  65. setup(props, { emit }) {
  66. let dialogVisible = ref(false)//模态框显示
  67. let result = props.nodeMos
  68. let ruleForm = ref({
  69. id: 0,
  70. name: "",//模型名称
  71. linkStyle: "",//接线方式
  72. moduleId: '',//模型类型
  73. flashName: ''//电压等级
  74. })
  75. let selectList = ref([])
  76. let moduleList = ref([])
  77. let flashLel = ref([])
  78. let coolRow = ref({})
  79. let rules = reactive({
  80. name: [
  81. { required: true, message: '请输入名称', trigger: 'blur' },
  82. ],
  83. flashName: [
  84. {
  85. required: true, message: '请选择电压等级', trigger: 'blur'
  86. }
  87. ],
  88. linkStyle: [
  89. {
  90. required: true, message: '请选择接线方式', trigger: 'blur'
  91. }
  92. ],
  93. moduleId: [
  94. {
  95. required: true, message: '请选择间隔类型', trigger: 'blur'
  96. }
  97. ]
  98. })
  99. let ruleFormRef = ref(null)
  100. watch(() => props.needRow, (newVal) => {
  101. coolRow.value = newVal
  102. ruleForm.value.name = coolRow.value.model_name || ''
  103. ruleForm.value.linkStyle = coolRow.value.line_link_style || ''
  104. ruleForm.value.flashName = coolRow.value.vol_id || ''
  105. ruleForm.value.moduleId = coolRow.value.area_type || ''
  106. ruleForm.value.id = coolRow.value.id || 0
  107. dialogVisible.value = true
  108. })
  109. function lineList() {
  110. dialogVisible.value = result
  111. }
  112. function searchFlashLel() {
  113. ruleForm.value.id = props.needRow.id || 0
  114. ruleForm.value.name = props.needRow.model_name || ''
  115. systemRow.getChildren({ code: "area_type" }).then(res => {
  116. selectList.value = res.data
  117. ruleForm.value.moduleId = props.needRow.area_type
  118. })
  119. systemRow.getChildren({ code: "voltage_level" }).then(res => {
  120. flashLel.value = res.data
  121. ruleForm.value.flashName = props.needRow.vol_id
  122. })
  123. litLine.getAllLine({ pageno: 1, pagesize: 100 }).then(res => {
  124. console.log(res, '接线方式');
  125. moduleList.value = res.data
  126. ruleForm.value.linkStyle = props.needRow.line_link_style
  127. })
  128. }
  129. function flashChange(e) {
  130. ruleForm.value.moduleId = e
  131. }
  132. function moduleChange(e) {
  133. ruleForm.value.linkStyle = e
  134. }
  135. function flashCase(e) {
  136. ruleForm.value.flashName = e
  137. }
  138. function getBack() {
  139. dialogVisible.value = false
  140. emit("addBack", false)
  141. }
  142. function getSure() {
  143. if (ruleForm.value.name == '' || ruleForm.value.flashName == '' || ruleForm.value.linkStyle == '' || ruleForm.value.moduleId == '') {
  144. ruleFormRef.value.validate((valid) => {
  145. if (valid) {
  146. // 验证通过,执行相应操作
  147. console.log('验证通过');
  148. } else {
  149. // 验证不通过,执行相应操作
  150. console.log('验证不通过');
  151. }
  152. });
  153. } else {
  154. cid.saveMap({
  155. id: ruleForm.value.id,
  156. model_name: ruleForm.value.name,
  157. vol_id: ruleForm.value.flashName - 0,
  158. line_link_style: ruleForm.value.linkStyle - 0,
  159. area_type: ruleForm.value.moduleId - 0,
  160. }).then(res => {
  161. if (res.code == 0) {
  162. ElMessage({
  163. type: "success",
  164. message: "添加成功",
  165. duration: 2000
  166. })
  167. dialogVisible.value = false
  168. emit("addBack", true)
  169. } else {
  170. ElMessage({
  171. type: "error",
  172. message: res.msg,
  173. duration: 2000
  174. })
  175. }
  176. })
  177. }
  178. }
  179. onMounted(() => {
  180. lineList()
  181. searchFlashLel()
  182. })
  183. return {
  184. dialogVisible,
  185. searchFlashLel,
  186. ruleForm,
  187. rules,
  188. selectList,
  189. lineList,
  190. flashChange,
  191. cancels: getBack,
  192. closes: getBack,
  193. sureClick: getSure,
  194. moduleChange,
  195. moduleList,
  196. flashLel,
  197. flashCase,
  198. coolRow,
  199. ruleFormRef,//表单ref
  200. }
  201. }
  202. }
  203. </script>
  204. <style lang="scss" scoped></style>