1156 lines
34 KiB
Vue
1156 lines
34 KiB
Vue
|
|
<template>
|
|||
|
|
<ai-detail class="addThreeMeeting detail-content details-page no-content-border">
|
|||
|
|
<ai-title slot="title" title="补录三会一课" isShowBack @onBackClick="$parent.goBack()" isShowBottomBorder/>
|
|||
|
|
<template #content>
|
|||
|
|
<ai-card title="基本信息">
|
|||
|
|
<template #content>
|
|||
|
|
<el-form :model="form.basic" label-width="100px" ref="basicForm" :rules="fromRules">
|
|||
|
|
<div class="areaList" style="width:100%">
|
|||
|
|
<el-form-item label="会议分类:" style="width:100%;" prop="meetingClassification">
|
|||
|
|
<el-checkbox-group v-model="form.basic.meetingClassification">
|
|||
|
|
<el-checkbox
|
|||
|
|
:label="op.dictValue"
|
|||
|
|
v-for="(op,j) in dict.getDict('meetingClassification')"
|
|||
|
|
:key="j"
|
|||
|
|
>{{ op.dictName }}
|
|||
|
|
</el-checkbox>
|
|||
|
|
</el-checkbox-group>
|
|||
|
|
</el-form-item>
|
|||
|
|
</div>
|
|||
|
|
<div class="el-form-p">
|
|||
|
|
<el-form-item prop="meetingAgenda" label="会议名称:" ref="fromTitle">
|
|||
|
|
<el-input
|
|||
|
|
v-model="form.basic.meetingAgenda"
|
|||
|
|
size="small"
|
|||
|
|
placeholder="限30字"
|
|||
|
|
clearable
|
|||
|
|
:maxLength="30"
|
|||
|
|
></el-input>
|
|||
|
|
</el-form-item>
|
|||
|
|
<div class="el-form-p" style="margin-top:5px">
|
|||
|
|
<el-form-item
|
|||
|
|
prop="appThreeMeetingOrganizationList"
|
|||
|
|
label="与会组织:"
|
|||
|
|
ref="appThreeMeetingOrganizationList"
|
|||
|
|
>
|
|||
|
|
<div class="organ" @click="showDialogVisible()">
|
|||
|
|
<span v-if="form.basic.appThreeMeetingOrganizationList.length">
|
|||
|
|
<span
|
|||
|
|
v-for="(item,i) in form.basic.appThreeMeetingOrganizationList"
|
|||
|
|
:key="i"
|
|||
|
|
class="organzation">
|
|||
|
|
{{ item.name || item.organizationName }}
|
|||
|
|
<span
|
|||
|
|
class="iconfont iconOverrule"
|
|||
|
|
@click.stop="delate(i)"
|
|||
|
|
></span>
|
|||
|
|
</span>
|
|||
|
|
</span>
|
|||
|
|
<span v-else>请选择</span>
|
|||
|
|
</div>
|
|||
|
|
</el-form-item>
|
|||
|
|
</div>
|
|||
|
|
<el-form-item prop="isOnline" label="举办方式:">
|
|||
|
|
<el-radio label="1" v-model="form.basic.isOnline">线上举办</el-radio>
|
|||
|
|
<el-radio label="0" v-model="form.basic.isOnline">线下举办</el-radio>
|
|||
|
|
</el-form-item>
|
|||
|
|
<el-form-item prop="meetingAddress" label="会议地点:" v-if="form.basic.isOnline==0">
|
|||
|
|
<el-input
|
|||
|
|
v-model="form.basic.meetingAddress"
|
|||
|
|
size="small"
|
|||
|
|
placeholder="限60字"
|
|||
|
|
clearable
|
|||
|
|
:maxLength="60"
|
|||
|
|
></el-input>
|
|||
|
|
</el-form-item>
|
|||
|
|
<el-row type="flex" justify="space-between">
|
|||
|
|
<el-form-item prop="startTime" label="开始时间:" ref="startTime">
|
|||
|
|
<el-date-picker @change="dateChage()"
|
|||
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|||
|
|
size="small"
|
|||
|
|
type="datetime"
|
|||
|
|
v-model="form.basic.startTime"
|
|||
|
|
placeholder="请选择..."
|
|||
|
|
></el-date-picker>
|
|||
|
|
</el-form-item>
|
|||
|
|
<el-form-item prop="endTime" label="结束时间:" ref="endTime">
|
|||
|
|
<el-date-picker @change="dateChage()"
|
|||
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|||
|
|
size="small"
|
|||
|
|
type="datetime"
|
|||
|
|
v-model="form.basic.endTime"
|
|||
|
|
placeholder="请选择..."
|
|||
|
|
:disabled="!Boolean(form.basic.startTime)"
|
|||
|
|
></el-date-picker>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-row>
|
|||
|
|
<el-form-item label="会议说明:" prop="meetingDescription" calss="uedtor" style="margin-top: 20px;">
|
|||
|
|
<ai-editor v-model="form.basic.meetingDescription" :instance="instance" :limit="3000"/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</div>
|
|||
|
|
</el-form>
|
|||
|
|
<el-form label-width="100px" ref="fileForm" :rules="fromRules">
|
|||
|
|
<div class="el-form-p">
|
|||
|
|
<el-form-item label="附件:">
|
|||
|
|
<ai-uploader :instance="instance" v-model="fileList" fileType="file" :limit="10"></ai-uploader>
|
|||
|
|
</el-form-item>
|
|||
|
|
</div>
|
|||
|
|
</el-form>
|
|||
|
|
</template>
|
|||
|
|
</ai-card>
|
|||
|
|
<ai-card title="人员设置">
|
|||
|
|
<template #content>
|
|||
|
|
<el-form
|
|||
|
|
:model="form.meetingUser"
|
|||
|
|
label-width="100px"
|
|||
|
|
ref="meetingUserForm"
|
|||
|
|
:rules="fromRules">
|
|||
|
|
|
|||
|
|
<div class="person">
|
|||
|
|
<el-form-item label="与会人员:" prop="participantList" label-width="106px"
|
|||
|
|
style="width:100%;margin-bottom: 10px;"
|
|||
|
|
ref="participantList">
|
|||
|
|
<div class="select-person" v-for="(item,index) in form.meetingUser.participantList"
|
|||
|
|
:key="item+index" style="margin-bottom: 34px;">
|
|||
|
|
<div class="person-pictrue" style="cursor: pointer;" @click="selectHost(index)">
|
|||
|
|
<img :src="item.avatarUrl" v-if="item.avatarUrl">
|
|||
|
|
<div
|
|||
|
|
style="overflow: hidden;width:40px;white-space: nowrap;background-color:#2266FF;border-radius:50%;"
|
|||
|
|
v-else>{{ item.name }}
|
|||
|
|
</div>
|
|||
|
|
<span class="host">主持人</span>
|
|||
|
|
<span class="iconfont del-icon iconOverrule"
|
|||
|
|
@click.stop="deletePerson(index)"></span>
|
|||
|
|
</div>
|
|||
|
|
<span class="person-name">{{ item.name }}</span>
|
|||
|
|
<span style="position: absolute;left: 0;top: 60px;color: #2266FF;" v-if="item.isHost">
|
|||
|
|
<span class="iconfont iconzxjyzdls" style="color: #8899BB;"></span>
|
|||
|
|
<span style="font-size: 12px;">主持人</span>
|
|||
|
|
</span>
|
|||
|
|
</div>
|
|||
|
|
<ai-party-member
|
|||
|
|
:instance="instance"
|
|||
|
|
customCliker
|
|||
|
|
dialogTitle="添加参与人"
|
|||
|
|
v-model="form.meetingUser.participantList"
|
|||
|
|
:area-id="areaId"
|
|||
|
|
:disable="participantDisable"
|
|||
|
|
customOrg
|
|||
|
|
:partyOrgList="form.basic.appThreeMeetingOrganizationList"
|
|||
|
|
@change="handleSelectParty">
|
|||
|
|
<div class="select-person add-person">
|
|||
|
|
<div class="add-icon"><span class="el-icon-plus icon-add"></span></div>
|
|||
|
|
<span class="person-name">选择</span>
|
|||
|
|
</div>
|
|||
|
|
</ai-party-member>
|
|||
|
|
|
|||
|
|
</el-form-item>
|
|||
|
|
<span class="tips">*从党员用户中选择,必须设置一名主持人(点击与会人员头像设置或变更主持人)</span>
|
|||
|
|
</div>
|
|||
|
|
<div class="person">
|
|||
|
|
<el-form-item label="纪要负责人:" label-width="106px"
|
|||
|
|
style="width:100%;margin-top: 20px;margin-bottom: 0;"
|
|||
|
|
ref="recorderList">
|
|||
|
|
<ai-person-select :customClicker="true" customRightText :instance="instance"
|
|||
|
|
url="/admin/user/pageForWeb" headerTitle="人员列表" dialogTitle="选择"
|
|||
|
|
@selectPerson="changeRecorderList">
|
|||
|
|
<template v-slot:option="{ item }">
|
|||
|
|
<span class="iconfont iconProlife">{{ item.name }}</span>
|
|||
|
|
<ai-id mode="show" :show-eyes="false" :value="item.idNumber"/>
|
|||
|
|
</template>
|
|||
|
|
</ai-person-select>
|
|||
|
|
</el-form-item>
|
|||
|
|
<span class="tips">*从系统用户中选择,拥有签到管理权限</span>
|
|||
|
|
</div>
|
|||
|
|
</el-form>
|
|||
|
|
</template>
|
|||
|
|
</ai-card>
|
|||
|
|
<ai-card title="会议纪要">
|
|||
|
|
<template #content>
|
|||
|
|
<el-form
|
|||
|
|
:model="form.summary"
|
|||
|
|
label-width="100px"
|
|||
|
|
ref="summaryForm"
|
|||
|
|
:rules="summaryRules"
|
|||
|
|
>
|
|||
|
|
<div class="el-form-p">
|
|||
|
|
<el-form-item prop="content" label="纪要内容:">
|
|||
|
|
<el-input
|
|||
|
|
type="textarea"
|
|||
|
|
:rows="6"
|
|||
|
|
placeholder="请输入内容"
|
|||
|
|
v-model="form.summary.content"
|
|||
|
|
></el-input>
|
|||
|
|
</el-form-item>
|
|||
|
|
</div>
|
|||
|
|
<div class="el-form-p">
|
|||
|
|
<el-form-item label="图片附件:">
|
|||
|
|
<el-upload
|
|||
|
|
class="upload-demo upload-list"
|
|||
|
|
ref="upload"
|
|||
|
|
multiple
|
|||
|
|
action
|
|||
|
|
list-type="picture-card"
|
|||
|
|
:file-list="form.summary.images"
|
|||
|
|
:http-request="uploadFilePhoto"
|
|||
|
|
:on-remove="handleRemoveFilePhoto"
|
|||
|
|
:on-change="fileChangePhoto"
|
|||
|
|
accept=".jpeg, .jpg, .png">
|
|||
|
|
<div class="upload-img">
|
|||
|
|
<div class="iconfont iconPhoto"></div>
|
|||
|
|
<div class="upload-text">上传照片</div>
|
|||
|
|
</div>
|
|||
|
|
</el-upload>
|
|||
|
|
<div style="color: #999;font-size: 12px">最多上传50张图片,单个文件最大10MB,支持jpg、jpeg、png格式</div>
|
|||
|
|
</el-form-item>
|
|||
|
|
</div>
|
|||
|
|
</el-form>
|
|||
|
|
</template>
|
|||
|
|
</ai-card>
|
|||
|
|
</template>
|
|||
|
|
<template #footer>
|
|||
|
|
<el-button size="small" @click="toList()">取消</el-button>
|
|||
|
|
<el-button type="primary" size="small" @click="confirm()">保存</el-button>
|
|||
|
|
</template>
|
|||
|
|
<el-dialog width="644px" title="选择党组织" :visible.sync="dialogVisible" class="select-party">
|
|||
|
|
<div>
|
|||
|
|
<el-row type="flex" justify="space-between">
|
|||
|
|
<el-row class="search-panel" type="flex" justify="space-between">
|
|||
|
|
<div class="add-item" style="padding-bottom:3px;overflow-x: hidden">
|
|||
|
|
<p class="add_top">
|
|||
|
|
<span>党组织</span>
|
|||
|
|
<el-input
|
|||
|
|
placeholder="党组织名称"
|
|||
|
|
size="small"
|
|||
|
|
style="width:166px;"
|
|||
|
|
clearable
|
|||
|
|
suffix-icon="el-icon-search"
|
|||
|
|
v-model="filterText"
|
|||
|
|
></el-input>
|
|||
|
|
</p>
|
|||
|
|
<div class="tree_list">
|
|||
|
|
<el-tree
|
|||
|
|
:data="treeData"
|
|||
|
|
show-checkbox
|
|||
|
|
node-key="id"
|
|||
|
|
ref="partyTree"
|
|||
|
|
:filter-node-method="filterNode"
|
|||
|
|
@check-change="handleCheckChange"
|
|||
|
|
@node-click="handleNodeClick"
|
|||
|
|
:highlight-current="true"
|
|||
|
|
:props="defaultProps"
|
|||
|
|
></el-tree>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</el-row>
|
|||
|
|
<div class="selected-people add-item">
|
|||
|
|
<p class="add_top">
|
|||
|
|
<span>已选择</span>
|
|||
|
|
<el-button icon="iconfont iconDelete" size="mini" @click="clearSelect()">清空</el-button>
|
|||
|
|
</p>
|
|||
|
|
<div class="add_tag" v-if="selectParty.length" style="width:100%;">
|
|||
|
|
<el-tag
|
|||
|
|
v-for="(item,i) in selectParty"
|
|||
|
|
:disable-transitions="true"
|
|||
|
|
:key="i"
|
|||
|
|
type="info"
|
|||
|
|
>
|
|||
|
|
{{ item.name }}
|
|||
|
|
<span
|
|||
|
|
class="iconfont iconOverrule icon-color89B"
|
|||
|
|
style="float: right;"
|
|||
|
|
@click.stop="cancelSelect(i)"
|
|||
|
|
></span>
|
|||
|
|
</el-tag>
|
|||
|
|
</div>
|
|||
|
|
<div
|
|||
|
|
class="add_tag"
|
|||
|
|
v-else
|
|||
|
|
style="display:flex;align-items:center;justify-content:center;width:100%;"
|
|||
|
|
>
|
|||
|
|
<span>暂无数据</span>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</el-row>
|
|||
|
|
</div>
|
|||
|
|
<div slot="footer" style="text-align: center;">
|
|||
|
|
<el-button
|
|||
|
|
style="width:92px"
|
|||
|
|
size="small"
|
|||
|
|
class="delete-btn"
|
|||
|
|
@click="dialogVisible=false"
|
|||
|
|
>取消
|
|||
|
|
</el-button>
|
|||
|
|
<el-button
|
|||
|
|
style="width:92px"
|
|||
|
|
size="small"
|
|||
|
|
type="primary"
|
|||
|
|
@click="dialogVisible=false,confirmSelect()"
|
|||
|
|
>确认
|
|||
|
|
</el-button>
|
|||
|
|
</div>
|
|||
|
|
</el-dialog>
|
|||
|
|
</ai-detail>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import {mapState} from "vuex";
|
|||
|
|
import moment from 'dayjs';
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
name: "supplement",
|
|||
|
|
props: {
|
|||
|
|
instance: Function,
|
|||
|
|
dict: Object,
|
|||
|
|
permissions: Function
|
|||
|
|
},
|
|||
|
|
computed: {
|
|||
|
|
isEdit() {
|
|||
|
|
return this.detail ? Boolean(this.detail.id) : false;
|
|||
|
|
},
|
|||
|
|
...mapState(["user"]),
|
|||
|
|
|
|||
|
|
participantDisable() {
|
|||
|
|
if (!this.form.meetingUser) return []
|
|||
|
|
|
|||
|
|
const list = [
|
|||
|
|
...this.form.meetingUser.recorderList,
|
|||
|
|
...this.form.meetingUser.hostList
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
return list || []
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
let endTimePass = (rule, value, callback) => {
|
|||
|
|
if (value) {
|
|||
|
|
if (
|
|||
|
|
moment(value).unix() - moment(this.form.basic.startTime).unix() > 0
|
|||
|
|
) {
|
|||
|
|
callback();
|
|||
|
|
} else {
|
|||
|
|
callback(new Error("结束时间要大于开始时间"));
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
callback(new Error("请填写结束时间"));
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
let startTimePass = (rule, value, callback) => {
|
|||
|
|
if (value) {
|
|||
|
|
callback();
|
|||
|
|
} else {
|
|||
|
|
callback(new Error("请填写开始时间"));
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
let meetingBeforePass = (rule, value, callback) => {
|
|||
|
|
if (value) {
|
|||
|
|
if (this.form.basic.meetingAfter) {
|
|||
|
|
callback();
|
|||
|
|
} else {
|
|||
|
|
callback(new Error("请填写签到时间"));
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
callback(new Error("请填写签到时间"));
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return {
|
|||
|
|
dictList: [
|
|||
|
|
"meetingClassification",
|
|||
|
|
"feminderMethod",
|
|||
|
|
"addSignMethod"
|
|||
|
|
],
|
|||
|
|
form: {
|
|||
|
|
basic: {
|
|||
|
|
editable: false,
|
|||
|
|
id: "",
|
|||
|
|
meetingClassification: [], //会议分类
|
|||
|
|
meetingAgenda: "",
|
|||
|
|
meetingAddress: "", //会议地址
|
|||
|
|
meetingDescription: "", //补充说明
|
|||
|
|
meetingBefore: "",
|
|||
|
|
meetingAfter: "",
|
|||
|
|
startTime: "", //开始时间
|
|||
|
|
endTime: "", //结束时间
|
|||
|
|
appThreeMeetingOrganizationList: [], //组织
|
|||
|
|
isOnline: "0"
|
|||
|
|
},
|
|||
|
|
file: {
|
|||
|
|
annex: [], //附件
|
|||
|
|
editable: false
|
|||
|
|
},
|
|||
|
|
meetingUser: {
|
|||
|
|
editable: false,
|
|||
|
|
hostList: [], //主持人
|
|||
|
|
recorderList: [], //记录人
|
|||
|
|
participantList: [] //参与人
|
|||
|
|
},
|
|||
|
|
summary: {
|
|||
|
|
createUserId: "",
|
|||
|
|
editable: false,
|
|||
|
|
content: "",
|
|||
|
|
images: [],
|
|||
|
|
meetingId: ""
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
signStart: "",
|
|||
|
|
signEnd: "",
|
|||
|
|
areaId: "",
|
|||
|
|
fromRules: {
|
|||
|
|
meetingClassification: [
|
|||
|
|
{required: true, message: "请选择会议分类", trigger: "change"}
|
|||
|
|
],
|
|||
|
|
meetingAgenda: [{required: true, message: "请输入会议标题", trigger: "change"}],
|
|||
|
|
isOnline: [{required: true, message: "请选择举办方式", trigger: "change"}],
|
|||
|
|
meetingAddress: [
|
|||
|
|
{required: true, message: "请输入会议地点", trigger: "change"}
|
|||
|
|
],
|
|||
|
|
meetingDescription: [
|
|||
|
|
{required: true, message: "请输入补充说明", trigger: "change"}
|
|||
|
|
],
|
|||
|
|
meetingBefore: [
|
|||
|
|
{required: true, validator: meetingBeforePass, trigger: "change"}
|
|||
|
|
],
|
|||
|
|
startTime: [
|
|||
|
|
{required: true, validator: startTimePass, trigger: "change"}
|
|||
|
|
],
|
|||
|
|
endTime: [
|
|||
|
|
{required: true, validator: endTimePass, trigger: "change"}
|
|||
|
|
],
|
|||
|
|
hostList: [
|
|||
|
|
{required: true, message: "请选择主持人", trigger: "change"}
|
|||
|
|
],
|
|||
|
|
recorderList: [
|
|||
|
|
{required: true, message: "请选择记录人", trigger: "change"}
|
|||
|
|
],
|
|||
|
|
participantList: [
|
|||
|
|
{required: true, message: "请选择参与人", trigger: "change"}
|
|||
|
|
],
|
|||
|
|
appThreeMeetingOrganizationList: [
|
|||
|
|
{required: true, message: "请选择党组织", trigger: "change"}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
summaryRules: {
|
|||
|
|
content: [{required: true, message: "请输入正文内容", trigger: "change"}],
|
|||
|
|
},
|
|||
|
|
defaultProps: {
|
|||
|
|
children: "children",
|
|||
|
|
label: "name"
|
|||
|
|
},
|
|||
|
|
treeData: [], //tree
|
|||
|
|
dialogVisible: false, //弹窗
|
|||
|
|
filterText: "", //tree模糊搜索
|
|||
|
|
selectParty: [], //选中的党组织
|
|||
|
|
fileList: [],
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
watch: {
|
|||
|
|
filterText(val) {
|
|||
|
|
this.$refs.partyTree.filter(val);
|
|||
|
|
},
|
|||
|
|
form: {
|
|||
|
|
handler(newVal) {
|
|||
|
|
if (newVal.basic.startTime && newVal.basic.meetingBefore) {
|
|||
|
|
let d = new Date(newVal.basic.startTime);
|
|||
|
|
let time = d.getTime();
|
|||
|
|
let min = Number(newVal.basic.meetingBefore) * 60000;
|
|||
|
|
let total = time - min;
|
|||
|
|
this.signStart = this.countTime(total);
|
|||
|
|
}
|
|||
|
|
if (newVal.basic.startTime && newVal.basic.meetingAfter) {
|
|||
|
|
let d = new Date(newVal.basic.startTime);
|
|||
|
|
let time = d.getTime();
|
|||
|
|
let min = Number(newVal.basic.meetingAfter) * 60000;
|
|||
|
|
let total = time + min;
|
|||
|
|
this.signEnd = this.countTime(total);
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
deep: true
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
deletePerson(index) {
|
|||
|
|
if (this.form.meetingUser.participantList[index].isHost) {
|
|||
|
|
this.form.meetingUser.participantList.map(e => {
|
|||
|
|
this.$set(e, "isHost", false);
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
this.form.meetingUser.participantList.splice(index, 1);
|
|||
|
|
},
|
|||
|
|
selectHost(index) {
|
|||
|
|
this.form.meetingUser.participantList.map(e => {
|
|||
|
|
e.isHost = false;
|
|||
|
|
})
|
|||
|
|
this.form.meetingUser.participantList[index].isHost = true;
|
|||
|
|
},
|
|||
|
|
toList() {
|
|||
|
|
this.$parent.goBack();
|
|||
|
|
},
|
|||
|
|
//开始时间,结束时间验证
|
|||
|
|
dateChage() {
|
|||
|
|
this.$refs.startTime.$emit("el.form.change");
|
|||
|
|
this.$refs.endTime.$emit("el.form.change");
|
|||
|
|
},
|
|||
|
|
// 上传照片
|
|||
|
|
uploadFilePhoto(file) {
|
|||
|
|
let isPng = file.file.type == "image/jpeg" ||
|
|||
|
|
file.file.type == "image/png" ||
|
|||
|
|
file.file.type == "image/jpg";
|
|||
|
|
|
|||
|
|
if (!isPng) {
|
|||
|
|
this.$message.warning("上传图片信息必须是jpeg/png/jpg格式!");
|
|||
|
|
for (let i = 0; i < this.form.summary.images.length; i++) {
|
|||
|
|
if (this.form.summary.images[i].uid == file.file.uid) {
|
|||
|
|
this.form.summary.images.splice(i, 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
const isLt10M = file.file.size / 1024 / 1024 < 10;
|
|||
|
|
if (!isLt10M) {
|
|||
|
|
this.$message.warning("图片大小不能超过 10MB!");
|
|||
|
|
for (let i = 0; i < this.form.summary.images.length; i++) {
|
|||
|
|
if (this.form.summary.images[i].uid == file.file.uid) {
|
|||
|
|
this.form.summary.images.splice(i, 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (this.form.summary.images.length > 50) {
|
|||
|
|
this.$message.error("图片信息不能超过50张");
|
|||
|
|
this.form.summary.images.map((item, index) => {
|
|||
|
|
if (item.uid == file.file.uid) {
|
|||
|
|
this.form.summary.images.splice(index, 1);
|
|||
|
|
}
|
|||
|
|
return this.form.summary.images;
|
|||
|
|
});
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
let formData = new FormData();
|
|||
|
|
formData.append("file", file.file);
|
|||
|
|
this.instance.post(`/admin/file/add`, formData).then(res => {
|
|||
|
|
if (res.msg == "success") {
|
|||
|
|
this.$message({message: "图片上传成功", type: "success"});
|
|||
|
|
let imgInfo = res.data[0].split(";");
|
|||
|
|
let img = {
|
|||
|
|
fileId: imgInfo[1],
|
|||
|
|
accessUrl: imgInfo[0]
|
|||
|
|
};
|
|||
|
|
this.form.summary.images.map((item, index) => {
|
|||
|
|
if (item.uid == file.file.uid) {
|
|||
|
|
this.form.summary.images[index].fileId = img.fileId;
|
|||
|
|
this.form.summary.images[index].accessUrl = img.accessUrl;
|
|||
|
|
this.form.summary.images[index].url = img.accessUrl;
|
|||
|
|
}
|
|||
|
|
return this.form.summary.images;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
handleRemoveFilePhoto(file, fileList) {
|
|||
|
|
this.form.summary.images = fileList;
|
|||
|
|
},
|
|||
|
|
fileChangePhoto(file, fileList) {
|
|||
|
|
this.form.summary.images = fileList;
|
|||
|
|
},
|
|||
|
|
//会议签到时间计算
|
|||
|
|
countTime(total) {
|
|||
|
|
let now = new Date(total);
|
|||
|
|
let y = now.getFullYear();
|
|||
|
|
let m = now.getMonth() + 1;
|
|||
|
|
m = m < 10 ? "0" + m : m;
|
|||
|
|
let da = now.getDate();
|
|||
|
|
da = da < 10 ? "0" + da : da;
|
|||
|
|
let h = now.getHours();
|
|||
|
|
h = h < 10 ? "0" + h : h;
|
|||
|
|
let minute = now.getMinutes();
|
|||
|
|
minute = minute < 10 ? "0" + minute : minute;
|
|||
|
|
let seconds = now.getSeconds();
|
|||
|
|
seconds = seconds < 10 ? "0" + seconds : seconds;
|
|||
|
|
return y + "-" + m + "-" + da + " " + h + ":" + minute + ":" + seconds;
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
//纪要负责人
|
|||
|
|
changeRecorderList(val) {
|
|||
|
|
if (val) {
|
|||
|
|
this.$set(val, "meetingUserRole", "1");
|
|||
|
|
this.$set(val, "userName", val.name);
|
|||
|
|
this.form.meetingUser.recorderList.splice(0, 1, val);
|
|||
|
|
} else {
|
|||
|
|
this.form.meetingUser.recorderList = [];
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
//与会人员
|
|||
|
|
handleSelectParty() {
|
|||
|
|
this.form.meetingUser.participantList.map(e => {
|
|||
|
|
e.meetingUserRole = "3";
|
|||
|
|
e.userName = e.name;
|
|||
|
|
this.$set(e, "isHost", false);
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
//保存提交表单验证
|
|||
|
|
confirm() {
|
|||
|
|
this.$refs.basicForm.validate(validate => {
|
|||
|
|
let flag = validate;
|
|||
|
|
for (let k in this.form) {
|
|||
|
|
if (this.$refs[k + "Form"])
|
|||
|
|
this.$refs[k + "Form"].validate(v => {
|
|||
|
|
flag = flag && v;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
if (flag) {
|
|||
|
|
this.addUpdate();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//新增
|
|||
|
|
addUpdate() {
|
|||
|
|
let hasHost = false;
|
|||
|
|
this.form.meetingUser.participantList.map(e => {
|
|||
|
|
if (e.isHost) {
|
|||
|
|
hasHost = true;
|
|||
|
|
this.form.meetingUser.hostList.push({
|
|||
|
|
...e,
|
|||
|
|
meetingUserRole: "0"
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
if (!hasHost) {
|
|||
|
|
return this.$message.error("请选择主持人");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//会议分类
|
|||
|
|
this.form.basic.meetingClassification = this.form.basic.meetingClassification.join(",");
|
|||
|
|
|
|||
|
|
//发布状态
|
|||
|
|
let postStatus = 0;
|
|||
|
|
|
|||
|
|
let appThreeMeetingUserList = [];
|
|||
|
|
let meetingList = [];
|
|||
|
|
|
|||
|
|
//选择人员
|
|||
|
|
meetingList = [
|
|||
|
|
...this.form.meetingUser.hostList,
|
|||
|
|
...this.form.meetingUser.recorderList,
|
|||
|
|
...this.form.meetingUser.participantList
|
|||
|
|
];
|
|||
|
|
meetingList.forEach(i => {
|
|||
|
|
appThreeMeetingUserList.push({
|
|||
|
|
meetingUserId: i.id,
|
|||
|
|
meetingUserName: i.userName,
|
|||
|
|
meetingUserRole: i.meetingUserRole,
|
|||
|
|
organizationId: i.partyOrgId,
|
|||
|
|
organizationName: i.partyOrgName
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// this.form.summary.images = JSON.stringify(this.form.summary.images);
|
|||
|
|
let imgs = this.form.summary.images.map(e => {
|
|||
|
|
return {
|
|||
|
|
url: e.url
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
this.instance
|
|||
|
|
.post(`/app/appthreemeetinginfo/makeup`, {
|
|||
|
|
...this.form.basic,
|
|||
|
|
...this.form.file,
|
|||
|
|
...this.form.meetingUser,
|
|||
|
|
...this.form.summary,
|
|||
|
|
annex: JSON.stringify(this.fileList),
|
|||
|
|
images: JSON.stringify(imgs),
|
|||
|
|
appThreeMeetingUserList,
|
|||
|
|
postStatus
|
|||
|
|
}).then(res => {
|
|||
|
|
if (res && res.code == 0) {
|
|||
|
|
this.$message.success("会议补录成功");
|
|||
|
|
this.$parent.goBack();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//显示树结构
|
|||
|
|
showDialogVisible() {
|
|||
|
|
this.dialogVisible = true;
|
|||
|
|
this.$nextTick(() => {
|
|||
|
|
this.$refs.partyTree.setCheckedNodes(
|
|||
|
|
this.form.basic.appThreeMeetingOrganizationList
|
|||
|
|
);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
// 查询所有党组织 树形结构
|
|||
|
|
searchSysAll() {
|
|||
|
|
this.instance
|
|||
|
|
.post("/admin/partyOrganization/queryAllChildren", null, {
|
|||
|
|
params: {id: this.user.info.organizationId}
|
|||
|
|
})
|
|||
|
|
.then(res => {
|
|||
|
|
if (res && res.code == 0) {
|
|||
|
|
res.data = res.data.map(a => {
|
|||
|
|
return {...a};
|
|||
|
|
});
|
|||
|
|
this.treeData = res.data.filter(
|
|||
|
|
e => e.id == this.user.info.organizationId
|
|||
|
|
);
|
|||
|
|
this.treeData.map(t => this.addChild(t, res.data));
|
|||
|
|
if (this.filterText) {
|
|||
|
|
this.$nextTick(() => {
|
|||
|
|
this.$refs.partyTree.filter(this.filterText);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//节点过滤/搜索
|
|||
|
|
filterNode(value, data) {
|
|||
|
|
if (!value) return true;
|
|||
|
|
return data.name.indexOf(value) !== -1;
|
|||
|
|
},
|
|||
|
|
//点击节点
|
|||
|
|
handleNodeClick() {
|
|||
|
|
},
|
|||
|
|
//选中的数据
|
|||
|
|
handleCheckChange() {
|
|||
|
|
this.selectParty = this.$refs.partyTree.getCheckedNodes();
|
|||
|
|
},
|
|||
|
|
//取消选择
|
|||
|
|
cancelSelect(index) {
|
|||
|
|
this.selectParty.splice(index, 1);
|
|||
|
|
this.$refs.partyTree.setCheckedNodes(this.selectParty);
|
|||
|
|
},
|
|||
|
|
//删除选择
|
|||
|
|
delate(index) {
|
|||
|
|
this.form.basic.appThreeMeetingOrganizationList.splice(index, 1);
|
|||
|
|
this.form.meetingUser.hostList = [];
|
|||
|
|
this.form.meetingUser.recorderList = [];
|
|||
|
|
this.form.meetingUser.participantList = [];
|
|||
|
|
},
|
|||
|
|
//清空
|
|||
|
|
clearSelect() {
|
|||
|
|
this.$refs.partyTree.setCheckedKeys([]);
|
|||
|
|
this.selectParty = [];
|
|||
|
|
this.form.meetingUser.hostList = [];
|
|||
|
|
this.form.meetingUser.recorderList = [];
|
|||
|
|
this.form.meetingUser.participantList = [];
|
|||
|
|
},
|
|||
|
|
//确认选择
|
|||
|
|
confirmSelect() {
|
|||
|
|
this.form.basic.appThreeMeetingOrganizationList = this.selectParty;
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
mounted() {
|
|||
|
|
this.dict.load(this.dictList);
|
|||
|
|
if (!this.isEdit) {
|
|||
|
|
this.form.basic.editable = true;
|
|||
|
|
this.form.file.editable = true;
|
|||
|
|
this.form.meetingUser.editable = true;
|
|||
|
|
this.form.summary.editable = true;
|
|||
|
|
this.searchSysAll();
|
|||
|
|
} else {
|
|||
|
|
if (this.copy) {
|
|||
|
|
for (let k in this.form) {
|
|||
|
|
this.form[k].editable = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
this.getDetailInfo();
|
|||
|
|
}
|
|||
|
|
this.areaId = this.user.info.areaId;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
.addThreeMeeting {
|
|||
|
|
|
|||
|
|
::v-deep .el-upload-list--picture-card {
|
|||
|
|
.el-upload-list__item-actions {
|
|||
|
|
width: 84px !important;
|
|||
|
|
height: 84px !important;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.host {
|
|||
|
|
font-size: 12px;
|
|||
|
|
width: 40px;
|
|||
|
|
height: 40px;
|
|||
|
|
display: inline-block;
|
|||
|
|
position: absolute;
|
|||
|
|
left: 6px;
|
|||
|
|
top: 6px;
|
|||
|
|
color: #ffffff;
|
|||
|
|
background-color: transparent;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
opacity: 0;
|
|||
|
|
|
|||
|
|
&:hover {
|
|||
|
|
opacity: 1;
|
|||
|
|
background-color: #AAAAAA;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-upload-list__item {
|
|||
|
|
margin-right: 16px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-date-editor--datetime {
|
|||
|
|
width: 100% !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-upload-list__item:nth-of-type(7) {
|
|||
|
|
margin-right: 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-upload-list__item,
|
|||
|
|
.el-upload-list__item {
|
|||
|
|
img {
|
|||
|
|
width: 84px !important;
|
|||
|
|
height: 84px !important;
|
|||
|
|
border-radius: 2px !important;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.upload-list {
|
|||
|
|
// padding-bottom: 100px;
|
|||
|
|
|
|||
|
|
::v-deep .el-upload-list__item {
|
|||
|
|
width: 84px !important;
|
|||
|
|
height: 84px !important;
|
|||
|
|
border-radius: 2px !important;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.upload-img {
|
|||
|
|
width: 84px;
|
|||
|
|
height: 84px;
|
|||
|
|
background: rgba(245, 245, 245, 1);
|
|||
|
|
border-radius: 2px;
|
|||
|
|
border: 1px solid rgba(208, 212, 220, 1);
|
|||
|
|
|
|||
|
|
.iconPhoto {
|
|||
|
|
margin-top: 20px;
|
|||
|
|
font-size: 32px;
|
|||
|
|
color: #8b9cb6;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.upload-demo {
|
|||
|
|
// padding: 0 15px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.upload-text {
|
|||
|
|
color: rgba(102, 102, 102, 1);
|
|||
|
|
font-size: 12px;
|
|||
|
|
height: 16px;
|
|||
|
|
line-height: 16px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-upload--picture-card {
|
|||
|
|
width: 84px !important;
|
|||
|
|
height: 84px !important;
|
|||
|
|
line-height: 30px !important;
|
|||
|
|
background: rgba(245, 245, 245, 1) !important;
|
|||
|
|
border-radius: 2px !important;
|
|||
|
|
border: none !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.content-left {
|
|||
|
|
width: 160px;
|
|||
|
|
height: 100%;
|
|||
|
|
// float:left;
|
|||
|
|
position: absolute;
|
|||
|
|
left: -224px;
|
|||
|
|
|
|||
|
|
.content-left-nav {
|
|||
|
|
width: 158px;
|
|||
|
|
background-color: #ffffff;
|
|||
|
|
border-radius: 4px;
|
|||
|
|
border: solid 1px #eeeeee;
|
|||
|
|
margin-top: 56px;
|
|||
|
|
overflow: hidden;
|
|||
|
|
|
|||
|
|
li {
|
|||
|
|
height: 48px;
|
|||
|
|
line-height: 48px;
|
|||
|
|
padding-left: 24px;
|
|||
|
|
font-size: 14px;
|
|||
|
|
font-weight: normal;
|
|||
|
|
font-stretch: normal;
|
|||
|
|
letter-spacing: 0;
|
|||
|
|
color: #666666;
|
|||
|
|
cursor: pointer;
|
|||
|
|
border-left: 3px solid transparent;
|
|||
|
|
|
|||
|
|
&:hover {
|
|||
|
|
border-left: 3px solid #5088ff;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
a {
|
|||
|
|
display: block;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.navActive {
|
|||
|
|
border-left: 3px solid #5088ff;
|
|||
|
|
color: #5088ff;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.flie {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 40px;
|
|||
|
|
line-height: 40px;
|
|||
|
|
padding: 0 8px;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
font-size: 14px;
|
|||
|
|
color: rgba(51, 51, 51, 1);
|
|||
|
|
background: rgba(255, 255, 255, 1);
|
|||
|
|
border-radius: 4px;
|
|||
|
|
border: 1px solid rgba(208, 212, 220, 1);
|
|||
|
|
margin-bottom: 16px;
|
|||
|
|
cursor: pointer;
|
|||
|
|
|
|||
|
|
p {
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: flex-start;
|
|||
|
|
align-items: center;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.iconDelete {
|
|||
|
|
color: #8899bb;
|
|||
|
|
margin-left: 4px;
|
|||
|
|
font-size: 16px;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.flie:hover {
|
|||
|
|
background-color: #f3f6f9;
|
|||
|
|
border: none;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.flie:hover .iconDelete {
|
|||
|
|
color: #ff4466;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.person {
|
|||
|
|
width: 100%;
|
|||
|
|
|
|||
|
|
.tips {
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
padding: 0 106px;
|
|||
|
|
font-size: 12px;
|
|||
|
|
color: #999999;
|
|||
|
|
line-height: 16px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.select-person {
|
|||
|
|
display: flex;
|
|||
|
|
flex-direction: column;
|
|||
|
|
position: relative;
|
|||
|
|
// width:70px;
|
|||
|
|
margin: 0 15px;
|
|||
|
|
height: 70px;
|
|||
|
|
justify-content: center;
|
|||
|
|
align-items: center;
|
|||
|
|
|
|||
|
|
.person-pictrue {
|
|||
|
|
width: 54px;
|
|||
|
|
height: 54px;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
text-align: center;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
justify-content: center;
|
|||
|
|
color: #fff;
|
|||
|
|
position: relative;
|
|||
|
|
|
|||
|
|
img {
|
|||
|
|
width: 40px;
|
|||
|
|
height: 40px;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.del-icon {
|
|||
|
|
position: absolute;
|
|||
|
|
top: -12px;
|
|||
|
|
right: -4px;
|
|||
|
|
font-size: 20px;
|
|||
|
|
color: #333;
|
|||
|
|
width: 20px;
|
|||
|
|
height: 24px;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
background-color: #fff;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.person-name {
|
|||
|
|
font-size: 14px;
|
|||
|
|
color: #666;
|
|||
|
|
line-height: normal;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-form-item__content {
|
|||
|
|
display: flex;
|
|||
|
|
flex-wrap: wrap;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.add-person {
|
|||
|
|
display: flex;
|
|||
|
|
flex-direction: column;
|
|||
|
|
position: relative;
|
|||
|
|
// width:70px;
|
|||
|
|
margin: 0 15px;
|
|||
|
|
height: 70px;
|
|||
|
|
justify-content: center;
|
|||
|
|
align-items: center;
|
|||
|
|
|
|||
|
|
.add-icon {
|
|||
|
|
width: 40px;
|
|||
|
|
height: 40px;
|
|||
|
|
line-height: 40px;
|
|||
|
|
margin: 0 auto 4px;
|
|||
|
|
text-align: center;
|
|||
|
|
font-size: 20px;
|
|||
|
|
color: #2266FF;
|
|||
|
|
border: 1px dashed #2266ff;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
|
|||
|
|
.icon-add {
|
|||
|
|
color: #2266FF;
|
|||
|
|
font-size: 20px;
|
|||
|
|
margin-top: 5px;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.time-input {
|
|||
|
|
width: 48px;
|
|||
|
|
height: 32px;
|
|||
|
|
margin: 0 8px;
|
|||
|
|
|
|||
|
|
::v-deep .el-input__inner {
|
|||
|
|
line-height: 32px;
|
|||
|
|
height: 32px;
|
|||
|
|
padding: 0 10px;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.select-party {
|
|||
|
|
::v-deep .el-dialog__header {
|
|||
|
|
padding: 13px 16px;
|
|||
|
|
border-bottom: 1px solid #eee;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-dialog__body {
|
|||
|
|
padding: 24px 40px 48px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-tree {
|
|||
|
|
background-color: #fcfcfc;
|
|||
|
|
height: calc(100% - 40px);
|
|||
|
|
width: 350px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.add-item {
|
|||
|
|
width: 274px;
|
|||
|
|
height: 360px;
|
|||
|
|
background: rgba(252, 252, 252, 1);
|
|||
|
|
border-radius: 2px;
|
|||
|
|
border: 1px solid rgba(208, 212, 220, 1);
|
|||
|
|
position: relative;
|
|||
|
|
overflow: auto;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
|
|||
|
|
.add_top {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 40px;
|
|||
|
|
background: rgba(245, 245, 245, 1);
|
|||
|
|
border-bottom: 1px solid rgba(208, 212, 220, 1);
|
|||
|
|
padding: 0 8px;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
align-items: center;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.tree_list {
|
|||
|
|
width: 100%;
|
|||
|
|
overflow: auto;
|
|||
|
|
height: calc(100% - 40px);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.add_buttom {
|
|||
|
|
position: absolute;
|
|||
|
|
left: 0;
|
|||
|
|
bottom: 0;
|
|||
|
|
font-size: 12px;
|
|||
|
|
width: 310px;
|
|||
|
|
height: 32px;
|
|||
|
|
line-height: 32px;
|
|||
|
|
z-index: 10000;
|
|||
|
|
background: rgba(245, 246, 247, 1);
|
|||
|
|
color: rgba(51, 51, 51, 1);
|
|||
|
|
box-shadow: 0 1px 0 0 rgba(216, 220, 227, 1);
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: center;
|
|||
|
|
align-items: center;
|
|||
|
|
cursor: pointer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.add_tag {
|
|||
|
|
width: 310px;
|
|||
|
|
height: calc(100% - 40px);
|
|||
|
|
overflow-y: auto;
|
|||
|
|
|
|||
|
|
.el-tag {
|
|||
|
|
margin: 8px 8px 0 8px;
|
|||
|
|
background: rgba(238, 238, 238, 1);
|
|||
|
|
border: none;
|
|||
|
|
color: #666;
|
|||
|
|
max-width: calc(100% - 16px);
|
|||
|
|
overflow: hidden;
|
|||
|
|
text-overflow: ellipsis;
|
|||
|
|
white-space: nowrap;
|
|||
|
|
width: 100%;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::v-deep .el-tag .el-icon-close {
|
|||
|
|
color: #666;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.organ {
|
|||
|
|
width: auto;
|
|||
|
|
height: auto;
|
|||
|
|
padding: 0 10px;
|
|||
|
|
line-height: 32px;
|
|||
|
|
border: 1px solid #d0d4dc;
|
|||
|
|
border-radius: 5px;
|
|||
|
|
cursor: pointer;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
color: #666;
|
|||
|
|
|
|||
|
|
.organzation {
|
|||
|
|
background-color: #eee;
|
|||
|
|
margin-right: 4px;
|
|||
|
|
padding: 4px;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.el-checkbox {
|
|||
|
|
width: 20%;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|