addOrEditItem.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <!-- 平台接入-新增或者编辑 -->
  2. <template>
  3. <el-dialog :title="ruleForm.id ? '编辑' : '新增'" v-model="isShowDialog" width="650px">
  4. <el-form :model="ruleForm" ref="formRef" :rules="rules" v-if="isShowDialog" label-width="100px">
  5. <el-form-item label="平台类型" prop="types">
  6. <el-select style="width: 100%;" v-model="ruleForm.types" placeholder="请选择">
  7. <el-option label="电信" value="1"></el-option>
  8. <!-- <el-option disabled label="联通" value="2"></el-option>-->
  9. <!-- <el-option label="移动" value="3"></el-option>-->
  10. </el-select>
  11. </el-form-item>
  12. <el-form-item label="名称" prop="name">
  13. <el-input v-model="ruleForm.name" placeholder="请输入名称" />
  14. </el-form-item>
  15. <el-form-item label="App ID" prop="appKey">
  16. <el-input v-model="ruleForm.appKey" placeholder="请输入App ID" />
  17. </el-form-item>
  18. <el-form-item v-if="ruleForm.types == '1'" label="secretKey" prop="appSecret">
  19. <el-input v-model="ruleForm.appSecret" placeholder="请输入secretKey" />
  20. </el-form-item>
  21. <el-form-item v-if="ruleForm.types == '1'" label="用户id" prop="userId">
  22. <el-input v-model="ruleForm.userId" placeholder="请输入用户id" />
  23. </el-form-item>
  24. <el-form-item label="密码" prop="password">
  25. <el-input v-model="ruleForm.password" placeholder="请输入密码" />
  26. </el-form-item>
  27. <el-form-item v-if="ruleForm.types == '3'" label="接口地址" prop="restUrl">
  28. <el-input v-model="ruleForm.restUrl" placeholder="请输入接口地址" />
  29. </el-form-item>
  30. <el-form-item label="状态">
  31. <!-- 1启用,0禁用 -->
  32. <el-switch v-model="ruleForm.status" active-value="1" inactive-value="0" inline-prompt active-text="启" inactive-text="禁"></el-switch>
  33. </el-form-item>
  34. <el-form-item label="说明">
  35. <el-input :rows="6" type="textarea" v-model="ruleForm.remark" placeholder="请输入说明" />
  36. </el-form-item>
  37. </el-form>
  38. <template #footer>
  39. <span class="dialog-footer">
  40. <el-button @click="onCancel">取 消</el-button>
  41. <el-button :loading="btnLoading" type="primary" @click="onSubmit">确定</el-button>
  42. </span>
  43. </template>
  44. </el-dialog>
  45. </template>
  46. <script lang="ts" setup>
  47. import api from '/@/api/modules/iotCard';
  48. import { ref, unref } from 'vue';
  49. import { ElMessage } from 'element-plus';
  50. const isShowDialog = ref(false);
  51. const formRef = ref<HTMLElement | null>(null);
  52. const emit = defineEmits(['updateList']);
  53. const btnLoading = ref(false);
  54. const baseForm = {
  55. id: undefined,
  56. types: "1",
  57. name: "",
  58. userId: "",
  59. password: "",
  60. appSecret: "",
  61. remark: "",
  62. appKey: "",
  63. restUrl: "",
  64. status: 1
  65. }
  66. const ruleForm = ref({
  67. ...baseForm
  68. })
  69. const rules = ref({
  70. types: [{ required: true, message: '请选择平台类型', trigger: 'change' }],
  71. name: [{ required: true, message: '请输入名称', trigger: 'change' }],
  72. userId: [{ required: true, message: '请输入用户id', trigger: 'change' }],
  73. password: [{ required: true, message: '请输入密码', trigger: 'change' }],
  74. appSecret: [{ required: true, message: '请输入secretKey', trigger: 'change' }],
  75. appKey: [{ required: true, message: '请输入App ID', trigger: 'change' }],
  76. restUrl: [{ required: true, message: '请输入接口地址', trigger: 'change' }]
  77. })
  78. /**
  79. * 新增
  80. */
  81. const onSubmit = () => {
  82. const formWrap = unref(formRef) as any;
  83. if (!formWrap) return;
  84. formWrap.validate(async (valid: boolean) => {
  85. if (!valid) return
  86. btnLoading.value = true
  87. if (ruleForm.value.id) {
  88. // 修改
  89. api.platform.editItem(ruleForm.value)
  90. .then(() => {
  91. ElMessage({ type: 'success', message: '修改成功' })
  92. emit('updateList')
  93. closeDialog();
  94. resetForm();
  95. })
  96. .finally(() => (btnLoading.value = false))
  97. } else {
  98. // 新增
  99. api.platform.addItem(ruleForm.value)
  100. .then(() => {
  101. ElMessage({ type: 'success', message: '添加成功' })
  102. emit('updateList')
  103. closeDialog();
  104. resetForm();
  105. })
  106. .finally(() => (btnLoading.value = false))
  107. }
  108. });
  109. };
  110. const resetForm = () => {
  111. ruleForm.value = {
  112. ...baseForm
  113. }
  114. }
  115. /**
  116. * 点击取消按钮
  117. */
  118. const onCancel = () => {
  119. closeDialog();
  120. };
  121. /**
  122. * 关闭弹窗
  123. */
  124. const closeDialog = () => {
  125. isShowDialog.value = false;
  126. };
  127. const openDialog = (item: any) => {
  128. if (item) {
  129. // 修改
  130. ruleForm.value = { ...item };
  131. } else {
  132. ruleForm.value = { ...baseForm };
  133. }
  134. isShowDialog.value = true;
  135. }
  136. defineExpose({ openDialog })
  137. </script>