<template>
|
<div class="container">
|
<div class="title" v-if="!editId">
|
新建会议纪要{{ editId }}
|
<span class="back" @click="back"> <i class="iconfont icon-fanhui"></i> 返回 </span>
|
</div>
|
<div class="title" v-else>
|
<span>修改会议纪要</span> <span class="back" @click="back"> <i class="iconfont icon-fanhui"></i> 返回 </span>
|
</div>
|
|
<div class="wrap">
|
<el-row>
|
<el-col :lg="16" :md="20" :sm="24" :xs="24">
|
<el-form
|
:model="meeting"
|
status-icon
|
ref="form"
|
label-width="auto"
|
@submit.prevent
|
:rules="meeting.meeting_type == 'mrzh' ? mrzhRules : xmhyRules"
|
>
|
<el-form-item label="会议名称" prop="meeting_title">
|
<el-input v-model="meeting.meeting_title" placeholder="请输入会议纪要名称" clearable />
|
</el-form-item>
|
|
<el-form-item label="日期" prop="meeting_date">
|
<el-date-picker
|
v-model="meeting.meeting_date"
|
type="date"
|
placeholder="请输入会议日期"
|
size="default"
|
format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
/>
|
</el-form-item>
|
|
<el-form-item label="时间" prop="date_range">
|
<el-date-picker
|
v-model="meeting.date_range"
|
type="datetimerange"
|
range-separator="到"
|
start-placeholder="开始时间"
|
end-placeholder="结束时间"
|
format="YYYY-MM-DD HH:mm:ss"
|
date-format="MMM DD, YYYY"
|
time-format="HH:mm"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
/>
|
</el-form-item>
|
|
<el-form-item label="参会人员" prop="user_ids">
|
<el-select v-model="meeting.user_ids" placeholder="参会人员" clearable filterable multiple>
|
<el-option v-for="item in userList" :key="item.id" :label="item.nickname" :value="item.id" />
|
</el-select>
|
</el-form-item>
|
|
<el-form-item label="会议类型" prop="meeting_type">
|
<el-select
|
v-model="meeting.meeting_type"
|
placeholder="会议类型"
|
clearable
|
filterable
|
@change="handlerMeetingTypeChange"
|
>
|
<el-option v-for="item in meetingTypeList" :key="item.value" :label="item.label" :value="item.value" />
|
</el-select>
|
</el-form-item>
|
|
<el-form-item label="会议描述" prop="meeting_content" v-if="meeting.meeting_type == 'xmhy'">
|
<div class="lin-wrap">
|
<tinymce @change="handleContentChange" :defaultContent="meeting.meeting_content" />
|
</div>
|
</el-form-item>
|
|
<el-form-item label="商务部分" v-if="meeting.meeting_type == 'mrzh' && editId">
|
<div style="width: 100%">
|
<el-button type="primary" @click="addBussinessDaily">新增</el-button>
|
|
<el-table :data="bussinessDailyData" height="250">
|
<el-table-column prop="number" label="序号" fixed="left" width="60">
|
<template #default="scope">
|
{{ scope.$index + 1 }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="project_name" label="项目名称" fixed="left" width="200" />
|
<el-table-column prop="business_content" label="内容" width="300">
|
<template #default="scope">
|
<div v-html="scope.row.business_content"></div>
|
</template>
|
</el-table-column>
|
<el-table-column prop="implement_time" label="实施时间段" width="200">
|
<template #default="scope">
|
{{ getFormatDateYYYYMMDD(scope.row.business_start_time) }} ~
|
{{ getFormatDateYYYYMMDD(scope.row.business_end_time) }}
|
</template>
|
</el-table-column>
|
|
<el-table-column prop="implement_time" label="甘特图" width="200">
|
<template #default="scope">
|
<el-image
|
v-for="(item, index) in scope.row.gante_img_list"
|
:key="index"
|
style="width: 50px; height: 50px"
|
:src="item.display"
|
:preview-teleported="true"
|
:preview-src-list="handleImgList(item)"
|
>
|
</el-image>
|
</template>
|
</el-table-column>
|
|
<!-- <el-table-column prop="user_dolist" label="负责人" width="200">
|
<template #default="scope">
|
<el-tag v-for="user in scope.row.user_dolist" :key="user.id" type="primary">
|
{{ user.nickname }}
|
</el-tag>
|
</template>
|
</el-table-column> -->
|
<el-table-column prop="business_user_names" label="负责人" width="200"></el-table-column>
|
<el-table-column prop="remark" label="备注" width="300" />
|
<el-table-column prop="" label="操作栏" fixed="right" width="160">
|
<template #default="scope">
|
<!-- <el-link class="operationBtn" type="primary" @click="handleBusinessDailyDetail(scope.row)">详情</el-link> -->
|
<el-link class="operationBtn" type="primary" @click="handleBusinessDailyEdit(scope.row)"
|
>编辑</el-link
|
>
|
<el-link class="operationBtn" type="primary" @click="handleBusinessDailyDel(scope.row)"
|
>删除</el-link
|
>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</el-form-item>
|
|
<el-form-item label="提取日期" v-if="meeting.meeting_type == 'mrzh' && editId">
|
<div style="display: inline; width: 100%">
|
<el-select
|
v-model="meeting.daily_date_list"
|
style="width: 90%"
|
@change="getDatDaily()"
|
placeholder="请选择提取日期"
|
clearable
|
filterable
|
multiple
|
>
|
<el-option v-for="date in dates" :key="date" :label="date" :value="date" />
|
</el-select>
|
<el-link
|
style="margin-left: 10px"
|
class="operationBtn"
|
type="primary"
|
@click="getDeveloperDailyByDates()"
|
>重新加载</el-link
|
>
|
</div>
|
</el-form-item>
|
|
<el-form-item
|
label="项目部分"
|
v-if="meeting.meeting_type == 'mrzh' && editId && dailyUserDailyData.length > 0"
|
>
|
<div
|
style="width: 100%; margin-top: 20px"
|
v-for="dateUserDaily in dailyUserDailyData"
|
:key="dateUserDaily.date"
|
>
|
<el-text v-if="dateUserDaily.users_daily_list.length > 0" class="mx-1 dateTitle" size="large">{{
|
dateUserDaily.date
|
}}</el-text>
|
<div style="width: 100%" v-for="daily in dateUserDaily.users_daily_list" :key="daily.user_id">
|
<el-text v-if="daily.project_daily_bolist.length > 0" class="mx-1" size="large">{{
|
daily.name
|
}}</el-text>
|
<el-table
|
v-if="daily.project_daily_bolist.length > 0"
|
:data="daily.project_daily_bolist"
|
height="250"
|
>
|
<el-table-column prop="number" label="序号" fixed="left" width="60">
|
<template #default="scope">
|
{{ scope.$index + 1 }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="project_name2" label="项目名称" fixed="left" width="200" />
|
<el-table-column prop="daily_content" label="内容" width="300" />
|
<!-- <el-table-column prop="daily_date" label="计划时间" width="120" /> -->
|
<el-table-column prop="estimated_hours" label="计划时间" width="120" />
|
<!-- <el-table-column prop="daily_process_state_name" label="进度状态" width="120" /> -->
|
<el-table-column prop="daily_process_state_name" label="进度百分比" width="120">
|
<template #default="scope">
|
<el-tag type="primary" v-if="scope.row.daily_process_percent"
|
>{{ scope.row.daily_process_percent }}%</el-tag
|
>
|
</template>
|
</el-table-column>
|
<el-table-column prop="daily_process_remark" label="进度备注" width="300" />
|
<el-table-column prop="" label="操作栏" fixed="right" width="120">
|
<template #default="scope">
|
<el-link class="operationBtn" type="primary" @click="handleProcess(scope.row)">进度</el-link>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</div>
|
</el-form-item>
|
|
<el-form-item class="submit">
|
<el-button type="primary" @click="submitForm">保 存</el-button>
|
<!-- <el-button @click="resetForm">重 置</el-button> -->
|
</el-form-item>
|
</el-form>
|
</el-col>
|
</el-row>
|
</div>
|
|
<el-drawer v-model="businessDailyDrawer" :before-close="handleItemClose" size="60%">
|
<!-- <template #header>
|
<h4>商务日志</h4>
|
</template> -->
|
<!-- <div class="wrap">
|
<business-daily-add></business-daily-add>
|
</div> -->
|
<business-daily-add
|
@editClose="businessEditClose"
|
:meetingId="meeting.id"
|
:editId="businessEditId"
|
:key="uniKey"
|
></business-daily-add>
|
<!-- <template #footer>
|
<div style="flex: auto">
|
<el-button @click="cancelClick">cancel</el-button>
|
<el-button type="primary" @click="confirmClick">confirm</el-button>
|
</div>
|
</template> -->
|
</el-drawer>
|
|
<!-- 工时确认 -->
|
<el-drawer v-model="processdrawer" :before-close="handleItemClose">
|
<template #header>
|
<h4>开发进度</h4>
|
</template>
|
<div class="wrap">
|
<el-row>
|
<el-col :lg="16" :md="20" :sm="24" :xs="24">
|
<el-form
|
:model="daily"
|
status-icon
|
ref="processForm"
|
label-width="100px"
|
@submit.prevent
|
:rules="processRules"
|
>
|
<!-- <el-form-item label="进度状态" prop="daily_process_state">
|
<el-select v-model="daily.daily_process_state" placeholder="请选择进度状态" clearable filterable>
|
<el-option
|
v-for="item in dailyProcessStateList"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item> -->
|
<el-form-item label="进度百分比" prop="daily_process_percent">
|
<el-slider v-model="daily.daily_process_percent" show-input size="small" />
|
<!-- <el-slider v-model="daily.daily_process_percent" size="small" /> -->
|
</el-form-item>
|
<el-form-item label="进度备注" prop="daily_process_remark">
|
<el-input
|
type="textarea"
|
:autosize="{ minRows: 4, maxRows: 8 }"
|
placeholder="请输入备注"
|
v-model="daily.daily_process_remark"
|
></el-input>
|
</el-form-item>
|
<el-form-item class="submit">
|
<el-button type="primary" @click="submitFormProcess">保 存</el-button>
|
<el-button @click="resetFormProcess">重 置</el-button>
|
</el-form-item>
|
</el-form>
|
</el-col>
|
</el-row>
|
</div>
|
<!-- <template #default>
|
<div>
|
<el-radio v-model="radio1" label="Option 1" size="large"
|
>Option 1</el-radio
|
>
|
<el-radio v-model="radio1" label="Option 2" size="large"
|
>Option 2</el-radio
|
>
|
</div>
|
</template> -->
|
<template #footer>
|
<div style="flex: auto">
|
<!-- <el-button @click="cancelClick">cancel</el-button>
|
<el-button type="primary" @click="confirmClick">confirm</el-button> -->
|
</div>
|
</template>
|
</el-drawer>
|
</div>
|
</template>
|
|
<script>
|
import { reactive, ref, onMounted, watch } from 'vue'
|
import { ElMessageBox, ElMessage } from 'element-plus'
|
import ProjectInfo from '@/model/projectInfo'
|
import ProjectDaily from '@/model/projectDaily'
|
import SysDictItemModel from '@/model/sysDictItem'
|
import Meeting from '@/model/meeting'
|
import BusinessDaily from '@/model/businessDaily'
|
import Tinymce from '@/component/base/tinymce'
|
import dayjs from 'dayjs'
|
import { debounce } from 'lodash'
|
import businessDailyAdd from '@/view/businessDaily/business-daily-add'
|
|
export default {
|
components: {
|
Tinymce,
|
businessDailyAdd,
|
},
|
props: {
|
editId: {
|
type: String,
|
default: null,
|
},
|
},
|
setup(props, context) {
|
const uniKey = ref(0)
|
|
const editId = ref('')
|
editId.value = props.editId
|
|
const businessEditId = ref('')
|
|
// 防抖函数,避免动态表格数据变化时产生的抖动
|
const resizeObserver = window.ResizeObserver
|
|
window.ResizeObserver = class extends resizeObserver {
|
constructor(callback) {
|
const debouncedCallback = debounce(callback, 100)
|
super(debouncedCallback)
|
}
|
}
|
|
const form = ref(null)
|
const processForm = ref(null)
|
const loading = ref(false)
|
const content = ref('')
|
const meeting = reactive({
|
id: '',
|
meeting_title: '',
|
meeting_type: '',
|
user_ids: [],
|
date_range: [],
|
meeting_start_time: '',
|
meeting_end_time: '',
|
remark: '',
|
meeting_date: `${dayjs().format('YYYY-MM-DD')} 00:00:00`,
|
meeting_content: '',
|
daily_date_list: [],
|
})
|
|
const userList = ref([])
|
const meetingTypeList = ref([])
|
const dailyProcessStateList = ref([])
|
|
// 商务部分
|
const businessData = ref([])
|
const bussinessDailyData = ref([])
|
|
const listAssign = (a, b) => Object.keys(a).forEach(key => {
|
a[key] = b[key] || a[key]
|
})
|
|
/**
|
* 表单规则验证
|
*/
|
const { xmhyRules, mrzhRules, processRules } = getRules()
|
|
onMounted(() => {
|
// 编辑操作初始化
|
if (props.editId) {
|
initInfo()
|
}
|
|
loadDictDitems()
|
// 初始化日志日期
|
initSelectedDate(props.editId)
|
})
|
|
// 根据字典类型查询字典
|
const loadDictDitems = async () => {
|
// if (props.editId) {
|
// await getProjectInfo()
|
|
// }
|
|
// 获取所有用户信息
|
userList.value = await ProjectDaily.getAllUsers()
|
// 获取会议类型字典
|
meetingTypeList.value = await SysDictItemModel.getSysDictItemListByType('meeting_type')
|
dailyProcessStateList.value = await SysDictItemModel.getSysDictItemListByType('daily_process_state')
|
}
|
|
const initInfo = async () => {
|
const res = await Meeting.getMeeting(props.editId)
|
listAssign(meeting, res)
|
const tmp_range = [res.meeting_start_time, res.meeting_end_time]
|
meeting.date_range = tmp_range
|
// 加载商务日志信息
|
await getBusinessDailyByMeetingId()
|
// 加载项目日志信息
|
await getDeveloperDailyByDates()
|
}
|
|
// 重置表单
|
const resetForm = () => {
|
form.value.resetFields()
|
}
|
|
const submitForm = async formName => {
|
form.value.validate(async valid => {
|
meeting.meeting_start_time = meeting.date_range[0]
|
meeting.meeting_end_time = meeting.date_range[1]
|
if (valid) {
|
let res = {}
|
if (props.editId) {
|
res = await Meeting.editMeeting(props.editId, meeting)
|
context.emit('editClose')
|
} else {
|
res = await Meeting.createMeeting(meeting)
|
if (res) {
|
props.editId = res.id
|
editId.value = res.id
|
meeting.id = res.id
|
// 获取当前会议的商务日志
|
getBusinessDailyByMeetingId()
|
// 提取人员会议,商务部分自己填写,开发部分提取开发人员的信息,根据人员分组里面是开发的人
|
getDeveloperDailyByDates()
|
}
|
// resetForm(formName)
|
}
|
ElMessage.success('保存成功!')
|
if (res.code < window.MAX_SUCCESS_CODE) {
|
ElMessage.success(`${res.message}`)
|
}
|
} else {
|
console.error('error submit!!')
|
ElMessage.error('请将信息填写完整')
|
}
|
})
|
}
|
|
const submitFormProcess = () => {
|
processForm.value.validate(async valid => {
|
if (valid) {
|
let res = {}
|
if (daily.value.id) {
|
res = await Meeting.editMeetingProcess(daily.value.id, daily.value)
|
// context.emit('editClose')
|
// 提取人员会议,商务部分自己填写,开发部分提取开发人员的信息,根据人员分组里面是开发的人
|
getDeveloperDailyByDates()
|
resetFormProcess()
|
processdrawer.value = false
|
}
|
if (res.code < window.MAX_SUCCESS_CODE) {
|
ElMessage.success(`${res.message}`)
|
}
|
} else {
|
console.error('error submit!!')
|
ElMessage.error('请将信息填写完整')
|
}
|
})
|
}
|
|
const resetFormProcess = () => {
|
processForm.value.resetFields()
|
daily.value.daily_process_state = ''
|
daily.value.daily_process_remark = ''
|
daily.value.daily_process_percent = 0
|
// processdrawer.value=false
|
}
|
|
const back = () => {
|
context.emit('editClose')
|
}
|
|
const handleContentChange = val => {
|
meeting.content = val
|
meeting.meeting_content = val
|
}
|
|
// 会议类型发生变化
|
const handlerMeetingTypeChange = async val => {
|
switch (val) {
|
// 每日早会
|
case 'mrzh':
|
// 查看是否有ID,如果没有的话,则先保存当前的会议信息
|
if (props.editId == '') {
|
// 提交保存当前会议
|
submitForm()
|
}
|
|
break
|
// 项目会议
|
case 'xmhy':
|
businessData.value = []
|
break
|
default:
|
businessData.value = []
|
break
|
}
|
}
|
|
// 商务日志部分
|
const getBusinessDailyByMeetingId = async () => {
|
bussinessDailyData.value = await Meeting.getBusinessDailyByMeetingId({ meeting_id: meeting.id })
|
}
|
|
const processdrawer = ref(false)
|
const daily = ref({
|
id: '',
|
daily_process_meeting_id: '',
|
daily_process_state: '',
|
daily_process_remark: '',
|
daily_process_percent: 0,
|
})
|
// 项目进度
|
const handleProcess = obj => {
|
processdrawer.value = true
|
daily.value.id = obj.id
|
daily.value.daily_process_meeting_id = meeting.id
|
daily.value.daily_process_state = obj.daily_process_state
|
daily.value.daily_process_remark = obj.daily_process_remark
|
daily.value.daily_process_percent = obj.daily_process_percent
|
}
|
|
const businessDailyDrawer = ref(false)
|
// 新增商务日志
|
const addBussinessDaily = () => {
|
uniKey.value++
|
businessEditId.value = ''
|
businessDailyDrawer.value = true
|
}
|
|
const businessEditClose = () => {
|
businessDailyDrawer.value = false
|
// 重新加载
|
getBusinessDailyByMeetingId()
|
}
|
|
// 商务日志详情
|
|
const handleBusinessDailyDetail = obj => {
|
businessEditId.value = obj.id
|
businessDailyDrawer.value = true
|
}
|
|
// 商务日志编辑
|
const handleBusinessDailyEdit = obj => {
|
uniKey.value++
|
businessEditId.value = obj.id
|
businessDailyDrawer.value = true
|
}
|
|
// 商务日志删除
|
|
const handleBusinessDailyDel = async obj => {
|
// 删除操作
|
ElMessageBox.confirm('此操作将永久删除该记录, 是否继续?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning',
|
})
|
.then(async () => {
|
const res = await BusinessDaily.deleteBusinessDaily(obj.id)
|
if (res.code < window.MAX_SUCCESS_CODE) {
|
await getBusinessDailyByMeetingId()
|
ElMessage.success(`${res.message}`)
|
}
|
})
|
.catch(() => {
|
// 用户点击取消按钮时执行的操作
|
// 可以选择不做任何事情,也可以显示取消消息
|
// ElMessage.info('操作已取消'); // 如果需要显示取消消息,可以取消注释
|
})
|
}
|
|
const handleItemClose = () => {
|
processdrawer.value = false
|
businessDailyDrawer.value = false
|
}
|
|
const getFormatDateYYYYMMDD = date => dayjs(date).format('YYYY-MM-DD')
|
|
// 日期选择框
|
const dates = ref([])
|
|
const generateDates = () => {
|
const datesArray = []
|
const today = new Date()
|
for (let i = 0; i < 30; i++) {
|
const date = new Date(today)
|
date.setDate(today.getDate() - i)
|
const formattedDate = date.toISOString().split('T')[0] // 格式化日期为 YYYY-MM-DD
|
datesArray.push(formattedDate)
|
}
|
return datesArray
|
}
|
|
dates.value = generateDates()
|
|
const getDatDaily = () => {
|
getDeveloperDailyByDates()
|
}
|
|
// 项目日志
|
const dailyUserDailyData = ref([])
|
// 根据日志日期提取日志
|
const getDeveloperDailyByDates = async val => {
|
dailyUserDailyData.value = []
|
const tmpDailyDataList = meeting.daily_date_list.slice().reverse()
|
dailyUserDailyData.value = await Meeting.getDeveloperDailyByDates({
|
meeting_id: meeting.id,
|
daily_date_list: tmpDailyDataList,
|
})
|
uniKey.value++
|
}
|
|
// 获取当前的日期,如果是新增的情况下获取日期的数组的前两个,如果是编辑的话获取数据库里面找process是当天的
|
const initSelectedDate = async val => {
|
if (!props.editId) {
|
// 新增
|
const tmp = generateDates()
|
meeting.daily_date_list = tmp.slice(0, 2)
|
} else {
|
// 编辑
|
meeting.daily_date_list = await Meeting.getDailyDateByMeetingId({ meeting_id: props.editId })
|
}
|
|
// 根据日期提取
|
getDeveloperDailyByDates()
|
}
|
|
const handleImgList = item => [item.display]
|
|
return {
|
back,
|
meeting,
|
form,
|
xmhyRules,
|
mrzhRules,
|
processRules,
|
resetForm,
|
submitForm,
|
|
content,
|
handleContentChange,
|
handlerMeetingTypeChange,
|
userList,
|
meetingTypeList,
|
dailyProcessStateList,
|
|
// 商务部分数据
|
businessData,
|
bussinessDailyData,
|
processdrawer,
|
businessDailyDrawer,
|
handleProcess,
|
daily,
|
submitFormProcess,
|
resetFormProcess,
|
processForm,
|
|
editId,
|
addBussinessDaily,
|
|
businessEditId,
|
businessEditClose,
|
|
// 商务日志部分
|
handleBusinessDailyDetail,
|
handleBusinessDailyEdit,
|
handleBusinessDailyDel,
|
uniKey,
|
|
getFormatDateYYYYMMDD,
|
dates,
|
|
handleItemClose,
|
getDatDaily,
|
getDeveloperDailyByDates,
|
dailyUserDailyData,
|
initSelectedDate,
|
handleImgList,
|
}
|
},
|
}
|
|
/**
|
* 表单验证规则
|
*/
|
function getRules() {
|
/**
|
* 验证回调函数
|
*/
|
const checkInfo = (rule, value, callback) => {
|
if (!value) {
|
callback(new Error('信息不能为空'))
|
}
|
callback()
|
}
|
const xmhyRules = {
|
meeting_title: [{ message: '请输入会议纪要名称', trigger: 'blur', required: true }],
|
meeting_date: [{ message: '请输入会议纪要日期', trigger: 'blur', required: true }],
|
meeting_type: [{ message: '请输入会议类型', trigger: 'blur', required: true }],
|
date_range: [{ message: '请输入会议开始时间和结束时间', trigger: 'blur', required: true }],
|
user_ids: [{ message: '请选择参会人员', trigger: 'blur', required: true }],
|
meeting_content: [{ message: '请输入会议纪要描述', trigger: 'blur', required: true }],
|
}
|
|
const mrzhRules = {
|
meeting_title: [{ message: '请输入会议纪要名称', trigger: 'blur', required: true }],
|
meeting_date: [{ message: '请输入会议纪要日期', trigger: 'blur', required: true }],
|
meeting_type: [{ message: '请输入会议类型', trigger: 'blur', required: true }],
|
date_range: [{ message: '请输入会议开始时间和结束时间', trigger: 'blur', required: true }],
|
user_ids: [{ message: '请选择参会人员', trigger: 'blur', required: true }],
|
// meeting_content: [{ message:'请输入会议纪要描述', trigger: 'blur', required: true }],
|
}
|
|
const processRules = {
|
// daily_process_state: [{ message: '请选择进度状态', trigger: 'blur', required: true }],
|
daily_process_remark: [{ message: '请输入备注', trigger: 'blur', required: false }],
|
daily_process_percent: [{ message: '请选择进度百分比', trigger: 'blur', required: true }],
|
}
|
|
return { xmhyRules, mrzhRules, processRules }
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.container {
|
.title {
|
height: 59px;
|
line-height: 59px;
|
color: $parent-title-color;
|
font-size: 16px;
|
font-weight: 500;
|
text-indent: 40px;
|
border-bottom: 1px solid #dae1ec;
|
|
.back {
|
float: right;
|
margin-right: 40px;
|
cursor: pointer;
|
}
|
}
|
|
.wrap {
|
padding: 20px;
|
}
|
|
.submit {
|
float: left;
|
}
|
.operationBtn {
|
margin-left: 5px;
|
}
|
|
.dateTitle {
|
color: $parent-title-color;
|
}
|
}
|
</style>
|