no message

This commit is contained in:
A1300399510
2023-12-29 18:37:38 +08:00
parent c80cee6eb0
commit d7915dd321
15 changed files with 852 additions and 180 deletions

View File

@@ -1,9 +1,9 @@
<template>
<div class="flexacenter save-box save-left">
<div class="flexacenter save-box save-left" @click="submit(0)">
<img class="save-icon" src="@/assets/img/arrow-gray.png" />
保存并退出
</div>
<div class="flexacenter save-box save-right">
<div class="flexacenter save-box save-right" @click="abandonSaving">
放弃保存
<img class="save-icon" src="@/assets/img/cross-icon.png" />
</div>
@@ -21,7 +21,7 @@
<div class="info-item flexacenter">
<div class="info-name">院校</div>
<div class="flex1">
<el-autocomplete v-model="state1" :fetch-suggestions="querySearch" clearable class="inline-input w-50" placeholder="输入关键词,选择院校" @select="handleSelect">
<el-autocomplete debounce v-model="info.school" :fetch-suggestions="querySchoolSearch" clearable class="inline-input w-50" placeholder="输入关键词,选择院校" @select="handleSchoolSelect" :trigger-on-focus="false">
<template #suffix>
<img class="" src="@/assets/img/arrow-black.svg" />
</template>
@@ -31,7 +31,7 @@
<div class="info-item flexacenter">
<div class="info-name">专业</div>
<div class="flex1">
<el-autocomplete v-model="state1" :fetch-suggestions="querySearch" clearable class="inline-input w-50" placeholder="输入关键词,选择专业" @select="handleSelect">
<el-autocomplete v-model="info.profession" :fetch-suggestions="queryMajorSearch" clearable class="inline-input w-50" placeholder="输入关键词,选择专业" @select="handleMajorSelect" :trigger-on-focus="false">
<template #suffix>
<img class="" src="@/assets/img/arrow-black.svg" />
</template>
@@ -40,7 +40,7 @@
</div>
<div class="info-item flexacenter">
<div class="info-name">项目</div>
<el-input class="flex1 input" placeholder="请输入"></el-input>
<el-input class="flex1 input" placeholder="请输入" v-model="info.project"></el-input>
</div>
</div>
</div>
@@ -53,7 +53,7 @@
<div class="time-box item-input-box flexacenter">
<el-config-provider :locale="zhCn">
<el-date-picker v-model="value1" type="date" placeholder="请选择" size="large" class="flex1 flexacenter" :clear-icon="{}" />
<el-date-picker v-model="info.interviewtime" type="date" placeholder="请选择" size="large" class="flex1 flexacenter" :clear-icon="{}" value-format="YYYY-MM-DD" />
</el-config-provider>
<img class="calendar-icon" src="@/assets/img/calendar-icon.svg" />
</div>
@@ -65,11 +65,12 @@
<div class="asterisk">*</div>
</div>
<div class="title-box item-input-box flexacenter"><el-input v-model="title" placeholder="给你的面经帖起一个吸引的标题吧"></el-input></div>
<div class="title-box item-input-box flexacenter"><el-input v-model="info.subject" placeholder="给你的面经帖起一个吸引的标题吧"></el-input></div>
</div>
</div>
<div class="visible-box flexacenter">
<img class="visible-icon" src="@/assets/img/frame-no.svg" />
<div class="visible-box flexacenter" @click="cutVisible()">
<img class="visible-icon" v-if="info.isvisiblereply == 0" src="@/assets/img/frame-no.svg" />
<img class="visible-icon" v-else src="@/assets/img/frame-pitch.svg" />
回复/点赞可见
</div>
</div>
@@ -80,9 +81,8 @@
面试构成及过程
<div class="asterisk">*</div>
</div>
<div class="course-box">
<el-input v-model="course" type="textarea" placeholder="例如项目介绍、面试时长、面试官、问题QA、需要注意的地方"></el-input>
<el-input v-model="info.message" type="textarea" autosize placeholder="例如项目介绍、面试时长、面试官、问题QA、需要注意的地方"></el-input>
</div>
</div>
</div>
@@ -94,80 +94,159 @@
<div class="floor-box">
<div class="box flexacenter">
<div class="anonymous-box flexacenter">
<img class="anonymous-icon" src="@/assets/img/frame-pitch.svg" />
<!-- <img class="anonymous-icon" src="@/assets/img/frame-no.svg" /> -->
<div class="anonymous-box flexacenter" @click="cutAnonymous()">
<img class="anonymous-icon" v-if="info.anonymous == 0" src="@/assets/img/frame-no.svg" />
<img class="anonymous-icon" v-else src="@/assets/img/frame-pitch.svg" />
匿名发表
<div class="text">发布后可修改</div>
</div>
<div class="issue-btn flexcenter">发布</div>
<div class="issue-btn flexcenter" @click="submit()">发布</div>
</div>
</div>
</template>
<script setup>
import { ElMessage } from "element-plus"
import zhCn from "element-plus/dist/locale/zh-cn.mjs"
const router = useRouter()
const state1 = ref("")
const restaurants = ref([])
let aaa = ref(1703001600000)
onMounted(() => {
restaurants.value = loadAll()
getInit()
})
let token = ""
const getInit = () => {
publishInitHttp().then(res => {
console.log("res", res)
if (res.code != 200) {
ElMessage.error(res.message)
return
}
const data = res.data
token = data["token"]
let interviewtime = data["info"]["interviewtime"] || 0
if (interviewtime) data["info"]["interviewtime"] = handleDate(interviewtime)
console.log(interviewtime, "interviewtime")
info.value = { ...data["info"] }
console.log(token)
})
}
const querySearch = (queryString, cb) => {
// https://offer.gter.net/miniprogram/InterviewExperience/schoolSearch
// 处理初始化 面试时间的 时间戳格式
const handleDate = timestamp => {
// 使用Date对象将时间戳转换为日期对象
var date = new Date(timestamp * 1000)
// 获取年份、月份和日期
var year = date.getFullYear()
var month = ("0" + (date.getMonth() + 1)).slice(-2) // 月份从0开始需要加1并补0
var day = ("0" + date.getDate()).slice(-2) // 获取日期并补0
// 拼接为yyyy-mm-dd格式的日期字符串
var formattedDate = year + "-" + month + "-" + day
return formattedDate
}
let info = ref({
school: "", // 学校
profession: "", // 专业
project: "", // 项目时间
interviewtime: "", // 面试时间
subject: "", //标题
isvisiblereply: 0, // 回复点赞可见
message: "", // 过程
anonymous: 0, // 匿名状态
})
// 关键字搜索学校
const querySchoolSearch = (queryString, cb) => {
publishSchoolSearchHttp({ keyword: queryString }).then(res => {
// console.log("res", res)
if (res.code != 200) return
let data = res.data
console.log(data, "data")
let data = res.data || []
let isRepetition = false
data.forEach(element => {
console.log(element, "element")
element['value']
element["value"] = element["name"]
if (element["name"] == queryString) isRepetition = true
})
if (!isRepetition) {
data.unshift({
value: queryString,
})
}
cb(data)
})
return
const results = queryString ? restaurants.value.filter(createFilter(queryString)) : restaurants.value
// call callback function to return suggestions
cb(results)
}
const createFilter = queryString => {
return restaurant => {
return restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0
}
}
const loadAll = () => {
return [
{ value: "vue", link: "https://github.com/vuejs/vue" },
{ value: "element", link: "https://github.com/ElemeFE/element" },
{ value: "cooking", link: "https://github.com/ElemeFE/cooking" },
{ value: "mint-ui", link: "https://github.com/ElemeFE/mint-ui" },
{ value: "vuex", link: "https://github.com/vuejs/vuex" },
{ value: "vue-router", link: "https://github.com/vuejs/vue-router" },
{ value: "babel", link: "https://github.com/babel/babel" },
]
// 选择院校
const handleSchoolSelect = item => (info.value["schoolid"] = item["id"] || 0)
// 关键字搜索专业
const queryMajorSearch = (queryString, cb) => {
publishProfessionSearchHttp({ keyword: queryString }).then(res => {
if (res.code != 200) return
let data = res.data || []
let isRepetition = false
data.forEach(element => {
element["value"] = element["name"]
if (element["name"] == queryString) isRepetition = true
})
if (!isRepetition) {
data.unshift({
value: queryString,
})
}
cb(data)
})
}
const handleSelect = item => {
console.log(item)
// 选择专业
const handleMajorSelect = item => (info.value["profession_id"] = item["id"] || 0)
// 切换匿名状态
const cutAnonymous = () => {
info.value["anonymous"] = info.value["anonymous"] == 0 ? 1 : 0
}
const value1 = ref("")
const title = ref("")
const course = ref("")
// 切换回复可见状态
const cutVisible = () => {
info.value["isvisiblereply"] = info.value["isvisiblereply"] == 0 ? 1 : 0
}
// 提交发布
const submit = (status = 1) => {
console.log(info.value)
publishSubmitHttp({ info: info.value, token, status }).then(res => {
if (res.code != 200) {
ElMessage.error(res.message)
return
}
const data = res.data
console.log("data", data)
ElMessage.success(res.message)
router.push(`/details/${data["uniqid"]}`)
})
}
// 放弃保存 跳跃上一页或者首页
const abandonSaving = () => {
// console.log("router.currentRoute.value.meta.previousPage", router.currentRoute.value.meta.previousPage)
if (router.currentRoute.value.meta.previousPage) router.go(-1)
else router.push("./index.html") // 跳转到首页
}
// 保存并退出
const saveAndExit = () => {
console.log("saveAndExit")
}
</script>
<style scoped lang="less">
@@ -291,6 +370,7 @@ const course = ref("")
font-size: 14px;
color: #555555;
cursor: pointer;
user-select: none;
.visible-icon {
width: 18px;
height: 18px;
@@ -353,6 +433,7 @@ const course = ref("")
cursor: pointer;
color: #333333;
font-size: 14px;
user-select: none;
.text {
color: rgb(170, 170, 170);