|
@@ -51,10 +51,10 @@
|
|
|
type="primary"
|
|
|
size="small"
|
|
|
plain
|
|
|
- icon="el-icon-remove"
|
|
|
- :disabled="multipleSelection.length == 0"
|
|
|
- @click="handleBatchDelete"
|
|
|
- >删除选中项</el-button
|
|
|
+ icon="el-icon-refresh"
|
|
|
+ @click="batchImportVisible1 = true"
|
|
|
+ :disabled="multipleSelection.length==0"
|
|
|
+ >批量转移</el-button
|
|
|
>
|
|
|
<el-button
|
|
|
type="primary"
|
|
@@ -65,7 +65,7 @@
|
|
|
>导入工会</el-button
|
|
|
>
|
|
|
</el-row>
|
|
|
- <el-table
|
|
|
+ <!-- <el-table
|
|
|
ref="formTable"
|
|
|
:data="tableData"
|
|
|
v-loading="loading"
|
|
@@ -131,13 +131,123 @@
|
|
|
@current-change="changePage"
|
|
|
@size-change="pageSizeChange"
|
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
|
- ></el-pagination>
|
|
|
+ ></el-pagination> -->
|
|
|
+ <div class="cardDiv">
|
|
|
+ <div class="cardDiv1">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <el-tree
|
|
|
+ :data="orgInfoTreeList"
|
|
|
+ show-checkbox
|
|
|
+ node-key="id"
|
|
|
+ default-expand-all
|
|
|
+ :expand-on-click-node="false"
|
|
|
+ @check="selectGetNodes"
|
|
|
+ >
|
|
|
+ <span class="custom-tree-node" slot-scope="{ node, data }" @click="handleEditTree(data.id)">
|
|
|
+ <span>{{ node.label }}</span>
|
|
|
+ <span>
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ @click="() => append(data)">
|
|
|
+ <i class="el-icon-circle-plus-outline"></i>
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="data.parentId!=null"
|
|
|
+ type="text"
|
|
|
+ @click="() => remove(data)">
|
|
|
+ <i class="el-icon-delete"></i>
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="data.parentId == null"
|
|
|
+ :disabled= true
|
|
|
+ type="text"
|
|
|
+ @click="() => remove(data)">
|
|
|
+ <i class="el-icon-delete"></i>
|
|
|
+ </el-button>
|
|
|
+ </span>
|
|
|
+ </span>
|
|
|
+ </el-tree>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ <div class="cardDiv2">
|
|
|
+ <el-card class="box-card2">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span><i class="el-icon-edit"></i>编辑工会信息</span>
|
|
|
+ </div>
|
|
|
+ <div class="user-panel" v-loading="loading">
|
|
|
+ <el-form ref="form" :model="formModel" inline :rules="ruleValidate" :label-width="'100px'">
|
|
|
+ <el-form-item label="所属区域" prop="area">
|
|
|
+ <el-select v-model="formModel.area" filterable placeholder="请选择" style="width:300px">
|
|
|
+ <el-option
|
|
|
+ v-for="result in areaList"
|
|
|
+ :key="result.id"
|
|
|
+ :label="result.name"
|
|
|
+ :value="result.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="上级工会" prop="parentId">
|
|
|
+ <el-select-tree
|
|
|
+ :props="props"
|
|
|
+ :options="orgResult"
|
|
|
+ v-model="formModel.parentId"
|
|
|
+ height="300"
|
|
|
+ size="large"
|
|
|
+ style="width:300px"
|
|
|
+ ></el-select-tree>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="工会名称" prop="name">
|
|
|
+ <el-input v-model="formModel.name" placeholder="请输入工会名称" style="width:300px"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="单位名称" prop="unit">
|
|
|
+ <el-input v-model="formModel.unit" placeholder="请输入单位名称" style="width:300px"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="备注" prop="remark">
|
|
|
+ <el-input type="textarea" v-model="formModel.remark" :rows="3" style="width:300px"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<orgInfo-detail
|
|
|
v-if="showModal"
|
|
|
:businessKey="businessKey"
|
|
|
+ :parentId="parentId"
|
|
|
:title="modalTitle"
|
|
|
@close="onDetailModalClose"
|
|
|
></orgInfo-detail>
|
|
|
+ <el-dialog
|
|
|
+ title="批量转移"
|
|
|
+ :visible.sync="batchImportVisible1"
|
|
|
+ :modal-append-to-body="false"
|
|
|
+ style="text-align: left"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ width="500px"
|
|
|
+ >
|
|
|
+ <div class="user-panel" v-loading="loading">
|
|
|
+ <el-form ref="form" :model="formModel2" inline :rules="ruleValidate" :label-width="'100px'">
|
|
|
+ <el-form-item label="转移至工会" prop="parentId">
|
|
|
+ <el-select-tree
|
|
|
+ :props="props"
|
|
|
+ :options="orgResult"
|
|
|
+ v-model="formModel2.parentId"
|
|
|
+ height="300"
|
|
|
+ style="width:300px"
|
|
|
+ size="large"
|
|
|
+ ></el-select-tree>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <span slot="footer" class="dialog-footer" >
|
|
|
+ <el-button @click="batchImportVisible1 = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="handleChangeSubmit" :loading="submitting">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
<el-dialog
|
|
|
title="导入"
|
|
|
:visible.sync="batchImportVisible"
|
|
@@ -196,9 +306,28 @@ import Constant from "@/constant";
|
|
|
import orgInfoDetail from "./orgInfo-detail";
|
|
|
import orgInfoApi from "@/api/base/orgInfo";
|
|
|
import { getToken } from "@/utils/auth"; // get token from cookie
|
|
|
+import SelectTree from "@/components/SelectTree";
|
|
|
+import dataDictionaryApi from "@/api/sys/dataDictionary";
|
|
|
|
|
|
export default {
|
|
|
name: "BaseOrgInfoList",
|
|
|
+ computed: {
|
|
|
+ ruleValidate (){
|
|
|
+ var rules = null;
|
|
|
+ rules = {
|
|
|
+ area: [
|
|
|
+ { required: true, message: "所属区域不能为空", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ // parentId: [
|
|
|
+ // { required: true, message: "上级工会不能为空", trigger: "blur" }
|
|
|
+ // ],
|
|
|
+ name: [
|
|
|
+ { required: true, message: "工会名称不能为空", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ return rules;
|
|
|
+ }
|
|
|
+ },
|
|
|
data() {
|
|
|
var self = this;
|
|
|
return {
|
|
@@ -211,7 +340,19 @@ export default {
|
|
|
type: "",
|
|
|
unitType: "",
|
|
|
},
|
|
|
+ formModel:{
|
|
|
+ id:"",
|
|
|
+ name:"",
|
|
|
+ parentId:"",
|
|
|
+ },
|
|
|
+ formModel2:{
|
|
|
+ parentId:"",
|
|
|
+ idList:[],
|
|
|
+ },
|
|
|
+ submitting: false,
|
|
|
loading: false,
|
|
|
+ isSelectTree:false,
|
|
|
+ orgInfoTreeList:[],
|
|
|
tableData: [],
|
|
|
treeData: [],
|
|
|
pageIndex: 1,
|
|
@@ -225,6 +366,7 @@ export default {
|
|
|
showModal: false,
|
|
|
modalTitle: "",
|
|
|
businessKey: "",
|
|
|
+ parentId:"",
|
|
|
tableHeight: 300,
|
|
|
showDeviceModal: false,
|
|
|
companyId: "",
|
|
@@ -238,11 +380,14 @@ export default {
|
|
|
},
|
|
|
xlsLoading: false,
|
|
|
sceneData: [],
|
|
|
+ areaList:[],
|
|
|
+ orgResult:[],
|
|
|
typeData: [],
|
|
|
deviceRelationTitle: "",
|
|
|
showIconModal: false,
|
|
|
iconModalTitle: "",
|
|
|
batchImportVisible: false,
|
|
|
+ batchImportVisible1: false,
|
|
|
batchImportFileList: [],
|
|
|
uploadUrlXls: Constant.serverUrl + "/base/orgInfo/importXls",
|
|
|
uploadXlsData: {
|
|
@@ -255,37 +400,39 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ self.loadOrgList();
|
|
|
+
|
|
|
+ dataDictionaryApi
|
|
|
+ .findByCatalogName({
|
|
|
+ catalogName: "所属区域",
|
|
|
+ })
|
|
|
+ .then((response) => {
|
|
|
+ var jsonData = response.data;
|
|
|
+ this.areaList = jsonData.data;
|
|
|
+ });
|
|
|
|
|
|
this.changePage(1);
|
|
|
},
|
|
|
methods: {
|
|
|
- changePage(pageIndex) {
|
|
|
+ closeDialog() {
|
|
|
+ this.$emit("close", false);
|
|
|
+ },
|
|
|
+ changePage() {
|
|
|
var self = this;
|
|
|
|
|
|
self.loading = true;
|
|
|
|
|
|
- self.pageIndex = pageIndex;
|
|
|
- var formData = new FormData();
|
|
|
-
|
|
|
- formData.append("pageIndex", self.pageIndex);
|
|
|
- formData.append("pageSize", self.pageSize);
|
|
|
-
|
|
|
- formData.append("name", self.queryModel.name);
|
|
|
-
|
|
|
orgInfoApi
|
|
|
- .pageList(formData)
|
|
|
+ .orgInfoTreeList()
|
|
|
.then(function (response) {
|
|
|
self.loading = false;
|
|
|
|
|
|
var jsonData = response.data.data;
|
|
|
|
|
|
- self.tableData = jsonData.data;
|
|
|
- self.totalPages = jsonData.totalPages;
|
|
|
- self.totalElements = jsonData.recordsTotal;
|
|
|
- //45为分页栏的高度
|
|
|
- //页面高度-列表上面的高度-分页栏高度
|
|
|
- self.tableHeight =
|
|
|
- window.innerHeight - self.$refs.formTable.$el.offsetTop - 100;
|
|
|
+ self.orgInfoTreeList = jsonData;
|
|
|
+
|
|
|
})
|
|
|
.catch((error) => {
|
|
|
self.loading = false;
|
|
@@ -333,7 +480,7 @@ export default {
|
|
|
if (jsonData.result) {
|
|
|
// var index = self.tableData.indexOf(record);
|
|
|
// self.tableData.splice(index, 1);
|
|
|
- self.changePage(self.pageIndex);
|
|
|
+ self.changePage();
|
|
|
|
|
|
self.$message({
|
|
|
type: "success",
|
|
@@ -369,6 +516,12 @@ export default {
|
|
|
});
|
|
|
});
|
|
|
},
|
|
|
+ handleGetNodes(){
|
|
|
+
|
|
|
+ },
|
|
|
+ selectGetNodes(node){
|
|
|
+ this.multipleSelection.push(node.id);
|
|
|
+ },
|
|
|
onDetailModalClose(refreshed) {
|
|
|
//保存成功后回调
|
|
|
this.showModal = false;
|
|
@@ -378,6 +531,126 @@ export default {
|
|
|
this.changePage(this.pageIndex);
|
|
|
}
|
|
|
},
|
|
|
+ handleEditTree(id){
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ (function () {
|
|
|
+ return orgInfoApi.edit(id);
|
|
|
+ })()
|
|
|
+ .then((response) => {
|
|
|
+ var jsonData = response.data;
|
|
|
+
|
|
|
+ if (jsonData.result) {
|
|
|
+ self.formModel = jsonData.data;
|
|
|
+
|
|
|
+ if(self.formModel.parentId==null){
|
|
|
+ self.formModel.parentId="";
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ self.isSelectTree = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ self.$message.error(jsonData.message + "");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ self.$message.error(error + "");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ append(data) {
|
|
|
+ this.modalTitle = "新增";
|
|
|
+ this.businessKey = data.id;
|
|
|
+ this.showModal = true;
|
|
|
+ },
|
|
|
+
|
|
|
+ remove(data) {
|
|
|
+ this.handleDelete(data);
|
|
|
+ },
|
|
|
+ handleSubmit() {
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ this.$refs["form"].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ (function () {
|
|
|
+ var id = self.formModel.id;
|
|
|
+
|
|
|
+ if (id == null || id.length == 0) {
|
|
|
+ return orgInfoApi.add(self.formModel);
|
|
|
+ } else {
|
|
|
+ return orgInfoApi.update(self.formModel);
|
|
|
+ }
|
|
|
+ })().then(function (response) {
|
|
|
+ var jsonData = response.data;
|
|
|
+
|
|
|
+ if (jsonData.result) {
|
|
|
+ self.$message({
|
|
|
+ message: "保存成功!",
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+
|
|
|
+ self.changePage();
|
|
|
+
|
|
|
+ } else {
|
|
|
+ self.$message({
|
|
|
+ message: jsonData.message + "",
|
|
|
+ type: "warning",
|
|
|
+ });
|
|
|
+
|
|
|
+ //self.$emit("close", false);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ loadOrgList(){
|
|
|
+ var self = this
|
|
|
+ orgInfoApi.treeList().then(function (response) {
|
|
|
+ var jsonData = response.data;
|
|
|
+ if (jsonData.result) {
|
|
|
+ if (jsonData.data != null && jsonData.data != "") {
|
|
|
+ self.orgResult = jsonData.data;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ handleChangeSubmit(){
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ self.formModel2.idList = this.multipleSelection;
|
|
|
+
|
|
|
+ this.$confirm("是否确认转移至所选工会下?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ }).then(() => {
|
|
|
+ (function () {
|
|
|
+ return orgInfoApi.batchChange(self.formModel2);
|
|
|
+ })().then(function (response) {
|
|
|
+ var jsonData = response.data;
|
|
|
+
|
|
|
+ if (jsonData.result) {
|
|
|
+ self.$message({
|
|
|
+ message: "转移成功!",
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+
|
|
|
+ self.changePage();
|
|
|
+ self.loadOrgList();
|
|
|
+ self.batchImportVisible1 = false;
|
|
|
+ self.multipleSelection.length = 0;
|
|
|
+ } else {
|
|
|
+ self.$message({
|
|
|
+ message: jsonData.message + "",
|
|
|
+ type: "warning",
|
|
|
+ });
|
|
|
+
|
|
|
+ //self.$emit("close", false);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+ },
|
|
|
beforeUpload(file, fileList) {
|
|
|
//导入前判断
|
|
|
},
|
|
@@ -437,6 +710,7 @@ export default {
|
|
|
mounted: function () {},
|
|
|
components: {
|
|
|
"orgInfo-detail": orgInfoDetail,
|
|
|
+ "el-select-tree": SelectTree,
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
@@ -459,4 +733,42 @@ export default {
|
|
|
margin-left: 10px;
|
|
|
text-align: left;
|
|
|
}
|
|
|
+.cardDiv{
|
|
|
+ width: 90%;
|
|
|
+}
|
|
|
+.cardDiv1{
|
|
|
+ float: left;
|
|
|
+ width: 50%;
|
|
|
+}
|
|
|
+
|
|
|
+.cardDiv2{
|
|
|
+ float: left;
|
|
|
+ width: 50%;
|
|
|
+ text-align: left;
|
|
|
+}
|
|
|
+
|
|
|
+.box-card{
|
|
|
+ margin: 20px;
|
|
|
+ width: 90%;
|
|
|
+ min-height: 500px;
|
|
|
+ margin-right: 20px;
|
|
|
+}
|
|
|
+.box-card2{
|
|
|
+ margin: 20px;
|
|
|
+ min-height: 500px;
|
|
|
+ width: 90%;
|
|
|
+}
|
|
|
+
|
|
|
+.custom-tree-node {
|
|
|
+ flex: 1;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ font-size: 14px;
|
|
|
+ padding-right: 8px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .dialog-footer{
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
</style>
|