Commit 29b9e4a5 authored by 姬鋆屾's avatar 姬鋆屾

提交事项管理

parent 288a7f8a
#开发环境 #开发环境
NODE_ENV = "development" NODE_ENV = "development"
VUE_APP_BASE_API= http://192.168.0.98:11091/bill VUE_APP_BASE_API= http://192.168.0.252:21086/complex
#VUE_APP_BASE_API= /basics_api/m #VUE_APP_BASE_API= /basics_api/m
#图片地址拼接 #图片地址拼接
VUE_APP_API_IMG_URL=http://192.168.0.98:11078/ VUE_APP_API_IMG_URL=http://192.168.0.98:11078/
...@@ -53,7 +53,13 @@ export default { ...@@ -53,7 +53,13 @@ export default {
} catch (error) { } catch (error) {
return; return;
} }
console.log(this.tableConfig);
this.pageInfo.list.indexOf("/matter") == 0
? (this.pageInfo.list = "/apply/matter/list")
: "";
console.log(this.tableConfig);
this.tableData.loading = true; this.tableData.loading = true;
this.query.applyType = this.tableConfig.applyType;
this.$post(this.pageInfo.list, this.query, { this.$post(this.pageInfo.list, this.query, {
cancelToken: this.source.token, cancelToken: this.source.token,
}) })
...@@ -176,6 +182,7 @@ export default { ...@@ -176,6 +182,7 @@ export default {
// 格式化单元格数据 // 格式化单元格数据
formatter(row, column, val) { formatter(row, column, val) {
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
return content ? ( return content ? (
<el-tag type={"info"} size="mini"> <el-tag type={"info"} size="mini">
{content} {content}
...@@ -302,21 +309,20 @@ export default { ...@@ -302,21 +309,20 @@ export default {
}, },
// 格式化单元格数据 // 格式化单元格数据
formatterDateSeconds(row, column,val) { formatterDateSeconds(row, column, val) {
let h = parseInt((val / 60 / 60) % 24);
let h = parseInt(val / 60 / 60 % 24) let m = parseInt((val / 60) % 60);
let m = parseInt(val / 60 % 60) let s = parseInt(val % 60);
let s = parseInt(val % 60)
//三元表达式 补零 如果小于10 则在前边进行补零 如果大于10 则不需要补零 //三元表达式 补零 如果小于10 则在前边进行补零 如果大于10 则不需要补零
h = h < 10 ? '0' + h : h h = h < 10 ? "0" + h : h;
m = m < 10 ? '0' + m : m m = m < 10 ? "0" + m : m;
s = s < 10 ? '0' + s : s s = s < 10 ? "0" + s : s;
if('00'===h&&'00'===m) return `${s}秒` if ("00" === h && "00" === m) return `${s}秒`;
if('00'===h) return `${m}分钟${s}秒` if ("00" === h) return `${m}分钟${s}秒`;
return `${h}小时${m}分钟${s}秒` return `${h}小时${m}分钟${s}秒`;
//return formatterDate(row, column); //return formatterDate(row, column);
}, },
...@@ -383,7 +389,9 @@ export default { ...@@ -383,7 +389,9 @@ export default {
if (!id) { if (!id) {
return this.$message.warning("请选中一条记录"); return this.$message.warning("请选中一条记录");
} }
this.pageInfo.list.indexOf("/matter") != -1
? (this.pageInfo.del = "/apply/matter/delete")
: "";
this.$get(this.pageInfo.del, { id: id }) this.$get(this.pageInfo.del, { id: id })
.then((res) => { .then((res) => {
this.$message.success(res.msg); this.$message.success(res.msg);
......
...@@ -3,9 +3,9 @@ import Qs from "qs"; ...@@ -3,9 +3,9 @@ import Qs from "qs";
const JSONbig = require("json-bigint")({ storeAsString: true }); const JSONbig = require("json-bigint")({ storeAsString: true });
import cookie from "./cookie"; import cookie from "./cookie";
import httpErrorHandler from "./httpErrorHandler"; import httpErrorHandler from "./httpErrorHandler";
console.log(window.location);
const instance = axios.create({ const instance = axios.create({
baseURL: "/bill", baseURL: "/complex",
//baseURL: process.env.VUE_APP_BASE_API, //baseURL: process.env.VUE_APP_BASE_API,
headers: { headers: {
post: { post: {
......
<template> <template>
<el-table <el-table
size='small' size="small"
:ref="tableName" :ref="tableName"
:data="tableData" :data="tableData"
:row-key="handleRowKeyMethod" :row-key="handleRowKeyMethod"
...@@ -10,123 +10,125 @@ ...@@ -10,123 +10,125 @@
@sort-change="handleSortChange" @sort-change="handleSortChange"
@row-click="handleRowClick" @row-click="handleRowClick"
:row-class-name="tableRowClassName" :row-class-name="tableRowClassName"
:empty-text='emptyText' :empty-text="emptyText"
max-height="636"
border border
style="width: 100%"> style="width: 100%"
>
<el-table-column
v-for="column in columns"
:key="column.prop"
:type="column.type"
:index="handleIndexMethod"
:selectable="handleSelectableMethod"
:prop="column.prop"
:label="column.label"
:width="column.width"
:sortable="column.sortable"
:show-overflow-tooltip="column.tooltip"
:align="column.align || 'left'"
:formatter="column.formatter"
:reserve-selection="column.reserveSelection"
:subColumns="column.subColumns"
>
<el-table-column <el-table-column
v-for='column in columns' v-for="sunColumn in column.subColumns"
:key='column.prop' :key="sunColumn.prop"
:type="column.type" :type="sunColumn.type"
:index="handleIndexMethod" :prop="sunColumn.prop"
:selectable="handleSelectableMethod" :label="sunColumn.label"
:prop="column.prop" :width="sunColumn.width"
:label="column.label" :sortable="sunColumn.sortable"
:width="column.width" :align="sunColumn.align || 'left'"
:sortable="column.sortable" :formatter="sunColumn.formatter"
:show-overflow-tooltip="column.tooltip" />
:align="column.align || 'left'" </el-table-column>
:formatter='column.formatter'
:reserve-selection='column.reserveSelection'
:subColumns='column.subColumns'
>
<el-table-column
v-for='sunColumn in column.subColumns'
:key='sunColumn.prop'
:type="sunColumn.type"
:prop="sunColumn.prop"
:label="sunColumn.label"
:width="sunColumn.width"
:sortable="sunColumn.sortable"
:align="sunColumn.align || 'left'"
:formatter='sunColumn.formatter'
/>
</el-table-column>
</el-table> </el-table>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
handleRowKeyMethod: { handleRowKeyMethod: {
type: Function, type: Function,
required: false, required: false,
default: row => { return row.id } default: (row) => {
return row.id;
},
}, },
handleSelectableMethod: { handleSelectableMethod: {
type: Function, type: Function,
required: false, required: false,
default: () => {} default: () => {},
}, },
handleIndexMethod: { handleIndexMethod: {
type: Function, type: Function,
required: false, required: false,
default: () => {} default: () => {},
}, },
handleSpanMethod: { handleSpanMethod: {
type: Function, type: Function,
required: false, required: false,
default: () => {} default: () => {},
}, },
toggleRowSelection: { toggleRowSelection: {
type: Function, type: Function,
required: false, required: false,
default: () => {} default: () => {},
}, },
handleSelectionChange: { handleSelectionChange: {
type: Function, type: Function,
required: false, required: false,
default: () => {} default: () => {},
}, },
handleRowClick: { handleRowClick: {
type: Function, type: Function,
required: false, required: false,
default: () => {} default: () => {},
}, },
handleSortChange: { handleSortChange: {
type: Function, type: Function,
required: false, required: false,
default: () => {} default: () => {},
}, },
tableRowClassName: { tableRowClassName: {
type: Function, type: Function,
required: false, required: false,
default: () => {} default: () => {},
}, },
loading: { loading: {
type: Boolean, type: Boolean,
required: false, required: false,
default: true default: true,
}, },
tableData: { tableData: {
type: Array, type: Array,
required: false, required: false,
default: () => [] default: () => [],
}, },
columns: { columns: {
type: Array, type: Array,
required: false, required: false,
default: ()=> [], default: () => [],
}, },
tableName: { tableName: {
type: String, type: String,
required: false, required: false,
default: "table", default: "table",
} },
height: {
type: String,
required: false,
},
}, },
computed: { computed: {
emptyText() { emptyText() {
return (!this.loading && !this.tableData.length) ? '暂无数据' : '加载中...' return !this.loading && !this.tableData.length ? "暂无数据" : "加载中...";
}, },
}, },
methods:{ methods: {},
},
data() { data() {
return {} return {};
} },
} };
</script> </script>
...@@ -214,7 +214,7 @@ export default { ...@@ -214,7 +214,7 @@ export default {
} }
.title { .title {
font-size: 18px; font-size: 18px;
max-width: 200px; max-width: 260px;
color: #fff; color: #fff;
line-height: normal; line-height: normal;
} }
...@@ -257,7 +257,7 @@ export default { ...@@ -257,7 +257,7 @@ export default {
color: #fff; color: #fff;
list-style-type: none; list-style-type: none;
// border-bottom: 3px solid #fff; // border-bottom: 3px solid #fff;
padding-bottom: 2px; // padding-bottom: 2px;
background-color: #1890ff; background-color: #1890ff;
} }
} }
......
...@@ -199,7 +199,6 @@ export default { ...@@ -199,7 +199,6 @@ export default {
}, },
}, },
async created() { async created() {
console.log("1111")
this.initForm(this.$route.query); this.initForm(this.$route.query);
}, },
methods: { methods: {
......
...@@ -9,28 +9,30 @@ ...@@ -9,28 +9,30 @@
</slot> --> </slot> -->
<div class="buttons"> <div class="buttons">
<el-row> <el-row>
<slot name="table-head-left"></slot> <slot name="table-head-left"></slot>
<slot name="table-head-center"> <slot name="table-head-center">
<el-button <el-button
v-if="isShowButton('notAdd')" v-if="isShowButton('notAdd')"
type="primary" class="addclass" type="primary"
icon="el-icon-plus" class="addclass"
plain icon="el-icon-plus"
size="mini" plain
@click="config.methods.add" size="mini"
title="新增" @click="config.methods.add"
>新增</el-button title="新增"
> >新增</el-button
<el-button >
v-if="isShowBtn('import')" <el-button
size="mini" v-if="isShowBtn('import')"
plain size="mini"
@click="config.methods.importView" plain
class="el-icon-upload2" @click="config.methods.importView"
title="导入" class="el-icon-upload2"
>导入</el-button> title="导入"
>导入</el-button
>
<!-- <el-button <!-- <el-button
v-if="isShowButton('notDel')" v-if="isShowButton('notDel')"
icon="el-icon-delete" icon="el-icon-delete"
type="danger" type="danger"
...@@ -40,31 +42,42 @@ ...@@ -40,31 +42,42 @@
title="批量删除" title="批量删除"
>删除</el-button >删除</el-button
> --> > -->
<Confirm v-if='isShowButton("notDel")' @confirm='config.methods.del' message='确定要删除选中的多条记录吗?'> <Confirm
<el-button icon="el-icon-delete" type="danger" size='mini' plain title="删除">删除</el-button> v-if="isShowButton('notDel')"
</Confirm> @confirm="config.methods.del"
<el-button message="确定要删除选中的多条记录吗?"
@click="item.method" >
size="mini" <el-button
:key="item.label" icon="el-icon-delete"
:icon="item.icon" type="danger"
:type="item.type" size="mini"
:loading="item.loading" plain
v-if="item.isShow" title="删除"
v-for="item in config.buttons" >删除</el-button
circle >
:title="item.label" </Confirm>
></el-button> <el-button
<el-button @click="item.method"
v-if="isShowBtn('back')" size="mini"
@click="config.methods.back" :key="item.label"
size="mini" :icon="item.icon"
icon="el-icon-back" :type="item.type"
circle :loading="item.loading"
title="返回" v-if="item.isShow"
></el-button> v-for="item in config.buttons"
</slot> circle
<slot name="table-head-left2"></slot> :title="item.label"
></el-button>
<el-button
v-if="isShowBtn('back')"
@click="config.methods.back"
size="mini"
icon="el-icon-back"
circle
title="返回"
></el-button>
</slot>
<slot name="table-head-left2"></slot>
</el-row> </el-row>
</div> </div>
<el-row> <el-row>
...@@ -165,6 +178,7 @@ ...@@ -165,6 +178,7 @@
:handleSelectableMethod="config.methods.handleSelectableMethod" :handleSelectableMethod="config.methods.handleSelectableMethod"
:handleSelectionChange="config.methods.handleSelectionChange" :handleSelectionChange="config.methods.handleSelectionChange"
:handleRowClick="config.methods.handleRowClick" :handleRowClick="config.methods.handleRowClick"
:height="config.height"
/> />
<DataTableFlow <DataTableFlow
...@@ -290,7 +304,7 @@ export default { ...@@ -290,7 +304,7 @@ export default {
</script> </script>
<style lang="less"> <style lang="less">
.table-body{ .table-body {
margin-left: 30px; margin-left: 30px;
} }
@media screen and (max-width: 800px) { @media screen and (max-width: 800px) {
......
...@@ -39,7 +39,9 @@ const router = new Router({ ...@@ -39,7 +39,9 @@ const router = new Router({
...restBuilder("user", "system/user"), // 用户管理 -- 管理用户 ...restBuilder("user", "system/user"), // 用户管理 -- 管理用户
...restBuilder("param", "system/param"), // 系统管理--参数管理 ...restBuilder("param", "system/param"), // 系统管理--参数管理
...restBuilder("task", "system/task"), // 系统管理--任务管理 ...restBuilder("task", "system/task"), // 系统管理--任务管理
...restBuilder("matter/mobile", "matter/mobile"), // 事项管理--移动端申报
...restBuilder("matter/salfhelp", "matter/salfHelp"), // 事项管理--自助申报
...restBuilder("matter/other", "matter/other"), // 事项管理--其他申报
//以下为基础路由配置 //以下为基础路由配置
builder("", "Home"), builder("", "Home"),
...@@ -91,7 +93,6 @@ function getComponent(fileName) { ...@@ -91,7 +93,6 @@ function getComponent(fileName) {
try { try {
return require("./views/" + fileName).default; return require("./views/" + fileName).default;
} catch (error) { } catch (error) {
//console.error(error) //console.error(error)
return fileNotFound; return fileNotFound;
......
<template>
<div class="page">
<div class="left_box">
<div class="table_title">自助终端申报事项列表</div>
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
<el-button
type="danger"
@click="allDel"
size="mini"
plain
slot="table-head-left2"
>删除
</el-button>
</LayoutTable>
</div>
<div class="right_box">
<div class="table_title">一体化事项列表</div>
<div class="layout-table">
<div class="table-head flex flex-pack-justify">
<div class="table-head-left flex flex-align-center">
<div class="buttons">
<el-button
type="success"
icon="el-icon-plus"
plain
size="mini"
class="addclass"
@click="allAdd"
>批量加入</el-button
>
</div>
</div>
<div class="table-head-right">
<div class="extend flex flex-pack-justify">
<div class="table-form">
<div class="search-form-wapper">
<el-form
:inline="true"
:model="form"
ref="search-form"
size="small"
>
<el-form-item
v-for="(item, i) in search"
:key="i"
v-bind:class="{ search_new_line: item.newLine }"
>
<el-input
v-model="form[item.name]"
v-if="item.type === 'text'"
:placeholder="
item.placeholder
? item.placeholder
: '请输入' + item.label
"
></el-input>
<el-select
v-model="form[item.name]"
:filterable="item.filterable"
:multiple="item.multiple"
clearable="true"
@change="item.change"
@clear="item.clear"
v-if="item.type === 'select'"
:placeholder="'请选择' + item.label"
>
<el-option
label="全部"
value=""
v-if="!item.multiple && !item.notShowAll"
></el-option>
<el-option
:label="label"
:value="value"
v-for="(label, value) in dict[item.name]"
:key="value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
class="addclass"
icon="el-icon-search"
@click="onSubmit"
title="查询"
>查询</el-button
>
<el-button
icon="el-icon-refresh-left"
@click="cleanForm"
title="清空"
>清空</el-button
>
</el-form-item>
</el-form>
</div>
</div>
</div>
</div>
</div>
<el-table
ref="multipleTable"
:data="yitihuaData"
size="small"
style="width: 100%"
@selection-change="handleSelectionChange1"
height="636"
border
v-loading="tableLoading"
>
<el-table-column
v-for="column in columns"
:key="column.prop"
:type="column.type"
:width="column.width"
:label="column.label"
:align="column.align || 'left'"
:formatter="column.formatter"
>
</el-table-column>
</el-table>
<div class="pagination-wapper flex">
<el-pagination
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
:current-page="currPage"
:page-size="currSize"
:page-sizes="[10, 20, 50, 100, 200, 500]"
layout="sizes, total, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import table from "@/assets/mixins/table";
import axios from "axios";
export default {
mixins: [table],
created() {
this.getYitihua();
},
watch: {},
methods: {
toDel(val) {
console.log(val);
axios({
method: "post",
url: "/complex/apply/matter/delete?id=" + val,
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {});
},
allDel() {
console.log(this.selection);
this.selection && this.selection.length > 0
? axios({
method: "post",
url: "/complex/apply/matter/delete?id=" + this.selection.join(","),
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {})
: this.$message({
message: "请选择一条事项",
type: "warning",
});
},
allAdd(val) {
let arr = [];
if (val.id) {
arr.push(val.id);
} else {
arr = this.multipleSelection.map((v) => v.id);
}
let data = {
applyType: 2,
idList: arr,
};
axios({
method: "post",
url: "/complex/event/implementation/addToApplyMatter",
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
data,
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {});
},
delete(row) {},
toggleSelection(rows) {
if (rows) {
rows.forEach((row) => {
this.$refs.multipleTable.toggleRowSelection(row);
});
} else {
this.$refs.multipleTable.clearSelection();
}
},
handleSelectionChange1(val) {
this.multipleSelection = val;
},
getYitihua() {
this.tableLoading = true;
let data = {
...this.form,
size: this.currSize,
page: this.currPage,
applyType: 2,
};
axios({
method: "post",
url: "/complex/event/implementation/subList",
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
data,
})
.then((res) => {
if (res.data.code == 1) {
this.yitihuaData = res.data.data.data;
this.dict = res.data.data.dict;
this.currPage = res.data.data.current_page;
this.total = res.data.data.total;
this.tableLoading = false;
} else {
this.tableLoading = false;
}
})
.catch((error) => {
this.tableLoading = false;
});
},
handleCurrentChange(val) {
console.log(val);
this.currPage = val;
this.getYitihua();
},
handleSizeChange(val) {
console.log(val);
this.currSize = val;
this.getYitihua();
},
onSubmit() {
this.getYitihua();
},
cleanForm() {
this.form = {};
this.getYitihua();
},
},
data() {
return {
tableLoading: false,
columns: [
{ type: "selection", reserveSelection: true },
{ type: "index", label: "序号", align: "center", width: 50 },
{
prop: "eventObjectType",
label: "申报类型",
align: "center",
formatter: (row) => {
if (row.eventObjectType.indexOf("/") == -1) {
return this.dict.eventObjectType[row.eventObjectType];
} else {
let str = row.eventObjectType.split("/");
let arr = str
.map((v) => {
return (v = this.dict.eventObjectType[v]);
})
.join("/");
return arr;
}
},
},
{
prop: "implementName",
label: "事项名称",
formatter: (row) => {
return row.implementName ? row.implementName : "--";
},
align: "center",
},
{
label: "操作",
align: "center",
formatter: (row) => {
return (
<div>
<el-button
size="mini"
type="success"
onClick={() => this.allAdd(row)}
>
加入
</el-button>
</div>
);
},
},
],
currPage: 1,
currSize: 10,
total: 0,
form: {},
dict: {},
search: [
{
name: "eventObjectType",
type: "select",
label: "申报类型",
},
{
name: "implementName",
type: "text",
label: "事项名称搜索",
},
],
yitihuaData: [],
multipleSelection: [],
config: {
applyType: 2,
height: "620",
downloadUrl: "",
columns: [
{ type: "selection", reserveSelection: true },
{ type: "index", label: "序号", align: "center", width: 50 },
{
prop: "eventObjectType",
label: "申报类型",
align: "center",
formatter: (row) => {
if (row.eventObjectType.indexOf("/") == -1) {
return this.tableData.dict.eventObjectType[row.eventObjectType];
} else {
let str = row.eventObjectType.split("/");
let arr = str
.map((v) => {
return (v = this.tableData.dict.eventObjectType[v]);
})
.join("/");
return arr;
}
},
},
{
prop: "implementName",
label: "事项名称",
align: "center",
},
{
label: "操作",
align: "center",
formatter: (row) => {
return (
<div>
<table-buttons noView row={row} noEdit onDel={this.toDel} />
</div>
);
},
},
],
search: [
{
name: "eventObjectType",
type: "select",
label: "申报类型",
},
{
name: "implementName",
type: "text",
label: "事项名称搜索",
},
],
},
};
},
};
</script>
<style lang="less" scoped>
.page {
display: flex;
.left_box {
width: 50%;
height: 100%;
border-right: 1px solid #ededed;
padding: 20px;
}
.right_box {
flex: 1;
height: 100%;
padding: 20px;
}
}
</style>
<template>
<div class="page">
<div class="left_box">
<div class="table_title">自助终端申报事项列表</div>
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
<el-button
type="danger"
@click="allDel"
size="mini"
plain
slot="table-head-left2"
>删除
</el-button>
</LayoutTable>
</div>
<div class="right_box">
<div class="table_title">一体化事项列表</div>
<div class="layout-table">
<div class="table-head flex flex-pack-justify">
<div class="table-head-left flex flex-align-center">
<div class="buttons">
<el-button
type="success"
icon="el-icon-plus"
plain
size="mini"
class="addclass"
@click="allAdd"
>批量加入</el-button
>
</div>
</div>
<div class="table-head-right">
<div class="extend flex flex-pack-justify">
<div class="table-form">
<div class="search-form-wapper">
<el-form
:inline="true"
:model="form"
ref="search-form"
size="small"
>
<el-form-item
v-for="(item, i) in search"
:key="i"
v-bind:class="{ search_new_line: item.newLine }"
>
<el-input
v-model="form[item.name]"
v-if="item.type === 'text'"
:placeholder="
item.placeholder
? item.placeholder
: '请输入' + item.label
"
></el-input>
<el-select
v-model="form[item.name]"
:filterable="item.filterable"
:multiple="item.multiple"
clearable="true"
@change="item.change"
@clear="item.clear"
v-if="item.type === 'select'"
:placeholder="'请选择' + item.label"
>
<el-option
label="全部"
value=""
v-if="!item.multiple && !item.notShowAll"
></el-option>
<el-option
:label="label"
:value="value"
v-for="(label, value) in dict[item.name]"
:key="value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
class="addclass"
icon="el-icon-search"
@click="onSubmit"
title="查询"
>查询</el-button
>
<el-button
icon="el-icon-refresh-left"
@click="cleanForm"
title="清空"
>清空</el-button
>
</el-form-item>
</el-form>
</div>
</div>
</div>
</div>
</div>
<el-table
ref="multipleTable"
:data="yitihuaData"
size="small"
style="width: 100%"
@selection-change="handleSelectionChange1"
height="636"
border
v-loading="tableLoading"
>
<el-table-column
v-for="column in columns"
:key="column.prop"
:type="column.type"
:width="column.width"
:label="column.label"
:align="column.align || 'left'"
:formatter="column.formatter"
>
</el-table-column>
</el-table>
<div class="pagination-wapper flex">
<el-pagination
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
:current-page="currPage"
:page-size="currSize"
:page-sizes="[10, 20, 50, 100, 200, 500]"
layout="sizes, total, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import table from "@/assets/mixins/table";
import axios from "axios";
export default {
mixins: [table],
created() {
this.getYitihua();
},
watch: {},
methods: {
toDel(val) {
console.log(val);
axios({
method: "post",
url: "/complex/apply/matter/delete?id=" + val,
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {});
},
allDel() {
console.log(this.selection);
this.selection && this.selection.length > 0
? axios({
method: "post",
url: "/complex/apply/matter/delete?id=" + this.selection.join(","),
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {})
: this.$message({
message: "请选择一条事项",
type: "warning",
});
},
allAdd(val) {
let arr = [];
if (val.id) {
arr.push(val.id);
} else {
arr = this.multipleSelection.map((v) => v.id);
}
let data = {
applyType: 3,
idList: arr,
};
axios({
method: "post",
url: "/complex/event/implementation/addToApplyMatter",
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
data,
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {});
},
delete(row) {},
toggleSelection(rows) {
if (rows) {
rows.forEach((row) => {
this.$refs.multipleTable.toggleRowSelection(row);
});
} else {
this.$refs.multipleTable.clearSelection();
}
},
handleSelectionChange1(val) {
this.multipleSelection = val;
},
getYitihua() {
this.tableLoading = true;
let data = {
...this.form,
size: this.currSize,
page: this.currPage,
applyType: 3,
};
axios({
method: "post",
url: "/complex/event/implementation/subList",
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
data,
})
.then((res) => {
if (res.data.code == 1) {
this.yitihuaData = res.data.data.data;
this.dict = res.data.data.dict;
this.currPage = res.data.data.current_page;
this.total = res.data.data.total;
this.tableLoading = false;
} else {
this.tableLoading = false;
}
})
.catch((error) => {
this.tableLoading = false;
});
},
handleCurrentChange(val) {
console.log(val);
this.currPage = val;
this.getYitihua();
},
handleSizeChange(val) {
console.log(val);
this.currSize = val;
this.getYitihua();
},
onSubmit() {
this.getYitihua();
},
cleanForm() {
this.form = {};
this.getYitihua();
},
},
data() {
return {
tableLoading: false,
columns: [
{ type: "selection", reserveSelection: true },
{ type: "index", label: "序号", align: "center", width: 50 },
{
prop: "eventObjectType",
label: "申报类型",
align: "center",
formatter: (row) => {
if (row.eventObjectType.indexOf("/") == -1) {
return this.dict.eventObjectType[row.eventObjectType];
} else {
let str = row.eventObjectType.split("/");
let arr = str
.map((v) => {
return (v = this.dict.eventObjectType[v]);
})
.join("/");
return arr;
}
},
},
{
prop: "implementName",
label: "事项名称",
formatter: (row) => {
return row.implementName ? row.implementName : "--";
},
align: "center",
},
{
label: "操作",
align: "center",
formatter: (row) => {
return (
<div>
<el-button
size="mini"
type="success"
onClick={() => this.allAdd(row)}
>
加入
</el-button>
</div>
);
},
},
],
currPage: 1,
currSize: 10,
total: 0,
form: {},
dict: {},
search: [
{
name: "eventObjectType",
type: "select",
label: "申报类型",
},
{
name: "implementName",
type: "text",
label: "事项名称搜索",
},
],
yitihuaData: [],
multipleSelection: [],
config: {
applyType: 3,
height: "620",
downloadUrl: "",
columns: [
{ type: "selection", reserveSelection: true },
{ type: "index", label: "序号", align: "center", width: 50 },
{
prop: "eventObjectType",
label: "申报类型",
align: "center",
formatter: (row) => {
if (row.eventObjectType.indexOf("/") == -1) {
return this.tableData.dict.eventObjectType[row.eventObjectType];
} else {
let str = row.eventObjectType.split("/");
let arr = str
.map((v) => {
return (v = this.tableData.dict.eventObjectType[v]);
})
.join("/");
return arr;
}
},
},
{
prop: "implementName",
label: "事项名称",
align: "center",
},
{
label: "操作",
align: "center",
formatter: (row) => {
return (
<div>
<table-buttons noView row={row} noEdit onDel={this.toDel} />
</div>
);
},
},
],
search: [
{
name: "eventObjectType",
type: "select",
label: "申报类型",
},
{
name: "implementName",
type: "text",
label: "事项名称搜索",
},
],
},
};
},
};
</script>
<style lang="less" scoped>
.page {
display: flex;
.left_box {
width: 50%;
height: 100%;
border-right: 1px solid #ededed;
padding: 20px;
}
.right_box {
flex: 1;
height: 100%;
padding: 20px;
}
}
</style>
<template>
<div class="page">
<div class="left_box">
<div class="table_title">自助终端申报事项列表</div>
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
<el-button
type="danger"
@click="allDel"
size="mini"
plain
slot="table-head-left2"
>删除
</el-button>
</LayoutTable>
</div>
<div class="right_box">
<div class="table_title">一体化事项列表</div>
<div class="layout-table">
<div class="table-head flex flex-pack-justify">
<div class="table-head-left flex flex-align-center">
<div class="buttons">
<el-button
type="success"
icon="el-icon-plus"
plain
size="mini"
class="addclass"
@click="allAdd"
>批量加入</el-button
>
</div>
</div>
<div class="table-head-right">
<div class="extend flex flex-pack-justify">
<div class="table-form">
<div class="search-form-wapper">
<el-form
:inline="true"
:model="form"
ref="search-form"
size="small"
>
<el-form-item
v-for="(item, i) in search"
:key="i"
v-bind:class="{ search_new_line: item.newLine }"
>
<el-input
v-model="form[item.name]"
v-if="item.type === 'text'"
:placeholder="
item.placeholder
? item.placeholder
: '请输入' + item.label
"
></el-input>
<el-select
v-model="form[item.name]"
:filterable="item.filterable"
:multiple="item.multiple"
clearable="true"
@change="item.change"
@clear="item.clear"
v-if="item.type === 'select'"
:placeholder="'请选择' + item.label"
>
<el-option
label="全部"
value=""
v-if="!item.multiple && !item.notShowAll"
></el-option>
<el-option
:label="label"
:value="value"
v-for="(label, value) in dict[item.name]"
:key="value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
class="addclass"
icon="el-icon-search"
@click="onSubmit"
title="查询"
>查询</el-button
>
<el-button
icon="el-icon-refresh-left"
@click="cleanForm"
title="清空"
>清空</el-button
>
</el-form-item>
</el-form>
</div>
</div>
</div>
</div>
</div>
<el-table
ref="multipleTable"
:data="yitihuaData"
size="small"
style="width: 100%"
@selection-change="handleSelectionChange1"
height="636"
border
v-loading="tableLoading"
>
<el-table-column
v-for="column in columns"
:key="column.prop"
:type="column.type"
:width="column.width"
:label="column.label"
:align="column.align || 'left'"
:formatter="column.formatter"
>
</el-table-column>
</el-table>
<div class="pagination-wapper flex">
<el-pagination
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
:current-page="currPage"
:page-size="currSize"
:page-sizes="[10, 20, 50, 100, 200, 500]"
layout="sizes, total, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import table from "@/assets/mixins/table";
import axios from "axios";
export default {
mixins: [table],
created() {
this.getYitihua();
},
watch: {},
methods: {
toDel(val) {
console.log(val);
axios({
method: "post",
url: "/complex/apply/matter/delete?id=" + val,
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {});
},
allDel() {
console.log(this.selection);
this.selection && this.selection.length > 0
? axios({
method: "post",
url: "/complex/apply/matter/delete?id=" + this.selection.join(","),
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {})
: this.$message({
message: "请选择一条事项",
type: "warning",
});
},
allAdd(val) {
let arr = [];
if (val.id) {
arr.push(val.id);
} else {
arr = this.multipleSelection.map((v) => v.id);
}
let data = {
applyType: 1,
idList: arr,
};
axios({
method: "post",
url: "/complex/event/implementation/addToApplyMatter",
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
data,
})
.then((res) => {
if (res.data.code == 1) {
this.$message({
message: res.data.msg,
type: "success",
});
this.getYitihua();
this.getData();
} else {
this.$message({
message: res.data.msg,
type: "error",
});
}
})
.catch((error) => {});
},
delete(row) {},
toggleSelection(rows) {
if (rows) {
rows.forEach((row) => {
this.$refs.multipleTable.toggleRowSelection(row);
});
} else {
this.$refs.multipleTable.clearSelection();
}
},
handleSelectionChange1(val) {
this.multipleSelection = val;
},
getYitihua() {
this.tableLoading = true;
let data = {
...this.form,
size: this.currSize,
page: this.currPage,
applyType: 1,
};
axios({
method: "post",
url: "/complex/event/implementation/subList",
headers: {
Authorization: window.sessionStorage.getItem("token") || "",
},
data,
})
.then((res) => {
if (res.data.code == 1) {
this.yitihuaData = res.data.data.data;
this.dict = res.data.data.dict;
this.currPage = res.data.data.current_page;
this.total = res.data.data.total;
this.tableLoading = false;
} else {
this.tableLoading = false;
}
})
.catch((error) => {
this.tableLoading = false;
});
},
handleCurrentChange(val) {
console.log(val);
this.currPage = val;
this.getYitihua();
},
handleSizeChange(val) {
console.log(val);
this.currSize = val;
this.getYitihua();
},
onSubmit() {
this.getYitihua();
},
cleanForm() {
this.form = {};
this.getYitihua();
},
},
data() {
return {
tableLoading: false,
columns: [
{ type: "selection", reserveSelection: true },
{ type: "index", label: "序号", align: "center", width: 50 },
{
prop: "eventObjectType",
label: "申报类型",
align: "center",
formatter: (row) => {
if (row.eventObjectType.indexOf("/") == -1) {
return this.dict.eventObjectType[row.eventObjectType];
} else {
let str = row.eventObjectType.split("/");
let arr = str
.map((v) => {
return (v = this.dict.eventObjectType[v]);
})
.join("/");
return arr;
}
},
},
{
prop: "implementName",
label: "事项名称",
formatter: (row) => {
return row.implementName ? row.implementName : "--";
},
align: "center",
},
{
label: "操作",
align: "center",
formatter: (row) => {
return (
<div>
<el-button
size="mini"
type="success"
onClick={() => this.allAdd(row)}
>
加入
</el-button>
</div>
);
},
},
],
currPage: 1,
currSize: 10,
total: 0,
form: {},
dict: {},
search: [
{
name: "eventObjectType",
type: "select",
label: "申报类型",
},
{
name: "implementName",
type: "text",
label: "事项名称搜索",
},
],
yitihuaData: [],
multipleSelection: [],
config: {
height: "620",
downloadUrl: "",
applyType: 1,
columns: [
{ type: "selection", reserveSelection: true },
{ type: "index", label: "序号", align: "center", width: 50 },
{
prop: "eventObjectType",
label: "申报类型",
align: "center",
formatter: (row) => {
if (row.eventObjectType.indexOf("/") == -1) {
return this.tableData.dict.eventObjectType[row.eventObjectType];
} else {
let str = row.eventObjectType.split("/");
let arr = str
.map((v) => {
return (v = this.tableData.dict.eventObjectType[v]);
})
.join("/");
return arr;
}
},
},
{
prop: "implementName",
label: "事项名称",
align: "center",
},
{
label: "操作",
align: "center",
formatter: (row) => {
return (
<div>
<table-buttons noView row={row} noEdit onDel={this.toDel} />
</div>
);
},
},
],
search: [
{
name: "eventObjectType",
type: "select",
label: "申报类型",
},
{
name: "implementName",
type: "text",
label: "事项名称搜索",
},
],
},
};
},
};
</script>
<style lang="less" scoped>
.page {
display: flex;
.left_box {
width: 50%;
height: 100%;
border-right: 1px solid #ededed;
padding: 20px;
}
.right_box {
flex: 1;
height: 100%;
padding: 20px;
}
}
</style>
<template>
<div>
<LayoutTable :data="tableData" notAdd :config="tableConfig" />
</div>
</template>
<script>
import table from "@/assets/mixins/table";
export default {
mixins: [table],
methods: {
delete(row) {},
},
data() {
return {
config: {
name: "yitihua",
downloadUrl: "",
columns: [
{ type: "selection", reserveSelection: true },
{ type: "index", label: "序号", align: "center", width: 50 },
{
prop: "eventObjectType",
label: "申报类型",
align: "center",
formatter: (row) => {
if (row.eventObjectType.indexOf("/") == -1) {
return this.tableData.dict.eventObjectType[row.eventObjectType];
} else {
let str = row.eventObjectType.split("/");
let arr = str
.map((v) => {
return (v = this.tableData.dict.eventObjectType[v]);
})
.join("/");
return arr;
}
},
},
{
prop: "implementName",
label: "事项名称",
align: "center",
},
{
label: "操作",
align: "center",
formatter: (row) => {
return (
<div>
<el-button
size="mini"
type="danger"
onClick={() => this.delete(row)}
>
移除
</el-button>
</div>
);
},
},
],
search: [
{
name: "eventObjectType",
type: "select",
label: "申报类型",
},
{
name: "implementName",
type: "text",
label: "事项名称搜索",
},
],
},
};
},
};
</script>
<style lang="less" scoped>
.page {
display: flex;
.left_box {
width: 50%;
height: 100%;
border-right: 1px solid #ededed;
padding: 20px;
}
.right_box {
flex: 1;
height: 100%;
padding: 20px;
}
}
</style>
...@@ -8,8 +8,8 @@ module.exports = { ...@@ -8,8 +8,8 @@ module.exports = {
port: 8085, port: 8085,
hot: true, //自动保存 hot: true, //自动保存
proxy: { proxy: {
"/bill": { "/complex": {
target: "http://192.168.0.98:11019", target: "http://192.168.0.252:21086",
//target: 'http://127.0.0.1:18222', //target: 'http://127.0.0.1:18222',
changeOrigin: true, changeOrigin: true,
secure: false secure: false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment