申请表单、审批详情、新建协同、协同详情、工作汇报和修改密码

This commit is contained in:
2026-09-24 14:25:44 +08:00
parent 892acc6d23
commit 471cfe6188
6 changed files with 92 additions and 53 deletions
+24 -15
View File
@@ -1,32 +1,38 @@
<template>
<view class="page">
<view class="page edge">
<fy-header title="工作汇报" back />
<view v-if="!can" class="deny">当前账号没有写汇报权限</view>
<view v-else>
<fy-scroll v-else class="edge-scroll" @refresh="load">
<view class="card form">
<text class="lab">类型</text>
<picker :range="kinds" @change="(e) => kind = kinds[e.detail.value]">
<view class="box">{{ kind }}</view>
</picker>
<text class="lab">内容</text>
<view class="box tall"><textarea v-model="content" placeholder="今日工作内容 / 周报摘要" /></view>
<view class="btn-primary" @click="submit">提交汇报</view>
<wd-button type="primary" block size="large" @click="submit">提交汇报</wd-button>
</view>
<wd-status-tip v-if="!rows.length" image="content" tip="暂无汇报" />
<view v-for="r in rows" :key="r.id" class="card item">
<text class="t">{{ r.title || r.kind || '汇报' }}</text>
<text class="s">{{ r.createdAt || r.date || '' }}</text>
<text class="c">{{ r.content || r.summary || '' }}</text>
<view class="top">
<text class="type">{{ r.kind || r.title || '汇报' }}</text>
<text class="s">{{ r.createdAt || r.date || '' }}</text>
</view>
<text class="c">{{ r.content || r.summary || r.title || '' }}</text>
</view>
</view>
</fy-scroll>
</view>
</template>
<script>
import FyHeader from '../../components/fy-header.vue'
import FyScroll from '../../components/fy-scroll.vue'
import { store } from '../../utils/store.js'
import { asList, toast } from '../../utils/format.js'
import { oaGet, oaPost } from '../../utils/api.js'
export default {
components: { FyHeader },
components: { FyHeader, FyScroll },
data() {
return { kinds: ['日报', '周报', '月报', '工时'], kind: '日报', content: '', rows: [] }
},
@@ -58,12 +64,15 @@ export default {
</script>
<style scoped>
.form { margin: 24rpx; padding: 24rpx; }
.box { background: #F3F6FB; border-radius: 12rpx; padding: 20rpx; margin-bottom: 16rpx; }
.box.tall { min-height: 160rpx; }
.form { margin: 16rpx 24rpx; padding: 24rpx; }
.lab { display: block; font-size: 26rpx; color: #6B7280; margin-bottom: 10rpx; }
.box { background: #F5F7FA; border-radius: 16rpx; padding: 22rpx 24rpx; margin-bottom: 20rpx; font-size: 30rpx; color: #111827; }
.box.tall { min-height: 180rpx; }
.box textarea { width: 100%; font-size: 30rpx; }
.item { margin: 0 24rpx 16rpx; padding: 24rpx; }
.t { display: block; font-weight: 600; }
.s { font-size: 22rpx; color: #6B7280; }
.c { display: block; font-size: 26rpx; margin-top: 8rpx; }
.deny { padding: 80rpx; text-align: center; color: #6B7280; }
.top { display: flex; align-items: center; justify-content: space-between; }
.type { font-size: 22rpx; color: #1677FF; background: #E8F1FF; border-radius: 8rpx; padding: 2rpx 10rpx; }
.s { font-size: 22rpx; color: #9CA3AF; }
.c { display: block; font-size: 28rpx; margin-top: 14rpx; color: #374151; line-height: 1.65; }
.deny { padding: 120rpx 40rpx; text-align: center; color: #6B7280; font-size: 28rpx; }
</style>