Ver Fonte

【feat】【v3】

1.完善任务列表
2.新增任务编辑页面
ChenYL há 9 meses atrás
pai
commit
41d8346962
6 ficheiros alterados com 568 adições e 55 exclusões
  1. 14 14
      src/apis/punchInApi.js
  2. 22 1
      src/common/enums.js
  3. 5 0
      src/common/router.js
  4. 7 1
      src/pages.json
  5. 510 0
      src/pages/task/taskEdit.vue
  6. 10 39
      src/pages/taskList.vue

+ 14 - 14
src/apis/punchInApi.js

@@ -64,10 +64,10 @@ export function doPunchIn(data) {
  * 根据ID查询打卡任务
  * @param {Object} data
  */
-export function queryPunchInById(data) {
+export function queryTask(data) {
   return request({
-    url: "/punchIn/queryPunchInById",
-    method: "post",
+    url: "/punchIn/queryTask",
+    method: "get",
     data,
 	  loading: true,
 	  loadingText: "正在查询打卡任务,请稍后..."
@@ -89,36 +89,36 @@ export function archiveTask(params) {
 }
 
 /**
- * 
+ * 撤销打
  * @param {Object} data
  */
-export function remakePunchIn(data) {
+export function revokePunchIn(params) {
   return request({
-    url: "/punchIn/remakePunchIn",
+    url: "/punchIn/revokePunchIn",
     method: "post",
-    data
+    params
   });
 }
 
 /**
- * 撤销打卡
+ * 查询打卡数据
  * @param {Object} data
  */
-export function revokePunchIn(params) {
+export function queryPunchInData(data) {
   return request({
-    url: "/punchIn/revokePunchIn",
+    url: "/punchIn/queryPunchInData",
     method: "post",
-    params
+    data
   });
 }
 
 /**
- * 查询打卡数据
+ * 补卡
  * @param {Object} data
  */
-export function queryPunchInData(data) {
+export function remakePunchIn(data) {
   return request({
-    url: "/punchIn/queryPunchInData",
+    url: "/punchIn/remakePunchIn",
     method: "post",
     data
   });

+ 22 - 1
src/common/enums.js

@@ -19,8 +19,29 @@ export const COMPARE_RULE = {
   LTE: 'LTE'
 };
 
-// 通用启用状态(启用-ENABLED、禁用-DISABLED)
+/**
+ * 通用启用状态(启用-ENABLED、禁用-DISABLED)
+ */
 export const COMMON_ENABLED_STATUS = {
   ENABLED: 'ENABLED',
   DISABLED: 'DISABLED'
+}
+
+/**
+ * 额外奖励方式(无-NONE,固定-FIXED、区间-INTERVAL)
+ */
+export const EXTRA_METHOD = {
+  NONE: 'NONE',
+  FIXED: 'FIXED',
+  INTERVAL: 'INTERVAL'
+}
+
+/**
+ * 重复周期类型(每日-EVERYDAY、法定工作日-WORKDAY、法定节假日(含周末)-HOLIDAY、自定义(周一至周日)-CUSTOM)
+ */
+export const REPEAT_CATEGORY = {
+  EVERYDAY: 'EVERYDAY',
+  WORKDAY: 'WORKDAY',
+  HOLIDAY: 'HOLIDAY',
+  CUSTOM: 'CUSTOM'
 }

+ 5 - 0
src/common/router.js

@@ -23,6 +23,11 @@ const router = {
      */
     DISCLAIMER_PAGE: '/pages/userCenter/disclaimer',
 
+	/**
+	 * 打卡任务编辑页
+	 */
+	TASK_EDIT_PAGE: '/pages/task/taskEdit',
+
 	/**
 	 * 主页
 	 */

+ 7 - 1
src/pages.json

@@ -51,12 +51,18 @@
 			"style": {
 				"navigationBarTitleText": "关于我们"
 			}
-		}
+		},
 		{
 			"path": "pages/userCenter/disclaimer",
 			"style": {
 				"navigationBarTitleText": "免责声明"
 			}
+		},
+		{
+			"path": "pages/task/taskEdit",
+			"style": {
+				"navigationBarTitleText": "任务编辑"
+			}
 		}
 	],
 	"tabBar": {

+ 510 - 0
src/pages/task/taskEdit.vue

@@ -0,0 +1,510 @@
+<template>
+  <uni-forms ref="taskForm" :modelValue="taskFormData" :label-width="250" label-position="top" :rules="taskFormRules">
+
+    <!-- 基本描述 -->
+    <uni-section title="基本描述" padding="16px" type="line">
+      <uni-forms-item label="任务名称" required name="taskName">
+        <uni-easyinput v-model="taskFormData.taskName" placeholder="请输入任务名称" />
+      </uni-forms-item>
+      <uni-forms-item label="规则描述" name="description">
+        <uni-easyinput type="textarea" v-model="taskFormData.description" placeholder="请输入任务描述" />
+      </uni-forms-item>
+    </uni-section>
+
+    <!-- 显示配置 -->
+    <uni-section title="显示配置" padding="16px" type="line">
+      <uni-forms-item label="显示顺序" required name="dislayOrder">
+        <uni-easyinput v-model="taskFormData.dislayOrder" placeholder="显示顺序" type="number" />
+      </uni-forms-item>
+      <uni-forms-item label="显示时间" required name="displayTime">
+        <picker mode="time" :value="taskFormData.displayTime" @change="displayTimeChange">
+          <view class="pick-box">{{ taskFormData.displayTime }}</view>
+        </picker>
+      </uni-forms-item>
+    </uni-section>
+
+    <!-- 重复配置 -->
+    <uni-section title="重复配置" padding="16px" type="line">
+      <uni-forms-item label="重复周期类型" required name="repeatCategory">
+        <uni-data-select :localdata="repeatCategoryCheckBoxData"
+          v-model="taskFormData.repeatCategory"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="自定义重复日" required name="repeatCustomDay"
+        v-if="taskFormData.repeatCategory == REPEAT_CATEGORY.CUSTOM">
+        <uni-data-checkbox multiple :localdata="repeatCustomDayCheckBoxData"
+          v-model="taskFormData.repeatCustomDay"></uni-data-checkbox>
+      </uni-forms-item>
+    </uni-section>
+
+    <!-- 打卡配置 -->
+    <uni-section title="打卡配置" padding="16px" type="line">
+      <uni-forms-item label="打卡方式" required name="punchInMethod">
+        <uni-data-select :localdata="punchInMethodCheckBoxData" v-model="taskFormData.punchInMethod"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="判断规则" required name="compareRule"
+        v-if="taskFormData.punchInMethod == PUNCH_IN_METHOD.COUNT || taskFormData.punchInMethod == PUNCH_IN_METHOD.TIMING">
+        <uni-data-select :localdata="compareRuleCheckBoxData" v-model="taskFormData.compareRule"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="数值" required name="countTrack" v-if="taskFormData.punchInMethod == PUNCH_IN_METHOD.COUNT">
+        <uni-easyinput v-model="taskFormData.countTrack" placeholder="请输入目标数值" type="digit" />
+      </uni-forms-item>
+      <uni-forms-item label="时间" required name="timeTrack" v-if="taskFormData.punchInMethod == PUNCH_IN_METHOD.TIMING">
+        <picker mode="time" :value="taskFormData.timeTrack" @change="timeChange">
+          <view class="pick-box">{{ taskFormData.timeTrack }}</view>
+        </picker>
+      </uni-forms-item>
+    </uni-section>
+
+    <!-- 积分配置 -->
+    <uni-section title="积分配置" padding="16px" type="line">
+      <uni-forms-item label="奖励积分(基本)" required name="points">
+        <uni-easyinput v-model="taskFormData.points" placeholder="请输入奖励积分(基本)" type="number" />
+      </uni-forms-item>
+      <uni-forms-item label="额外奖励方式" required name="extraMethod">
+        <uni-data-select :localdata="extraMethodCheckBoxData" v-model="taskFormData.extraMethod"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="额外的时间间隔(单位:分钟)" required name="extraTimeStep"
+        v-if="taskFormData.extraMethod != EXTRA_METHOD.NONE && taskFormData.punchInMethod == PUNCH_IN_METHOD.TIMING">
+        <uni-easyinput v-model="taskFormData.extraTimeStep" placeholder="额外的时间间隔(单位:分钟)" type="number" />
+      </uni-forms-item>
+      <uni-forms-item label="奖励的积分(额外)" required name="extraPoints"
+        v-if="taskFormData.extraMethod == EXTRA_METHOD.FIXED">
+        <uni-easyinput v-model="taskFormData.extraPoints" placeholder="奖励的积分(额外)" type="number" />
+      </uni-forms-item>
+      <uni-forms-item label="积分区间" required :rules="[{ 'required': true, errorMessage: '起始值必填' }]"
+        :name="['taskExtList', index, 'extraPoints', 'value']">
+        <template v-for="(item, index) in taskFormData.taskExtList" :key="item.id">
+          <view class="extra-box">
+            <view class="extra-box-item">
+              <uni-easyinput v-model="taskFormData.taskExtList[index].initialValue.value" placeholder="请输入起始值" />
+            </view>
+            <view class="extra-box-item">
+              <uni-easyinput v-model="taskFormData.taskExtList[index].extraPoints.value" placeholder="请输入奖励积分" />
+            </view>
+            <button class="button extra-box-btn" size="mini" type="default" @click="deleteTaskExt(item.id)">删除</button>
+          </view>
+        </template>
+      </uni-forms-item>
+      <button type="primary" size="mini" @click="addTaskExt()">新增拓展信息</button>
+    </uni-section>
+
+    <!-- 节假日配置 -->
+    <uni-section title="节假日配置" padding="16px" type="line">
+      <uni-forms-item label="节假日双倍" required name="holidayStatus">
+        <uni-data-select v-model="taskFormData.holidayStatus"
+          :localdata="commonEnabledStatusCheckBoxData"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="数值(节假日)" required name="holidayCountTrack"
+        v-if="taskFormData.holidayStatus == COMMON_ENABLED_STATUS.ENABLED && taskFormData.punchInMethod == PUNCH_IN_METHOD.COUNT">
+        <uni-easyinput v-model="taskFormData.holidayCountTrack" placeholder="请输入目标数值" type="digit" />
+      </uni-forms-item>
+      <uni-forms-item label="时间(节假日)" required name="holidayTimeTrack"
+        v-if="taskFormData.holidayStatus == COMMON_ENABLED_STATUS.ENABLED && taskFormData.punchInMethod == PUNCH_IN_METHOD.TIMING">
+        <picker mode="time" :value="taskFormData.holidayTimeTrack" @change="holidayTimeChange">
+          <view class="pick-box">{{ taskFormData.holidayTimeTrack }}</view>
+        </picker>
+      </uni-forms-item>
+    </uni-section>
+
+    <!-- 全勤配置 -->
+    <uni-section title="全勤配置" padding="16px" type="line">
+      <uni-forms-item label="全勤双倍" required name="fullAttendanceStatus">
+        <uni-data-select v-model="taskFormData.fullAttendanceStatus"
+          :localdata="commonEnabledStatusCheckBoxData"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="全勤周期" required name="fullAttendancePeriod"
+        v-if="taskFormData.fullAttendanceStatus == COMMON_ENABLED_STATUS.ENABLED">
+        <uni-data-select :localdata="fullAttendancePeriodCheckBoxData"
+          v-model="taskFormData.fullAttendancePeriod"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="容错次数" required name="fullAttendancefaulttoleranceCnt"
+        v-if="taskFormData.fullAttendanceStatus == COMMON_ENABLED_STATUS.ENABLED">
+        <uni-easyinput v-model="taskFormData.fullAttendancefaulttoleranceCnt" placeholder="请输入目标数值" type="digit" />
+      </uni-forms-item>
+    </uni-section>
+
+    <!-- 连续规则配置 -->
+    <uni-section title="连续规则配置" padding="16px" type="line">
+      <uni-forms-item label="是否启用连续规则" required name="continuousStatus">
+        <uni-data-select :localdata="commonEnabledStatusCheckBoxData"
+          v-model="taskFormData.continuousStatus"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="宽限期(单位:天)" required name="graceDay"
+        v-if="taskFormData.continuousStatus == COMMON_ENABLED_STATUS.ENABLED">
+        <uni-easyinput v-model="taskFormData.graceDay" placeholder="宽限期(单位:天)" type="number" />
+      </uni-forms-item>
+      <uni-forms-item label="连续中断次数" required name="continueInterruptedCount"
+        v-if="taskFormData.continuousStatus == COMMON_ENABLED_STATUS.ENABLED">
+        <uni-easyinput v-model="taskFormData.continueInterruptedCount" placeholder="连续中断次数" type="number" />
+      </uni-forms-item>
+      <uni-forms-item label="惩罚天数(单位:天)" required name="penaltyDay"
+        v-if="taskFormData.continuousStatus == COMMON_ENABLED_STATUS.ENABLED">
+        <uni-easyinput v-model="taskFormData.penaltyDay" placeholder="惩罚天数(单位:天)" type="number" />
+      </uni-forms-item>
+    </uni-section>
+
+    <!-- 任务整体配置 -->
+    <uni-section title="任务整体配置" padding="16px" type="line">
+      <uni-forms-item label="任务自动归档时间(结束)" name="endDate">
+        <uni-datetime-picker type="date" return-type="date" v-model="taskFormData.endDate" />
+      </uni-forms-item>
+      <uni-forms-item label="是否启用自动打卡" required name="autoStatus">
+        <uni-data-select :localdata="commonEnabledStatusCheckBoxData"
+          v-model="taskFormData.autoStatus"></uni-data-select>
+      </uni-forms-item>
+      <uni-forms-item label="是否启用任务积分计算" required name="taskPointsStatus">
+        <uni-data-select :localdata="commonEnabledStatusCheckBoxData"
+          v-model="taskFormData.taskPointsStatus"></uni-data-select>
+      </uni-forms-item>
+    </uni-section>
+
+    <!-- 按钮组 -->
+    <view class="button-container">
+      <button type="default" style="width:300rpx;" @click="cancel">取消</button>
+      <button type="primary" style="color:#ffffff;backgroundColor:#2A82E4;width:300rpx;" @click="saveTask">保存</button>
+    </view>
+
+  </uni-forms>
+</template>
+
+<script setup>
+import { ref } from 'vue';
+import { onLoad } from '@dcloudio/uni-app';
+import { punchInApi } from '@/apis/apis';
+import { PUNCH_IN_METHOD, COMMON_ENABLED_STATUS, COMPARE_RULE, EXTRA_METHOD, REPEAT_CATEGORY } from '@/common/enums';
+
+// 组件
+/**
+ * 打卡任务表单
+ */
+const taskForm = ref(null);
+
+// 属性
+
+/**
+ * 打卡任务表单数据
+ */
+const taskFormData = ref({
+  "points": 5,
+  "holidayStatus": COMMON_ENABLED_STATUS.DISABLED,
+  "fullAttendanceStatus": COMMON_ENABLED_STATUS.DISABLED,
+  "punchInMethod": PUNCH_IN_METHOD.SINGLE,
+  "compareRule": COMPARE_RULE.GTE,
+  "countTrack": 10,
+  "timeTrack": "00:00",
+  "continuousStatus": COMMON_ENABLED_STATUS.DISABLED,
+  "extraMethod": EXTRA_METHOD.NONE,
+  "autoStatus": COMMON_ENABLED_STATUS.DISABLED,
+  "taskExtList": [],
+  "continueTaskExtList": [],
+});
+
+/**
+ * 打卡任务表单规则
+ */
+const taskFormRules = ref({
+  taskName: {
+    rules: [{
+      required: true,
+      errorMessage: '任务名称不能为空'
+    }]
+  },
+  rewardNum: {
+    rules: [{
+      required: true,
+      errorMessage: '奖励数值不能为空'
+    }, {
+      format: 'number',
+      errorMessage: "请输入有效数字"
+    }, {
+      minimum: 1,
+      errorMessage: "最小值{minimum}"
+    }]
+  },
+  weekendDoubleFlag: {
+    rules: [{
+      required: true,
+      errorMessage: '周末双倍奖励不能为空'
+    }]
+  },
+  fullAttendanceFlag: {
+    rules: [{
+      required: true,
+      errorMessage: '全勤奖励不能为空'
+    }]
+  },
+  category: {
+    rules: [{
+      required: true,
+      errorMessage: '任务类型不能为空'
+    }]
+  },
+  description: {
+    rules: [{
+      maxLength: 100,
+      errorMessage: '描述不能超过{maxLength}个字符'
+    }]
+  },
+  rule: {
+    rules: [{
+      required: true,
+      errorMessage: '判断规则不能为空'
+    }]
+  },
+  countTrack: {
+    rules: [{
+      required: true,
+      errorMessage: '数值不能为空'
+    }, {
+      format: 'number',
+      errorMessage: "请输入有效数字"
+    }, {
+      minimum: 1,
+      errorMessage: "最小值{minimum}"
+    }]
+  },
+  timeTrack: {
+    rules: [{
+      required: true,
+      errorMessage: '数值不能为空'
+    }]
+  }
+});
+
+/**
+ * 通用启用状态  checkbox数据
+ */
+const commonEnabledStatusCheckBoxData = ref([{
+  "text": "启用",
+  "value": 'ENABLED'
+}, {
+  "text": "禁用",
+  "value": 'DISABLED'
+}]);
+
+/**
+ * 打卡方式 checkbox数据
+ */
+const punchInMethodCheckBoxData = ref([{
+  "text": "单次打卡",
+  "value": 'SINGLE'
+}, {
+  "text": "计数",
+  "value": 'COUNT'
+}, {
+  "text": "计时",
+  "value": 'TIMING'
+}]);
+
+/**
+ * 比较规则 checkbox数据
+ */
+const compareRuleCheckBoxData = ref([{
+  "text": "大于等于",
+  "value": 'GTE'
+}, {
+  "text": "小于等于",
+  "value": 'LTE'
+}]);
+
+/**
+ * 全勤周期 checkbox数据
+ */
+const fullAttendancePeriodCheckBoxData = ref([{
+  "text": "周",
+  "value": 'WEEK'
+}, {
+  "text": "月",
+  "value": 'MONTH'
+}]);
+
+/**
+ * 重复周期类型 checkbox数据
+ */
+const repeatCategoryCheckBoxData = ref([{
+  "text": "每日",
+  "value": 'EVERYDAY'
+}, {
+  "text": "法定工作日",
+  "value": 'WORKDAY'
+}, {
+  "text": "法定节假日(含周末)",
+  "value": 'HOLIDAY'
+}, {
+  "text": "自定义(周一至周日)",
+  "value": 'CUSTOM'
+}]);
+
+/**
+ * 自定义重复日 checkbox数据
+ */
+const repeatCustomDayCheckBoxData = ref([{
+  "text": "周一",
+  "value": '1'
+}, {
+  "text": "周二",
+  "value": '2'
+}, {
+  "text": "周三",
+  "value": '3'
+}, {
+  "text": "周四",
+  "value": '4'
+}, {
+  "text": "周五",
+  "value": '5'
+}, {
+  "text": "周六",
+  "value": '6'
+}, {
+  "text": "周日",
+  "value": '7'
+}]);
+
+/**
+ * 额外奖励方式 checkbox数据
+ */
+const extraMethodCheckBoxData = ref([{
+  "text": "无",
+  "value": 'NONE'
+}, {
+  "text": "固定",
+  "value": 'FIXED'
+}, {
+  "text": "区间",
+  "value": 'INTERVAL'
+}]);
+
+// 方法
+/**
+ * 周末双倍奖励开关改变监听
+ */
+const weekendDoubleSwitchChange = (e) => {
+  taskFormData.value.weekendDoubleFlag = e.detail.value;
+}
+
+/**
+ * 全勤奖励开关改变监听
+ */
+const fullAttendanceSwitchChange = (e) => {
+  taskFormData.value.fullAttendanceFlag = e.detail.value;
+}
+
+/**
+ * 时间选择监听
+ */
+const timeChange = (e) => {
+  taskFormData.value.timeTrack = e.detail.value;
+}
+
+/**
+ * 显示时间 时间选择监听
+ */
+const displayTimeChange = (e) => {
+  taskFormData.value.displayTIme = e.detail.value;
+}
+
+/**
+ * 节假日时间 时间选择监听
+ */
+const holidayTimeChange = (e) => {
+  taskFormData.value.holidayTimeTrack = e.detail.value;
+}
+
+
+/**
+ * 新增拓展信息
+ */
+const addTaskExt = () => {
+  taskFormData.value.taskExtList.push({
+    id: Date.now(),
+    "initialValue": {
+      label: '起始值',
+      value: ''
+    },
+    "extraPoints": {
+      label: '奖励的积分(额外)',
+      value: ''
+    }
+  })
+}
+
+/**
+ * 删除拓展信息
+ */
+const deleteTaskExt = (id) => {
+  let index = taskFormData.value.taskExtList.findIndex(v => v.id === id)
+  taskFormData.value.taskExtList.splice(index, 1)
+}
+
+/**
+ * 保存打卡任务
+ */
+const saveTask = () => {
+  taskForm.value.validate(['id']).then(() => {
+    return punchInApi.saveTask(taskFormData.value)
+  }).then(datt => {
+    uni.showToast({
+      title: '保存成功',
+      icon: 'success',
+      duration: 2000
+    });
+    setTimeout(() => {
+      uni.navigateBack();
+    }, 2000);
+  });
+}
+
+/**
+ * 后退
+ */
+const cancel = () => {
+  uni.navigateBack();
+}
+
+onLoad(async (e) => {
+  console.log('taskEdit', e);
+  if (e.id) {
+    const res = await punchInApi.queryTask({ "id": e.id });
+    taskFormData.value = res;
+  }
+});
+</script>
+
+<style lang="scss" scoped>
+.extra-box {
+  display: flex;
+
+  .extra-box-item {
+    flex: 1;
+  }
+}
+
+.pick-box {
+  display: flex;
+  box-sizing: border-box;
+  flex-direction: row;
+  align-items: center;
+  border: 1px solid #dcdfe6;
+  border-radius: 4px;
+
+  width: auto;
+  position: relative;
+  overflow: hidden;
+  flex: 1;
+  line-height: 1;
+  font-size: 14px;
+  height: 35px;
+  padding-left: 10px;
+}
+
+.button-container {
+  background-color: #FFFFFF;
+  display: flex;
+  /* 使用Flexbox布局 */
+  justify-content: space-between;
+  /* 按钮之间的空间分布 */
+  padding: 20rpx;
+  /* 容器两侧的空白填充 */
+}
+</style>

+ 10 - 39
src/pages/taskList.vue

@@ -5,7 +5,7 @@
       <view class="task-title" v-if="tasks.length && tasks.length > 0">任务({{ tasks.length }}个)
       </view>
       <view class="task-title" v-else>任务</view>
-      <view class="task-add-btn" @click="goPunchInEditPage">
+      <view class="task-add-btn" @click="goTaskEditPage()">
         <uni-icons type="plusempty" size="30" color="#406CE7"></uni-icons>
       </view>
     </view>
@@ -36,12 +36,12 @@
             </view>
           </view>
         </view>
-        <view class="btn-group">
-          <view class="btn-item" @click="deleteDialogOpen(task.id)">删除</view>
-          <view class="btn-item" @click="archiveDialogOpen(task.id)">归档</view>
-          <view class="btn-item" @click="revokeDialogOpen(task.id)">撤销</view>
-          <view class="btn-item">编辑</view>
-        </view>
+      </view>
+      <view class="btn-group">
+        <view class="btn-item" @click="deleteDialogOpen(task.id)">删除</view>
+        <view class="btn-item" @click="archiveDialogOpen(task.id)">归档</view>
+        <view class="btn-item" @click="revokeDialogOpen(task.id)">撤销</view>
+        <view class="btn-item" @click="goTaskEditPage(task.id)">编辑</view>
       </view>
     </view>
 
@@ -112,11 +112,11 @@ const goPunchInEditPage = () => {
 };
 
 /**
- * 跳转打卡详情页面
+ * 跳转打卡任务编辑页
  */
-const goPunchInDetailPage = (id) => {
+const goTaskEditPage = (id) => {
   uni.navigateTo({
-    url: router.PUNCHIN_DETAIL_URL + "?id=" + id
+    url: id ? router.TASK_EDIT_PAGE + "?id=" + id : router.TASK_EDIT_PAGE
   });
 };
 
@@ -305,10 +305,7 @@ onPullDownRefresh(() => {
     border: 0.5px solid #E4E4E4;
     box-shadow: 0px 1px 6px #D8D8D8;
 
-    display: flex;
-
     .main-box {
-      flex-grow: 1;
       padding: 16rpx 16rpx 16rpx 24rpx;
 
       .item-header {
@@ -415,32 +412,6 @@ onPullDownRefresh(() => {
       }
     }
 
-    .func-box {
-      flex-shrink: 0;
-      width: 160rpx;
-      border-radius: 0rpx 24rpx 24rpx 0rpx;
-
-
-      font-size: 36rpx;
-      font-weight: 400;
-      letter-spacing: 0rpx;
-      line-height: 52.13rpx;
-      color: #FFFFFF;
-
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      flex-direction: column;
-    }
-
-    .func-box-finish {
-      background: #F2607A;
-    }
-
-    .func-box-unfinish {
-      background: #406CE7;
-    }
-
     .btn-group {
       margin-top: 16rpx;
       display: flex;