memberList.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. <!-- 商家-已报名人员列表 -->
  2. <template>
  3. <view>
  4. <view class="main_width">
  5. <view class="loading_text" v-if="loading">加载中...</view>
  6. <view v-else>
  7. <view class="plan_dotime_box" v-if="plan_dotime_arr.length>1">
  8. <view class="plan_dotime">
  9. <view :style="current_plan_dotime==''? 'font-weight: bold;':'font-weight: normal;'"
  10. @click="set_plan_dotime('')">全部报名日期</view>
  11. <view :style="current_plan_dotime==item? 'font-weight: bold;':'font-weight: normal;'"
  12. @click="set_plan_dotime(item)" v-for="item in plan_dotime_arr">{{item}}</view>
  13. </view>
  14. <view style="clear: both;"></view>
  15. </view>
  16. <view v-if="item.plan_dotime == current_plan_dotime||current_plan_dotime==''" class="item_box"
  17. :key="index" v-for="(item, index) in data">
  18. <view style="position: relative;" class="item">
  19. <view v-if="workteam_mode==0" style="position: absolute;right: 0;top: 0;"
  20. :class="item.wk_realname_handled=='1'? 'tags':'tags2' ">
  21. {{item.wk_realname_handled=='1'?'已实名':'未实名'}}
  22. </view>
  23. <!-- 状态名称-->
  24. <view style="display: flex;align-items: center;">
  25. <view @click="show_remark(item.remark)" class="status_title">
  26. {{item.statusName||''}}{{item.salary_status==1?'(部分结算)':''}}{{item.statusName == '已结算'&&item.final_status == 1?' 自动结算':''}}
  27. </view>
  28. </view>
  29. <!-- 基础信息显示 -->
  30. <view>
  31. <!-- 头像姓名 -->
  32. <view style="position: relative;" class="mem_item">
  33. <view class="auth" v-if="item.wk_idcard">身份已认证</view>
  34. <image :src="item.wkprofile_photo?item.wkprofile_photo: '../../static/user.png'">
  35. </image>
  36. <view style="font-size: 32upx;margin-left: 15upx;">
  37. {{item.wk_name}}
  38. </view>
  39. <view @click="contact(item)" style="color: #01bcc3; margin-left: 15upx;">联系会员</view>
  40. </view>
  41. <!-- 性别年龄 -->
  42. <view class="box" style="display: flex;align-items: center;margin-top:30upx;">
  43. <view style="width: 25%;text-align: left;">性别:{{item.gender}}</view>
  44. <view style="width: 25%;">年龄:{{item.wk_age}}</view>
  45. <view style="width: 25%;color: #01bcc3;">
  46. <navigator :url="'/pages/personal/resumeCheck?id='+item.wkid">查看简历</navigator>
  47. </view>
  48. <view style="border: none;width:25%;color: #01bcc3;">
  49. <navigator :url="'/pages/personal/appraisal?type=1&id='+item.wkid">查看评价</navigator>
  50. </view>
  51. </view>
  52. </view>
  53. <!-- 操作模块 双方评价 -->
  54. <view style="margin-top: 30upx;">
  55. <!-- 已结算显示 -->
  56. <view v-if="item.status==5">
  57. <!-- 会员对我的评价 -->
  58. <view v-if="item.wk_appraiseLevel!=-1">
  59. <view v-if="item.wk_appraiseLevel">
  60. <view style="display: flex;align-items: center;height: 50upx;">
  61. <view style="margin-right: 10upx;color: #ff5500;">会员评价</view>
  62. <trailerStars allowTap="0" :innerScore="item.wk_appraiseLevel">
  63. </trailerStars>
  64. </view>
  65. <view style="color: #8E97AE;">评价内容:{{item.wk_appraiseRemark}}
  66. </view>
  67. </view>
  68. <view style="color: #ff5500;" v-else>待会员评价</view>
  69. </view>
  70. <!-- 我对会员的评价 -->
  71. <view v-if="item.td_appraiseLevel!=-1" style="margin-top: 20upx;">
  72. <view v-if="item.td_appraiseLevel">
  73. <view style="display: flex;align-items: center;height: 50upx;">
  74. <view style="margin-right: 10upx;color: #ff5500;">我的评价</view>
  75. <trailerStars allowTap="0" :innerScore="item.td_appraiseLevel">
  76. </trailerStars>
  77. </view>
  78. <view style="color: #8E97AE;">评价内容:
  79. {{item.td_appraiseRemark}}
  80. </view>
  81. </view>
  82. <view style="display: flex;" v-else>
  83. <view @click="open_modal('appraise',item.id)" class="confirm">评价该会员</view>
  84. </view>
  85. </view>
  86. </view>
  87. </view>
  88. <view style="color: #8D8D8D;margin-top: 5upx;">
  89. 报名时间:{{item.createtime}}</view>
  90. <view style="color: #8D8D8D;margin-top: 5upx;" v-if="item.plan_dotime&&item.urgent_level==1">
  91. <view>上班日期:{{item.plan_dotime}} {{item.begin_hour}}~{{item.finish_hour}}</view>
  92. </view>
  93. <view style="color: #8D8D8D;margin-top: 5upx;" v-if="item.plan_dotime&&item.urgent_level==0">
  94. <view>上班日期:{{item.plan_dotime}}</view>
  95. <view>开始结束时间:{{item.btr_begindatetime1}}~{{item.btr_finishdatetime1}} {{item.begin_hour}}~{{item.finish_hour}}</view>
  96. </view>
  97. <view>
  98. <view style="color: #8D8D8D;margin-top: 5upx;" v-if="item.worked_begintime">
  99. 开始工作时间:{{item.worked_begintime}}</view>
  100. <view style="color: #8D8D8D;margin-top: 5upx;" v-if="item.worked_finishtime">
  101. 结束工作时间:{{item.worked_finishtime}}</view>
  102. </view>
  103. <!-- 操作模块 录用,结算 -->
  104. <view style="margin-left: 2%;" class="order_box">
  105. <!-- 待录用显示 -->
  106. <view class="order_btn_box" v-if="item.status==1">
  107. <view @click="open_modal('refuseSign',item.id, item)" class="cancel">拒绝
  108. </view>
  109. <view @click="open_modal('allowSign',item.id,item)" class="confirm">录用
  110. </view>
  111. </view>
  112. <!-- 待结算显示 -->
  113. <view class="order_btn_box" v-if="item.status==2">
  114. <view @click="open_modal('refusePay',item.id,item)" class="cancel">拒绝支付</view>
  115. <view @click="open_modal('allowPay',item.id,item)" class="confirm">确认支付</view>
  116. </view>
  117. </view>
  118. </view>
  119. </view>
  120. </view>
  121. <view class="loading_text" v-if="data.length==0&&!loading">暂无数据</view>
  122. <view style="height: 200upx;"></view>
  123. </view>
  124. <!-- 遮罩内容 -->
  125. <uni-popup ref="popup" :mask-click="false">
  126. <view style="overflow: hidden;" class="modal_box">
  127. <!-- 评分 -->
  128. <view v-if="todo == 'appraise'" style="margin-top: 30upx;margin-left: 30upx;">
  129. <trailerStars allowTap="1" v-on:changeScore="changeScore" :innerScore="score">
  130. </trailerStars>
  131. </view>
  132. <view style=" margin-top: 30upx;">
  133. <textarea v-model="reason" @input="textarea_ipt" style="text-indent: 20upx;"
  134. :placeholder="todo_remarks"></textarea>
  135. <view class="modal_btn">
  136. <view @click="close_modal()" class="modal_btn_cancel">取消</view>
  137. <view @click="process()" class="modal_btn_confirm">
  138. 确认{{todo_title}}{{todo=='allowPay'?(btr_feetotal+'元'):''}}</view>
  139. </view>
  140. </view>
  141. </view>
  142. </uni-popup>
  143. </view>
  144. </template>
  145. <script>
  146. import commonData from '../../commonData.js'
  147. import commonFun from '../../commonFun.js'
  148. import trailerStars from '../../components/starts/index.vue'
  149. export default {
  150. data() {
  151. return {
  152. checkUrlImg: 'url(' + this.serverUrl + 'check.png)',
  153. greenUrlImg: 'url(' + this.serverUrl + 'green_point.png)',
  154. downUrlImg: 'url(' + this.serverUrl + 'arrow_down_green.png)',
  155. id: '', //招聘id
  156. loading: false,
  157. check_box: [], //单选框单选状态
  158. data: [],
  159. workId: '',
  160. todo_title: '',
  161. todo_remarks: '',
  162. todo: '',
  163. reason: '',
  164. score: 5,
  165. btr_feetotal: '', //需要支付的金额
  166. status: 0, //get_data()中的status参数
  167. plan_dotime_arr: [], //可选日期
  168. current_plan_dotime: '',
  169. }
  170. },
  171. onPullDownRefresh() {
  172. this.get_data()
  173. },
  174. onLoad(e) {
  175. this.id = e.id //订单id
  176. // this.id = 503 //订单id
  177. this.status = e.status || 0
  178. this.get_data()
  179. },
  180. components: {
  181. trailerStars
  182. },
  183. methods: {
  184. set_plan_dotime(value) {
  185. this.current_plan_dotime = value
  186. },
  187. // 联系会员
  188. contact(item) {
  189. if (item.status > 1 || item.status == -3 || item.status == -5 || item.status == -8) {
  190. uni.showActionSheet({
  191. itemList: ['在线沟通', '拨打电话'],
  192. success: (res) => {
  193. if (res.tapIndex == 0) {
  194. uni.setStorageSync('targetUser', {
  195. name: item.wk_name,
  196. avatar: item.wkprofile_photo
  197. })
  198. // console.log(item)
  199. // console.log(uni.getStorageSync('targetUser'))
  200. uni.navigateTo({
  201. url: '/pages/message/chat?to=user_' + item.wkid
  202. })
  203. } else {
  204. uni.makePhoneCall({
  205. phoneNumber: item.bu_mobile,
  206. fail: res => {
  207. uni.showModal({
  208. title: '拨号失败',
  209. content: JSON.stringify(res),
  210. showCancel: false
  211. })
  212. }
  213. });
  214. }
  215. },
  216. });
  217. } else {
  218. uni.showModal({
  219. title: '录取后获得联系方式',
  220. showCancel: false
  221. })
  222. }
  223. },
  224. // 输入操作备注
  225. textarea_ipt(e) {
  226. this.reason = e.target.value
  227. },
  228. // 打开遮罩
  229. open_modal(todo, workId, item = {}) {
  230. if (item) {
  231. this.btr_feetotal = item.btr_feetotal
  232. }
  233. this.workId = workId
  234. this.todo_remarks = commonData.todo_title_obj[todo]['remarks'] + (commonData.todo_title_obj[todo][
  235. 'is_require'
  236. ] ?
  237. '(必填)' : '')
  238. this.todo_title = commonData.todo_title_obj[todo]['title']
  239. this.todo = todo
  240. this.$refs.popup.open('top')
  241. },
  242. // 关闭遮罩
  243. close_modal() {
  244. this.$refs.popup.close('top')
  245. },
  246. // 处理
  247. process() {
  248. let params = {
  249. bizCatalog: 'TodoWorkEntity',
  250. handleMode: commonData.todo_title_obj[this.todo]['handleMode'],
  251. todo: commonData.todo_title_obj[this.todo]['todo'],
  252. teamid: '',
  253. workid: this.workId,
  254. reason: this.reason,
  255. appraiseLevel: this.score,
  256. appraiseRemark: this.reason,
  257. }
  258. console.log(params)
  259. if (this.todo == "appraise" && !params.appraiseLevel) {
  260. uni.showModal({
  261. content: '请评价后提交!',
  262. showCancel: false
  263. })
  264. return
  265. }
  266. console.log('process请求参数', params)
  267. // return
  268. if (commonData.todo_title_obj[this.todo]['is_require'] && params.reason == '') {
  269. uni.showModal({
  270. content: commonData.todo_title_obj[this.todo]['title'] + '备注是必填的!',
  271. showCancel: false
  272. })
  273. return
  274. }
  275. if (this.todo == 'allowPay' || this.todo == 'allowSign') {
  276. commonFun.paySettleMer(this.workId, () => {
  277. this.reason = ''
  278. this.close_modal()
  279. this.get_data()
  280. }, this.todo == 'allowPay' ? 'paySettle' : 'auditEnroll')
  281. return
  282. }
  283. uni.showLoading({
  284. title: '加载中...',
  285. mask: true
  286. })
  287. commonFun.requestUrl('&WsAjaxBiz=Trader&WsAjaxAction=entityDataHandle', params, res => {
  288. if (res.status) {
  289. uni.showModal({
  290. content: this.todo_title + '成功!',
  291. showCancel: false,
  292. success: res => {
  293. this.reason = ''
  294. this.close_modal()
  295. this.get_data()
  296. }
  297. })
  298. }
  299. uni.hideLoading()
  300. })
  301. },
  302. // 获取数据
  303. get_data() {
  304. this.loading = true
  305. uni.showLoading({
  306. title: '加载中...',
  307. mask: true
  308. })
  309. let params = {
  310. bizCatalog: 'TodoWorkEntity',
  311. handleMode: 'fetchall',
  312. pageIndex: 1,
  313. pageSize: 1000,
  314. orderby: 0,
  315. query: {
  316. recuritId: this.id,
  317. status: this
  318. .status, //0空-全部;1-待提交;2-已报名待审核;3-已审核待开工;4-报名被驳回;5-已开始工作;6-已结束工作待结算;7-已结算;8-主动取消报名;9-被违约 10-被动取消报名;11-未结算; 91-进行中;92-异常工单;,
  319. teamstatus: "",
  320. recuritTitle: '', //招聘标题筛选
  321. memberName: "", //成员姓名
  322. },
  323. }
  324. console.log('报名人员页面列表请求参数', params)
  325. commonFun.requestUrl('&WsAjaxBiz=Trader&WsAjaxAction=fetchPageData', params, res => {
  326. if (res.status) {
  327. this.data = res.data.Result.pageData.map(item => {
  328. item.gender = item.wk_gender == 0 ? '男' : item.wk_gender == 1 ? '女' : '--'
  329. return item
  330. })
  331. this.check_box = this.data.map(item => false)
  332. let plan_dotime_arr = []
  333. this.data.map(item => {
  334. if (plan_dotime_arr.indexOf(item.plan_dotime) == -1) {
  335. plan_dotime_arr.push(item.plan_dotime)
  336. }
  337. })
  338. this.plan_dotime_arr = plan_dotime_arr
  339. console.log('报名人员页面列表', this.data)
  340. console.log(this.plan_dotime_arr)
  341. }
  342. this.loading = false
  343. uni.hideLoading()
  344. uni.stopPullDownRefresh()
  345. })
  346. },
  347. // 评价星星回调
  348. changeScore(e) {
  349. this.score = e
  350. },
  351. // 展示备注信息
  352. show_remark(content) {
  353. uni.showModal({
  354. title: '操作备注',
  355. content,
  356. showCancel: false
  357. })
  358. }
  359. }
  360. }
  361. </script>
  362. <style>
  363. @import url("./memberList.css");
  364. </style>