transferWorkOrderUser.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <template>
  2. <view class="transferWorkOrder">
  3. <mSearch class="search" :mode="2" button="inside" placeholder="请搜索人员名称、工号" @input="changeInp" @search="doSearch()" v-model="keyword" searchButtonType="icon" searchButtonName="newicon-saoma"></mSearch>
  4. <scroll-view scroll-y class="list">
  5. <view class="item" v-for="item in list" :key="item.id" @click="selectItem(item)">{{item.name}}({{item.account}})</view>
  6. </scroll-view >
  7. <view class="footer">
  8. <view class="btn" hover-class="seimin-btn-hover" @click="goBack()">返回</view>
  9. </view>
  10. </view>
  11. </template>
  12. <script>
  13. import { get, post, SM, webHandle } from "../../http/http.js";
  14. import debounce from 'lodash-es/debounce'
  15. import mSearch from "@/components/mehaotian-search-revision/mehaotian-search-revision.vue";
  16. export default {
  17. onLoad(options) {
  18. console.log('options', options);
  19. this.getList();
  20. },
  21. onShow() {
  22. this.SMFlag = true;
  23. },
  24. components: {
  25. //引用mSearch组件,如不需要删除即可
  26. mSearch,
  27. },
  28. data() {
  29. return {
  30. keyword: '',
  31. hosId: uni.getStorageSync('userData').user.currentHospital.id,
  32. list: [],
  33. SMFlag: true,
  34. };
  35. },
  36. methods:{
  37. goBack() {
  38. uni.navigateBack();
  39. },
  40. //防抖搜索
  41. changeInp(event) {
  42. this.inputChange(event);
  43. },
  44. //监听输入
  45. inputChange(event) {
  46. let keyword = event.detail ? event.detail.value : event;
  47. this.handleSearch(keyword);
  48. },
  49. doSearch(){
  50. // 扫码
  51. if (!this.SMFlag) {
  52. return;
  53. }
  54. this.SMFlag = false;
  55. SM().then((content) => {
  56. this.scanQrcode(content);
  57. }).catch(err => {
  58. this.SMFlag = true;
  59. });
  60. },
  61. //扫码
  62. scanQrcode(content){
  63. let userHandoverCode = '';
  64. uni.showLoading({
  65. title: "加载中",
  66. mask: true,
  67. });
  68. //检验二维码的有效性(扫码前必须验证)
  69. post("/dept/scanning", {
  70. content,
  71. })
  72. .then((result) => {
  73. try{
  74. userHandoverCode = JSON.parse(result.code);
  75. }catch(e){
  76. userHandoverCode = '';
  77. }
  78. this.SMFlag = true;
  79. uni.hideLoading();
  80. // 200检测通过,201没有有效期也通过。
  81. if (result.state == 200 || result.state == 201) {
  82. if(Object.prototype.toString.call(userHandoverCode) === '[object Object]' && userHandoverCode.name){
  83. uni.redirectTo({
  84. url: `/pages/transferWorkOrder/transferWorkOrderPatient?userId=${userHandoverCode.id}&userName=${userHandoverCode.name}&userAccount=${userHandoverCode.account}`,
  85. });
  86. }else{
  87. uni.showToast({
  88. icon: "none",
  89. title: "请扫描正确的二维码!",
  90. });
  91. }
  92. } else {
  93. uni.hideLoading();
  94. uni.showToast({
  95. icon: "none",
  96. title: result.info || "接口获取数据失败!",
  97. });
  98. }
  99. })
  100. },
  101. selectItem(user){
  102. // let userList = uni.getStorageSync('transferWorkOrderUserList') || [];
  103. // // 移除
  104. // userList = userList.filter(v => v.id != user.id);
  105. // // 添加
  106. // userList = [user, ...userList];
  107. // userList = userList.map(v => ({...v, timeStamp: +new Date()}))
  108. // uni.setStorageSync('transferWorkOrderUserList', userList);
  109. uni.redirectTo({
  110. url: `/pages/transferWorkOrder/transferWorkOrderPatient?userId=${user.id}&userName=${user.name}&userAccount=${user.account}`,
  111. });
  112. },
  113. handleSearch: debounce(function(keyword) {
  114. this.getList(keyword);
  115. }, 500),
  116. getList(keyword){
  117. // if(!keyword){
  118. // let userList = uni.getStorageSync('transferWorkOrderUserList') || [];
  119. // userList = userList.filter(v => +new Date() - v.timeStamp < 4 * 60 * 60 * 1000);//4小时内选择过的用户
  120. // uni.setStorageSync('transferWorkOrderUserList', userList);
  121. // this.list = userList;
  122. // return;
  123. // }
  124. uni.showLoading({
  125. title: "加载中",
  126. });
  127. post("/simple/data/fetchDataList/user", {
  128. idx: 0,
  129. sum: 25,
  130. user: {
  131. hosId: this.hosId,
  132. name: keyword || undefined,
  133. online: true,
  134. }
  135. }).then((result) => {
  136. uni.hideLoading();
  137. if (result.status == 200) {
  138. this.list = result.list || [];
  139. } else {
  140. uni.showToast({
  141. icon: "none",
  142. title: result.msg || "接口获取数据失败!",
  143. });
  144. }
  145. });
  146. },
  147. }
  148. }
  149. </script>
  150. <style lang="less" scoped>
  151. .transferWorkOrder{
  152. width: 100%;
  153. height: 100vh;
  154. display: flex;
  155. flex-direction: column;
  156. .search{
  157. padding: 10rpx 24rpx;
  158. }
  159. .list{
  160. flex: 1;
  161. min-height: 0;
  162. background-color: #fff;
  163. .item{
  164. height: 100rpx;
  165. line-height: 100rpx;
  166. text-align: center;
  167. font-size: 26rpx;
  168. border-bottom: 1rpx solid #D5D5D5;
  169. }
  170. }
  171. .footer{
  172. margin-top: 24rpx;
  173. margin-bottom: 24rpx;
  174. line-height: 80rpx;
  175. height: 80rpx;
  176. background: #fff;
  177. display: flex;
  178. align-items: center;
  179. .btn {
  180. height: 80rpx;
  181. flex: 1;
  182. margin: 0 24rpx;
  183. background-color: #49B856;
  184. color: #fff;
  185. border-radius: 8rpx;
  186. font-size: 34rpx;
  187. text-align: center;
  188. }
  189. }
  190. }
  191. </style>