index.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. <template>
  2. <view>
  3. <!--prescription/drugUsers/index.wxml-->
  4. <view class="tips dflex">
  5. <image src="/prescription/static/prescription/image/guarantee.png" class="guarantee"></image>
  6. 处方药需实名预约,平台会保护您的隐私安全
  7. </view>
  8. <view class="bgfff">
  9. <view class="dflex ipt">
  10. <text class="red">*</text><label class="name">真实姓名{{form.name}}</label><input :value="form.name"
  11. placeholder="请输入真实姓名" @blur="checkId" data-index="1"></input>
  12. </view>
  13. <view class="dflex ipt">
  14. <text class="red">*</text><label class="name">手机号码</label><input :value="form.tel" placeholder="请输入手机号码"
  15. @blur="checkId" data-index="2" type="number"></input>
  16. </view>
  17. <view class="dflex ipt">
  18. <text class="red">*</text><label class="name">身份证号</label><input class="flex" placeholder="请输入身份证号码"
  19. :value="form.idCard" @blur="checkId" data-index="3" type="idcard"></input>
  20. <view class="sex" v-if="gender||age">{{gender}} {{age}}</view>
  21. </view>
  22. </view>
  23. <view class="list">
  24. <view class="li">
  25. <text>设为默认</text>
  26. <view class="items she" @tap="setDefault">
  27. <image :src="isDefault ? '/static/pages/images/gou_h.png' : '/static/pages/images/gou.png'"
  28. class="check"></image>
  29. </view>
  30. </view>
  31. </view>
  32. <view class="bgfff relationship dflex">
  33. <label>关系标签</label>
  34. <view v-for="(item, index) in TabList" :key="index" :class="'item ' + (item.active?'active':'')"
  35. @tap="switchTab" :data-index="index">{{item.text}}</view>
  36. </view>
  37. <view class="bot fixed bgfff dflex" :style="'padding: ' + (bottomBlankHeight + 20) + 'rpx 0rpx'"
  38. v-if="!query.id">
  39. <view class="mbglinear gmbtn" @tap="saveUsers">保存并使用</view>
  40. </view>
  41. <view class="btn dflex" v-else>
  42. <view class="del" @tap="deleteFun">删除</view>
  43. <view class="submit" @tap="saveUsers">确定</view>
  44. </view>
  45. </view>
  46. </template>
  47. <script>
  48. // prescription/drugUsers/index.js
  49. const app = getApp();
  50. const req = require("../../utils/request.js");
  51. export default {
  52. data() {
  53. return {
  54. TabList: [{
  55. text: "本人"
  56. }, {
  57. text: "家庭成员"
  58. }, {
  59. text: "亲戚"
  60. }, {
  61. text: "朋友"
  62. }],
  63. bottomBlankHeight: app.globalData.isIPhoneX ? 68 : 0,
  64. isDefault: false,
  65. form: {name:'',tel:'',idCard:''},
  66. query: "",
  67. label: "",
  68. gender: "",
  69. sex: "",
  70. age: "",
  71. old: "",
  72. birth: "",
  73. cardId: ""
  74. };
  75. },
  76. components: {},
  77. props: {},
  78. /**
  79. * 生命周期函数--监听页面加载
  80. */
  81. onLoad: function(options) {
  82. this.query = options;
  83. this.setData({
  84. query: options
  85. });
  86. if (options.id) {
  87. this.getdrugUsers(options.id);
  88. }
  89. if (options.add == 1 && !options.id) {
  90. let d = {};
  91. d['TabList[0].active'] = true;
  92. this.setData(d);
  93. this.setData({
  94. label: this.TabList[0].text,
  95. isDefault: !this.isDefault
  96. });
  97. } else if (options.add == 2 && !options.id) {
  98. let d = {};
  99. d['TabList[1].active'] = true;
  100. this.setData(d);
  101. this.setData({
  102. label: this.TabList[1].text
  103. });
  104. }
  105. // console.log(options);
  106. },
  107. methods: {
  108. switchTab(event) {
  109. let index = event.currentTarget.dataset.index;
  110. let def = this.TabList.findIndex(it => it.active || it.actives);
  111. let d = {};
  112. // console.log(def, index);
  113. d['TabList[' + def + '].active'] = false;
  114. d['TabList[' + index + '].active'] = true;
  115. d['pageList'] = [];
  116. this.setData(d);
  117. this.setData({
  118. label: this.TabList[index].text
  119. });
  120. },
  121. // 保存用药人
  122. saveUsers() {
  123. let form = this.form;
  124. // console.log(this.form,"保存")
  125. if (!form.name) {
  126. return req.msg("请填写姓名");
  127. }
  128. if (!form.tel) {
  129. return req.msg("请填写电话");
  130. }
  131. if (!form.idCard) {
  132. return req.msg("请填写身份证号码");
  133. }
  134. if (this.sex) {
  135. form.sex = this.sex;
  136. }
  137. if (this.old) {
  138. form.age = this.old;
  139. }
  140. if (this.label) {
  141. form.label = this.label;
  142. }
  143. if (this.birth) {
  144. form.birthday = this.birth;
  145. }
  146. if (this.query.id) {
  147. form.id = this.query.id;
  148. }
  149. form.isDefault = this.isDefault ? 1 : 0;
  150. // console.log(form);
  151. if (form) {
  152. let isShowLoading = false;
  153. if (!isShowLoading) {
  154. req.loadIng('保存中');
  155. isShowLoading = true;
  156. }
  157. req.postRequest('/api/userDrugPeople/save', form, res => {
  158. // console.log(res);
  159. if (isShowLoading) {
  160. uni.hideLoading();
  161. uni.navigateBack();
  162. isShowLoading = false;
  163. }
  164. }); // if(this.query.id){
  165. // req.postRequest('/api/userDrugPeople/',form,res=>{
  166. // console.log(res)
  167. // })
  168. // }
  169. }
  170. },
  171. checkId(e) {
  172. // console.log(e); // 1 名字 2手机号码 3身份证号码
  173. let that=this
  174. let index = e.target.dataset.index;
  175. let value = e.target.value;
  176. // console.log(value)
  177. if (index == 1) {
  178. var regName = /^[\u4e00-\u9fa5]{2,4}$/;
  179. // console.log(!regName.test(value))
  180. if (!regName.test(value)) {
  181. that.form.name=''
  182. // var username = "form.name";
  183. // this.setData({
  184. // [username]: ''
  185. // });
  186. // console.log(that.form)
  187. return req.msg('请正确输入您的姓名');
  188. } else {
  189. // var username = "form.name";
  190. // this.setData({
  191. // [username]: value
  192. // });
  193. that.form.name=value
  194. // console.log(that.form)
  195. }
  196. }
  197. if (index == 2) {
  198. var reg = /^1[3|4|5|6|7|8|9][0-9]{9}$/; //验证规则
  199. var flag = reg.test(value);
  200. if (!flag) {
  201. return req.msg("手机号码格式有误");
  202. } else {
  203. var tel = "form.tel";
  204. this.setData({
  205. [tel]: value
  206. });
  207. }
  208. }
  209. if (index == 3) {
  210. //检查身份证号码
  211. if (!value) {
  212. this.setData({
  213. gender: '',
  214. sex: '',
  215. age: '',
  216. old: ''
  217. });
  218. return req.msg('请输入身份证号码');
  219. }
  220. var arrVerifyCode = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];
  221. var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  222. var Checker = [1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1];
  223. var Ai;
  224. if (value.length != 15 && value.length != 18) {
  225. this.setData({
  226. gender: '',
  227. sex: '',
  228. age: '',
  229. old: ''
  230. });
  231. return req.msg("身份证号共有15位或18位");
  232. }
  233. if (value.length == '15') {
  234. var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
  235. var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
  236. var cardTemp = 0,
  237. i;
  238. a18 = "";
  239. a18 = value.substr(0, 6) + '19' + value.substr(6, value.length - 6);
  240. for (i = 0; i < 17; i++) {
  241. cardTemp += a18.substr(i, 1) * arrInt[i];
  242. }
  243. a18 += arrCh[cardTemp % 11];
  244. Ai = a18;
  245. // console.log(a18);
  246. }
  247. if (value.length == '18') {
  248. Ai = value.length == 18 ? value.substring(0, 17) : value.slice(0, 6) + "19" + value.slice(6, 16);
  249. }
  250. if (!/^\d+$/.test(Ai)) return req.msg("身份证除最后一位外,必须为数字!");
  251. var yyyy = Ai.slice(6, 10),
  252. mm = Ai.slice(10, 12) - 1,
  253. dd = Ai.slice(12, 14);
  254. var d = new Date(yyyy, mm, dd),
  255. now = new Date();
  256. var year = d.getFullYear(),
  257. mon = d.getMonth(),
  258. day = d.getDate();
  259. if (year != yyyy || mon != mm || day != dd || d > now || year < 1800) {
  260. this.setData({
  261. gender: '',
  262. sex: '',
  263. age: '',
  264. old: ''
  265. });
  266. return req.msg("身份证输入错误");
  267. }
  268. for (var i = 0, ret = 0; i < 17; i++) ret += Ai.charAt(i) * Wi[i];
  269. Ai += arrVerifyCode[ret %= 11]; // console.log(pId != Ai,pId.length == 18,pId,Ai)
  270. if (value.indexOf('x') != -1) {
  271. value = value.replace("x", "X")
  272. }
  273. if (value.length == 18 && value != Ai) {
  274. this.setData({
  275. gender: '',
  276. sex: '',
  277. age: '',
  278. old: ''
  279. });
  280. return req.msg("身份证输入错误!");
  281. } else {
  282. // if (isNaN(Ai)) return;
  283. var ic = String(Ai); //获取出生日期
  284. var birth = ic.substring(6, 10) + "-" + ic.substring(10, 12) + "-" + ic.substring(12, 14);
  285. // console.log(birth);
  286. this.setData({
  287. birth: birth
  288. }); //获取性别
  289. var gender = ic.slice(14, 17) % 2 ? "1" : "0"; // 1代表男性,0代表女性
  290. let sex = gender == 1 ? '男' : '女';
  291. this.setData({
  292. gender: sex,
  293. sex: gender
  294. }); //获取年龄
  295. var myDate = new Date();
  296. var month = myDate.getMonth() + 1;
  297. var day = myDate.getDate();
  298. var age = myDate.getFullYear() - ic.substring(6, 10) - 1;
  299. if (ic.substring(10, 12) < month || ic.substring(10, 12) == month && ic.substring(12, 14) <= day) {
  300. age++;
  301. }
  302. if (age >= 90 || age <= 0) {
  303. this.setData({
  304. gender: '',
  305. sex: '',
  306. age: '',
  307. old: ''
  308. });
  309. return req.msg("身份证异常");
  310. } else if (age <= 7) {
  311. this.setData({
  312. gender: '',
  313. sex: '',
  314. age: '',
  315. old: ''
  316. });
  317. return req.msg("根据互联网处方药条例,用药人的年龄不得小于8岁,请使用监护人身份信息,开具处方,并告知在线医师");
  318. }
  319. let nianling = age + '岁';
  320. this.setData({
  321. age: nianling,
  322. old: age
  323. });
  324. var idCard = "form.idCard";
  325. this.setData({
  326. [idCard]: Ai
  327. });
  328. }
  329. }
  330. },
  331. // 获取用药人详情
  332. getdrugUsers(id) {
  333. req.getRequest('/api/userDrugPeople/get', {
  334. id: id
  335. }, data => {
  336. // console.log(data);
  337. let tablist;
  338. if (data) {
  339. tablist = this.TabList.map(it => {
  340. if (it.text == data.label) {
  341. it.active = true;
  342. }
  343. return it;
  344. });
  345. let isDefault = data.isDefault ? 1 : 0;
  346. // console.log(this.TabList);
  347. var name = "form.name";
  348. var tel = "form.tel";
  349. var cardId = "form.idCard";
  350. this.setData({
  351. [name]: data.name,
  352. [tel]: data.tel,
  353. [cardId]: data.idCard,
  354. TabList: tablist,
  355. label: data.label,
  356. isDefault: isDefault
  357. });
  358. }
  359. });
  360. },
  361. deleteFun() {
  362. let that = this;
  363. req.msgConfirm('确定删除该用药人', () => {
  364. req.postRequest('/api/userDrugPeople/delete', {
  365. id: this.query.id
  366. }, () => {
  367. uni.navigateBack();
  368. });
  369. });
  370. },
  371. // 是否默认
  372. setDefault() {
  373. this.setData({
  374. isDefault: !this.isDefault
  375. });
  376. }
  377. }
  378. };
  379. </script>
  380. <style>
  381. @import "./index.css";
  382. </style>