index.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. {extend name="public/base"/}
  2. {block name="css"}
  3. <style>
  4. .work-list {width:90%;margin:10px auto;padding:10px 20px;box-sizing:border-box;border: 1px solid #eee;border-radius:10px;box-shadow: 0 0 10px #ccc;}
  5. .work-list .work-header {border-bottom:1px solid #eee;padding-bottom:5px;}
  6. .work-list .work-content {border-bottom:1px solid #eee;padding-bottom:5px;}
  7. .work-list .work-content .content-item {margin-top:4px;font-size:14px;color:#666;display:flex;}
  8. .work-list .work-content .content-item .title {width:120px;}
  9. .work-list .work-content .content-item .num {color: var(--red);font-size:16px;}
  10. .work-tool {display:flex;align-items:center;justify-content:flex-end;padding-top:5px;}
  11. .work-tool .tool-btn {width:60px;height:25px;line-height:25px;border:1px solid var(--blue);text-align:center;margin-left:5px;border-radius:100px;font-size:14px;box-sizing:border-box;color:var(--blue);}
  12. .add {width:50px;height:50px;position:fixed;bottom:50px;right:20px;}
  13. </style>
  14. {/block}
  15. {block name="body"}
  16. <van-nav-bar
  17. class="nav-theme"
  18. :fixed="true"
  19. :placeholder="true"
  20. right-text="修改密码"
  21. @click-right="toPassword"
  22. >
  23. <template #title>
  24. <span class="text-white">工作登记记录</span>
  25. </template>
  26. </van-nav-bar>
  27. <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
  28. <van-list
  29. v-model:loading="loading"
  30. :finished="finished"
  31. finished-text="没有更多了"
  32. @load="onList"
  33. >
  34. <div class="work-list" v-for="item in list">
  35. <div class="work-header">{{item.month}}</div>
  36. <div class="work-content">
  37. <div class="content-item">
  38. <div class="title">应挂钩人数</div>
  39. <div class="num">{{item.should_num}}</div>
  40. </div>
  41. <div class="content-item">
  42. <div class="title">本月新增人数</div>
  43. <div class="num">{{item.new_num}}</div>
  44. </div>
  45. <div class="content-item">
  46. <div class="title">未完成挂钩人数</div>
  47. <div class="num">{{item.unfinished_num}}</div>
  48. </div>
  49. </div>
  50. <div class="work-tool">
  51. <div class="tool-btn" v-if="item.month == month" @click="toEdit(item.id)">编辑</div>
  52. <div class="tool-btn" v-if="!is_register" @click="toCopy(item.id)">复制</div>
  53. </div>
  54. </div>
  55. </van-list>
  56. </van-pull-refresh>
  57. <img src="__MIMAGES__/talent_work_add.png" class="add" @click="toAdd" v-if="!is_register"/>
  58. {/block}
  59. {block name="script"}
  60. <script>
  61. function v_setup() {
  62. let base = {};
  63. base.is_register = Vue.ref({$is_register});
  64. base.month = Vue.ref("{$month}");
  65. base.toPassword = () => {
  66. location.href = "{:url('my/password')}";
  67. };
  68. base.toAdd = () => {
  69. location.href = "{:url('work/add')}";
  70. };
  71. base.toEdit = id => {
  72. location.href = "{:url('work/edit')}?id=" + id;
  73. };
  74. base.toCopy = id => {
  75. location.href = "{:url('work/copy')}?id=" + id;
  76. };
  77. //列表
  78. base.page = Vue.ref(1);
  79. base.loading = Vue.ref(false);
  80. base.finished = Vue.ref(false);
  81. base.refreshing = Vue.ref(false);
  82. base.list = Vue.reactive([]);
  83. base.onList = () => {
  84. let param = {};
  85. param.page = base.page.value;
  86. base.page.value++;
  87. postJson("{:url('index/listWork')}", param).then( ({data}) => {
  88. base.loading.value = false;
  89. if (base.refreshing.value) base.refreshing.value = false;
  90. if (data.length === 0) {
  91. base.finished.value = true;
  92. } else {
  93. base.list.push(...data);
  94. }
  95. });
  96. };
  97. base.onRefresh = () => {
  98. base.list = Vue.reactive([]);
  99. base.page.value = 1;
  100. base.loading.value = true;
  101. base.finished.value = false;
  102. base.onList();
  103. };
  104. return base;
  105. }
  106. </script>
  107. {/block}