You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

364 lines
10 KiB

<template>
<div class="container">
<!-- 顶部信息 -->
<div class="containertop">
<div class="topleft">
<img src="../../../assets/images/detailsicon/1.png" alt="">
<span>项目备忘录</span>
</div>
<div class="topright">
<el-button type="primary" size="medium" plain
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="handleAdd">
<img src="../../../assets/images/detailsicon/icon-xz@2x.png" alt="新增"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
新增
</el-button>
</div>
</div>
<div class="content">
<div class="descriptionsdiv">
<el-form :model="form" @submit.native.prevent="onSubmit">
<el-form-item>
<el-col :span="11">
<el-date-picker type="date" placeholder="选择日期" v-model="form.date1"
style="width: 21.75rem;"></el-date-picker>
</el-col>
</el-form-item>
</el-form>
</div>
<div class="descriptionsdivnext">
<!-- 渲染多个备忘录 -->
<div v-for="memo in memos" :key="memo.id" class="descriptionditem">
<div class="itemone">{{ memo.createTime }}</div>
<div class="itemtwo">{{ memo.remark }}</div>
<div class="itemthree">记录人:{{ memo.createBy }}</div>
<div class="iconguanbi" @click="handleDeleteMemo(memo.id)"> <img src="@/assets/images/icon-关闭-项目备忘录@2x.png" alt=""></div>
<div class="iconguanbi2" @click="handleEditMemo(memo)"> <img src="@/assets/images/detailsicon/icon-bj@2x.png" alt=""></div>
</div>
</div>
</div>
<!-- 新增/编辑弹窗表单 -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px">
<el-form :model="newMemo" label-width="100px">
<el-form-item label="姓名">
<el-input v-model="newMemo.createBy" disabled></el-input>
</el-form-item>
<el-form-item label="备忘时间">
<el-date-picker type="date" placeholder="选择日期" v-model="newMemo.createTime" disabled
style="width: 21.75rem;"></el-date-picker>
</el-form-item>
<el-form-item label="关键/主题字">
<el-input type="textarea" v-model="newMemo.remark" :rows="4"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleSubmit"></el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
props: {
Remark: {
type: Array,
required: true
}
},
data() {
return {
form: {
createBy:"",
createTime:"",
createId:0,
updateBy:"",
updateId:0,
updateTime:"",
id:0,
xmId:0,
remark:""
},
dialogVisible: false,
dialogTitle: '新增备忘录',
};
},
created() {
this.fetchMemos();
},
methods: {
onSubmit() {
console.log('submit!');
console.log(this.form);
},
// 打开新增弹窗
handleAdd() {
this.dialogTitle = '新增备忘录';
this.dialogVisible = true;
this.newMemo = {
id: null,
remark: '', // 只需要发送 remark
xmId: this.xmId, // 使用传入的 xmId
createTime: new Date().toISOString().slice(0, 10), // 设置当前时间
createBy: this.getCurrentUserName(), // 获取当前账号的名称
};
},
// 打开编辑弹窗
handleEditMemo(memo) {
if (memo) {
this.dialogTitle = '编辑备忘录';
this.dialogVisible = true;
this.newMemo = {
id: memo.id,
remark: memo.remark, // 只需要发送 remark
xmId: memo.xmId,
createTime: memo.createTime, // 使用现有时间
createBy: memo.createBy, // 使用现有姓名
};
}
},
// 删除备忘录
handleDeleteMemo(id) {
this.$confirm('此操作将永久删除该备忘录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deletexmmmb([id])
.then(response => {
if (response.code === 200) {
this.$message.success('删除成功!');
this.fetchMemos(); // 刷新数据
} else {
this.$message.error('删除失败!');
}
})
.catch(error => {
console.error('删除失败', error);
this.$message.error('删除失败!');
});
}).catch(() => {
this.$message.info('已取消删除');
});
},
// 提交表单(新增/编辑)
handleSubmit() {
this.dialogVisible = false;
if (this.newMemo.id) {
// 编辑数据
updatexmmmb(this.newMemo)
.then(response => {
if (response.code === 200) {
this.$message.success('数据编辑成功!');
this.fetchMemos(); // 刷新数据
} else {
this.$message.error('数据编辑失败!');
}
})
.catch(error => {
console.error('编辑数据失败', error);
this.$message.error('数据编辑失败!');
});
} else {
// 新增数据
addxmmmb(this.newMemo)
.then(response => {
if (response.code === 200) {
this.$message.success('数据新增成功!');
this.fetchMemos(); // 刷新数据
} else {
this.$message.error('数据新增失败!');
}
})
.catch(error => {
console.error('新增数据失败', error);
this.$message.error('数据新增失败!');
});
}
},
// 获取当前账号的名称
getCurrentUserName() {
// 假设当前账号的名称存储在 Vuex store 中
return this.$store.state.user.name; // 根据实际情况调整
},
},
};
</script>
<style scoped>
.container {
display: flex;
flex-direction: column;
width: 100%;
background-color: #FFFFFF;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
gap: 1rem;
}
.content {
padding: 1rem;
display: flex;
flex-direction: column;
gap: 1rem;
}
.containertop {
height: auto;
display: flex;
justify-content: space-between;
padding: .7rem 0;
border-bottom: 1px solid #E5E5E5;
padding: .5rem;
}
.topleft {
width: 8rem;
display: flex;
gap: 0.4rem;
align-items: center;
}
.topleft img {
width: 0.81rem;
height: 0.81rem;
}
.topleft span {
width: auto;
height: 0.88rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 500;
font-size: 0.88rem;
color: #3D424C;
line-height: 0.88rem;
text-align: right;
font-style: normal;
text-transform: none;
}
.descriptionsdiv {
width: 100%;
margin-left: 0rem;
height: auto;
}
.el-tag+.el-tag {
margin-left: 10px;
}
.button-new-tag {
margin-left: 10px;
height: 32px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
.input-new-tag {
width: 90px;
margin-left: 10px;
vertical-align: bottom;
}
.descriptionsdivnext {
display: flex;
height: 8rem;
margin-top: -1rem;
gap: 1rem;
flex-wrap: wrap;
}
.descriptionditem {
display: flex;
flex-direction: column;
gap: 0.5rem;
width: 21.75rem;
height: auto;
background: #FBFCFF;
border-radius: 0.25rem 0.25rem 0.25rem 0.25rem;
border: 0.06rem solid #E6E6E6;
padding: .5rem;
position: relative;
gap: 1rem;
}
.itemone {
width: 100%;
height: 0.88rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 500;
font-size: 0.88rem;
color: #3D424C;
line-height: 0.88rem;
font-style: normal;
text-transform: none;
}
.itemtwo {
width: 100%;
height: 2rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
font-size: 0.88rem;
color: #3D424C;
line-height: 0.88rem;
font-style: normal;
text-transform: none;
margin-top: .5rem;
}
.itemthree {
width: 100%;
height: 0.88rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
font-size: 0.88rem;
color: #808080;
line-height: 0.88rem;
font-style: normal;
text-transform: none;
}
.itemfour {
position: absolute;
bottom: 0.5rem;
right: 0.5rem;
}
.el-textarea__inner {
height: 10rem !important;
/* 固定高度 */
resize: none;
/* 禁止调整大小 */
}
.iconguanbi {
position: absolute;
top: 0;
right: 0;
}
.iconguanbi2 {
position: absolute;
top: 1rem;
right: 1rem;
width: 2rem;
height: 2rem;
background-color: rgba(43,98,241,0.1);
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
}
.iconguanbi2 img{
width: 1.2rem;
height: 1.2rem;
}
.iconguanbi img{
width: 1.4rem;
height: 1.4rem;
}
</style>