|
@@ -0,0 +1,285 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <div @click="portinfoVisible = true&&!disabled">
|
|
|
+ <el-input
|
|
|
+ v-model="value"
|
|
|
+ @input="$emit('balabala', value)"
|
|
|
+ placeholder="请选择"
|
|
|
+ :disabled="disabled"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <el-dialog
|
|
|
+ title="港口信息"
|
|
|
+ :visible.sync="portinfoVisible"
|
|
|
+ width="60%"
|
|
|
+ append-to-body
|
|
|
+ @closed="closed"
|
|
|
+ >
|
|
|
+ <span>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-scrollbar>
|
|
|
+ <basic-container>
|
|
|
+ <avue-tree
|
|
|
+ :option="treeOption"
|
|
|
+ :data="treeData"
|
|
|
+ @node-click="nodeClick"
|
|
|
+ />
|
|
|
+ </basic-container>
|
|
|
+ </el-scrollbar>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="19">
|
|
|
+ <avue-crud
|
|
|
+ ref="crud"
|
|
|
+ :data="data"
|
|
|
+ :option="tableOption"
|
|
|
+ :page.sync="page"
|
|
|
+ :table-loading="loading"
|
|
|
+ v-model="form"
|
|
|
+ :search.sync="search"
|
|
|
+ :before-open="beforeOpen"
|
|
|
+ @size-change="sizeChange"
|
|
|
+ @current-change="currentChange"
|
|
|
+ @search-change="searchChange"
|
|
|
+ @refresh-change="refreshChange"
|
|
|
+ @row-save="rowSave"
|
|
|
+ @row-del="rowDel"
|
|
|
+ @row-update="rowUpdate"
|
|
|
+ @on-load="getList"
|
|
|
+ @saveColumn="saveColumn"
|
|
|
+ @tree-load="treeLoad"
|
|
|
+ @selection-change="selectionChange"
|
|
|
+ >
|
|
|
+ </avue-crud>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </span>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="portinfoVisible = false">取 消</el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click="importPort"
|
|
|
+ :disabled="selectionList.length != 1"
|
|
|
+ >确 定</el-button
|
|
|
+ >
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import option from "./configuration/mainList.json";
|
|
|
+import reportDialog from "@/components/report-dialog/main";
|
|
|
+import {
|
|
|
+ getList,
|
|
|
+ add,
|
|
|
+ update,
|
|
|
+ remove,
|
|
|
+ getPortTypeTree,
|
|
|
+ getTypeTree
|
|
|
+} from "@/api/basicData/portinformation";
|
|
|
+
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ switchDialog: false, //报表
|
|
|
+ loading: true,
|
|
|
+ data: [],
|
|
|
+ tableOption: option,
|
|
|
+ form: {},
|
|
|
+ search: {},
|
|
|
+ treeDeptId: "",
|
|
|
+ treeDeptName: "",
|
|
|
+ height: window.innerHeight - 500,
|
|
|
+ page: {
|
|
|
+ currentPage: 1,
|
|
|
+ total: 0,
|
|
|
+ pageSize: 10
|
|
|
+ },
|
|
|
+ treeOption: {
|
|
|
+ nodeKey: "id",
|
|
|
+ lazy: true,
|
|
|
+ treeLoad: function(node, resolve) {
|
|
|
+ const parentId = node.level === 0 ? 0 : node.data.id;
|
|
|
+ getPortTypeTree(parentId).then(res => {
|
|
|
+ resolve(
|
|
|
+ res.data.map(item => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ leaf: !item.hasChildren
|
|
|
+ };
|
|
|
+ })
|
|
|
+ );
|
|
|
+ });
|
|
|
+ },
|
|
|
+ addBtn: false,
|
|
|
+ menu: false,
|
|
|
+ size: "small",
|
|
|
+ props: {
|
|
|
+ labelText: "标题",
|
|
|
+ label: "name",
|
|
|
+ value: "id",
|
|
|
+ children: "children"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ portinfoVisible: false,
|
|
|
+ selectionList: []
|
|
|
+ };
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ value: String,
|
|
|
+ disabled: Boolean
|
|
|
+ },
|
|
|
+ model: {
|
|
|
+ prop: "value",
|
|
|
+ event: "balabala"
|
|
|
+ },
|
|
|
+ created() {},
|
|
|
+ components: {
|
|
|
+ reportDialog
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ option.height = window.innerHeight - 500;
|
|
|
+ //查询服务类别字典项
|
|
|
+ getTypeTree().then(res => {
|
|
|
+ this.findObject(this.tableOption.column, "typeId").dicData =
|
|
|
+ res.data.data;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ closed() {
|
|
|
+ this.selectionList = [];
|
|
|
+ },
|
|
|
+ importPort() {
|
|
|
+ this.$emit("balabala", this.selectionList[0].name);
|
|
|
+ this.portinfoVisible = false;
|
|
|
+ },
|
|
|
+ //打印
|
|
|
+ openReport() {
|
|
|
+ this.switchDialog = !this.switchDialog;
|
|
|
+ },
|
|
|
+ //关闭打印
|
|
|
+ onClose(val) {
|
|
|
+ this.switchDialog = val;
|
|
|
+ },
|
|
|
+ getList(page, params = {}) {
|
|
|
+ this.loading = true;
|
|
|
+ getList(page.currentPage, page.pageSize, params, this.treeDeptId).then(
|
|
|
+ res => {
|
|
|
+ this.data = res.data.data.records;
|
|
|
+ this.page.total = res.data.data.total;
|
|
|
+ this.loading = false;
|
|
|
+ }
|
|
|
+ );
|
|
|
+ },
|
|
|
+ //点击新增打开的窗口 取消时触发
|
|
|
+ // beforeClose(){
|
|
|
+
|
|
|
+ // },
|
|
|
+ selectionChange(list) {
|
|
|
+ this.selectionList = list;
|
|
|
+ },
|
|
|
+ //点击新增或修改时
|
|
|
+ beforeOpen(done, type) {
|
|
|
+ if (["add"].includes(type)) {
|
|
|
+ this.tableOption.column.forEach(e => {
|
|
|
+ if (e.prop == "typeId") {
|
|
|
+ this.$set(this.tableOption.column, 3, {
|
|
|
+ ...e,
|
|
|
+ value: this.treeDeptId
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ done();
|
|
|
+ },
|
|
|
+ searchChange(params, done) {
|
|
|
+ this.getList(this.page, params);
|
|
|
+ done();
|
|
|
+ },
|
|
|
+ sizeChange(val) {
|
|
|
+ this.page.pageSize = val;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ currentChange(val) {
|
|
|
+ this.page.currentPage = val;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ refreshChange() {
|
|
|
+ this.getList(this.page, this.search);
|
|
|
+ },
|
|
|
+ rowSave(row, done, loading) {
|
|
|
+ add(row).then(
|
|
|
+ () => {
|
|
|
+ this.page.currentPage = 1;
|
|
|
+ this.getList(this.page);
|
|
|
+ this.$message.success("保存成功");
|
|
|
+ done();
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ window.console.log(error);
|
|
|
+ loading();
|
|
|
+ }
|
|
|
+ );
|
|
|
+ },
|
|
|
+ rowUpdate(row, index, done, loading) {
|
|
|
+ row.createTime = "";
|
|
|
+ update(row).then(
|
|
|
+ () => {
|
|
|
+ this.getList(this.page);
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ // 数据回调进行刷新
|
|
|
+ done(row);
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ window.console.log(error);
|
|
|
+ loading();
|
|
|
+ }
|
|
|
+ );
|
|
|
+ },
|
|
|
+ rowDel(row, index, done) {
|
|
|
+ this.$confirm("确定将选择数据删除?", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ return remove(row.id);
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.getList(this.page);
|
|
|
+ done(row);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ cellDblclick(row, column, cell, event) {
|
|
|
+ this.$refs.crud.rowEdit(row);
|
|
|
+ },
|
|
|
+ saveColumn(row, column) {
|
|
|
+ console.log(row, column);
|
|
|
+ },
|
|
|
+ //展开主页左边类型
|
|
|
+ nodeClick(data) {
|
|
|
+ this.treeDeptName = data.cname;
|
|
|
+ this.treeDeptId = data.id;
|
|
|
+ this.page.currentPage = 1;
|
|
|
+ this.getList(this.page);
|
|
|
+ },
|
|
|
+ //列表内展开树节点
|
|
|
+ treeLoad(tree, treeNode, resolve) {
|
|
|
+ const parentId = tree.id;
|
|
|
+ getList({ parentId: parentId }).then(res => {
|
|
|
+ resolve(res.data.data.records);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped lang="scss"></style>
|