TaskAccountList.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <template>
  2. <!-- 新人账号申请列表 -->
  3. <div class="taskAccountList flex-col">
  4. <s-header name="待审核列表" :noback="false"></s-header>
  5. <div class="taskAccountBox flex-col">
  6. <van-list v-model:loading="loading" v-model:error="error" :error-text="$t('common.reqFailClkReload')"
  7. :finished="finished" :finished-text="$t('common.noMoreTxt')" offset="300" :immediate-check="false"
  8. @load="onLoad">
  9. <div class="searchRow flex-row justify-between">
  10. <div class="flex-col">
  11. <div class="flex-row justify-between bd3">
  12. <div class="flex-col outer4 proportionIcon"></div>
  13. <span class="flex-col txt2">{{ $t("taskMessage.total")
  14. }}<span class="discountNumber">{{ userApplyTotal }}</span>{{
  15. $t("taskMessage.recordsInTotal") }}</span>
  16. </div>
  17. </div>
  18. <!-- <div class="l-flex-RC"> -->
  19. <!-- <div @click="reviewedClk" class="label3 o-mr-30">
  20. {{ $t("taskMessage.toViewAppro") }}
  21. </div> -->
  22. <!-- </div> -->
  23. </div>
  24. <div class="listBox">
  25. <div v-for="(item, index) in userApplyList" :key="index" class="listItem">
  26. <div class="itemBox">
  27. <div class="itemRow">
  28. <span class="itemTitle">用户名:&nbsp;</span>{{
  29. item.userName }}
  30. </div>
  31. <div class="itemRow">
  32. <span class="itemTitle">部门岗位:&nbsp;</span>{{
  33. item.deptName }}-{{ item.jobName }}
  34. </div>
  35. <div class="itemRow">
  36. <span class="itemTitle">手机号:&nbsp;</span>{{
  37. item.phone }}
  38. </div>
  39. <!-- 申请时间 -->
  40. <div class="itemRow">
  41. <span class="itemTitle">{{ $t("taskMessage.applicationTime") }}:&nbsp;</span>{{
  42. showDateTime(item.applyTime) }}
  43. </div>
  44. <!-- 状态:0red待审批,消失,去审批》 -->
  45. <div class="itemRow" v-if="item.status === '0'">
  46. <span class="itemTitle">状态:&nbsp;</span><span style="color: red">{{
  47. showItemType(item.status)
  48. }}</span>
  49. </div>
  50. <!-- 审批时间 -->
  51. <div class="itemRow" v-if="item.status !== '0'">
  52. <span class="itemTitle">{{ $t("taskMessage.approvalTime") }}:&nbsp;</span>{{
  53. showDateTime(item.modifyDate)
  54. }}
  55. </div>
  56. <!-- 去审批 -->
  57. <div v-if="item.status === '0' && isOper" class="itemRow"
  58. style="display: flex; justify-content: flex-end">
  59. <van-button span="5" round type="primary" :style="{
  60. height: '2em',
  61. padding: '0 1.2em',
  62. margin: '0 1em',
  63. backgroundColor: 'rgb(200, 55, 95 / 80%)', // 红色背景,不透明度为100%
  64. color: '#fff', // 文字颜色为白色
  65. boxShadow: '0 2px 8px rgba(255, 55, 95, 0.3)', // 添加阴影效果
  66. transition: 'all 0.3s ease' // 添加过渡效果,使变化更平滑
  67. }" @click="toTaskAccount(item)">
  68. 审核
  69. </van-button>
  70. </div>
  71. <div class="itemRow" style="display: flex; justify-content: flex-end">
  72. <!-- 已拒绝 -->
  73. <span v-if="item.status === '2'" style="color: #ff0000">{{
  74. showItemType(item.status)
  75. }}</span>
  76. <!-- 已同意 -->
  77. <span v-if="item.status === '1'" style="color: #4fc08d">{{
  78. showItemType(item.status)
  79. }}</span>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. </van-list>
  85. </div>
  86. </div>
  87. </template>
  88. <script>
  89. import { onMounted, reactive, ref } from "vue";
  90. import sHeader from "@/components/SimpleHeader";
  91. import { getPageUserApply } from "@/service/taskAccount";
  92. import { showFailToast } from "vant";
  93. import { getLoginUser, styleUrl } from "@/common/js/utils";
  94. import dateUtil from "@/utils/dateUtil";
  95. import { useI18n } from "vue-i18n";
  96. import { useRouter } from 'vue-router'
  97. import { useUserStore } from '@/stores/user';
  98. export default {
  99. components: { sHeader },
  100. setup() {
  101. const { t } = useI18n();
  102. const router = useRouter()
  103. // 筛选弹窗
  104. const busiPopList = reactive([
  105. {
  106. name: t("taskMessage.toBeApproved"),
  107. id: "0",
  108. },
  109. {
  110. name: t("taskMessage.rejected"),
  111. id: "2",
  112. },
  113. {
  114. name: t("taskMessage.agreed"),
  115. id: "1",
  116. },
  117. ]);
  118. const busiPopFieldName = reactive({
  119. text: "name",
  120. value: "id",
  121. });
  122. const kDialogRef = ref(null);
  123. const busiPopShow = ref(false);
  124. // 点击查询按钮
  125. const confirmClk = () => {
  126. isClkReview.value = false;
  127. searchGetList();
  128. };
  129. // 是否点击待审核
  130. const isClkReview = ref(true);
  131. // 点击查看待审核
  132. // const reviewedClk = () => {
  133. // isClkReview.value = true;
  134. // searchParams.statusType = "1";
  135. // searchGetList();
  136. // };
  137. const user = getLoginUser();
  138. const loading = ref(false); // 加载状态
  139. const error = ref(false); // 错误状态
  140. const finished = ref(false); // 结束翻页状态
  141. const userApplyList = ref([]); // 列表集合
  142. const userApplyTotal = ref(0); // 列表总数
  143. let searchParams = reactive({
  144. current: 1, // 当前页,默认第一页
  145. size: 10, // 页大小,默认10条
  146. });
  147. // name: "", // 用户userName
  148. // status: "", // 审核状态 0 申请中,1通过,2拒绝
  149. // 滚动加载
  150. const onLoad = () => {
  151. if (!finished.value) {
  152. searchParams.current = searchParams.current + 1;
  153. getList();
  154. }
  155. };
  156. // 查询列表
  157. const searchGetList = () => {
  158. userApplyList.value = [];
  159. searchParams.current = 1;
  160. getList();
  161. };
  162. // 获取新人账号注册审批列表数据
  163. const getList = async () => {
  164. const { data } = await getPageUserApply(
  165. Object.assign({}, searchParams)
  166. );
  167. if (data.code === "00000") {
  168. // 列表值叠加
  169. userApplyList.value = userApplyList.value.concat(
  170. data.data.records
  171. );
  172. userApplyTotal.value = data.data.total;
  173. if (userApplyList.value.length === data.data.total) {
  174. finished.value = true;
  175. }
  176. loading.value = false;
  177. } else {
  178. showFailToast(data.message);
  179. }
  180. };
  181. const showDateTime = (date) => {
  182. return date
  183. ? dateUtil.formateDate(new Date(date), "yyyy-MM-dd hh:mm:ss")
  184. : "";
  185. };
  186. const showItemType = (type) => {
  187. if (type === '0') {
  188. return t("taskMessage.toBeApproved");
  189. }
  190. if (type === '2') {
  191. return t("taskMessage.rejected");
  192. }
  193. if (type === '1') {
  194. return t("taskMessage.agreed");
  195. }
  196. return "";
  197. };
  198. const userStore = useUserStore();
  199. // 去审核账号
  200. const toTaskAccount = (item) => {
  201. userStore.setUserInfo(item);
  202. router.push({ name: 'taskAccount' });
  203. };
  204. // 是否有操作的权限
  205. const isOper = ref(true);
  206. // 初始化页面获取列表
  207. onMounted(async () => {
  208. // 加载样式
  209. styleUrl('taskAccountList');
  210. if (user) {
  211. searchParams.adminId = user.id;
  212. searchGetList();
  213. // 如果不是admin账号,不能有操作权限
  214. if (user.phone != '13245678901') {
  215. isOper.value = false;
  216. }
  217. }
  218. });
  219. return {
  220. loading,
  221. error,
  222. finished,
  223. onLoad,
  224. userApplyList,
  225. userApplyTotal,
  226. showDateTime,
  227. showItemType,
  228. toTaskAccount,
  229. kDialogRef,
  230. confirmClk,
  231. busiPopShow,
  232. busiPopList,
  233. busiPopFieldName,
  234. // reviewedClk,
  235. isOper,
  236. };
  237. },
  238. };
  239. </script>
  240. <style lang="less" scoped>
  241. @import "../../common/style/common.less";
  242. </style>