query.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <template>
  2. <div class="credit-query-wrapper">
  3. <!-- 身份选择 -->
  4. <div class="identify-wrapper">
  5. <div class="identify-title">身份选择</div>
  6. <el-button-group>
  7. <el-button
  8. class="identify-btn"
  9. @click="handleClickIdentify('2')"
  10. :class="{'active' : !isCompany}">查询我的</el-button>
  11. <el-button
  12. class="identify-btn"
  13. @click="handleClickIdentify('1')"
  14. :class="{'active' : isCompany}">我查询的</el-button>
  15. </el-button-group>
  16. </div>
  17. <!-- 查询内容 -->
  18. <div class="credit-query-content">
  19. <div class="title-area">
  20. <div class="stitle">技术信用({{roleName}})</div>
  21. <div v-if="isCompany" class="stips">这是您查询他人的技术信用查询记录,共{{queryInfo.total || 0}}个 ,同意授权({{queryInfo.approved || 0}}) ,拒绝授权({{queryInfo.rejected || 0}}) </div>
  22. <div v-else class="stips">这是他人查询您的技术信用查询记录,共{{queryInfo.total || 0}}个 ,同意授权({{queryInfo.approved || 0}}) ,拒绝授权({{queryInfo.rejected || 0}}) </div>
  23. <div class="select-area">
  24. <el-select v-model="selectedValue" placeholder="请选择" @change="changeSelect">
  25. <el-option
  26. v-for="item in selectOptionsNow"
  27. :key="item.value"
  28. :label="item.label"
  29. :value="item.value">
  30. </el-option>
  31. </el-select>
  32. </div>
  33. </div>
  34. <div class="list-empty" v-if="!myList.length && isFirstLoad">
  35. <img src="@/assets/img/common/empty@2x.png" alt="empty">
  36. <span>暂无数据</span>
  37. </div>
  38. <div class="list" v-else-if="isCompany" id="list">
  39. <div class="cell" v-for="(item, index) in myList" :key="'myCellCompany'+index">
  40. <div class="top">
  41. <div class="left">
  42. 信用报告-{{item.id}}
  43. </div>
  44. <div class="right">
  45. <div class="status" :class="{ok: Number(item.status) === 1, green: Number(item.status) === 2}">
  46. <p v-if="Number(item.status) === 1">待授权</p>
  47. <p v-else-if="Number(item.status) === 2">查询成功</p>
  48. <p v-else>对方拒绝</p>
  49. </div>
  50. </div>
  51. </div>
  52. <div class="cBody">
  53. <div class="left">
  54. <p class="p4"><span>被查询人:</span>{{item.nickname}}</p>
  55. <p class="p9" v-if="Number(item.status) ===2 ">
  56. <span>技术信用报告:</span>
  57. <span class="point" @click="handleClickCompanyPoint(item)">点击查看信用报告</span>
  58. </p>
  59. <p class="p5"><span>报告项: </span>{{item.items_name}}</p>
  60. <p class="p6"><span>购买时间:</span>{{item.created_at}}</p>
  61. <p class="p7"><span>支付费用:</span><span class="num">¥{{(item.real_price/100).toFixed(2)}}</span>元</p>
  62. <p class="p8" v-if="Number(item.status) ===3 "><span>退款日期:</span><span class="date">{{item.updated_at}}</span></p>
  63. </div>
  64. <div class="right" style="cursor: pointer">
  65. <div class="userInfo" @click="handleClickUser(item)">
  66. <img :src="item.icon_url" alt="" />
  67. <div class="uname">{{item.nickname}}</div>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. <div class="list" v-else id="list">
  74. <div class="cell" v-for="(item, index) in myList" :key="'myCell'+index">
  75. <div class="top">
  76. <div class="left">
  77. 信用报告-{{item.id}}
  78. </div>
  79. <div class="right">
  80. <div class="rightWord" v-if="Number(item.status) === 1">
  81. <span>{{item.calcTime.h}}</span>小时<span>{{item.calcTime.m}}</span>分<span>{{item.calcTime.s}}</span>秒 内未回应对方系统将自动拒绝
  82. </div>
  83. <div class="status" :class="{ok: Number(item.status) === 2}" v-else>
  84. <p>{{Number(item.status) === 2 ? "同意授权" : "拒绝授权"}}</p>
  85. </div>
  86. </div>
  87. </div>
  88. <div class="cBody">
  89. <div class="left">
  90. <p class="p1">需求方 <span>{{item.nickname}}</span> 希望查看您的技术信用报告,请确认是否授权</p>
  91. <p class="p2">授权报告内容:<span @click="handleClickPoint(item)">
  92. {{item.lookUrl}}
  93. </span></p>
  94. <p class="p3">授权同意后您将直接获得一定数量的STD收益,token权益即将上线</p>
  95. </div>
  96. <div class="right" v-if="Number(item.status) === 1">
  97. <div class="disAgree" @click="rejectOrder(item)">
  98. <p>拒绝</p>
  99. </div>
  100. <div class="agree" @click="approveOrder(item)">
  101. <p>同意授权</p>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. <div class="bottomArea">
  108. <el-pagination
  109. background
  110. layout="prev, pager, next"
  111. :page-size="page.size"
  112. :total="page.total"
  113. @current-change="pageChange">
  114. </el-pagination>
  115. </div>
  116. </div>
  117. </div>
  118. </template>
  119. <script>
  120. export default {
  121. name: 'creditQuery',
  122. data () {
  123. return {
  124. identify: '',
  125. selectedValue: -1,
  126. selectOptions: [
  127. {label: "全部", value: -1},
  128. {label: "待授权", value: 1},
  129. {label: "查询成功", value: 2},
  130. {label: "对方拒绝", value: 3},
  131. ],
  132. selectOptionsMy: [
  133. {label: "全部", value: -1},
  134. {label: "待授权", value: 1},
  135. {label: "已同意", value: 2},
  136. {label: "已拒绝", value: 3},
  137. ],
  138. page: {
  139. page: 1,
  140. size: 10,
  141. total: 0
  142. },
  143. queryInfo: {
  144. total: 0,
  145. waited: 0,
  146. approved: 0,
  147. rejected: 0,
  148. },
  149. myList: [],
  150. isFirstLoad: false
  151. }
  152. },
  153. computed: {
  154. isCompany () {
  155. return this.userinfo.home_page_type === '1'
  156. },
  157. roleName () {
  158. return this.isCompany ? '我查询的' : '查询我的'
  159. },
  160. selectOptionsNow () {
  161. return this.isCompany ? this.selectOptions : this.selectOptionsMy
  162. }
  163. },
  164. head () {
  165. return {
  166. title: '技术信用查询'
  167. }
  168. },
  169. created () {
  170. const query = this.$route.query || {}
  171. // this.identify = query.identify || '2'
  172. },
  173. mounted() {
  174. this.getCreditOrders()
  175. },
  176. methods: {
  177. getCreditOrders () {
  178. const self = this
  179. let data = {...self.page}
  180. if (self.selectedValue !== -1) {
  181. data.status = this.selectedValue
  182. }
  183. let loading = this.$loading({
  184. target: "#list",
  185. })
  186. this.$axios.$post('/api/user_credit/get_credit_orders', data).then(res => {
  187. if (Number(res.status) === 1) {
  188. res.data.orders.forEach(item => {
  189. item.lookUrl = location.origin + '/credit/detail/' + item.id
  190. if (Number(item.status) === 1) {
  191. item.calcTime = self.calcItemTime(item)
  192. } else {
  193. item.calcTime = {}
  194. }
  195. })
  196. self.myList = [...res.data.orders]
  197. self.queryInfo = {...res.data.count}
  198. self.page.pgae += 1
  199. self.page.total = Number(res.data.count.total)
  200. } else {
  201. self.$message.error(res.info)
  202. }
  203. }, error => {
  204. console.log(error)
  205. }).then(() => {
  206. loading && loading.close()
  207. self.isFirstLoad = true
  208. })
  209. },
  210. calcItemTime (item) {
  211. try {
  212. let des = item.left_time
  213. return {
  214. h: parseInt(des / 3600),
  215. m: parseInt(des % 3600 / 60),
  216. s: parseInt(des % 60 / 60),
  217. }
  218. } catch (e) {
  219. console.log(e)
  220. return {
  221. h: 23,
  222. m: 59,
  223. s: 59
  224. }
  225. }
  226. },
  227. /** 拒绝 **/
  228. rejectOrder (item) {
  229. const self = this
  230. const { id } = item
  231. let loading = this.$loading({
  232. target: "#woCredit",
  233. })
  234. this.$axios.$post('/api/user_credit/reject', { id: id }).then((res) => {
  235. if (Number(res.status) === 1) {
  236. self.$message.success('您已拒绝授权!')
  237. self.getCreditOrders()
  238. } else {
  239. self.$message.info(res.info)
  240. }
  241. }).then(() => {
  242. loading && loading.close()
  243. })
  244. },
  245. /** 接受 **/
  246. approveOrder (item) {
  247. const self = this
  248. const { id } = item
  249. let loading = this.$loading({
  250. target: "#woCredit",
  251. })
  252. this.$axios.$post('/api/user_credit/approve', { id: id }).then((res) => {
  253. if (Number(res.status) === 1) {
  254. self.$message.success('授权成功!')
  255. self.getCreditOrders()
  256. } else {
  257. self.$message.info(res.info)
  258. }
  259. }).then(() => {
  260. loading && loading.close()
  261. })
  262. },
  263. changeSelect () {
  264. this.getCreditOrders()
  265. },
  266. pageChange (current) {
  267. this.page.page = current
  268. this.getCreditOrders()
  269. },
  270. /** 点击身份状态时 */
  271. handleClickIdentify (identify) {
  272. if (Number(identify) !== Number(this.identify)) {
  273. let type = this.isCompany ? 2 : 1
  274. this.$axios.$post('/api/user/update_info', { home_page_type: type }).then((res) => {
  275. window.location.reload()
  276. })
  277. // if (Number(identify) === 1) {
  278. // // 跳转到我查询的
  279. // window.location.href = '/credit/query?identify=1'
  280. // } else if (Number(identify) === 2) {
  281. // // 跳转到查询我的
  282. // window.location.href = '/credit/query?identify=2'
  283. // }
  284. }
  285. },
  286. /** 我查询的:点击查看信用报告 */
  287. handleClickCompanyPoint (item) {
  288. window.open(item.lookUrl, 'showDetail' + item.id)
  289. },
  290. /** 查询我的: */
  291. handleClickPoint (item) {
  292. window.open(item.lookUrl, '_black')
  293. },
  294. /** 点击用户 */
  295. handleClickUser (item) {
  296. window.open('/wo/' + item.visited_uid)
  297. }
  298. }
  299. }
  300. </script>
  301. <style lang="scss" scoped>
  302. @import "@/assets/css/credit/query.scss";
  303. </style>