提交 0da483be 编写于 作者: bo.dang's avatar bo.dang

Merge branch 'dev-merged-20201015' into 'release'

Dev merged 20201015, code review: bo.dang



See merge request !224
......@@ -91,13 +91,39 @@
<el-form-item label="圈子类型" prop="type">
<el-radio-group v-model="formData.type" size="small" @change="changeType">
<!--<el-radio-group v-model="formData.type" size="small" @change="changeType">-->
<el-radio-group v-model="formData.type" size="small">
<el-radio :label="0" class="label-type">封闭 - 只对圈子成员可见,成员只能由管理员添加、删除</el-radio>
<el-radio :label="1" class="label-type">半开放 - 对任何人可见,用户请求加入后需管理员同意,成员可自行退出</el-radio>
<el-radio :label="2" class="label-type">开放 - 对任何人可见,用户请求加入后无需管理员同意,成员可自行退出</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="允许分享圈子" prop="allowShare" v-if="formData.type == 1 || formData.type == 2 " class="required-label">
<el-radio-group v-model="formData.allowShare" size="small">
<el-radio :label="0" class="label-type">不允许</el-radio>
<el-radio :label="1" class="label-type">允许</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="对接部门" prop="deptId" v-if="deptFlag" class="required-label">
<el-select
v-model="formData.deptId"
@change="returnTypeData('deptId')"
placeholder="请选择该小圈的对接部门"
size="small">
<el-option
v-for="(item,index) in deptList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<div style="margin-top: 60px;margin-left: 250px;">
<el-button type="primary" @click="save()" center>保存</el-button>
<el-button @click="cancle()">取 消</el-button>
......@@ -126,6 +152,7 @@
let vm = null;
import { openLoading, closeLoading } from "../../utils/utils";
import { doUpload, getFilePath } from "../../utils/qiniu-util";
import { getCircleDept } from "../../utils/yqrange/yqrangeApi";
import Cropper from '@/components/common/cropper.vue'
export default {
name: "baseinfo",
......@@ -142,6 +169,17 @@
},
created() {
vm = this;
this.isDept();
// const mobilePhone = localStorage.getItem("mobilePhone");
//
// if(mobilePhone == "13341740525" || mobilePhone == "18251938586"){
// this.deptFlag = true;
// }
// else {
// this.deptFlag = false;
// }
},
data() {
let checkProjectStr = (rule, value, callback) => {
......@@ -202,6 +240,9 @@
],
type: [
{ required: true, message: "请选择圈子类型", trigger: "blur" },
],
deptId: [
{ required: true, message: "请选择对接部门", trigger: "blur" }
]
},
imgMouseOver1: false,
......@@ -215,6 +256,20 @@
label: '管理员可发布'
},
],
deptList: [
{
value: 1,
label: '铁军部'
}, {
value: 2,
label: '医疗事业部'
},{
value: 3,
label: '商业化部'
},
],
deptFlag: false,
shareFlag: false
}
},
......@@ -233,14 +288,21 @@
if (!this.formData.headUrl){
this.uploadImgMessage1 = true;
}
this.$refs[formName].validate(valid => {
if (valid&&this.formData.headUrl!="") {
if (valid && vm.formData.headUrl!="") {
flag = true;
} else {
console.log("error submit!!");
flag = false;
}
});
if(flag){
if(this.formData.deptId == ""){
this.formData.deptId = 0;
}
}
this.$emit('returnIsNext', flag);
},
//上传圈子头像
......@@ -354,6 +416,30 @@
},
changeType(){
if(vm.formData.type == 1 || vm.formData.type == 2){
vm.shareFlag = true;
}
else {
vm.shareFlag = false;
}
},
isDept(){
let params = {
type: 2
};
openLoading(vm);
getCircleDept(params).then(res => {
closeLoading(vm);
if (res.code == "000000") {
vm.deptFlag = res.data;
// vm.deptFlag = true;
// this.$message.success('操作成功');
}
}).catch(err => {
this.$message.error('请求失败');
});
}
}
}
......
<template>
<div class="organization-alert">
<div class="organization-left">
<div>已选:{{allSelect.length}}个机构</div>
<div v-if="checked">已选:{{totalOrganizationAll}}个机构</div>
<div v-else>已选:{{allSelect.length}}个机构</div>
<div class="hcd">
<div class="tag-list">
<el-tag
......@@ -26,26 +27,27 @@
<el-form-item label>
<el-cascader size="small" ref="cascaderRegion" :options="optionsRegion" :props="props"
v-model="formOrganization.administrativeIdList" @change="handleChangeRegion" filterable change-on-select
placeholder="请选择地区"></el-cascader>
placeholder="请选择地区" :disabled='checked'></el-cascader>
</el-form-item>
<el-form-item>
<el-select size="small" v-model="formOrganization.level" placeholder="全部医院级别">
<el-select size="small" v-model="formOrganization.level" placeholder="全部医院级别" :disabled='checked'>
<el-option v-for="(item, index) in organizationRank" :key="index" :label="item.label" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label>
<el-input style="width:140px;" size="small" v-model="formOrganization.name" placeholder="请输入机构名称"></el-input>
<el-input style="width:140px;" size="small" v-model="formOrganization.name" placeholder="请输入机构名称" :disabled='checked'></el-input>
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" @click="searchOrganization()">搜索</el-button>
<el-button size="small" type="primary" @click="searchOrganization()" :disabled="checked">搜索</el-button>
</el-form-item>
<el-form-item>
<el-button size="small" @click="resetOrgOrPerson()">取消搜索</el-button>
<el-button size="small" @click="resetOrgOrPerson()" :disabled="checked"huang>取消搜索</el-button>
</el-form-item>
</el-form>
<el-checkbox v-if="showSelectAll" v-model="checked" @change="handleCheckAllChange" >全部({{ totalOrganization }})</el-checkbox>
<el-table class="rim" ref="multipleOrganization" :data="tableOrganization" tooltip-effect="dark" @select-all="selectAllOrganization" @select="selectOrganization" >
<el-table-column type="selection" :selectable="selectableTableList" ></el-table-column>
<el-table-column type="selection" :selectable="selectableTableList"></el-table-column>
<el-table-column prop="orgName" label="医院名称" align="center"></el-table-column>
<el-table-column prop="orgLevelName" label="医院级别" align="center"></el-table-column>
<el-table-column prop="provinceName" label="所属省份" align="center"></el-table-column>
......@@ -73,7 +75,7 @@ import { openLoading, closeLoading } from "@/utils/utils";
import { doUpload, getFilePath } from "@/utils/qiniu-util";
import * as operationData from "@/utils/operation";
import { getCircleProvincesReq } from '@/utils/yqrange/rangeApi';
import { moOption, moOrgSearch, moSave, clearCacheOrg} from '@/utils/yqrange/memberApi';
import { moOption, moOptionAll, moOrgSearch, moSave, moSaveAll, clearCacheOrg} from '@/utils/yqrange/memberApi';
let vm = null;
export default {
props: {
......@@ -125,6 +127,7 @@ export default {
tableOrganization: new Array(),
currentOrganization: 1,
totalOrganization: 10,
totalOrganizationAll:0,//全选可以添加机构的总数量
pageSizeOrganization: 2,
selectionList:[],
formOrganization: {
......@@ -136,6 +139,8 @@ export default {
pageNum: 1,
pageSize: 10
},
showSelectAll:false,//只有运营人员显示全部按钮
checked: false,
allSelect: []
}
},
......@@ -148,8 +153,64 @@ export default {
this.initRange();
//Idtype:1,内部 2.外部
vm.idType = localStorage.getItem("storageIdType");
if (vm.idType == 1) {
//只有内部人员显示全选按钮
vm.showSelectAll = true;
}
},
methods: {
// 选中全部
handleCheckAllChange(){
console.log(this.checked)
this.requestSelectAll();
if (!this.checked){
this.allSelect = [];
this.checked = false;
return
}
},
// 设置全选列表
setSeletAllList(){
let item = {
id:"0",
orgName:"全部",
};
this.allSelect = [];
if (this.totalOrganizationAll > 0) {
this.allSelect.push(item)
}
console.log(this.allSelect)
},
requestSelectAll(){
let administrativeIdItem = operationData.setAdministrativeId(
this.formOrganization.administrativeIdList
);
if (administrativeIdItem == "000_0"){
administrativeIdItem=""
}
let req = {
circleId: this.circleId,
districtIds: administrativeIdItem,
orgLevel: this.formOrganization.level,
orgName: this.formOrganization.name,
type: this.checked === false ? 0 : 1
};
openLoading(vm);
moOptionAll(req).then(res => {
closeLoading(vm);
if (res.code == "000000") {
this.totalOrganizationAll = res.data;
this.setSeletAllList()
} else {
this.$message(res.message);
}
}).catch(err => {
this.$message.error('请求失败');
});
},
clear() {
clearCacheOrg(this.circleId)
.then(()=>{
......@@ -264,6 +325,12 @@ export default {
},
// 获取机构列表的机构状态(是否被选中)
initOrganizationStatus() {
// 判断是否显示全选按钮
if (this.idType == 1 && this.totalOrganization > 0) {
this.showSelectAll = true
}else {
this.showSelectAll = false
}
let tableStatus = this.tableOrganization;
tableStatus.forEach(row => {
if (row.status == 1 || row.status == 2) {
......@@ -276,6 +343,9 @@ export default {
},
//机构搜索
getOrganizationChoose() {
// if (this.checked) {
// return;
// }
let administrativeIdItem = operationData.setAdministrativeId(
this.formOrganization.administrativeIdList
);
......@@ -352,7 +422,7 @@ export default {
},
// 更改当前页数
handleCurrentOrganization(val) {
//console.log(`当前页: ${val}`);
console.log(`当前页: ${val}`);
this.formOrganization.pageNum = val;
if (this.searchOrganizationType == "choose") {
this.getOrganizationChoose();
......@@ -362,6 +432,10 @@ export default {
},
//机构table中勾选一页
selectAllOrganization(selection) {
if(this.checked){
this.$refs.multipleOrganization.clearSelection()//这个是清除所有选择项,当选择全部时,清除所有选择项
return
}
this.selectionList = selection;
let setList = [];
let selectList = [];
......@@ -379,7 +453,7 @@ export default {
typeStatus = 1;
}
// let = this.$refs.multipleTable.selection
console.log(selection, setList, selectList);
console.log(selection,"00",setList,"33",selectList,"11",intersect,22,typeStatus);
if (setList.length > 0) {
let req = {
ids: setList,
......@@ -426,10 +500,15 @@ export default {
});
},
selectableTableList(row, index) {
if (this.checked) {
return false;
}
// if (this.status4Flag == 1) {
if (row.status == 2) {
return false;
}
return true;
// }
// return true;
......@@ -474,6 +553,12 @@ export default {
},
//删除已选中的tag
handleClose(item) {
if (this.checked){
this.allSelect = [];
this.checked = false;
this.requestSelectAll();
return;
}
this.selectOrganization([],item)
this.$refs.multipleOrganization.toggleRowSelection(item);
},
......@@ -483,7 +568,16 @@ export default {
this.$message.error('已选列表为空');
return
}
let params = {
// 内部人员或者全部选中 且是全选
if (this.idType == 1&&this.checked) {
this.requestaddFnAll();
}else {
this.requestaddFn();
}
},
requestaddFn(){
let params = {
circleId: this.circleId
}
moSave(params)
......@@ -494,6 +588,32 @@ export default {
this.$message.error('保存失败,请重试');
})
},
requestaddFnAll(){
let administrativeIdItem = operationData.setAdministrativeId(
this.formOrganization.administrativeIdList
);
if (administrativeIdItem == "000_0"){
administrativeIdItem=""
}
let req = {
circleId: this.circleId,
districtIds: administrativeIdItem,
orgLevel: this.formOrganization.level,
orgName: this.formOrganization.name,
type: this.checked === false ? 0 : 1
};
moSaveAll(req)
.then(res => {
if (res.code == "000000") {
this.$emit('addOrg');
}else {
this.$message(res.message);
}
})
.catch(() => {
this.$message.error('保存失败,请重试');
})
},
// 取消
canclefn() {
this.$emit('handleClose')
......
......@@ -6,14 +6,14 @@
<i class="text" @click="dialogOrgFn()">添加机构</i>
</el-col>
<el-col class="add-organization" v-if="showImportFlag">
<el-upload
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeUploadOrg">
<!--<el-upload-->
<!--class="bg-uploader"-->
<!--action="#"-->
<!--:show-file-list="false"-->
<!--:before-upload="beforeUploadOrg">-->
<i class="el-icon-document-add"></i>
<i class="text">批量导入</i>
</el-upload>
<i class="text" @click="batchImport()">批量导入</i>
<!--</el-upload>-->
</el-col>
<el-col class="organization-search">
<el-form :inline="true" :model="formOrganization" class="demo-form-inline" >
......@@ -93,23 +93,90 @@
>
<p style="text-align: center;">{{detelMessage}}</p>
<span slot="footer" class="dialog-footer">
<el-button @click="confirmDelete">删 除</el-button>
<el-button type="primary" @click="hideDeleteFrom">取 消</el-button>
<el-button type="primary" @click="confirmDelete">删 除</el-button>
<el-button @click="hideDeleteFrom">取 消</el-button>
</span>
</el-dialog>
<el-dialog
title="导入错误提示"
:title="dialogTitle"
:visible.sync="dialogVisible"
width="500px"
:close-on-click-modal="false"
@close="handleErrorClose"
center
>
<el-table :data="dialogErrorData" align="center">
<el-table-column property="rowNumber" label="行数" align="center"></el-table-column>
<el-table-column property="wrongData" label="错误提示" align="center"></el-table-column>
</el-table>
center>
<!--<el-table :data="dialogErrorData" align="center">-->
<!--<el-table-column property="rowNumber" label="行数" align="center"></el-table-column>-->
<!--<el-table-column property="wrongData" label="错误提示" align="center"></el-table-column>-->
<!--</el-table>-->
<div v-if="importSuccessFlag" style="text-align: center;">
<div>本次成功导入<span style="color: green;">&nbsp;{{importNum}}条&nbsp;</span>数据</div>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="handleErrorClose" style="margin-top: 20px;">关闭</el-button>
</span>
</div>
<div v-if="!importSuccessFlag" style="text-align: center;">
<div v-if="importNum == 0">数据不符合格式要求,请修正后再次导入</div>
<div v-if="importNum != 0"><span style="color: red;">&nbsp;{{importNum}}条&nbsp;</span>数据不符合格式要求,请修正后再次导入</div>
<br>
<div>
<span>
<el-button @click="downloadFile" type="text" size="small" style="color: #449284 !important;">下载错误数据></el-button>
<!--<a @click="downloadFile">下载错误数据</a>-->
</span>
</div>
<div style="margin-top: 20px;">
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="handleErrorClose" style="float: left;margin-left: 130px;">取 消</el-button>
<el-upload
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeUploadOrg">
<el-button type="primary" size="small" style="margin-left: -100px;">重新导入</el-button>
</el-upload>
</span>
</div>
</div>
</el-dialog>
<el-dialog
title="批量导入"
:visible.sync="dialogImportVisible"
width="650px"
:close-on-click-modal="false"
@close="handleImportClose"
center>
<div style="float:left;width: 250px;">
<span>1.下载模板,填写信息</span>
<br>
<div>
<el-button type="primary" size="small" style="float:left; margin-top: 30px;" @click="download1">下载模板1</el-button>
<span style="float:left; margin-top: 72px;margin-left: -90px;">填写机构明细导入</span>
</div>
<div>
<el-button type="primary" size="small" style="margin-top: 30px;margin-left: 48px;" @click="download2">下载模板2</el-button>
<span style="float: right;margin-top:10px;">填写机构ID导入</span>
</div>
</div>
<div style="float:left;margin-left: 90px;width: 1px;height: 100px; background: #c8cbd2;"></div>
<div style="margin-left: 400px;height: 130px;">
<span>2.上传填写好的文件</span>
<br>
<el-upload
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeUploadOrg">
<el-button type="primary" size="small" style="margin-top: 30px;">上传文件</el-button>
</el-upload>
</div>
</el-dialog>
</div>
......@@ -192,6 +259,12 @@ export default {
dialogVisible: false,
dialogErrorData: [],
showImportFlag: false,
dialogImportVisible: false,
importMsg: "",
importSuccessFlag: false,
importNum: 0,
dialogTitle: "",
errorFileUrl: ""
}
},
components: {
......@@ -206,7 +279,48 @@ export default {
this.showImportFlag = true;
}
else {
this.showImportFlag = false;
// window.addEventListener("setItemEvent", function (e) {
//
// let highMainManager = 0;
// if(e.key == "highMainManager"){
// highMainManager = e.newValue;
// }
//
// let mainManager = 0;
// if(e.key == "mainManager"){
// mainManager = e.newValue;
// }
//
// let manager = 0;
// if(e.key == "manager"){
// manager = e.newValue;
// }
//
// if(highMainManager == 1 || mainManager == 1 || manager == 1){
// vm.showImportFlag = true;
// }
// else {
// vm.showImportFlag = false;
// }
//
//
// console.log('key: '+e.key);
// console.log('newValue: '+e.newValue);
// console.log('oldValue: '+e.oldValue);
// });
setTimeout(() => {
let highMainManager = localStorage.getItem('highMainManager');
let mainManager = localStorage.getItem('mainManager');
let manager = localStorage.getItem('manager');
if(highMainManager == 1 || mainManager == 1 || manager == 1){
this.showImportFlag = true;
}
else {
this.showImportFlag = false;
}
},3500)
}
},
mounted() {
......@@ -401,7 +515,7 @@ export default {
}
},
detel(item) {
this.detelMessage = `删除后 "${item.orgName}" 将无法访问本圈,确定删除吗?`
this.detelMessage = `删除后 "${item.orgName}" 将无法访问本圈,确定删除吗?`
this.deleteVisible = true
this.clickItem = item
},
......@@ -448,6 +562,11 @@ export default {
// 批量导入
beforeUploadOrg(file) {
// // 机构数已超10000,无法导入机构
// if(vm.totalOrganization > 10000){
// this.$message.warning('机构数已超10000,无法导入机构');
// return;
// }
let name = file.name;
let type = name.substring(name.lastIndexOf('.') + 1);
......@@ -470,23 +589,33 @@ export default {
closeLoading(vm);
if (res.code == "000000") {
vm.dialogImportVisible = false;
if(res.data.successNum == 0 && res.data.wrongDataList.length > 0){
this.dialogVisible = true;
// 导入成功
if(res.data.status){
this.dialogErrorData = res.data.wrongDataList;
}
else {
this.$message({
type: 'success',
message: '导入成功!'
});
vm.dialogVisible = true;
vm.dialogTitle = "导入成功";
vm.importSuccessFlag = true;
vm.importNum = res.data.successNum;
vm.initRange();
vm.searchOrganization();
vm.$emit('refreshRenYuan');
}
else {
vm.dialogVisible = true;
vm.dialogTitle = "导入失败";
vm.importSuccessFlag = false;
vm.importNum = res.data.failNum;
vm.errorFileUrl = res.data.file;
// this.$message({
// type: 'success',
// message: '导入成功!'
// });
}
}
else {
this.$message({
......@@ -503,15 +632,38 @@ export default {
handleErrorClose() {
this.dialogVisible = false;
},
// 批量导入
batchImport(){
this.dialogImportVisible = true;
},
handleImportClose(){
this.dialogImportVisible = false;
},
// 下载模板1
download1(){
const url = "https://files.yunqueyi.com/template/import_hospital_by_detail_1.xlsx";
window.location.href = url;
},
// 下载模板2
download2(){
const url = "https://files.yunqueyi.com/template/import_hospital_by_id.xlsx";
window.location.href = url;
},
// 下载错误数据文件
downloadFile(){
window.location.href = vm.errorFileUrl;
}
}
}
</script>
<style >
.organization .el-dialog {
max-height: 90%;
overflow: scroll;
}
/*.organization .el-dialog {*/
/*max-height: 90%;*/
/*overflow: scroll;*/
/*}*/
</style>
<style lang="scss" scoped>
.organization {
......
......@@ -67,7 +67,15 @@ export const moOption = (params) => {
description: '添加机构- 勾选操作',
})
};
export const moOptionAll = (params) => {
return fetch({
headers,
url: getBaseUrl(`circle/memberSelect/org/option/all`),
method: 'post',
data: params,
description: '添加机构- 全选勾选/反选操作',
})
};
export const moOptionBlackList = (params) => {
return fetch({
headers,
......@@ -87,7 +95,15 @@ export const moSave = (params) => {
description: '添加机构-保存',
})
};
export const moSaveAll = (params) => {
return fetch({
headers,
url: getBaseUrl(`circle/memberSelect/org/save/all`),
method: 'post',
data: params,
description: '添加机构- 全选-保存',
})
};
export const moSaveBlackList = (params) => {
return fetch({
headers,
......
......@@ -161,4 +161,14 @@ export const applyUpdate = (params) => {
})
};
export const getCircleDept = (params) => {
return fetch({
headers,
url: getBaseUrl(`circle/circle/judge/menu/${params.type}`),
method: 'get',
data: params,
description: '参数为类型目前2为是否有圈子设置所属部门的权限,返回结果为true/false',
})
};
......@@ -61,7 +61,9 @@
dynamicFlag: '',
idType: localStorage.getItem("storageIdType"),
roleType: null,
type: 0
type: 0,
deptId: "",
allowShare: 1
}
}
},
......@@ -143,11 +145,11 @@
// 修改编辑基础信息
returnIsNext(flag) {
if (flag == true) {
this.commitQuanziInfo();
vm.commitQuanziInfo();
}
},
returnTypeData(item) {
this.formData[item.name] = item.val
vm.formData[item.name] = item.val
},
//获取圈子详情
getCircleInfo() {
......@@ -155,15 +157,18 @@
// closeLoading(this);
if (res.code == "000000") {
this.formData = { ...this.formData, ...res.data };
if(vm.formData.deptId == 0){
vm.formData.deptId = "";
}
} else {
this.$message(res.message);
vm.$message(res.message);
}
}).catch(err => {
this.$message.error('请求失败');
vm.$message.error('请求失败');
});
},
commitQuanziInfo() {
let req = this.formData;
let req = vm.formData;
console.log("commitQuanziInfo() : name = " + req.name + ", headUrl = " + req.headUrl
+ ", coverUrl = " + req.coverUrl + ", introduce = " + req.introduce + ", dynamicFlag = " + req.dynamicFlag)
vm.POST("circle/circle/save", req).then(res => {
......
......@@ -122,7 +122,7 @@
},
created() {
this.initPrivilege();
this.search();
this.search(1);
},
methods: {
......@@ -167,16 +167,17 @@
},
// 搜索
search(){
search(first){
this.searchForm.pageNo = 1;
this.searchList();
this.searchList(first);
},
searchList() {
openLoading(this);
searchList(first) {
if(!first) {
console.log('查询圈子')
openLoading(this);
}
let params = this.searchForm;
console.log('查询圈子')
applyList(params).then((res) => {
closeLoading(this);
if(res.code == "000000") {
......
......@@ -135,8 +135,8 @@
</template>
<script>
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue";
import { getRangeList,updateRangeStatus, getCircleSettingList, saveCircleSetting} from "../../utils/yqrange/yqrangeApi";
import BreadCrumb from "@/components/breadcrumb.vue";
import { getRangeList,updateRangeStatus, getCircleSettingList, saveCircleSetting} from "../../utils/yqrange/yqrangeApi";
import ElTabPane from "element-ui/packages/tabs/src/tab-pane";
import RangeApply from "./range-apply";
export default {
......@@ -401,7 +401,6 @@ export default {
// 应用配置
setting(row){
this.dialogSettingVisible = true;
this.settingForm.circleId = row.id;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册