ruleSet.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <template>
  2. <view class="container">
  3. <view class="placeholder"></view>
  4. <!-- 头部新增规则区域 -->
  5. <view class="add" @click="toPageAddRules">
  6. <view class="icon">
  7. <img src="../static/imgs/add.png">
  8. </view>
  9. <view class="title">
  10. 新增规则
  11. </view>
  12. </view>
  13. <!-- 具体规则区域 -->
  14. <view class="rules">
  15. <!-- 每一个规则区域 -->
  16. <view class="box" v-for="item in list" :key="item.id" @click="toPageEditRules(item.id)">
  17. <view class="box_title">
  18. <view class="icon">
  19. <img src="../static/imgs/my1.png">
  20. </view>
  21. <view class="msg">
  22. {{item.name}}
  23. </view>
  24. <view class="right">
  25. <img src="../static/imgs/right.png">
  26. </view>
  27. </view>
  28. <view class="box_info">
  29. 考勤组:{{item.groups}}
  30. </view>
  31. <view class="box_info">
  32. <span>时 间:{{(item.temList).join(",")}}</span>
  33. <span v-for="(time_item,index) in item.periods" :key="index">
  34. {{format_time(time_item.beginTime)}}-{{format_time(time_item.endTime)}}
  35. </span>
  36. </view>
  37. <view class="box_info">
  38. 打卡地点:{{item.locations}}
  39. </view>
  40. <view class="box_info">
  41. 提前通知:提前{{item.noticeTime}}分钟通知
  42. </view>
  43. </view>
  44. </view>
  45. </view>
  46. </template>
  47. <script>
  48. export default {
  49. data() {
  50. return {
  51. // 规则列表数组
  52. list: []
  53. };
  54. },
  55. onShow() {
  56. // 清空缓存
  57. uni.removeStorageSync("flag_place")
  58. uni.removeStorageSync("flag")
  59. uni.removeStorageSync("chooseList")
  60. uni.removeStorageSync('ruleTime');
  61. // 获取最新打卡规则列表数据
  62. this.getRuleList()
  63. },
  64. methods: {
  65. // 获取打卡规则列表数据
  66. async getRuleList() {
  67. let res = await this.$myRequest_clockIn({
  68. url: "/attendance/api/settings/rule/list"
  69. })
  70. // console.log(res);
  71. if (res.code == 200) {
  72. this.list = res.data.list
  73. this.list.forEach((ele) => {
  74. ele.groups = ele.groups.join(",")
  75. ele.locations = ele.locations.join(",")
  76. ele.dayOfWeeks.sort((a, b) => {
  77. return a - b
  78. })
  79. let arr = ["", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]
  80. ele.temList = ele.dayOfWeeks.map((item) => {
  81. return item = arr[item]
  82. })
  83. })
  84. }
  85. },
  86. // 点击每一项跳转编辑规则页面
  87. toPageEditRules(id) {
  88. // console.log(id);
  89. uni.navigateTo({
  90. url: `/pagesClockIn/editRules/editRules?id=${id}`
  91. })
  92. },
  93. // 新增规则跳转页面回调
  94. toPageAddRules() {
  95. uni.navigateTo({
  96. url: "/pagesClockIn/addRules/addRules"
  97. })
  98. },
  99. // 格式化时间
  100. format_time(timestamp) {
  101. //时间戳为10位需*1000,时间戳为13位的话不需乘1000
  102. var date = new Date(timestamp);
  103. var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  104. var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes());
  105. let strDate = h + m;
  106. return strDate;
  107. }
  108. }
  109. }
  110. </script>
  111. <style lang="scss" scoped>
  112. .container {
  113. min-width: 100vw;
  114. min-height: 100vh;
  115. background-color: #F2F2F2;
  116. .placeholder {
  117. height: 30rpx;
  118. }
  119. .add {
  120. margin-bottom: 30rpx;
  121. display: flex;
  122. width: 750rpx;
  123. height: 110rpx;
  124. background-color: #fff;
  125. .icon {
  126. display: flex;
  127. justify-content: center;
  128. align-items: center;
  129. width: 88rpx;
  130. img {
  131. width: 50rpx;
  132. height: 50rpx;
  133. }
  134. }
  135. .title {
  136. line-height: 110rpx;
  137. font-size: 30rpx;
  138. font-weight: 400;
  139. color: #0082FC;
  140. }
  141. }
  142. .rules {
  143. width: 750rpx;
  144. .box {
  145. padding: 0 30rpx;
  146. margin-bottom: 20rpx;
  147. height: 348rpx;
  148. background-color: #fff;
  149. .box_title {
  150. display: flex;
  151. height: 90rpx;
  152. .icon {
  153. flex: 1;
  154. display: flex;
  155. justify-content: center;
  156. align-items: center;
  157. img {
  158. width: 35rpx;
  159. height: 35rpx;
  160. }
  161. }
  162. .msg {
  163. flex: 10;
  164. line-height: 90rpx;
  165. font-size: 30rpx;
  166. font-weight: 400;
  167. }
  168. .right {
  169. flex: 1;
  170. display: flex;
  171. justify-content: center;
  172. align-items: center;
  173. img {
  174. width: 16rpx;
  175. height: 25rpx;
  176. }
  177. }
  178. }
  179. .box_info {
  180. display: flex;
  181. margin: 15rpx 0;
  182. height: 44rpx;
  183. font-size: 30rpx;
  184. font-weight: 400;
  185. color: #808080;
  186. overflow: hidden;
  187. white-space: nowrap;
  188. text-overflow: ellipsis;
  189. span {
  190. margin-right: 10rpx;
  191. }
  192. }
  193. }
  194. }
  195. }
  196. </style>