index.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <!--
  2. * @Author:
  3. * @Date: 2023-03-01 19:20:44
  4. * @LastEditors: Please set LastEditors
  5. * @LastEditTime: 2024-03-13 17:45:49
  6. * @Description: kxs files
  7. * @filePath:
  8. -->
  9. <script lang="ts">
  10. // 声明额外的选项
  11. export default {
  12. name: "Add"
  13. };
  14. </script>
  15. <script setup lang="ts">
  16. import { inject, ref } from "vue";
  17. import { useRenderIcon } from "@/components/ReIcon/src/hooks";
  18. import { postUserList } from "@/api/system";
  19. import { ElMessage, ElMessageBox } from "element-plus";
  20. import { http } from "@/utils/http";
  21. import { dataResult } from "@/api/apiResult";
  22. // 获取URLLIST
  23. import { getGroupUrl } from "@/utils/getUrl/getUrl"
  24. // 获取当前板块接口列表
  25. const UserUrl = await getGroupUrl(['User']);
  26. import Upload from "@iconify-icons/ri/upload-2-fill"
  27. import Close from "@iconify-icons/ri/close-fill"
  28. const props = defineProps<{
  29. submit: {
  30. type: Function;
  31. default: () => {};
  32. };
  33. addVisible: {
  34. type: Boolean;
  35. default: false;
  36. };
  37. width: {
  38. type: Number;
  39. default: 50;
  40. };
  41. }>();
  42. // 表单数据
  43. let UpdateForm = ref({
  44. RealName: "",
  45. AdminName: "",
  46. PassWord: "",
  47. RoleId: "",
  48. });
  49. // 传参选项数据
  50. const optionList = [
  51. { Id: '1', label: '推荐' },
  52. { Id: '2', label: '实物' },
  53. { Id: '3', label: '虚拟商品' },
  54. ]
  55. // 选项卡参数(默认值为列表某项的id)
  56. const activeId = ref('1')
  57. // 提交函数
  58. const submit = async () => {
  59. const { status, info }: any = await postUserList(UpdateForm.value);
  60. // const { status, info }: any = await URL.postUserList.url(UpdateForm.value);
  61. if (status === "1") {
  62. ElMessage({
  63. message: "新增成功",
  64. type: "success"
  65. });
  66. UpdateForm.value = {
  67. AdminName: "",
  68. RealName: "",
  69. RoleId: "",
  70. PassWord: "",
  71. };
  72. } else {
  73. ElMessageBox.alert(info, "提示", {
  74. confirmButtonText: "关闭",
  75. type: "warning"
  76. });
  77. };
  78. };
  79. const closeFn: any = inject('closeAddVisible');
  80. // 关闭弹窗回调函数
  81. const closeVisible = () => {
  82. UpdateForm.value = {
  83. AdminName: "",
  84. RealName: "",
  85. RoleId: "",
  86. PassWord: "",
  87. };
  88. closeFn();
  89. };
  90. </script>
  91. <template lang="pug">
  92. .main
  93. el-dialog(v-model='props.addVisible' width="50%" title="新增" @close="closeVisible()")
  94. //- 有选项卡模板
  95. el-tabs(v-model="activeId" class="demo-tabs" @tab-click="handleClick")
  96. el-tab-pane(label="选项卡一" name="1")
  97. el-form(:model='UpdateForm' label-position="right" label-width="100px")
  98. el-form-item(label='账户名称' prop="RealName")
  99. el-input(v-model='UpdateForm.RealName' autocomplete='off' class="!w-[230px]"
  100. placeholder="请输入账户名称")
  101. el-form-item(label='用户名' prop="AdminName")
  102. el-input(v-model='UpdateForm.AdminName' autocomplete='off' class="!w-[230px]"
  103. placeholder="请输入用户名")
  104. el-form-item(label='密码' prop="PassWord")
  105. el-input(v-model='UpdateForm.PassWord' autocomplete='off' class="!w-[230px]"
  106. placeholder="请输入密码")
  107. el-form-item(label="角色:", prop="RoleId")
  108. el-select(
  109. v-model="UpdateForm.RoleId",
  110. placeholder="请选择用户角色",
  111. clearable,
  112. class="!w-[230px]"
  113. )
  114. el-option(:label="item.label", :value="item.Id" v-for="(item,index) in optionList")
  115. el-tab-pane(label="选项卡二" name="2")
  116. el-form(:model='UpdateForm' label-position="right" label-width="100px")
  117. el-form-item(label='账户名称' prop="RealName")
  118. el-input(v-model='UpdateForm.RealName' autocomplete='off' class="!w-[230px]"
  119. placeholder="请输入账户名称")
  120. el-form-item(label='用户名' prop="AdminName")
  121. el-input(v-model='UpdateForm.AdminName' autocomplete='off' class="!w-[230px]"
  122. placeholder="请输入用户名")
  123. el-form-item(label='密码' prop="PassWord")
  124. el-input(v-model='UpdateForm.PassWord' autocomplete='off' class="!w-[230px]"
  125. placeholder="请输入密码")
  126. el-form-item(label="角色:", prop="RoleId")
  127. el-select(
  128. v-model="UpdateForm.RoleId",
  129. placeholder="请选择用户角色",
  130. clearable,
  131. class="!w-[230px]"
  132. )
  133. el-option(:label="item.label", :value="item.Id" v-for="(item,index) in optionList")
  134. //- 无选项卡模板
  135. el-form(:model='UpdateForm' label-position="right" label-width="100px")
  136. el-form-item(label='账户名称' prop="RealName")
  137. el-input(v-model='UpdateForm.RealName' autocomplete='off' class="!w-[230px]"
  138. placeholder="请输入账户名称")
  139. el-form-item(label='用户名' prop="AdminName")
  140. el-input(v-model='UpdateForm.AdminName' autocomplete='off' class="!w-[230px]"
  141. placeholder="请输入用户名")
  142. el-form-item(label='密码' prop="PassWord")
  143. el-input(v-model='UpdateForm.PassWord' autocomplete='off' class="!w-[230px]"
  144. placeholder="请输入密码")
  145. el-form-item(label="角色:", prop="RoleId")
  146. el-select(
  147. v-model="UpdateForm.RoleId",
  148. placeholder="请选择用户角色",
  149. clearable,
  150. class="!w-[230px]"
  151. )
  152. el-option(:label="item.label", :value="item.Id" v-for="(item,index) in optionList")
  153. el-button(
  154. :icon="useRenderIcon(Close)",
  155. :loading="loading",
  156. @click="closeVisible()"
  157. ) 关闭
  158. el-button(
  159. type="primary",
  160. :icon="useRenderIcon(Upload)",
  161. :loading="loading",
  162. @click="submit"
  163. ) 确认提交
  164. </template>
  165. <style scoped lang="scss">
  166. :deep(.el-dropdown-menu__item i) {
  167. margin: 0;
  168. }
  169. :deep(.el-form-item__label) {
  170. font-weight: 700;
  171. }
  172. :deep(.el-pagination) {
  173. flex-flow: wrap;
  174. }
  175. :deep(.is-draggable) {
  176. max-height: 80vh;
  177. overflow: auto;
  178. }
  179. :deep(.el-dialog__header) {
  180. position: sticky;
  181. top: 0;
  182. z-index: 2;
  183. background: #fff;
  184. }
  185. .collapsedom {
  186. padding: 0 20px;
  187. background-color: #fff;
  188. }
  189. .ovh-x {
  190. height: 40vh;
  191. overflow-y: auto;
  192. }
  193. :deep(.el-descriptions__header) {
  194. margin: 16px 0 !important;
  195. }
  196. </style>