addSiteCom.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <el-dialog
  3. :title="dialogTitle"
  4. v-model="dialogVisible"
  5. @close="closeDialog2()"
  6. @open="open"
  7. width="500px"
  8. >
  9. <el-form
  10. ref="formInfo"
  11. :model="form"
  12. class="demo-form-inline"
  13. label-width="100px"
  14. :rules="rules"
  15. >
  16. <el-form-item label="站点名称:" prop="siteName">
  17. <el-input v-model="form.siteName"></el-input>
  18. </el-form-item>
  19. <!-- <el-form-item label="站点编号:" prop="siteName">
  20. <el-input v-model="form.siteName"></el-input>
  21. </el-form-item> -->
  22. <el-form-item label="选择模板:" prop="region">
  23. <el-select v-model="form.region" placeholder="请选择">
  24. <el-option v-for="(item,index) in listData" :key="index" :label="item.siteName" :value="item.id"></el-option>
  25. </el-select>
  26. </el-form-item>
  27. <div style="text-align: right">
  28. <el-button type="primary" @click="submitForm('formInfo')"
  29. >保存</el-button
  30. >
  31. </div>
  32. </el-form>
  33. </el-dialog>
  34. </template>
  35. <script>
  36. import { defineComponent, ref, watchEffect,onMounted } from 'vue'
  37. import * as api from '@/api/siteManage/index'
  38. import { ElMessage } from 'element-plus'
  39. export default defineComponent({
  40. name: 'AddSiteCom',
  41. emits: ['closeDialog2'],
  42. props: {
  43. flag: Boolean,
  44. dialogTitle: String,
  45. itemInfo: Object,
  46. treeLevel:Number,
  47. groupingId:Number
  48. },
  49. setup(props, context) {
  50. context
  51. const dialogVisible = ref(false)
  52. const formInfo = ref(null)
  53. const form = ref([])
  54. const listData=ref([])
  55. // open(): Dialog弹窗打开之前做的事
  56. const open = () => {
  57. form.value = props.itemInfo.value
  58. }
  59. // 关闭弹框
  60. const closeDialog2 = () => {
  61. context.emit('closeDialog2')
  62. // context.emit('treeLevel', 3)
  63. // dialogVisible.value = false
  64. }
  65. watchEffect((fn, options) => {
  66. fn, options
  67. dialogVisible.value = props.flag
  68. })
  69. const roleValid = (rule, value, callback) => {
  70. rule
  71. if (value.length === 0) {
  72. callback(new Error('角色不能为空'))
  73. } else {
  74. callback()
  75. }
  76. }
  77. // 保存-修改操作
  78. const submitForm = () => {
  79. console.log('form.region')
  80. console.log(form.value.region)
  81. console.log('form.siteName')
  82. console.log(form.value.siteName)
  83. formInfo.value.validate((valid) => {
  84. if (valid) {
  85. context.emit('changeFather', form.value.siteName,form.value.region?form.value.region:'',props.groupingId.value)
  86. } else {
  87. console.log('error submit!!')
  88. return false
  89. }
  90. })
  91. }
  92. //站点模板下拉列表
  93. function list() {
  94. api.list({}).then((requset) => {
  95. if (requset.status === 'SUCCESS') {
  96. listData.value=requset.data
  97. } else {
  98. ElMessage.error(requset.msg)
  99. }
  100. })
  101. }
  102. onMounted(() => {
  103. list()
  104. })
  105. return {
  106. closeDialog2,
  107. dialogVisible,
  108. listData,
  109. roleValid,
  110. formInfo,
  111. form,
  112. open,
  113. submitForm,
  114. rules: {
  115. siteName: [
  116. // required 是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
  117. { required: true, message: "请输入站点名称", trigger: "blur" },
  118. // {
  119. // min: 3,
  120. // max: 6,
  121. // message: "用户名长度在 3 到 6 个字符",
  122. // trigger: "blur",
  123. // },
  124. ],
  125. },
  126. }
  127. },
  128. })
  129. </script>
  130. <style scoped lang="scss">
  131. </style>