index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. <template>
  2. <div class="mianBox">
  3. <van-row class="headerBox" >
  4. <van-col class="returnWrap" @click="$router.go(-1)">
  5. <van-icon name="arrow-left" class="arrow-left" />
  6. </van-col>
  7. <van-col class="title">信息修改</van-col>
  8. </van-row>
  9. <van-row class="my" >
  10. <!-- <van-row class="msg">
  11. <van-row class="left">
  12. 头像
  13. </van-row>
  14. <van-row class="right">
  15. <van-uploader :after-read="afterRead" class="upload" />
  16. <van-image :src="portrait" class="portrait" style="margin-top:-4px" />
  17. <van-image :src="require('../../assets/image/right.png')" class="right_icon" />
  18. </van-row>
  19. </van-row> -->
  20. <van-row class="msg" @click="mm">
  21. <van-row class="left">
  22. 密码修改
  23. </van-row>
  24. <van-row class="right">
  25. <van-image :src="require('../../assets/image/right.png')" class="right_icon" style="top:-8px;" />
  26. </van-row>
  27. </van-row>
  28. <van-row class="msg" @click="outLogin">
  29. <van-row class="left">
  30. 注销
  31. </van-row>
  32. <van-row class="right">
  33. <van-image :src="require('../../assets/image/right.png')" class="right_icon" style="top:-8px;" />
  34. </van-row>
  35. </van-row>
  36. </van-row>
  37. <van-row class="pass" v-if="loading">
  38. <van-row class="title">
  39. 密码修改
  40. </van-row>
  41. <van-row class="text">
  42. 请填写原始密码和新密码
  43. </van-row>
  44. <van-form>
  45. <van-field
  46. v-model="oldPass"
  47. name="原密码"
  48. placeholder="请填写原密码"
  49. :rules="[{ required: true, message: '请填写原密码' }]"
  50. />
  51. <van-field
  52. v-model="newPass"
  53. type="password"
  54. name="新密码"
  55. placeholder="请填写新密码"
  56. :rules="[{ required: true, message: '请填写新密码' }]"
  57. />
  58. <div class="operation" >
  59. <div class="cancel" @click="cancel">
  60. 取消
  61. </div>
  62. <div class="submit" @click="submit">
  63. 提交
  64. </div>
  65. </div>
  66. </van-form>
  67. </van-row>
  68. <!-- <van-overlay :show="loading" style="z-index: 1; position: fixed;background-color: rgba(0,0,0,0.6);" /> -->
  69. <div v-if="loading" style="z-index: 1; position: fixed;top:0;left:0;width:100%;height:100%;background-color: rgba(0,0,0,0.6);" />
  70. </div>
  71. </template>
  72. <script>
  73. import { Dialog } from 'vant';
  74. import { Toast } from "vant";
  75. import Cookies from "js-cookie";
  76. import { encrypt, encrypt2, decrypt } from '../../utils/jsencrypt';
  77. import axios from "axios";
  78. export default {
  79. data() {
  80. return {
  81. portrait:undefined,
  82. params:undefined,
  83. oldPass: '',
  84. newPass: '',
  85. nonce:undefined,
  86. timestamp:undefined,
  87. token:undefined,
  88. userId:undefined,
  89. loading:false,
  90. formData:undefined,
  91. username:undefined,
  92. };
  93. },
  94. created(){
  95. if(Cookies.get("userId57")){
  96. this.userId = Cookies.get("userId57")
  97. }else{
  98. this.$router.push({ path: "/login"})
  99. }
  100. this.portrait = Cookies.get("portrait57")
  101. if(Cookies.get("token57")){
  102. this.token = Cookies.get("token57")
  103. }
  104. if(Cookies.get("nonce57")){
  105. this.nonce = Cookies.get("nonce57")
  106. }
  107. if(Cookies.get("timestamp57")){
  108. this.timestamp = Cookies.get("timestamp57")
  109. }
  110. if(Cookies.get("username57")){
  111. this.username = Cookies.get("username57")
  112. }
  113. if(Cookies.get("password57")){
  114. this.password = decrypt(Cookies.get("password57"))
  115. }
  116. if(!Cookies.get("openid57") || !Cookies.get("username57") || !Cookies.get("password57")){
  117. this.outLogin()
  118. }
  119. },
  120. mounted(){
  121. document.title = '中国东信智慧园区'
  122. },
  123. methods: {
  124. afterRead(param) {
  125. this.formData = new FormData()// FormData 对象
  126. this.formData.append('file', param.file)// 文件对象
  127. let params = JSON.stringify({nonce:this.nonce,timestamp:this.timestamp,query:{userId:this.userId}})
  128. this.formData.append('params', params)// 参数
  129. this.formData.append('multipartFile', param.file)// 参数
  130. axios.post(`https://smartpark.caih.com/zkxt/api/thirdparty/v1/user/edit/zkuser/picture` ,this.formData,
  131. {headers: {
  132. 'Content-Type': "multipart/form-data",
  133. "XYTACCESSTOKEN":this.token
  134. }
  135. }).then(res => {
  136. axios.get(`https://smartpark.caih.com/zkxt/api/thirdparty/v1/user/appLogin?name=${this.username}&pass=${this.password}`).then(res => {
  137. if (res?.data?.data?.data?.cipher) {
  138. localStorage.setItem("cipher57",res?.data?.data?.data?.cipher)
  139. localStorage.setItem("classify","1")
  140. Cookies.set("password57", encrypt(this.password), { expires: 300 });
  141. Cookies.set("portrait57", res.data.data.data.user.avatarName, { expires: 300 });
  142. Cookies.set("userId57", res.data.data.data.userId, { expires: 300 });
  143. Cookies.set("token57", res.data.data.data.token, { expires: 300 });
  144. Cookies.set("nonce57", res.data.data.data.nonce, { expires: 300 });
  145. Cookies.set("timestamp57", res.data.data.data.timestamp, { expires: 300 });
  146. this.portrait = res.data.data.data.user.avatarName
  147. }
  148. }).catch(err =>{
  149. Toast(err.response.data.message)
  150. })
  151. }).catch(err =>{
  152. Toast(err.response.data.message)
  153. })
  154. },
  155. //一卡通
  156. ykt(){
  157. this.$router.push({ path: `/amount?token=${localStorage.getItem('cipher57')}&classify`})
  158. },
  159. //世茂
  160. sm(url){
  161. let param = {
  162. userid:encrypt(Cookies.get("username57")),
  163. password:Cookies.get("password57"),
  164. type:"wx_yt"
  165. }
  166. window.location.href = `${url}?param=${encodeURIComponent(JSON.stringify(param))}`
  167. },
  168. mm(){
  169. this.loading = true
  170. },
  171. cancel(){
  172. this.loading = false
  173. },
  174. submit(){
  175. if(this.oldPass && this.newPass){
  176. axios.post(`https://smartpark.caih.com/zkxt/api/thirdparty/v1/user/edit/zkuser/pass`,
  177. {
  178. "nonce": Cookies.get("nonce57"),
  179. "timestamp": Cookies.get("timestamp57"),
  180. "query": {
  181. "userId":Cookies.get("userId57"),
  182. "oldPass": encrypt2(this.oldPass),
  183. "newPass": encrypt2(this.newPass)
  184. }
  185. },
  186. {headers: {
  187. "XYTACCESSTOKEN":Cookies.get("token57")
  188. }
  189. }).then(res => {
  190. Toast("密码修改成功")
  191. this.loading = false
  192. Cookies.remove("password57");
  193. Cookies.remove("userId57");
  194. Cookies.remove("token57");
  195. Cookies.remove("nonce57");
  196. Cookies.remove("timestamp57");
  197. this.$router.push({ path: "/"})
  198. }).catch(err =>{
  199. Toast(err.response.data.message)
  200. })
  201. }else if(!this.oldPass){
  202. Toast("原密码不能为空")
  203. }else if(!this.newPass){
  204. Toast("新密码不能为空")
  205. }
  206. },
  207. outLogin(){
  208. Dialog.confirm({
  209. title: '提示',
  210. message: '确定退出登录吗?',
  211. }).then(() => {
  212. axios.put('/dxtop/staff', {
  213. id:Cookies.get("userId57"),
  214. openId:""
  215. })
  216. Cookies.remove("timestamp57");
  217. //Cookies.remove("classify");
  218. Cookies.remove("username57");
  219. Cookies.remove("rememberMe57");
  220. Cookies.remove("password57");
  221. Cookies.remove("portrait57");
  222. Cookies.remove("userId57");
  223. Cookies.remove("token57");
  224. Cookies.remove("nonce57");
  225. Cookies.remove("timestamp57");
  226. Cookies.remove("nickName57");
  227. Cookies.remove("dept57");
  228. Cookies.remove("phone57");
  229. Cookies.remove("people57");
  230. Cookies.remove("openid57");
  231. Cookies.remove("cardId57");
  232. localStorage.removeItem("amount57");
  233. localStorage.removeItem("passageway");
  234. localStorage.removeItem("user_wt")
  235. // localStorage.setItem("user_wt", "0001T110000000002HBL") //测试id
  236. localStorage.removeItem("cardId57")
  237. localStorage.removeItem("classify")
  238. localStorage.removeItem("type")
  239. localStorage.removeItem("cipher57")
  240. localStorage.removeItem("dwtype")
  241. localStorage.removeItem("cipher")
  242. localStorage.removeItem("pcy")
  243. this.$router.push({ path: "/"})
  244. });
  245. }
  246. },
  247. };
  248. </script>
  249. <style lang="scss" scoped>
  250. .mianBox{
  251. height: 100%;
  252. width: 100%;
  253. color: #FFF;
  254. padding-top: 44px;
  255. box-sizing: border-box;
  256. background-color: #F7F7F7;
  257. .my{
  258. width:96%;
  259. margin:0 auto;
  260. height:calc(100% - 44px);
  261. overflow-y:scroll;
  262. .msg{
  263. height:50px;
  264. line-height: 50px;
  265. border-bottom:1px solid #ccc;
  266. text-align: center;
  267. .left{
  268. width:50%;
  269. text-align: left;
  270. color:#000;
  271. display: inline-block;
  272. vertical-align: middle;
  273. }
  274. .right{
  275. width:50%;
  276. text-align: right;
  277. display: inline-block;
  278. vertical-align: middle;
  279. position: relative;
  280. .upload{
  281. position: absolute;
  282. width:100px;
  283. height:50px;
  284. overflow: hidden;
  285. top:0px;
  286. right:0;
  287. opacity: 0;
  288. z-index: 10;
  289. }
  290. .portrait{
  291. width:30px !important;
  292. margin:0 30px 0 0;
  293. vertical-align: middle;
  294. ::v-deep .van-image__img{
  295. border-radius: 50% !important;
  296. }
  297. }
  298. .right_icon{
  299. width:8px !important;
  300. text-align: center;
  301. position: absolute;
  302. top:16px;
  303. right:0px;
  304. img{
  305. width:20px !important;
  306. }
  307. }
  308. }
  309. }
  310. }
  311. .pass{
  312. width:80%;
  313. background-color: #fff;
  314. border-radius: 10px;
  315. position: absolute;
  316. z-index: 2;
  317. top:30%;
  318. left:10%;
  319. color:#808080;
  320. .title{
  321. font-size: 14px;
  322. text-align: center;
  323. padding:10px 15px;
  324. }
  325. .text{
  326. font-size: 12px;
  327. text-align: left;
  328. margin-top:10px;
  329. padding:10px 15px;
  330. }
  331. .van-cell{
  332. padding:0;
  333. width:calc(100% - 30px);
  334. margin:10px 0 0 15px;
  335. background-color: #fff;
  336. border:none !important;
  337. line-height: 30px;
  338. ::v-deep .van-field__body{
  339. .van-field__control{
  340. background-color: #fff !important;
  341. padding-left:10px !important;
  342. border:1px solid #D3D3D3 !important;
  343. border-radius: 6px;
  344. }
  345. }
  346. }
  347. .operation{
  348. height:40px;
  349. line-height: 40px;
  350. border-top:1px solid #D3D3D3;
  351. text-align: center;
  352. margin-top:30px;
  353. .cancel{
  354. width:50%;
  355. border-right: 1px solid #D3D3D3;
  356. box-sizing: border-box;
  357. display: inline-block;
  358. }
  359. .submit{
  360. width:50%;
  361. box-sizing: border-box;
  362. display: inline-block;
  363. }
  364. }
  365. }
  366. }
  367. </style>