8/31 dev 权限,sse,账单,bug

This commit is contained in:
Zy
2026-08-31 08:09:28 +08:00
parent bfdfa05cd7
commit e4417f35b1
82 changed files with 2327 additions and 1644 deletions

View File

@@ -12,7 +12,7 @@
<el-row>
<el-col :span="13">
<el-form-item label="活动标题" prop="title">
<el-input maxlength="30" v-model.trim="form.title" placeholder="请输入活动标题" />
<el-input v-model.trim="form.title" maxlength="30" placeholder="请输入活动标题" />
</el-form-item>
</el-col>
<!-- <el-col :span="11">-->
@@ -23,11 +23,13 @@
<el-col :span="11">
<el-form-item label="报名截止日期" prop="applyDeadline">
<el-date-picker
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
v-model="deadline"
style="width: 100%"
:disabled-date="disabledDate"
format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择报名截止日期"
style="width: 100%"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
@update:model-value="
(data) => {
if (data) {
@@ -37,8 +39,6 @@
}
}
"
type="datetime"
placeholder="请选择报名截止日期"
/>
</el-form-item>
</el-col>
@@ -48,7 +48,11 @@
<el-form-item label="活动时间" prop="startTime">
<el-date-picker
v-model="activityTime"
end-placeholder="结束活动"
format="YYYY-MM-DD HH:mm:ss"
range-separator=""
start-placeholder="开始活动"
type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss"
@change="
(data: string[] | null) => {
@@ -61,16 +65,12 @@
}
}
"
type="datetimerange"
range-separator=""
start-placeholder="开始活动"
end-placeholder="结束活动"
/>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="活动地点" prop="address">
<el-input maxlength="50" type="textarea" show-word-limit v-model.trim="form.address" placeholder="请输入活动地点" />
<el-input v-model.trim="form.address" maxlength="50" placeholder="请输入活动地点" show-word-limit type="textarea" />
</el-form-item>
</el-col>
</el-row>
@@ -78,8 +78,14 @@
<el-col :span="13">
<el-form-item label="签到时间" prop="signinStartTime">
<el-date-picker
v-model="SigninTime"
v-model="SignInTime"
:disabled="!Boolean(form.endTime)"
:disabled-date="disabledSignInDate"
end-placeholder="结束签到"
format="YYYY-MM-DD HH:mm:ss"
range-separator=""
start-placeholder="开始签到"
type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss"
@change="
(data: string[] | null) => {
@@ -92,28 +98,24 @@
}
}
"
type="datetimerange"
range-separator=""
start-placeholder="开始签到"
end-placeholder="结束签到"
/>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="主办方" prop="organizer">
<el-input maxlength="20" v-model.trim="form.organizer" placeholder="请输入主办方" />
<el-input v-model.trim="form.organizer" maxlength="20" placeholder="请输入主办方" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="13">
<el-form-item label="联系人" prop="contactName">
<el-input maxlength="20" v-model.trim="form.contactName" placeholder="请输入联系人" />
<el-input v-model.trim="form.contactName" maxlength="20" placeholder="请输入联系人" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="联系方式" prop="contactPhone">
<el-input maxlength="20" v-model.trim="form.contactPhone" placeholder="请输入联系方式" />
<el-input v-model.trim="form.contactPhone" maxlength="11" placeholder="请输入联系方式" />
</el-form-item>
</el-col>
</el-row>
@@ -121,7 +123,7 @@
<el-col :span="12">
<el-form-item label="活动名额" prop="quota">
<div class="flex items-center">
<el-input-number v-model.trim.number="form.quota" :min="0" :max="99999" placeholder="0代表无限" />
<el-input-number v-model.trim.number="form.quota" :max="99999" :min="0" placeholder="0代表无限" />
<span class="ml-2 text-gray-500 text-sm" style="font-size: 12px">(填 <strong>0</strong> 代表 <u>不限制名额</u> </span>
</div>
</el-form-item>
@@ -132,17 +134,17 @@
<el-form-item label="活动封面" prop="title">
<el-upload
ref="upload"
class="avatar-uploader"
:action="uploadUrl"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:on-exceed="handleExceed"
:before-upload="handleBeforeUpload"
:on-error="handleError"
accept=".png,.jpg,.jpeg,.bmp"
:limit="1"
:on-error="handleError"
:on-exceed="handleExceed"
:on-success="handleAvatarSuccess"
:show-file-list="false"
accept=".png,.jpg,.jpeg,.bmp"
class="avatar-uploader"
>
<img alt="活动封面" v-if="form.coverImage" :src="form.coverImage" class="avatar" />
<img v-if="form.coverImage" :src="form.coverImage" alt="活动封面" class="avatar" />
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</el-form-item>
@@ -151,14 +153,14 @@
<el-row>
<el-col>
<el-form-item label="招募要求" prop="requirements">
<editor v-model="form.requirements" :height="200" :min-height="200" :read-only="false" :file-size="5" :type="'url'" />
<editor v-model="form.requirements" :file-size="5" :height="200" :min-height="200" :read-only="false" :type="'url'" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item label="活动详情" prop="content">
<editor v-model="form.content" :height="300" :min-height="300" :read-only="false" :file-size="5" :type="'url'" />
<editor v-model="form.content" :file-size="5" :height="300" :min-height="300" :read-only="false" :type="'url'" />
</el-form-item>
</el-col>
</el-row>
@@ -187,7 +189,7 @@
<el-col :span="13">
<el-form-item label="签到时间" prop="signinStartTime">
<el-date-picker
v-model="SigninTime"
v-model="SignInTime"
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
@@ -238,7 +240,7 @@
</div>
</div>
</template>
<script setup lang="ts">
<script lang="ts" setup>
import editor from '@/components/Editor/index.vue';
import { ref } from 'vue';
import PageHeader from '@/components/Pageheader/index.vue';
@@ -333,8 +335,8 @@ const rules = {
contactPhone: [
{ required: true, message: '请输入联系方式', trigger: 'blur' },
{
validator: (_: any, value: string | number) => validator(value, 'Character'),
message: '请输入中文,字母,数字等字符',
validator: (_: any, value: string | number) => validator(value, 'phone'),
message: '请输入联系方式',
trigger: 'blur'
}
],
@@ -348,12 +350,16 @@ const disabledDate = (time: string) => {
const selectDate = new Date(time);
return selectDate.getTime() < today.getTime();
};
function disabledSignInDate(time: string) {
const selectDate = new Date(time);
const today = new Date(form.value.endTime);
return selectDate.getTime() > today.getTime();
}
const userid = ref();
// 报名截止日期
const deadline = ref([]);
// 有效签到时间
const SigninTime = ref([]);
const SignInTime = ref([]);
// 活动时间
const activityTime = ref([]);
@@ -553,7 +559,7 @@ function init() {
...res.data
};
activityTime.value = [res.data.startTime, res.data.endTime];
SigninTime.value = [res.data.signinStartTime, res.data.signinEndTime];
SignInTime.value = [res.data.signinStartTime, res.data.signinEndTime];
deadline.value = [res.data.applyDeadline];
// if (res.data?.SignInfo !== null) {
@@ -565,7 +571,7 @@ function init() {
// 提交
const submitForm = (status: string) => {
form.value.status = status;
console.log(form.value);
// if (!isSignin.value) {
// form.value.SignInfo = null;
// }
@@ -611,7 +617,7 @@ onUnmounted(() => {
});
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
.SignMapbox {
height: 500px;
width: 500px;