fix: 待办事项

This commit is contained in:
阿怪 2024-03-21 14:08:36 +08:00
parent f57e22d74f
commit e67b03d8a7
5 changed files with 114 additions and 51 deletions

View File

@ -2,7 +2,8 @@ ENV = 'development'
VITE_CLI_PORT = 8088 VITE_CLI_PORT = 8088
VITE_SERVER_PORT = 8888 VITE_SERVER_PORT = 8888
VITE_BASE_API = /api VITE_BASE_API = /api
VITE_BASE_PATH = https://api.jimingyiliao.com/ // VITE_BASE_PATH = https://api.jimingyiliao.com/
VITE_BASE_PATH = https://367a21fd.r12.cpolar.top
VITE_EDITOR = vscode VITE_EDITOR = vscode
// VITE_EDITOR = webstorm 如果使用webstorm开发且要使用dom定位到代码行功能 请先自定添加 webstorm到环境变量 再将VITE_EDITOR值修改为webstorm // VITE_EDITOR = webstorm 如果使用webstorm开发且要使用dom定位到代码行功能 请先自定添加 webstorm到环境变量 再将VITE_EDITOR值修改为webstorm
// 如果使用docker-compose开发模式设置为下面的地址或本机主机IP // 如果使用docker-compose开发模式设置为下面的地址或本机主机IP

View File

@ -4,5 +4,5 @@ VITE_CLI_PORT = 8080
VITE_SERVER_PORT = 8888 VITE_SERVER_PORT = 8888
VITE_BASE_API = /api VITE_BASE_API = /api
#下方修改为你的线上ip #下方修改为你的线上ip
VITE_BASE_PATH = http://36b924d2.r12.cpolar.top VITE_BASE_PATH = https://api.jimingyiliao.com/
//VITE_BASE_PATH = http://36b924d2.r12.cpolar.top //VITE_BASE_PATH = http://36b924d2.r12.cpolar.top

1
package-lock.json generated
View File

@ -19,6 +19,7 @@
"element-plus": "2.2.9", "element-plus": "2.2.9",
"highlight.js": "^10.6.0", "highlight.js": "^10.6.0",
"js-cookie": "^3.0.1", "js-cookie": "^3.0.1",
"lodash": "^4.17.21",
"marked": "^2.0.0", "marked": "^2.0.0",
"mitt": "^3.0.0", "mitt": "^3.0.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",

View File

@ -21,6 +21,7 @@
"element-plus": "2.2.9", "element-plus": "2.2.9",
"highlight.js": "^10.6.0", "highlight.js": "^10.6.0",
"js-cookie": "^3.0.1", "js-cookie": "^3.0.1",
"lodash": "^4.17.21",
"marked": "^2.0.0", "marked": "^2.0.0",
"mitt": "^3.0.0", "mitt": "^3.0.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",

View File

@ -129,8 +129,12 @@ const handleSelectionChange = (val) => {
} }
function editFunc(row) { function editFunc(row) {
form.value = _.cloneDeep(row) form.value = _.cloneDeep(row)
console.log(form.value) // console.log(form.value)
todo_list.value = form.value.todos //
todo_list.value = _.cloneDeep(form.value.todos)
for (const item of todo_list.value) {
item.remindTime = item.remindTime.split(',')
}
note_list.value = form.value.notes note_list.value = form.value.notes
openDialog('edit') openDialog('edit')
} }
@ -164,14 +168,10 @@ function handleSizeChange(val) {
} }
function closeDialog() { function closeDialog() {
dialogFormVisible.value = false dialogFormVisible.value = false
// question_form.value = {
// options: [],
// answer: '',
// title: ''
// }
todo_list.value = [] todo_list.value = []
note_list.value = [] note_list.value = []
form.value = {} form.value = {}
resetForm()
} }
async function enterDialog() { // async function enterDialog() { //
await apiForm.value.validate(async(valid, fields) => { await apiForm.value.validate(async(valid, fields) => {
@ -181,7 +181,13 @@ async function enterDialog() { // 提交
if (form.value.ID) { // if (form.value.ID) { //
func_name = 'editHospital' func_name = 'editHospital'
} }
form.value.todos = todo_list.value form.value.todos = _.cloneDeep(todo_list.value)
//
for (const item of form.value.todos) {
if (Array.isArray(item.remindTime)) {
item.remindTime = item.remindTime.join(',')
}
}
// //
for (const item of note_list.value) { for (const item of note_list.value) {
for (let i = 0; i < time_options.value.length; i++) { for (let i = 0; i < time_options.value.length; i++) {
@ -192,6 +198,7 @@ async function enterDialog() { // 提交
} }
} }
form.value.notes = note_list.value form.value.notes = note_list.value
// console.log(form.value);return
const res = await api[func_name](form.value) const res = await api[func_name](form.value)
if (res.code === 0) { if (res.code === 0) {
ElMessage({ ElMessage({
@ -206,28 +213,42 @@ async function enterDialog() { // 提交
} }
}) })
} }
function addRowFunc(type) { const resetForm = () => {
apiForm.value.resetFields()
}
function addRowFunc(type, child_index = null) {
// { // {
// content: '', // content: '',
// notes_time: '' // notes_time: ''
// } // }
if (type === 1) { if (type === 1) { //
note_list.value.push({ note_list.value.push({
content: '', content: '',
notes_time: '' notes_time: ''
}) })
} else { //
if (child_index != null) {
todo_list.value[child_index].remindTime.push(0)
} else { } else {
todo_list.value.push({ todo_list.value.push({
content: '' content: '',
remindPeriod: 0,
frequency: '', //
remindTime: []
}) })
} }
}
} }
function del_ro_func(i, type) { function del_ro_func(i, type, child_index = null) {
if (type === 1) { if (type === 1) {
note_list.value.splice(i, 1) note_list.value.splice(i, 1)
} else {
if (child_index != null) {
todo_list.value[i].remindTime.splice(child_index, 1)
} else { } else {
todo_list.value.splice(i, 1) todo_list.value.splice(i, 1)
} }
}
} }
// //
const uploading_form = reactive({ const uploading_form = reactive({
@ -345,7 +366,7 @@ function beforeUploadImg(i) {
<div>{{ scope.row.notes.length }}</div> <div>{{ scope.row.notes.length }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="须知事项" min-width="150"> <el-table-column align="center" label="待办事项" min-width="150">
<template #default="scope"> <template #default="scope">
<div>{{ scope.row.todos.length }}</div> <div>{{ scope.row.todos.length }}</div>
</template> </template>
@ -359,20 +380,8 @@ function beforeUploadImg(i) {
</el-table-column> </el-table-column>
<el-table-column align="left" fixed="right" label="操作" width="200"> <el-table-column align="left" fixed="right" label="操作" width="200">
<template #default="scope"> <template #default="scope">
<el-button <el-button icon="edit" size="small" type="primary" link @click="editFunc(scope.row)">编辑</el-button>
icon="edit" <el-button icon="delete" size="small" type="danger" link @click="deleteFunc(scope.row)">删除</el-button>
size="small"
type="primary"
link
@click="editFunc(scope.row)"
>编辑</el-button>
<el-button
icon="delete"
size="small"
type="danger"
link
@click="deleteFunc(scope.row)"
>删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -384,8 +393,7 @@ function beforeUploadImg(i) {
:total="total" :total="total"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
@size-change="handleSizeChange" @size-change="handleSizeChange" />
/>
</div> </div>
</div> </div>
@ -404,7 +412,9 @@ function beforeUploadImg(i) {
<div class="item-card-box" style="flex:1"> <div class="item-card-box" style="flex:1">
<div v-for="(item, i) in note_list" :key="i" class="item-card"> <div v-for="(item, i) in note_list" :key="i" class="item-card">
<div class="del-row-btn" @click="del_ro_func(i,1)"> <div class="del-row-btn" @click="del_ro_func(i,1)">
<el-icon><Close /></el-icon> <el-icon>
<Close />
</el-icon>
</div> </div>
<div class="ic-left">{{ i + 1 }} . </div> <div class="ic-left">{{ i + 1 }} . </div>
<div class="ic-right"> <div class="ic-right">
@ -419,10 +429,12 @@ function beforeUploadImg(i) {
:show-file-list="false" :show-file-list="false"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :before-upload="beforeAvatarUpload"
@click="beforeUploadImg(i)" @click="beforeUploadImg(i)">
>
<div v-if="uploading_form.uploading" class="progress-box"> <div v-if="uploading_form.uploading" class="progress-box">
<el-progress class="progress-item" :percentage="uploading_form.percentage" :status="uploading_form.progressStatus" /> <el-progress
class="progress-item"
:percentage="uploading_form.percentage"
:status="uploading_form.progressStatus" />
</div> </div>
<img v-if="item.content" :src="item.content" class="img-container"> <img v-if="item.content" :src="item.content" class="img-container">
<el-icon v-else class="avatar-uploader-icon"> <el-icon v-else class="avatar-uploader-icon">
@ -435,40 +447,78 @@ function beforeUploadImg(i) {
<div class="icr-left">注意时间</div> <div class="icr-left">注意时间</div>
<div class="icr-right"> <div class="icr-right">
<el-select v-model="item.notes_time" class="m-2" placeholder="选择注意时间" size="large"> <el-select v-model="item.notes_time" class="m-2" placeholder="选择注意时间" size="large">
<el-option <el-option v-for="(item2, i) in time_options" :key="i" :label="item2" :value="item2" />
v-for="(item2, i) in time_options"
:key="i"
:label="item2"
:value="item2"
/>
</el-select> </el-select>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="add-row-btn" style="text-align: center;cursor: pointer;" @click="addRowFunc(1)"> <div class="add-row-btn" style="text-align: center;cursor: pointer;" @click="addRowFunc(1)">
<el-icon><Plus /></el-icon> <el-icon>
<Plus />
</el-icon>
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="须知事项" prop="notes"> <el-form-item label="待办事项" prop="notes">
<div class="item-card-box" style="flex:1"> <div class="item-card-box" style="flex:1">
<div v-for="(item, i) in todo_list" :key="i" class="item-card"> <div v-for="(item, i) in todo_list" :key="i" class="item-card">
<div class="del-row-btn" @click="del_ro_func(i,2)"> <div class="del-row-btn" @click="del_ro_func(i,2)">
<el-icon><Close /></el-icon> <el-icon>
<Close />
</el-icon>
</div> </div>
<div class="ic-left">{{ i + 1 }} . </div> <div class="ic-left">{{ i + 1 }} . </div>
<div class="ic-right"> <div class="ic-right">
<div class="ic-right-row"> <div class="ic-right-row">
<div class="icr-left">须知事项</div> <div class="icr-left">待办事项</div>
<div class="icr-right"> <div class="icr-right">
<el-input v-model="item.content" autosize type="textarea" /> <el-input v-model="item.content" placeholder="请输入事项内容" autosize type="textarea" />
</div>
</div>
<div class="ic-right-row">
<div class="icr-left">用药频率</div>
<div class="icr-right">
<el-input v-model="item.frequency" placeholder="比如一天3次 一天4次" autosize type="textarea" />
</div>
</div>
<div class="ic-right-row">
<div class="icr-left">待办状态</div>
<div class="icr-right">
<el-select v-model="item.remindPeriod" placeholder="请选择待办状态">
<el-option label="手术前" :value="0" />
<el-option label="手术后" :value="1" />
</el-select>
</div>
</div>
<div class="ic-right-row ic-right-row2">
<div class="icr-left">提醒时间</div>
<div class="icr-right">
<div v-for="(item_l, il) in item.remindTime" :key="il" class="loop_card">
<el-time-picker
v-model="item.remindTime[il]"
value-format="HH:mm"
placeholder="请选择时间"
style="width: 100%;position: relative;" />
<div class="del-row-btn" @click="del_ro_func(i, 2, il)">
<el-icon>
<Close />
</el-icon>
</div>
</div>
<div class="add-row-btn" style="text-align: center;cursor: pointer;" @click="addRowFunc(2,i)">
<el-icon>
<Plus />
</el-icon>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="add-row-btn" style="text-align: center;cursor: pointer;" @click="addRowFunc(2)"> <div class="add-row-btn" style="text-align: center;cursor: pointer;" @click="addRowFunc(2)">
<el-icon><Plus /></el-icon> <el-icon>
<Plus />
</el-icon>
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
@ -483,6 +533,16 @@ function beforeUploadImg(i) {
</div> </div>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.loop_card{
margin-bottom: 10px;
position: relative;
.del-row-btn{
right: 0;
}
}
.ic-right-row2{
align-items: unset !important;
}
.progress-box{ .progress-box{
position: absolute; position: absolute;
width: 100%; width: 100%;