myInfo.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <template>
  2. <ion-page class="list-page">
  3. <ion-header class="header-theme2">
  4. <ion-toolbar>
  5. <ion-buttons slot="start">
  6. <ion-icon :icon="arrowBackOutline" @click="()=>router.go(-1)"></ion-icon>
  7. </ion-buttons>
  8. <ion-title>个人信息修改</ion-title>
  9. </ion-toolbar>
  10. </ion-header>
  11. <ion-content>
  12. <form autocomplete="off">
  13. <div class="bw-vue-form">
  14. <div class="form-input" >
  15. <ion-label>头像图片上传</ion-label>
  16. <b-image v-if="userInfo.userID" :file-ref-id="userInfo.userID" :readonly="false"
  17. :is-single="true"></b-image>
  18. </div>
  19. <div class="form-input">
  20. <ion-label>姓名</ion-label>
  21. <ion-input readonly v-model="dataModel.siteUserName"></ion-input>
  22. </div>
  23. <div class="form-input">
  24. <ion-label>性别</ion-label>
  25. <ion-input readonly v-model="dataModel.genderName"></ion-input>
  26. </div>
  27. <div class="form-input">
  28. <ion-label>联系电话</ion-label>
  29. <ion-input name="mobile" v-model="dataModel.mobile"></ion-input>
  30. </div>
  31. <div class="form-input">
  32. <ion-label>工号</ion-label>
  33. <ion-input readonly v-model="dataModel.userNo"></ion-input>
  34. </div>
  35. <div class="form-input">
  36. <ion-label>身份证号</ion-label>
  37. <ion-input readonly v-model="dataModel.idCard"></ion-input>
  38. </div>
  39. <div class="form-input">
  40. <ion-label>用户类型</ion-label>
  41. <ion-input readonly v-model="dataModel.roleName"> </ion-input>
  42. </div>
  43. <div class="form-input">
  44. <ion-label>所属驿站</ion-label>
  45. <ion-input readonly v-model="dataModel.siteName" > </ion-input>
  46. </div>
  47. <div class="form-input">
  48. <ion-label>社保卡号</ion-label>
  49. <ion-input name="socialSecurityCard" v-model="dataModel.socialSecurityCard" placeholder="请输入社保卡号" :clear-input="true"> </ion-input>
  50. </div>
  51. <div class="form-select">
  52. <ion-label>民族</ion-label>
  53. <ion-select name="nationID" id="nationID" okText="确定" cancelText="取消"
  54. v-model="dataModel.nation"
  55. interface="action-sheet" placeholder="请选择民族" style="width:100%;text-align:left;" >
  56. <ion-select-option v-for=" (it,key) in nationTypeList" :key="key" :value="it.value">
  57. {{ it.name }}
  58. </ion-select-option>
  59. </ion-select>
  60. </div>
  61. <div class="form-select">
  62. <ion-label>政治面貌</ion-label>
  63. <ion-select name="politicsStatusID" id="politicsStatusID" okText="确定" cancelText="取消"
  64. v-model="dataModel.politicsStatusID"
  65. interface="action-sheet" placeholder="请选择政治面貌" style="width:100%;text-align:left;" >
  66. <ion-select-option v-for=" (it,key) in politicsStatusList" :key="key" :value="it.value">
  67. {{ it.name }}
  68. </ion-select-option>
  69. </ion-select>
  70. </div>
  71. <div class="form-select">
  72. <ion-label>最高学历</ion-label>
  73. <ion-select name="cultureRank" id="cultureRank" okText="确定" cancelText="取消"
  74. v-model="dataModel.cultureRank"
  75. interface="action-sheet" placeholder="请选择最高学历" style="width:100%;text-align:left;">
  76. <ion-select-option v-for=" (it,key) in cultureRankList" :key="key" :value="it.value">
  77. {{ it.name }}
  78. </ion-select-option>
  79. </ion-select>
  80. </div>
  81. <div class="form-input">
  82. <ion-label>毕业院校</ion-label>
  83. <ion-input v-model="dataModel.finishSchool" placeholder="请输入毕业院校" :clear-input="true"> </ion-input>
  84. </div>
  85. <div class="form-input">
  86. <ion-label>专业</ion-label>
  87. <ion-input v-model="dataModel.profession" placeholder="请输入专业" :clear-input="true"> </ion-input>
  88. </div>
  89. <div class="form-select">
  90. <ion-label>是否全日制</ion-label>
  91. <ion-select name="isFullTime" id="isFullTime" okText="确定" cancelText="取消" v-model="dataModel.isFullTime"
  92. interface="action-sheet" placeholder="请选择是否非全日制" style="width:100%;text-align:left;" >
  93. <ion-select-option v-for=" (it,key) in isFullTimeList" :key="key" :value="it.value">
  94. {{ it.name }}
  95. </ion-select-option>
  96. </ion-select>
  97. </div>
  98. <div class="form-input">
  99. <ion-label>职业资格类别</ion-label>
  100. <div>
  101. <ion-input placeholder="请选择职业资格类别" label-placement="stacked" style="float: left;width:78%;"
  102. v-model="dataModel.occupationalCategoryName" readonly >
  103. </ion-input>
  104. <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
  105. <category-selection :OccupationalID="dataModel.occupationalCategory" @SetOccupationalID="onSetOccupationalID"></category-selection>
  106. </ion-item>
  107. </div>
  108. </div>
  109. <div class="form-select">
  110. <ion-label>职业资格等级</ion-label>
  111. <ion-select name="occupationalLevel" id="occupationalLevel" okText="确定" cancelText="取消" v-model="dataModel.occupationalLevel"
  112. interface="action-sheet" placeholder="请选择职业资格类别" style="width:100%;text-align:left;" >
  113. <ion-select-option v-for=" (it,key) in occupationalLevelList" :key="key" :value="it.value">
  114. {{ it.name }}
  115. </ion-select-option>
  116. </ion-select>
  117. </div>
  118. <div class="form-input">
  119. <ion-label>籍贯</ion-label>
  120. <ion-input v-model="dataModel.nativePlace" placeholder="请输入籍贯" :clear-input="true"> </ion-input>
  121. </div>
  122. <div class="form-input">
  123. <ion-label>邮箱</ion-label>
  124. <ion-input v-model="dataModel.email" placeholder="请输入邮箱" :clear-input="true"> </ion-input>
  125. </div>
  126. <div class="form-input">
  127. <ion-label>住址</ion-label>
  128. <ion-input v-model="dataModel.address" placeholder="请输入住址" :clear-input="true"> </ion-input>
  129. </div>
  130. </div>
  131. </form>
  132. </ion-content>
  133. <ion-footer>
  134. <ion-toolbar>
  135. <ion-button style="width: 100%;" @click="onSave" >提交</ion-button>
  136. </ion-toolbar>
  137. </ion-footer>
  138. </ion-page>
  139. </template>
  140. <script lang="ts">
  141. import {defineComponent, reactive, ref, toRefs} from 'vue';
  142. import router from '@/router';
  143. import {useUserStore} from '@/store/modules/user';
  144. import {addCircleOutline, arrowBackOutline, trashOutline} from 'ionicons/icons';
  145. import {getSiteUserByUserID,saveSiteUser} from '@/api/siteUserInfo';
  146. import {getSysDictionaryList} from "@/api/system/dictionary";
  147. import dayjs from "dayjs";
  148. import CategorySelection from "@/components/ocCategorySelection.vue";
  149. import BImage from "@/components/bImage.vue";
  150. interface SelectProps {
  151. name: string,
  152. value: string
  153. }
  154. interface userModel {
  155. dataModel: any;
  156. }
  157. export default defineComponent({
  158. name: 'myInfo',
  159. components:{CategorySelection,BImage},
  160. setup() {
  161. const userStore = useUserStore();
  162. const userInfo = ref(userStore.getUserInfo);
  163. const curLoginUserInfo = reactive<userModel>({
  164. dataModel:{
  165. address: null,
  166. age:null,
  167. createBy:null,
  168. createTime: null,
  169. cultureRank: null,
  170. cultureRankName:"",
  171. email: null,
  172. errorMessage: null,
  173. finishSchool: null,
  174. gender:null,
  175. genderName:"",
  176. idCard: "",
  177. institutionID:"",
  178. isFullTime:null,
  179. isFullTimeName: null,
  180. mobile:"",
  181. nation:null,
  182. nationName: null,
  183. nativePlace: null,
  184. occupationalCategory: null,
  185. occupationalCategoryName: null,
  186. occupationalLevel: null,
  187. occupationalLevelName: null,
  188. politicsStatusID: null,
  189. politicsStatusName: null,
  190. profession:null,
  191. regionCode: "",
  192. roleID: 0,
  193. roleName: "",
  194. siteID: "",
  195. siteName:"",
  196. siteUserID: "",
  197. siteUserName: "",
  198. socialSecurityCard: "",
  199. updateBy: "",
  200. updateTime: "",
  201. userID: "",
  202. userNo: "",
  203. }
  204. }
  205. );
  206. const onSetOccupationalID = (data: any)=>{
  207. curLoginUserInfo.dataModel.occupationalCategory = data.value;
  208. curLoginUserInfo.dataModel.occupationalCategoryName = data.text;
  209. }
  210. getSiteUserByUserID(userInfo.value.userID==undefined?"":userInfo.value.userID).then(data=> {
  211. curLoginUserInfo.dataModel = data;
  212. // const replaceStr = curLoginUserInfo.value.idCard.substring(3,15);
  213. // curLoginUserInfo.value.idCardShow = String(curLoginUserInfo.value.idCard).replace(replaceStr,'************');
  214. });
  215. const nationTypeList = ref<SelectProps[]>([]);
  216. const politicsStatusList = ref<SelectProps[]>([]);
  217. const isFullTimeList = ref<SelectProps[]>([]);
  218. const cultureRankList = ref<SelectProps[]>([]);
  219. const occupationalLevelList = ref<SelectProps[]>([]);
  220. const getDataList = async function(){
  221. const nationTypeListResult: any = await getSysDictionaryList("NationType");
  222. nationTypeList.value = nationTypeListResult;
  223. const politicsStatusResult: any = await getSysDictionaryList("PoliticsStatus");
  224. politicsStatusList.value = politicsStatusResult;
  225. const isFullTimeListResult: any = await getSysDictionaryList("IsFullTime");
  226. isFullTimeList.value = isFullTimeListResult;
  227. const cultureRankResult: any = await getSysDictionaryList("HighestDegree");
  228. cultureRankList.value = cultureRankResult;
  229. const occupationalLevelListResult: any = await getSysDictionaryList("OccupationalLevel");
  230. occupationalLevelList.value = occupationalLevelListResult;
  231. }
  232. getDataList();
  233. const onSave = () => {
  234. saveSiteUser(curLoginUserInfo.dataModel).then(result => {
  235. if (result) {
  236. router.push({path: '/tabs/tabUser'});
  237. }
  238. });
  239. }
  240. return {
  241. ...toRefs(curLoginUserInfo),
  242. router,
  243. arrowBackOutline,
  244. addCircleOutline,
  245. trashOutline,
  246. userInfo,
  247. nationTypeList,
  248. politicsStatusList,
  249. isFullTimeList,
  250. cultureRankList,
  251. occupationalLevelList,
  252. onSave,
  253. onSetOccupationalID,
  254. dayjs
  255. }
  256. }
  257. });
  258. </script>
  259. <style lang="less">
  260. ion-item {
  261. --inner-border-width: 0px 0px 1px 0px;
  262. margin-right: 10px;
  263. }
  264. </style>