resident.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. <template>
  2. <view>
  3. <view class="cu-list menu-avatar">
  4. <block v-for="(item,index) in plist" :key="index">
  5. <view class="padding-lr padding-top-sm padding-bottom-xs bg-white margin-top-sm solid-bottom">{{item.comjobs.title}}</view>
  6. <view class="cu-item" style="height: 180rpx;">
  7. <view class="content">
  8. <view class="text-red">
  9. <view class="text-cut" @tap="makeTelephone" :data-telephone="item.mobile">{{item.realname}} - 【{{item.mobile}}】</view>
  10. </view>
  11. <view class="text-gray text-sm">
  12. <view class="text-cut">预计到达日期:{{item.arrivetime}}</view>
  13. <view class="text-cut">报名时间:{{item.createtime}}</view>
  14. </view>
  15. </view>
  16. <view class="action">
  17. <view class="cu-tag round bg-gray sm">{{item.status_text}}</view>
  18. </view>
  19. </view>
  20. <view class="grid solids-top text-center col-3 padding-tb-sm bg-white">
  21. <view @tap="showModal" :data-itemid="item.id" :data-itemindex="index" :data-itemstatus="item.status" data-target="statusModal"><text class="cuIcon-write padding-right-xs"></text> 状态 </view>
  22. <view @tap="makeTelephone" :data-telephone="item.broker.mobile"><text class="cuIcon-phone padding-right-xs"></text> 联系经纪人 </view>
  23. <view @tap="showModal" :data-itemid="item.id" :data-itemindex="index" :data-itemstatus="item.status" data-target="detailModal"><text class="cuIcon-search padding-right-xs"></text> 详情 </view>
  24. </view>
  25. </block>
  26. </view>
  27. <uni-load-more :status="pstatus"></uni-load-more>
  28. <view class="cu-modal bottom-modal show" v-if="modalName=='statusModal'" @tap="hideModal">
  29. <view class="cu-dialog" @tap.stop="">
  30. <view class="cu-bar bg-white justify-end">
  31. <view class="content">点击选择要更改的状态</view>
  32. <view class="action" @tap="hideModal">
  33. <text class="cuIcon-close text-red"></text>
  34. </view>
  35. </view>
  36. <view class="solids-top">
  37. <radio-group class="block" @change="statusChange">
  38. <view class="cu-list menu text-left">
  39. <view class="cu-item">
  40. <label class="flex justify-between align-center flex-sub">
  41. <view class="flex-sub">待审核</view>
  42. <radio class="round" :class="itemstatus==1?'checked':''" :checked="itemstatus==1?true:false" value="1"></radio>
  43. </label>
  44. </view>
  45. <view class="cu-item">
  46. <label class="flex justify-between align-center flex-sub">
  47. <view class="flex-sub">待面试</view>
  48. <radio class="round" :class="itemstatus==2?'checked':''" :checked="itemstatus==2?true:false" value="2"></radio>
  49. </label>
  50. </view>
  51. <view class="cu-item">
  52. <label class="flex justify-between align-center flex-sub">
  53. <view class="flex-sub">已入职</view>
  54. <radio class="round" :class="itemstatus==3?'checked':''" :checked="itemstatus==3?true:false" value="3"></radio>
  55. </label>
  56. </view>
  57. <view class="cu-item">
  58. <label class="flex justify-between align-center flex-sub">
  59. <view class="flex-sub">无效报备</view>
  60. <radio class="round" :class="itemstatus==4?'checked':''" :checked="itemstatus==4?true:false" value="4"></radio>
  61. </label>
  62. </view>
  63. </view>
  64. </radio-group>
  65. <view class="cu-form-group align-start solids-top" v-if="itemstatus==4">
  66. <textarea style="text-align: left;" maxlength="140" placeholder="请输入反馈信息..." @input="retremarkInput" :value="setremark"></textarea>
  67. </view>
  68. <view class="padding bg-white flex flex-direction">
  69. <button class="cu-btn bg-themeBtn margin-tb-sm lg" @tap="statusUpdate">确认提交</button>
  70. </view>
  71. </view>
  72. </view>
  73. </view>
  74. <view class="cu-modal bottom-modal show" v-if="modalName=='detailModal'">
  75. <view class="cu-dialog">
  76. <view class="cu-bar bg-white justify-end">
  77. <view class="content">报备详情</view>
  78. <view class="action" @tap="hideModal">
  79. <text class="cuIcon-close text-red"></text>
  80. </view>
  81. </view>
  82. <view>
  83. <scroll-view scroll-y="true" class="echo-orderinfo">
  84. <view class="cu-bar bg-white solids-bottom margin-top-xs">
  85. <view class="action">
  86. <text class="cuIcon-title text-red"></text> 报备信息
  87. </view>
  88. </view>
  89. <view class="padding bg-white">
  90. <view class="flex justify-start padding-bottom-sm">
  91. <view class="basis-xs text-gray padding-right-sm">招聘标题</view>
  92. <view class="basis-xl text-left"><text>{{nowreport.comjobs.title}}</text></view>
  93. </view>
  94. <view class="flex justify-start padding-bottom-sm">
  95. <view class="basis-xs text-gray padding-right-sm">报备姓名</view>
  96. <view class="basis-xl text-left"><text>{{nowreport.realname}}</text></view>
  97. </view>
  98. <view class="flex justify-start padding-bottom-sm">
  99. <view class="basis-xs text-gray padding-right-sm">手机号码</view>
  100. <view class="basis-xl text-left"><text>{{nowreport.mobile}}</text></view>
  101. </view>
  102. <view class="flex justify-start padding-bottom-sm">
  103. <view class="basis-xs text-gray padding-right-sm">身份证号</view>
  104. <view class="basis-xl text-left"><text>{{nowreport.idcard}}</text></view>
  105. </view>
  106. <view class="flex justify-start padding-bottom-sm">
  107. <view class="basis-xs text-gray padding-right-sm">报备状态</view>
  108. <view class="basis-xl text-left"><text>{{nowreport.status_text}}</text></view>
  109. </view>
  110. <view class="flex justify-start padding-bottom-sm">
  111. <view class="basis-xs text-gray padding-right-sm">预到时间</view>
  112. <view class="basis-xl text-left"><text>{{nowreport.arrivetime}}</text></view>
  113. </view>
  114. <view class="flex justify-start padding-bottom-sm">
  115. <view class="basis-xs text-gray padding-right-sm">报备备注</view>
  116. <view class="basis-xl text-left"><text>{{nowreport.remark==''?"无":nowreport.remark}}</text></view>
  117. </view>
  118. <view class="flex justify-start padding-bottom-sm">
  119. <view class="basis-xs text-gray padding-right-sm">报备时间</view>
  120. <view class="basis-xl text-left"><text>{{nowreport.createtime}}</text></view>
  121. </view>
  122. <view class="flex justify-start padding-bottom-sm">
  123. <view class="basis-xs text-gray padding-right-sm">反馈备注</view>
  124. <view class="basis-xl text-left"><text>{{nowreport.retremark==''?"无":nowreport.retremark}}</text></view>
  125. </view>
  126. </view>
  127. </scroll-view>
  128. </view>
  129. </view>
  130. </view>
  131. <!-- <view class="padding-sm"></view>
  132. <view class="padding-xl"></view>
  133. <view class="cu-bar tabbar bg-white foot">
  134. <view class="action" @tap="goNavPage('/pages/resident/resident')">
  135. <view class="cuIcon-upload"></view>
  136. 悬赏报备
  137. </view>
  138. <view class="action" @tap="goNavPage('/pages/resident/order')">
  139. <view class="cuIcon-recharge"></view>
  140. 订单报备
  141. </view>
  142. </view>
  143. -->
  144. </view>
  145. </template>
  146. <script>
  147. var _this;
  148. import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
  149. export default {
  150. components: {
  151. uniLoadMore
  152. },
  153. data() {
  154. return {
  155. userinfo: false,
  156. residentinfo: false,
  157. modalName: null,
  158. itemid: 0,
  159. itemindex: 0,
  160. itemstatus: 0,
  161. retremark: "",
  162. nowreport: {},
  163. pstatus: 'more',
  164. ppage: 1,
  165. psize: 20,
  166. plist: []
  167. }
  168. },
  169. onLoad: function() {
  170. _this = this;
  171. _this.userinfo = uni.getStorageSync('userinfo') || false;
  172. _this.residentinfo = uni.getStorageSync('residentinfo') || false;
  173. if (_this.userinfo===false || _this.residentinfo===false){
  174. uni.reLaunch({
  175. url: "/pages/my/my"
  176. });
  177. return false;
  178. }
  179. _this.getMore();
  180. },
  181. onPullDownRefresh: function() {
  182. _this.pageRefresh();
  183. },
  184. onReachBottom: function() {
  185. if (_this.pstatus !== 'more') {
  186. return;
  187. }
  188. _this.getMore();
  189. },
  190. methods: {
  191. pageRefresh: function() {
  192. _this.pstatus = 'more';
  193. _this.ppage = 1;
  194. _this.plist = [];
  195. _this.getMore();
  196. },
  197. getMore: function() {
  198. _this.$req.ajax({
  199. path: "resident/comjobsReport",
  200. data: {
  201. ppage: _this.ppage,
  202. psize: _this.psize,
  203. residentid: _this.residentinfo.id,
  204. }
  205. }).then((data) => {
  206. _this.pstatus = data.pstatus;
  207. _this.plist = _this.plist.concat(data.plist);
  208. _this.ppage += 1;
  209. uni.stopPullDownRefresh();
  210. }).catch((err) => {
  211. uni.showModal({
  212. title: '信息提示',
  213. content: err,
  214. showCancel: false
  215. });
  216. });
  217. },
  218. result: function(e) {
  219. _this.comjobsid = e.comjobsid;
  220. _this.status = e.status;
  221. _this.pageRefresh();
  222. },
  223. goDetail: function(comjobsid) {
  224. uni.navigateTo({
  225. url: '/pages/comjobs/detail?comjobsid=' + comjobsid
  226. });
  227. },
  228. showModal: function(e) {
  229. var itemindex = e.currentTarget.dataset.itemindex;
  230. _this.itemid = e.currentTarget.dataset.itemid;
  231. _this.itemindex = itemindex;
  232. _this.itemstatus = e.currentTarget.dataset.itemstatus;
  233. _this.nowreport = _this.plist[itemindex];
  234. _this.retremark = _this.nowreport.retremark;
  235. _this.modalName = e.currentTarget.dataset.target;
  236. },
  237. hideModal: function(e) {
  238. _this.modalName = null;
  239. },
  240. retremarkInput: function(e) {
  241. _this.retremark = e.detail.value;
  242. },
  243. statusChange: function(e) {
  244. let origin_status = _this.itemstatus;
  245. _this.itemstatus = e.detail.value;
  246. if (_this.itemstatus <= origin_status) {
  247. uni.showModal({
  248. title: '信息提示',
  249. content: '状态只能往下面的选',
  250. showCancel: false
  251. });
  252. _this.itemstatus = String(origin_status);
  253. _this.modalName = null;
  254. return false;
  255. }
  256. },
  257. statusUpdate: function(e) {
  258. _this.$req.ajax({
  259. path: "resident/comjobssetreportstatus",
  260. data: {
  261. residentid: _this.residentinfo.id,
  262. id: _this.itemid,
  263. status: _this.itemstatus,
  264. retremark: _this.retremark
  265. }
  266. }).then((data) => {
  267. _this.modalName = null;
  268. _this.plist[_this.itemindex] = data.report;
  269. }).catch((err) => {
  270. uni.showModal({
  271. title: '信息提示',
  272. content: err,
  273. showCancel: false
  274. });
  275. });
  276. },
  277. makeTelephone: function(e) {
  278. var telephone = e.currentTarget.dataset.telephone;
  279. uni.makePhoneCall({
  280. phoneNumber: telephone
  281. });
  282. },
  283. goNavPage: function(pageurl) {
  284. _this.userinfo = _this.checkLogin("/pages/my/my");
  285. if (_this.userinfo===false){
  286. return false;
  287. }
  288. uni.redirectTo({
  289. url: pageurl
  290. });
  291. },
  292. }
  293. }
  294. </script>
  295. <style>
  296. .codebox{ width: 680rpx; margin: 40rpx auto 0rpx auto; border-radius: 8rpx; overflow: hidden; }
  297. </style>