ruleSet.vue 4.3 KB

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