edit.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <a-modal
  3. :width="1200"
  4. v-model:visible="visible"
  5. :title="title"
  6. :confirm-loading="confirmLoading"
  7. @ok="handleOk"
  8. ok-text="提交"
  9. @cancel="handleCancel"
  10. cancel-text="取消"
  11. :keyboard="false"
  12. :mask-closable="false" >
  13. <a-form :model="dataModel" autocomplete="off">
  14. <a-divider orientation="left">基础信息</a-divider>
  15. <a-row type="flex">
  16. <a-col :span="7">
  17. <a-form-item label="姓名" name="name" :label-col="{span:7}" :rules="[{ required: true, message: '请输入人员姓名!' }]">
  18. <label v-if="opCategory==3">{{dataModel.name}}</label>
  19. <a-input v-model:value="dataModel.name" placeholder=""/>
  20. </a-form-item>
  21. </a-col>
  22. <a-col :span="8">
  23. <a-form-item label="性别" name="gender" :label-col="{span:7}" :rules="[{required: true, message: '请选择人员性别!' }]">
  24. <label v-if="opCategory==3">{{dataModel.gender}}</label>
  25. <a-select ref="select" v-model:value="dataModel.gender" :options="genderList"
  26. :field-names="{ label: 'name', value: 'value' }" :allow-clear="false" > </a-select>
  27. </a-form-item>
  28. </a-col>
  29. <a-col :span="8">
  30. <a-form-item label="联系电话" name="mobile" :label-col="{span:8}" :rules="[{ required: true, message: '请输入联系电话!' }]" >
  31. <label v-if="opCategory==3">{{dataModel.mobile}}</label>
  32. <a-input v-model:value="dataModel.mobile" placeholder=""/>
  33. </a-form-item>
  34. </a-col>
  35. </a-row>
  36. <a-row type="flex">
  37. <a-col :span="7">
  38. <a-form-item label="角色" name="roleID" :label-col="{span:7}" :rules="[{ required: true, message: '请选择人员角色!' }]">
  39. <label v-if="opCategory==3">{{dataModel.roleID }}</label>
  40. <a-select ref="select" v-model:value="dataModel.roleID" :options="roleList"
  41. :field-names="{ label: 'name', value: 'value' }" :allow-clear="false" > </a-select>
  42. </a-form-item>
  43. </a-col>
  44. <a-col :span="8">
  45. </a-col>
  46. <a-col :span="7">
  47. </a-col>
  48. </a-row>
  49. </a-form>
  50. </a-modal>
  51. </template>
  52. <script lang="ts">
  53. import {defineComponent, reactive, ref, toRefs} from "vue";
  54. import {getSiteUserByID, saveSiteUser} from "@/api/baseSettings/userInfo";
  55. import BUploadFile from "@/components/file/uploadFile.vue";
  56. import type {SelectProps} from "ant-design-vue";
  57. import {getSysDictionaryList} from "@/api/system/dictionary";
  58. import {message} from "ant-design-vue";
  59. interface InstitutionModel {
  60. dataModel: any;
  61. }
  62. export default defineComponent({
  63. name:'UserInfoEditForm',
  64. components: {BUploadFile},
  65. props: {
  66. loadData: {
  67. type: Function,
  68. default: null
  69. }
  70. },
  71. setup(props) {
  72. const formData = reactive<InstitutionModel>({ dataModel:{}});
  73. const visible = ref<boolean>(false);
  74. const confirmLoading = ref<boolean>(false);
  75. const title = ref();
  76. const opCategory = ref<any>();
  77. const isAllowCommit = ref<boolean>(true) ;
  78. const formState = reactive({
  79. total: 0,
  80. selectedRowKeys: [],
  81. loading: false
  82. });
  83. const genderList = ref<SelectProps["options"]>();
  84. const roleList = ref<SelectProps["options"]>();
  85. const getGenderList = async function(){
  86. const genderResult :any = await getSysDictionaryList("Gender");
  87. genderList.value = genderResult;
  88. }
  89. const getRoleList = async function(){
  90. const roleResult :any = await getSysDictionaryList("SiteUserRole");
  91. roleList.value = roleResult;
  92. }
  93. const loadData = (siteUserID: string) => {
  94. getSiteUserByID(siteUserID).then((result: any) => {
  95. formData.dataModel = result;
  96. console.log("dataModel",formData.dataModel);
  97. });
  98. }
  99. const show = (id: any,method:string,category:any) => {
  100. title.value ="人员管理-"+method;
  101. opCategory.value = category;
  102. getGenderList();
  103. getRoleList();
  104. loadData(id);
  105. visible.value = true;
  106. };
  107. const onSelectChange = (selectedRowKeys: any) => {
  108. formState.selectedRowKeys = selectedRowKeys;
  109. };
  110. const handleOk = () => {
  111. if(formData.dataModel.name==null||formData.dataModel.gender ==null||formData.dataModel.mobile==null|| formData.dataModel.roleID==null){
  112. message.error("请填写完整的人员信息!");
  113. isAllowCommit.value = false;
  114. }
  115. if(isAllowCommit.value){
  116. saveSiteUser(formData.dataModel).then(result => {
  117. if (result) {
  118. visible.value = false;
  119. props.loadData();
  120. }
  121. });
  122. }
  123. };
  124. const handleCancel = () => {
  125. visible.value = false;
  126. };
  127. return {
  128. ...toRefs(formData),
  129. title,
  130. visible,
  131. formState,
  132. opCategory,
  133. isAllowCommit,
  134. confirmLoading,
  135. genderList,
  136. roleList,
  137. show,
  138. onSelectChange,
  139. handleOk,
  140. handleCancel
  141. };
  142. },
  143. created() {
  144. },
  145. })
  146. </script>