ruleSet.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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)">
  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. list: []
  51. };
  52. },
  53. onShow() {
  54. this.getRuleList()
  55. let ruleName = uni.getStorageSync('ruleName')
  56. let ruleGroup = uni.getStorageSync('ruleGroup')
  57. let ruleTime = uni.getStorageSync('ruleTime')
  58. let chooseList = uni.getStorageSync('chooseList')
  59. let ruleValue = uni.getStorageSync('ruleValue')
  60. if (ruleName || ruleGroup || ruleTime || chooseList || ruleValue) {
  61. uni.showModal({
  62. title: '提示',
  63. content: '上一个页面有未保存的数据,确定不保存吗?',
  64. cancelText: '返回上页',
  65. success: (res)=> {
  66. if (res.confirm) {
  67. uni.removeStorageSync('ruleName');
  68. uni.removeStorageSync('ruleGroup');
  69. uni.removeStorageSync('ruleTime');
  70. uni.removeStorageSync('chooseList');
  71. uni.removeStorageSync('ruleValue');
  72. } else if (res.cancel) {
  73. uni.navigateTo({
  74. url: `/pages/addRules/addRules`
  75. })
  76. }
  77. }
  78. });
  79. }
  80. },
  81. // onLoad() {
  82. // this.getRuleList()
  83. // },
  84. methods: {
  85. // 获取打卡规则列表数据
  86. async getRuleList() {
  87. let res = await this.$myRequest({
  88. url: "/attendance/api/settings/rule/list"
  89. })
  90. // console.log(res);
  91. if (res.code == 200) {
  92. this.list = res.data.list
  93. this.list.forEach((ele) => {
  94. ele.groups = ele.groups.join(",")
  95. ele.locations = ele.locations.join(",")
  96. ele.dayOfWeeks.sort((a, b) => {
  97. return a - b
  98. })
  99. let arr = ["", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]
  100. ele.temList = ele.dayOfWeeks.map((item) => {
  101. return item = arr[item]
  102. })
  103. })
  104. }
  105. },
  106. // 点击每一项跳转编辑规则页面
  107. toPageEditRules(item) {
  108. // console.log(item);
  109. let info = JSON.stringify(item)
  110. uni.navigateTo({
  111. url: `/pages/editRules/editRules?info=${info}`
  112. })
  113. },
  114. // 新增规则跳转页面回调
  115. toPageAddRules() {
  116. uni.navigateTo({
  117. url: "/pages/addRules/addRules"
  118. })
  119. },
  120. // 格式化时间
  121. format_time(timestamp) {
  122. //时间戳为10位需*1000,时间戳为13位的话不需乘1000
  123. var date = new Date(timestamp);
  124. var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  125. var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes());
  126. let strDate = h + m;
  127. return strDate;
  128. }
  129. }
  130. }
  131. </script>
  132. <style lang="scss" scoped>
  133. .container {
  134. padding-top: 30rpx;
  135. .add {
  136. margin-bottom: 30rpx;
  137. display: flex;
  138. width: 750rpx;
  139. height: 110rpx;
  140. background-color: #fff;
  141. .icon {
  142. display: flex;
  143. justify-content: center;
  144. align-items: center;
  145. width: 88rpx;
  146. img {
  147. width: 50rpx;
  148. height: 50rpx;
  149. }
  150. }
  151. .title {
  152. line-height: 110rpx;
  153. font-size: 30rpx;
  154. font-weight: 400;
  155. color: #0082FC;
  156. }
  157. }
  158. .rules {
  159. width: 750rpx;
  160. .box {
  161. padding: 0 30rpx;
  162. margin-bottom: 20rpx;
  163. height: 348rpx;
  164. background-color: #fff;
  165. .box_title {
  166. display: flex;
  167. height: 90rpx;
  168. .icon {
  169. flex: 1;
  170. display: flex;
  171. justify-content: center;
  172. align-items: center;
  173. img {
  174. width: 35rpx;
  175. height: 35rpx;
  176. }
  177. }
  178. .msg {
  179. flex: 10;
  180. line-height: 90rpx;
  181. font-size: 30rpx;
  182. font-weight: 400;
  183. }
  184. .right {
  185. flex: 1;
  186. display: flex;
  187. justify-content: center;
  188. align-items: center;
  189. img {
  190. width: 16rpx;
  191. height: 25rpx;
  192. }
  193. }
  194. }
  195. .box_info {
  196. display: flex;
  197. margin: 15rpx 0;
  198. height: 44rpx;
  199. font-size: 30rpx;
  200. font-weight: 400;
  201. color: #808080;
  202. overflow: hidden;
  203. white-space: nowrap;
  204. text-overflow: ellipsis;
  205. span {
  206. margin-right: 10rpx;
  207. }
  208. }
  209. }
  210. }
  211. }
  212. </style>