edit.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <div class="card-edit">
  3. <a-form :model="dataModel" autocomplete="off" @finish="onFinish">
  4. <a-divider orientation="left">站点人员管理</a-divider>
  5. <a-row type="flex">
  6. <a-col :span="7">
  7. <a-form-item label="姓名" name="siteUserName" :label-col="{span:7}" :rules="[{ required: true, message: '请输入人员姓名!' }]">
  8. <label v-if="opCategory==3">{{dataModel.siteUserName}}</label>
  9. <a-input v-model:value="dataModel.siteUserName" placeholder=""/>
  10. </a-form-item>
  11. </a-col>
  12. <a-col :span="8">
  13. <a-form-item label="性别" name="gender" :label-col="{span:7}" :rules="[{required: true, message: '请选择人员性别!' }]">
  14. <label v-if="opCategory==3">{{dataModel.gender}}</label>
  15. <a-select ref="select" v-model:value="dataModel.gender" :options="genderList"
  16. :field-names="{ label: 'name', value: 'value' }" :allow-clear="false" > </a-select>
  17. </a-form-item>
  18. </a-col>
  19. <a-col :span="8">
  20. <a-form-item label="联系电话" name="mobile" :label-col="{span:8}" :rules="[{ required: true, message: '请输入联系电话!' }]" >
  21. <label v-if="opCategory==3">{{dataModel.mobile}}</label>
  22. <a-input v-model:value="dataModel.mobile" placeholder=""/>
  23. </a-form-item>
  24. </a-col>
  25. </a-row>
  26. <a-row type="flex">
  27. <a-col :span="7">
  28. <a-form-item label="工号" name="roleID" :label-col="{span:7}"
  29. :rules="[{ required: true, message: '请输入工号!' }]">
  30. <label v-if="opCategory==3">{{ dataModel.userNo }}</label>
  31. <a-input v-model:value="dataModel.userNo" placeholder=""/>
  32. </a-form-item>
  33. </a-col>
  34. <a-col :span="8">
  35. <a-form-item label="身份证" name="roleID" :label-col="{span:7}"
  36. :rules="[{ required: true, message: '请输入身份证!' }]">
  37. <label v-if="opCategory==3">{{ dataModel.idCard }}</label>
  38. <a-input v-model:value="dataModel.idCard" placeholder=""/>
  39. </a-form-item>
  40. </a-col>
  41. <a-col :span="8">
  42. <a-form-item label="用户类型" name="roleID" :label-col="{span:8}"
  43. :rules="[{ required: true, message: '请选择用户类型!' }]">
  44. <label v-if="opCategory==3">{{ dataModel.roleID }}</label>
  45. <a-select ref="select" v-model:value="dataModel.roleID" :options="roleList"
  46. :field-names="{ label: 'name', value: 'value' }" :allow-clear="false"></a-select>
  47. </a-form-item>
  48. </a-col>
  49. </a-row>
  50. <a-row type="flex">
  51. <a-col :span="7">
  52. <a-form-item label="所属驿站" name="siteID" :label-col="{span:7}" :rules="[{ required: true, message: '请选择所属驿站!' }]">
  53. <a-select
  54. ref="select"
  55. v-model:value="dataModel.siteID"
  56. :options="allSites"
  57. :field-names="{ label: 'siteName', value: 'siteID' }" >
  58. </a-select>
  59. </a-form-item>
  60. </a-col>
  61. </a-row>
  62. <a-form-item class="buttom-btns">
  63. <a-button @click="onClose">取消</a-button>
  64. <a-button type="primary" html-type="submit">提交</a-button>
  65. </a-form-item>
  66. </a-form>
  67. </div>
  68. </template>
  69. <script lang="ts">
  70. import {defineComponent, reactive, ref, toRefs} from "vue";
  71. import {useTabsViewStore} from "@/store/modules/tabsView";
  72. import {getSiteUserByID, saveSiteUser} from "@/api/baseSettings/userInfo";
  73. import BUploadFile from "@/components/file/uploadFile.vue";
  74. import type {SelectProps} from "ant-design-vue";
  75. import {message} from "ant-design-vue";
  76. import {getSysDictionaryList} from "@/api/system/dictionary";
  77. import {getSiteList} from "@/api/baseSettings/siteInfo";
  78. interface siteUserModel {
  79. dataModel: any;
  80. }
  81. export default defineComponent({
  82. name:'UserInfoEditForm',
  83. components: {BUploadFile},
  84. props: {
  85. loadData: {
  86. type: Function,
  87. default: null
  88. }
  89. },
  90. setup() {
  91. const title = ref();
  92. const opCategory = ref<any>();
  93. const tabsViewStore = useTabsViewStore();
  94. const formData = reactive<siteUserModel>({ dataModel:{}});
  95. const isAllowCommit = ref<boolean>(true) ;
  96. const formState = reactive({
  97. total: 0,
  98. selectedRowKeys: [],
  99. loading: false
  100. });
  101. const allSites = ref<any>([]);
  102. const genderList = ref<SelectProps["options"]>();
  103. const roleList = ref<SelectProps["options"]>([]);
  104. const getAllSites = () => {
  105. getSiteList({pageIndex:1,pageSize:9999}).then((result :any) => {
  106. allSites.value = result.list;
  107. })
  108. }
  109. const getGenderList = async function(){
  110. const genderResult :any = await getSysDictionaryList("Gender");
  111. genderList.value = genderResult;
  112. }
  113. const getRoleList = async function(operateType:number){
  114. const roleResult :any = await getSysDictionaryList("UserType");
  115. roleList.value = operateType==1?[{name:"驿站工作者",value:3}]:roleResult;
  116. // console.log("roleList",roleList.value);
  117. }
  118. const loadData = (siteUserID: string,operateType:number) => {
  119. getAllSites();
  120. getGenderList();
  121. getRoleList(operateType);
  122. opCategory.value = operateType;
  123. getSiteUserByID(siteUserID).then((result: any) => {
  124. formData.dataModel = result;
  125. //console.log("dataModel",formData.dataModel);
  126. });
  127. };
  128. const onSelectChange = (selectedRowKeys: any) => {
  129. formState.selectedRowKeys = selectedRowKeys;
  130. };
  131. const mobileValidate = ()=>{
  132. isAllowCommit.value = true;
  133. const mobileReg = /^1[3|4|5|6|7|8|9]\d{9}$/;
  134. if(!mobileReg.test(formData.dataModel.mobile)){
  135. message.error("输入的联系电话有误!");
  136. isAllowCommit.value = false;
  137. }
  138. };
  139. function idCardValidate() {
  140. isAllowCommit.value = true;
  141. let _IDRe18 = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
  142. let _IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
  143. // 校验身份证
  144. if (!_IDRe18.test(formData.dataModel.idCard) && !_IDre15.test(formData.dataModel.idCard)) {
  145. message.error("输入的身份证格式有误!");
  146. isAllowCommit.value = false;
  147. }
  148. }
  149. const onClose = (reload: any) => {
  150. tabsViewStore.closeCurrentTabByPath('/baseSettings/user/add');
  151. tabsViewStore.closeCurrentTabByPath('/baseSettings/user/edit');
  152. tabsViewStore.openTab('/baseSettings/user/index',{reload:reload});
  153. };
  154. const onFinish = () => {
  155. mobileValidate();
  156. idCardValidate();
  157. if(isAllowCommit.value){
  158. saveSiteUser(formData.dataModel).then(result => {
  159. if (result) {
  160. onClose(1);
  161. }
  162. });
  163. }
  164. };
  165. return {
  166. ...toRefs(formData),
  167. loadData,
  168. onClose,
  169. onFinish,
  170. title,
  171. formState,
  172. opCategory,
  173. isAllowCommit,
  174. allSites,
  175. genderList,
  176. roleList,
  177. onSelectChange,
  178. };
  179. },
  180. created() {
  181. const id = history.state.params?.id;
  182. const op = history.state.params?.op;
  183. this.loadData(id,op);
  184. },
  185. })
  186. </script>