detail.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. <template>
  2. <view class="det">
  3. <uni-nav-bar left-icon="left" title="档案详情" :background-color="backgroundColor" :border="navborder" statusBar='true' fixed="true" @clickLeft='getBack'>
  4. </uni-nav-bar>
  5. <view class="det_top"></view>
  6. <view class="detbox">
  7. <view class="det_list">
  8. <image :src="bgimg" class="bgimg"></image>
  9. <view class="tit">基本信息</view>
  10. <view class="list">
  11. <view class="ltit">姓名:</view>
  12. <view class="ltxt">{{datainfo.name||""}}</view>
  13. </view>
  14. <view class="list">
  15. <view class="ltit">身份证号:</view>
  16. <view class="ltxt">{{datainfo.idCard||""}}</view>
  17. </view>
  18. <view class="list">
  19. <view class="ltit">性别:</view>
  20. <view class="ltxt">{{datainfo.sex=='1'?'男':'女'||""}}</view>
  21. </view>
  22. <view class="list">
  23. <view class="ltit">年龄:</view>
  24. <view class="ltxt">{{datainfo.age||""}}</view>
  25. </view>
  26. <view class="list">
  27. <view class="ltit">民族:</view>
  28. <view class="ltxt">{{datainfo.familyName||""}}</view>
  29. </view>
  30. <view class="list">
  31. <view class="ltit">政治面貌:</view>
  32. <view class="ltxt">{{datainfo.politicalStatus||""}}</view>
  33. </view>
  34. <view class="list">
  35. <view class="ltit">学校:</view>
  36. <view class="ltxt">{{datainfo.school||""}}</view>
  37. </view>
  38. <view class="list">
  39. <view class="ltit">学号:</view>
  40. <view class="ltxt">{{datainfo.studentNumber||""}}</view>
  41. </view>
  42. </view>
  43. <view class="det_list">
  44. <view class="tit">
  45. <view class="flex1">其他信息</view>
  46. <view class="txt" @click="getHistory" v-if="checkPermi(['live:old:list'])">历史记录</view>
  47. </view>
  48. <view class="list">
  49. <view class="ltit">身高:</view>
  50. <view class="ltxt">{{datainfo.height||""}}cm</view>
  51. </view>
  52. <view class="list">
  53. <view class="ltit">体重:</view>
  54. <view class="ltxt">{{datainfo.weight||""}}kg</view>
  55. </view>
  56. <view class="list">
  57. <view class="ltit">血型:</view>
  58. <view class="ltxt">{{datainfo.bloodType||""}}</view>
  59. </view>
  60. <view class="list" style="align-items: center;">
  61. <view class="f15 co6 flex0">更新时间:</view>
  62. <view class="ltxt">{{datainfo.updateTime}}</view>
  63. </view>
  64. </view>
  65. <view class="det_list">
  66. <view class="tit">
  67. <view class="flex1">视力信息</view>
  68. </view>
  69. <view class="list">
  70. <view class="ltit">是否近视:</view>
  71. <view class="ltxt" v-if="datainfo.isNearsightedness">{{datainfo.isNearsightedness=='1'?'是':'否'}}</view>
  72. <view class="ltxt" v-else></view>
  73. </view>
  74. <view class="list">
  75. <view class="ltit">近视度数:</view>
  76. <view class="ltxt">{{datainfo.degreeMyopia||""}}</view>
  77. </view>
  78. <view class="list">
  79. <view class="ltit">是否远视:</view>
  80. <view class="ltxt" v-if="datainfo.isFarsightedness">{{datainfo.isFarsightedness=='1'?'是':'否'}}</view>
  81. <view class="ltxt" v-else></view>
  82. </view>
  83. <view class="list">
  84. <view class="ltit">远视度数:</view>
  85. <view class="ltxt">{{datainfo.farsightedness||""}}</view>
  86. </view>
  87. <view class="list" style="align-items: center;">
  88. <view class="f15 co6 flex0">更新时间:</view>
  89. <view class="ltxt">{{datainfo.updateTime||""}}</view>
  90. </view>
  91. </view>
  92. <view class="det_list">
  93. <view class="tit">
  94. <view class="flex1">健康信息</view>
  95. <view class="txt" @click="getMind" v-if="checkPermi(['mind:old:list'])">历史记录</view>
  96. </view>
  97. <view class="list">
  98. <view class="ltit">健康状态:</view>
  99. <view class="ltxt">{{datainfo.health||""}}</view>
  100. </view>
  101. <view class="list">
  102. <view class="ltit">有无过往病史:</view>
  103. <view class="ltxt" v-if="datainfo.isMedicalHistory">{{datainfo.isMedicalHistory=='1'?'是':'否'}}</view>
  104. <view class="ltxt" v-else></view>
  105. </view>
  106. <view class="list">
  107. <view class="ltit">病史描述:</view>
  108. <view class="ltxt">{{datainfo.medicalDescription||""}}</view>
  109. </view>
  110. <view class="list">
  111. <view class="ltit">心理健康状态:</view>
  112. <view class="ltxt">{{datainfo.mind||""}}</view>
  113. </view>
  114. <view class="list">
  115. <view class="ltit">心理健康描述:</view>
  116. <view class="ltxt">{{datainfo.psychologicalDescription||""}}</view>
  117. </view>
  118. </view>
  119. <view class="det_list">
  120. <view class="tit">家庭信息</view>
  121. <view class="list">
  122. <view class="ltit">是否贫困:</view>
  123. <view class="ltxt" v-if="datainfo.isPoverty">{{datainfo.isPoverty=='1'?'是':'否'}}</view>
  124. <view class="ltxt" v-else></view>
  125. </view>
  126. <view class="list">
  127. <view class="ltit">是否留守儿童:</view>
  128. <view class="ltxt" v-if="datainfo.isLset">{{datainfo.isLset=='1'?'是':'否'}}</view>
  129. <view class="ltxt" v-else></view>
  130. </view>
  131. <view class="list">
  132. <view class="ltit">居住地址:</view>
  133. <view class="ltxt">{{datainfo.address||""}}</view>
  134. </view>
  135. <view class="list">
  136. <view class="ltit">父亲/电话:</view>
  137. <view class="ltxt">{{datainfo.fatherName||""}}
  138. <block v-if="datainfo.fatherName">/</block>
  139. {{datainfo.fatherTelephone||""}}
  140. </view>
  141. </view>
  142. <!-- <view class="list">
  143. <view class="ltit">父亲联系方式:</view>
  144. <view class="ltxt">{{datainfo.fatherTelephone||""}}</view>
  145. </view> -->
  146. <view class="list">
  147. <view class="ltit">母亲/电话:</view>
  148. <view class="ltxt">{{datainfo.motherName||""}}
  149. <block v-if="datainfo.motherName">/</block>
  150. {{datainfo.motherTelephone||""}}
  151. </view>
  152. </view>
  153. <!-- <view class="list">
  154. <view class="ltit">母亲联系方式:</view>
  155. <view class="ltxt">{{datainfo.motherTelephone||""}}</view>
  156. </view> -->
  157. <view class="list">
  158. <view class="ltit">紧急联系人/电话:</view>
  159. <view class="ltxt">{{datainfo.emergencyContact||""}}
  160. <block v-if="datainfo.emergencyContact">/</block>
  161. {{datainfo.emergencyContactTelephone||""}}
  162. </view>
  163. </view>
  164. <!-- <view class="list">
  165. <view class="ltit">紧急联系方式:</view>
  166. <view class="ltxt">{{datainfo.emergencyContactTelephone||""}}</view>
  167. </view> -->
  168. </view>
  169. <view class="det_list">
  170. <view class="tit">照片信息</view>
  171. <view class="list flexcja mb15">
  172. <view class="ltit">证件照:</view>
  173. <view class="imgs">
  174. <image :src="baseUrl+item" class="phoimg" v-for="(item,index) in zjfile" :key='index' @click="getPreview(zjfile,index)"></image>
  175. </view>
  176. </view>
  177. <view class="list flexcja">
  178. <view class="ltit">门禁照:</view>
  179. <view class="imgs">
  180. <image :src="baseUrl+item" class="phoimg" v-for="(item,index) in mjfile" :key='index' @click="getPreview(mjfile,index)"></image>
  181. </view>
  182. </view>
  183. </view>
  184. </view>
  185. <view style="height: 170rpx;" v-if="checkPermi(['student:info:edit','student:info:remove'])"></view>
  186. <view class="fbtn" v-if="checkPermi(['student:info:edit','student:info:remove'])">
  187. <view class="rebtndel" @click="getDel" v-if="checkPermi(['student:info:remove'])">删除档案</view>
  188. <view class="w13 flex0"></view>
  189. <view class="rebtn" @click="getUpdate" v-if="checkPermi(['student:info:edit'])">修改档案</view>
  190. </view>
  191. </view>
  192. </template>
  193. <script>
  194. import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
  195. import {getstuDetFn,getstuDelFn} from "@/api/mine/files.js"
  196. import config from '@/config'
  197. const baseUrl = config.baseUrl
  198. export default {
  199. data() {
  200. return {
  201. bgimg: require("@/mine/static/score/bg.png"),
  202. backgroundColor: "transparent",
  203. navborder: false,
  204. id: '',
  205. datainfo: '',
  206. baseUrl:'',
  207. zjfile:[],
  208. mjfile:[],
  209. scrollTop:''
  210. }
  211. },
  212. onUnload(){
  213. uni.$off('refreshdadetail')
  214. },
  215. onLoad: function(e) {
  216. uni.$on('refreshdadetail',(e) => {
  217. this.getDataFn();
  218. })
  219. this.id = e.id;
  220. this.baseUrl=baseUrl;
  221. this.getDataFn()
  222. },
  223. onShow:function(){
  224. var scrollTop=this.scrollTop;
  225. if (scrollTop > 0) {
  226. this.backgroundColor = '#c4defb'
  227. } else {
  228. uni.pageScrollTo({
  229. scrollTop: 0,
  230. duration: 0
  231. })
  232. this.backgroundColor = 'transparent'
  233. }
  234. },
  235. onPageScroll(e) {
  236. var scrollTop = Number(e.scrollTop);
  237. this.scrollTop=scrollTop
  238. if (scrollTop > 0) {
  239. this.backgroundColor = '#ffffff'
  240. } else {
  241. this.backgroundColor = 'transparent'
  242. }
  243. },
  244. methods: {
  245. checkPermi,checkRole,
  246. getBack(){
  247. uni.navigateBack({
  248. delta:1
  249. })
  250. },
  251. getHistory(){
  252. this.$tab.navigateTo('/mine/pages/files/history?id='+this.datainfo.studentId);
  253. },
  254. getMind(){
  255. this.$tab.navigateTo('/mine/pages/files/mindlist?type=da&id='+this.datainfo.studentId+'&name='+this.datainfo.name);
  256. },
  257. getDataFn() {
  258. getstuDetFn(this.id).then(res => {
  259. if (res.code == 200) {
  260. this.datainfo = res.data;
  261. if(res.data.identificationPhoto){
  262. this.zjfile=res.data.identificationPhoto.split(',')
  263. }else{
  264. this.zjfile=[];
  265. }
  266. if(res.data.entrancePermit){
  267. this.mjfile=res.data.entrancePermit.split(',')
  268. }else{
  269. this.mjfile=[];
  270. }
  271. } else {
  272. this.$toast(res.msg)
  273. }
  274. })
  275. },
  276. getUpdate(){
  277. this.$tab.navigateTo('/mine/pages/files/addstudent?type=update&id='+this.id);
  278. },
  279. getDel(){
  280. var that=this;
  281. this.$modal.confirm('确定删除该信息吗?').then(() => {
  282. getstuDelFn(that.id).then(res=>{
  283. if (res.code == 200) {
  284. that.$toast('删除成功')
  285. setTimeout(function(){
  286. uni.$emit('refreshdalist');
  287. uni.navigateBack({
  288. delta:1
  289. })
  290. },1500)
  291. } else {
  292. that.$toast(res.msg)
  293. }
  294. })
  295. })
  296. },
  297. // 查看照片
  298. getPreview(iurl,idx) {
  299. var newArr=[];
  300. iurl.forEach(ite=>{
  301. var ds=this.baseUrl+ite
  302. newArr.push(ds)
  303. })
  304. uni.previewImage({
  305. urls: newArr,
  306. current:idx,
  307. success: function(data) {
  308. },
  309. fail: function(err) {
  310. console.log(err.errMsg);
  311. }
  312. });
  313. },
  314. },
  315. }
  316. </script>
  317. <style lang="scss" scoped>
  318. .det_top{width: 100%;height: 334rpx;background: linear-gradient(180deg, rgba(222,230,255,0.72) 28.000000000000004%, rgba(232,236,198,0) 100%);}
  319. .detbox{padding: 0 36rpx;margin-top: -180rpx;padding-bottom: 20rpx;
  320. .det_list{background-color: #fff;border-radius: 10rpx;width: 100%;padding: 36rpx 48rpx;position: relative;margin-bottom: 24rpx;
  321. .tit{font-size: 32rpx;font-weight: bold;color: #161616;position: relative;margin-bottom: 20rpx;display: flex;align-items: center;
  322. .txt{font-size: 30rpx;font-weight: 500;
  323. color: #4775EA;}
  324. &::before{width: 6rpx;height: 36rpx;background: #1f57e6;border-radius: 4rpx;content: '';position: absolute;left: -24rpx;top: 50%;margin-top: -18rpx;}
  325. }
  326. .list{
  327. display: flex;align-items: flex-start;padding: 10rpx 0;
  328. .ltit{flex: 0 0 auto;font-size: 30rpx;color: #161616;font-weight: bold;margin-right:4rpx;}
  329. .ltxt{flex: 1;font-size: 30rpx;color: #666666;font-weight: 500;line-height: 40rpx;}
  330. .imgs{display: flex;align-items: center;flex-wrap: wrap;justify-content: flex-end;}
  331. .phoimg{width: 140rpx;height: 140rpx;margin: 0 0rpx 14rpx 14rpx;}
  332. }
  333. .bgimg{width: 188rpx;height: 160rpx;position: absolute;right: 46rpx;bottom: 54rpx;}
  334. }
  335. }
  336. .fbtn{display: flex;align-items: center;position: fixed;left: 0;right: 0;bottom: 0;background-color: #f1f1f1;padding: 36rpx;
  337. }
  338. .det /deep/ .uni-navbar__placeholder{height: 0 !important;}
  339. </style>