|
@@ -18,6 +18,14 @@
|
|
|
margin-left: 10px;
|
|
|
text-align: left;
|
|
|
}
|
|
|
+
|
|
|
+ .opSetting{
|
|
|
+ text-align: center;
|
|
|
+ margin-top:120px;
|
|
|
+ }
|
|
|
+ .spacing{
|
|
|
+ margin-top:10px;
|
|
|
+ }
|
|
|
</style>
|
|
|
<template>
|
|
|
<div>
|
|
@@ -67,13 +75,13 @@
|
|
|
</el-select>
|
|
|
<el-button type="primary" style="margin-left: 20px">添加地点</el-button>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="会议日期" prop="meetingDate">
|
|
|
+ <!-- <el-form-item label="会议日期" prop="meetingDate">
|
|
|
<el-input
|
|
|
v-model="formModel.meetingDate"
|
|
|
placeholder="请输入详细地址"
|
|
|
style="width: 300px"
|
|
|
></el-input>
|
|
|
- </el-form-item>
|
|
|
+ </el-form-item> -->
|
|
|
<el-form-item label="会议内容" prop="content">
|
|
|
<el-input
|
|
|
v-model="formModel.content"
|
|
@@ -90,57 +98,74 @@
|
|
|
</el-form-item>
|
|
|
<h4>会议配置</h4>
|
|
|
|
|
|
- <el-table :data="formModel.meetingTimeList">
|
|
|
+ <el-table :data="formModel.meetingTimeDataList">
|
|
|
<el-table-column
|
|
|
type="index"
|
|
|
label="序号"
|
|
|
width="55"
|
|
|
></el-table-column>
|
|
|
- <el-table-column prop="name" label="会议日期" width="270px">
|
|
|
- <el-form-item>
|
|
|
+ <el-table-column prop="meetingDate" label="会议日期" width="270px">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-form-item
|
|
|
+ :prop="'meetingTimeDataList.' + scope.$index + '.meetingDate'">
|
|
|
<el-date-picker
|
|
|
- v-model="value1"
|
|
|
+ v-model="scope.row.meetingDate"
|
|
|
type="date"
|
|
|
placeholder="选择日期">
|
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="classify" label="会议时间" width="400px">
|
|
|
- <el-form-item>
|
|
|
- <el-time-picker
|
|
|
- is-range
|
|
|
- v-model="value1"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始时间"
|
|
|
- end-placeholder="结束时间"
|
|
|
- placeholder="选择时间范围">
|
|
|
- </el-time-picker>
|
|
|
- </el-form-item>
|
|
|
+ <el-table-column prop="meetingTimeRange" label="会议时间" width="400px">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-form-item
|
|
|
+ :prop="'meetingTimeDataList.' + scope.$index + '.meetingTimeRange'">
|
|
|
+ <el-time-picker
|
|
|
+ is-range
|
|
|
+ v-model="scope.row.meetingTimeRange"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始时间"
|
|
|
+ end-placeholder="结束时间"
|
|
|
+ placeholder="选择时间范围"
|
|
|
+ format='HH:mm'
|
|
|
+ value-format="HH:mm">
|
|
|
+ </el-time-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="location" label="会前签到时间" width="400px">
|
|
|
- <el-form-item>
|
|
|
+ <el-table-column prop="startSignInTimeRange" label="会前签到时间" width="400px">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-form-item
|
|
|
+ :prop="'meetingTimeDataList.' + scope.$index + '.startSignInTimeRange'">
|
|
|
<el-time-picker
|
|
|
is-range
|
|
|
- v-model="value1"
|
|
|
+ v-model="scope.row.startSignInTimeRange"
|
|
|
range-separator="至"
|
|
|
start-placeholder="开始时间"
|
|
|
end-placeholder="结束时间"
|
|
|
- placeholder="选择时间范围">
|
|
|
+ placeholder="选择时间范围"
|
|
|
+ format='HH:mm'
|
|
|
+ value-format="HH:mm">
|
|
|
</el-time-picker>
|
|
|
</el-form-item>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="name" label="结束签到时间" width="400px">
|
|
|
-
|
|
|
- <el-form-item>
|
|
|
+ <el-table-column prop="endSignInTimeRange" label="结束签到时间" width="400px">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-form-item
|
|
|
+ :prop="'meetingTimeDataList.' + scope.$index + '.endSignInTimeRange'">
|
|
|
<el-time-picker
|
|
|
is-range
|
|
|
- v-model="value1"
|
|
|
+ v-model="scope.row.endSignInTimeRange"
|
|
|
range-separator="至"
|
|
|
start-placeholder="开始时间"
|
|
|
end-placeholder="结束时间"
|
|
|
- placeholder="选择时间范围">
|
|
|
+ placeholder="选择时间范围"
|
|
|
+ format='HH:mm'
|
|
|
+ value-format="HH:mm">
|
|
|
</el-time-picker>
|
|
|
</el-form-item>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="操作" width="150">
|
|
|
<template slot-scope="{ row }">
|
|
@@ -149,15 +174,6 @@
|
|
|
class="el-icon-delete my-font"
|
|
|
@click="handleDelete(row)"
|
|
|
></i>
|
|
|
- <i class="el-icon-top my-font" @click="handleUp(row)"></i>
|
|
|
- <i
|
|
|
- class="el-icon-bottom my-font"
|
|
|
- @click="handleDown(row)"
|
|
|
- ></i>
|
|
|
- <i
|
|
|
- class="el-icon-document-add my-font"
|
|
|
- @click="handleInsert(row)"
|
|
|
- ></i>
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -173,7 +189,7 @@
|
|
|
|
|
|
<div
|
|
|
class="el-table__empty-block"
|
|
|
- v-if="formModel.meetingTimeList.length != 0"
|
|
|
+ v-if="formModel.meetingTimeDataList.length != 0"
|
|
|
>
|
|
|
<el-button icon="el-icon-circle-plus-outline" @click="handleAdd()"
|
|
|
>新增</el-button
|
|
@@ -182,34 +198,35 @@
|
|
|
|
|
|
<h4>添加参会人员</h4>
|
|
|
<el-row>
|
|
|
- <el-form-item label="部门" prop="companyInfoId">
|
|
|
- <el-input
|
|
|
- v-model="formModel.companyInfoId"
|
|
|
- placeholder="请输入会议编号"
|
|
|
- style="width: 200px"
|
|
|
+ <el-form-item label="部门" prop="searchCompanyId">
|
|
|
+ <el-select-tree
|
|
|
size="mini"
|
|
|
- ></el-input>
|
|
|
+ :props="props"
|
|
|
+ :options="companyResult"
|
|
|
+ v-model="formModel.searchCompanyId"
|
|
|
+ height="200"
|
|
|
+ ></el-select-tree>
|
|
|
+ <el-button type="primary" size="mini" @click="hanldSeach">查询</el-button>
|
|
|
</el-form-item>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-form-item label="添加人员" prop="companyInfoId">
|
|
|
- <template>
|
|
|
- <el-transfer
|
|
|
- filterable
|
|
|
- :filter-method="filterMethod"
|
|
|
- filter-placeholder="请输入城市拼音"
|
|
|
- v-model="value"
|
|
|
- :data="data">
|
|
|
- </el-transfer>
|
|
|
- </template>
|
|
|
- </el-form-item>
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-form-item label="参会人员" >
|
|
|
+ <el-transfer
|
|
|
+ v-model="value"
|
|
|
+ :data="leftTableData"
|
|
|
+ :titles="['全部人员', '参会人员']"
|
|
|
+ style="width:100%">
|
|
|
+ </el-transfer>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
<el-button @click="closeDialog">取 消</el-button>
|
|
|
<el-button type="primary" @click="handleSubmit" :loading="submitting"
|
|
|
- >确 定</el-button
|
|
|
+ >保 存</el-button
|
|
|
>
|
|
|
</span>
|
|
|
</div>
|
|
@@ -218,47 +235,74 @@
|
|
|
import meetingInfoApi from "@/api/base/meetingInfo";
|
|
|
import addressInfoApi from "@/api/base/address";
|
|
|
import "nprogress/nprogress.css"; // progress bar style
|
|
|
+import SelectTree from "@/components/SelectTree";
|
|
|
+import companyInfoApi from "@/api/base/companyInfo";
|
|
|
|
|
|
export default {
|
|
|
name: "baseMeetingDetail",
|
|
|
props: ["businessKey", "title"],
|
|
|
data() {
|
|
|
- const generateData = _ => {
|
|
|
- const data = [];
|
|
|
- const cities = ['上海', '北京', '广州', '深圳', '南京', '西安', '成都'];
|
|
|
- const pinyin = ['shanghai', 'beijing', 'guangzhou', 'shenzhen', 'nanjing', 'xian', 'chengdu'];
|
|
|
- cities.forEach((city, index) => {
|
|
|
- data.push({
|
|
|
- label: city,
|
|
|
- key: index,
|
|
|
- pinyin: pinyin[index]
|
|
|
- });
|
|
|
- });
|
|
|
- return data;
|
|
|
- };
|
|
|
-
|
|
|
+ // const generateData = _ => {
|
|
|
+ // const data = [];
|
|
|
+ // const cities = ['上海', '北京', '广州', '深圳', '南京', '西安', '成都'];
|
|
|
+ // const pinyin = ['shanghai', 'beijing', 'guangzhou', 'shenzhen', 'nanjing', 'xian', 'chengdu'];
|
|
|
+ // cities.forEach((city, index) => {
|
|
|
+ // data.push({
|
|
|
+ // label: city,
|
|
|
+ // key: index,
|
|
|
+ // });
|
|
|
+ // });
|
|
|
+ // alert(JSON.stringify(data));
|
|
|
+ // return data;
|
|
|
+ // };
|
|
|
return {
|
|
|
- data: generateData(),
|
|
|
- value:[],
|
|
|
- formModel: {
|
|
|
- addressId:"",
|
|
|
- meetingTimeList: [],
|
|
|
- removeMeetingTimeList: []
|
|
|
- },
|
|
|
- ruleValidate: {
|
|
|
- number: [{ required: true, message: "会议编号不能为空", trigger: "blur" }],
|
|
|
- name: [{ required: true, message: "会议名称不能为空", trigger: "blur" }],
|
|
|
- addressId: [{ required: true, message: "会议地点不能为空", trigger: "blur" }],
|
|
|
- meetingDate: [{ required: true, message: "会议地点名称不能为空", trigger: "blur" }],
|
|
|
-
|
|
|
- },
|
|
|
- addressList:[],
|
|
|
- showDialog: true,
|
|
|
- loading: false,
|
|
|
- submitting: false,
|
|
|
- filterMethod(query, item) {
|
|
|
- return item.pinyin.indexOf(query) > -1;
|
|
|
- },
|
|
|
+ //data:generateData(),
|
|
|
+ value:[],
|
|
|
+ formModel: {
|
|
|
+ number:"",
|
|
|
+ name:"",
|
|
|
+ addressId:"",
|
|
|
+ content:"",
|
|
|
+ remark:"",
|
|
|
+ meetingTimeDataList: [],
|
|
|
+ removeMeetingTimeList: [],
|
|
|
+ meetingDate:"",
|
|
|
+ meetingTime:"",
|
|
|
+ meetingTimeRange:"",
|
|
|
+ startSignInTimeRange:"",
|
|
|
+ endSignInTimeRange:"",
|
|
|
+ searchCompanyId:"",
|
|
|
+ selectPersonKey:"",
|
|
|
+ meetingTimeArray:[],
|
|
|
+ },
|
|
|
+ tableLoading:false,
|
|
|
+ tableHeight:400,
|
|
|
+ ruleValidate: {
|
|
|
+ number: [{ required: true, message: "会议编号不能为空", trigger: "blur" }],
|
|
|
+ name: [{ required: true, message: "会议名称不能为空", trigger: "blur" }],
|
|
|
+ addressId: [{ required: true, message: "会议地点不能为空", trigger: "blur" }],
|
|
|
+ meetingDate: [{ required: true, message: "会议地点名称不能为空", trigger: "blur" }],
|
|
|
+
|
|
|
+ },
|
|
|
+ meetingId:"",
|
|
|
+ addressList:[],
|
|
|
+ treeData: [],
|
|
|
+ companyResult:[],
|
|
|
+ props: {
|
|
|
+ // 配置项(必选)
|
|
|
+ value: "id",
|
|
|
+ label: "name",
|
|
|
+ children: "children"
|
|
|
+ },
|
|
|
+ showDialog: true,
|
|
|
+ loading: false,
|
|
|
+ submitting: false,
|
|
|
+ selectArr:[], // 右边列表
|
|
|
+ buttonSize: 'large',
|
|
|
+ options: [],
|
|
|
+ leftTableData:[],
|
|
|
+ nowSelectData: [], // 左边选中列表数据
|
|
|
+ nowSelectRightData: [],
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
@@ -269,11 +313,58 @@ export default {
|
|
|
self.addressList = jsonData.data;
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
+ companyInfoApi.list().then(function(response) {
|
|
|
+ var jsonData = response.data;
|
|
|
+ if (jsonData.result) {
|
|
|
+ self.companyResult = jsonData.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // var companyId = "";
|
|
|
+ // meetingInfoApi.personListByCompanyId(companyId).then(function(response) {
|
|
|
+ // var jsonData = response.data;
|
|
|
+ // if (jsonData.result) {
|
|
|
+ // self.leftTableData = jsonData.data;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+
|
|
|
+
|
|
|
},
|
|
|
methods: {
|
|
|
closeDialog() {
|
|
|
this.$emit("close", false);
|
|
|
},
|
|
|
+ hanldSeach(){
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ self.tableLoading = true;
|
|
|
+
|
|
|
+ var formData = new FormData();
|
|
|
+ formData.append("companyId", this.formModel.searchCompanyId);
|
|
|
+ meetingInfoApi.personListByCompanyId(formData).then(function(response) {
|
|
|
+ var jsonData = response.data;
|
|
|
+ if (jsonData.result) {
|
|
|
+ self.tableLoading = false;
|
|
|
+
|
|
|
+ //alert(JSON.stringify(jsonData.data));
|
|
|
+ self.leftTableData = jsonData.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // const data = [];
|
|
|
+ // const cities = ['上海', '北京', '广州', '深圳', '南京', '西安', '成都'];
|
|
|
+ // const pinyin = ['shanghai', 'beijing', 'guangzhou', 'shenzhen', 'nanjing', 'xian', 'chengdu'];
|
|
|
+ // cities.forEach((city, index) => {
|
|
|
+ // data.push({
|
|
|
+ // desc: city,
|
|
|
+ // value: index,
|
|
|
+ // pinyin: pinyin[index]
|
|
|
+ // });
|
|
|
+ // });
|
|
|
+ // self.leftTableData = data;
|
|
|
+
|
|
|
+ },
|
|
|
handleSubmit() {
|
|
|
var self = this;
|
|
|
|
|
@@ -282,6 +373,26 @@ export default {
|
|
|
(function () {
|
|
|
var id = self.formModel.id;
|
|
|
|
|
|
+ var selectPersonKey = self.value;
|
|
|
+
|
|
|
+ self.formModel.selectPersonKey = selectPersonKey.toString();
|
|
|
+
|
|
|
+ if(self.formModel.meetingTimeDataList!=null){
|
|
|
+ self.formModel.meetingTimeDataList.forEach(function(item) {
|
|
|
+ if(item.meetingTimeRange!=null){
|
|
|
+ item.meetingTimeRange=item.meetingTimeRange.toString();
|
|
|
+ }
|
|
|
+ if(item.startSignInTimeRange!=null){
|
|
|
+ item.startSignInTimeRange=item.startSignInTimeRange.toString();
|
|
|
+ }
|
|
|
+ if(item.endSignInTimeRange!=null){
|
|
|
+ item.endSignInTimeRange = item.endSignInTimeRange.toString();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ //alert(JSON.stringify(self.formModel.meetingTimeDataList));
|
|
|
+
|
|
|
if (id == null || id.length == 0) {
|
|
|
return meetingInfoApi.add(self.formModel);
|
|
|
} else {
|
|
@@ -310,49 +421,89 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
handleAdd() {
|
|
|
- this.formModel.meetingTimeList.push({
|
|
|
- sortNo: this.formModel.meetingTimeList.length + 1,
|
|
|
- name: "",
|
|
|
- routeId: this.businessKey,
|
|
|
- classify: "",
|
|
|
- location: "",
|
|
|
- delFlag: 0,
|
|
|
+ this.formModel.meetingTimeDataList.push({
|
|
|
+ sortNo: this.formModel.meetingTimeDataList.length + 1,
|
|
|
+ meetingDate: "",
|
|
|
+ meetingTimeRange: "",
|
|
|
+ startSignInTimeRange: "",
|
|
|
+ endSignInTimeRange: "",
|
|
|
});
|
|
|
},
|
|
|
handleDelete(row) {
|
|
|
- var meetingTimeList = this.formModel.meetingTimeList;
|
|
|
+ var meetingTimeDataList = this.formModel.meetingTimeDataList;
|
|
|
|
|
|
- meetingTimeList.splice(meetingTimeList.indexOf(row), 1);
|
|
|
+ meetingTimeDataList.splice(meetingTimeDataList.indexOf(row), 1);
|
|
|
|
|
|
this.formModel.removeMeetingTimeList.push(row);
|
|
|
},
|
|
|
handleUp(row) {
|
|
|
- var meetingTimeList = this.formModel.meetingTimeList;
|
|
|
- var index = meetingTimeList.indexOf(row);
|
|
|
+ var meetingTimeDataList = this.formModel.meetingTimeDataList;
|
|
|
+ var index = meetingTimeDataList.indexOf(row);
|
|
|
|
|
|
if (index > 0) {
|
|
|
- meetingTimeList.splice(index, 1);
|
|
|
- meetingTimeList.splice(index - 1, 0, row);
|
|
|
+ meetingTimeDataList.splice(index, 1);
|
|
|
+ meetingTimeDataList.splice(index - 1, 0, row);
|
|
|
}
|
|
|
},
|
|
|
handleDown(row) {
|
|
|
- var meetingTimeList = this.formModel.meetingTimeList;
|
|
|
- var index = meetingTimeList.indexOf(row);
|
|
|
+ var meetingTimeDataList = this.formModel.meetingTimeDataList;
|
|
|
+ var index = meetingTimeDataList.indexOf(row);
|
|
|
|
|
|
- if (index < meetingTimeList.length - 1) {
|
|
|
- meetingTimeList.splice(index, 1);
|
|
|
- meetingTimeList.splice(index + 1, 0, row);
|
|
|
+ if (index < meetingTimeDataList.length - 1) {
|
|
|
+ meetingTimeDataList.splice(index, 1);
|
|
|
+ meetingTimeDataList.splice(index + 1, 0, row);
|
|
|
}
|
|
|
},
|
|
|
+
|
|
|
+ checkAll(val){
|
|
|
+ this.nowSelectData = val;
|
|
|
+ },
|
|
|
+ checkRightAll(val) {
|
|
|
+ this.nowSelectRightData = val;
|
|
|
+ },
|
|
|
+ // 选中
|
|
|
+ handelSelect(){
|
|
|
+ this.selectArr = this.handleConcatArr(this.selectArr, this.nowSelectData)
|
|
|
+ this.handleRemoveTabList(this.nowSelectData, this.data1);
|
|
|
+ this.nowSelectData = [];
|
|
|
+ },
|
|
|
+ // 取消
|
|
|
+ handleRemoveSelect() {
|
|
|
+ this.data1 = this.handleConcatArr(this.data1, this.nowSelectRightData)
|
|
|
+ this.handleRemoveTabList(this.nowSelectRightData, this.selectArr);
|
|
|
+ this.nowSelectRightData = [];
|
|
|
+ },
|
|
|
+ handleConcatArr(selectArr, nowSelectData) {
|
|
|
+ let arr = [];
|
|
|
+ arr = arr.concat(selectArr, nowSelectData);
|
|
|
+ return arr;
|
|
|
+ },
|
|
|
+ handleRemoveTabList(isNeedArr, originalArr) {
|
|
|
+ if(isNeedArr.length && originalArr.length) {
|
|
|
+ for(let i=0; i<isNeedArr.length; i++) {
|
|
|
+ for(let k=0; k<originalArr.length; k++) {
|
|
|
+ if(isNeedArr[i]["name"] === originalArr[k]["name"]) {
|
|
|
+ originalArr.splice(k, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ "el-select-tree": SelectTree,
|
|
|
},
|
|
|
mounted: function () {
|
|
|
var self = this;
|
|
|
|
|
|
+ self.meetingId = this.$route.query.businessKey;
|
|
|
+
|
|
|
(function () {
|
|
|
- if (self.businessKey.length == 0) {
|
|
|
+ if (self.meetingId.length == 0) {
|
|
|
return meetingInfoApi.create();
|
|
|
} else {
|
|
|
- return meetingInfoApi.edit(self.businessKey);
|
|
|
+ return meetingInfoApi.edit(self.meetingId);
|
|
|
}
|
|
|
})()
|
|
|
.then((response) => {
|
|
@@ -360,7 +511,28 @@ export default {
|
|
|
self.loading = false;
|
|
|
|
|
|
if (jsonData.result) {
|
|
|
+
|
|
|
+ if(jsonData.data.meetingTimeDataList!=null){
|
|
|
+ jsonData.data.meetingTimeDataList.forEach(function(item) {
|
|
|
+ item.meetingTimeRange = item.meetingTimeArray;
|
|
|
+ item.startSignInTimeRange = item.startSignInTimeArray;
|
|
|
+ item.endSignInTimeRange = item.endSignInTimeArray;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
self.formModel = jsonData.data;
|
|
|
+
|
|
|
+ if(jsonData.data.selectPersonKey!=null){
|
|
|
+ var selectPersonKey = jsonData.data.selectPersonKey.split(",");
|
|
|
+ self.value = selectPersonKey;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(jsonData.data.searchCompanyId!=null&&jsonData.data.searchCompanyId!=""){
|
|
|
+ this.hanldSeach();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
} else {
|
|
|
self.$message.error(jsonData.message + "");
|
|
|
}
|