瀏覽代碼

文件收集与审批

hujunwei@agilestar.cn 2 年之前
父節點
當前提交
94c3f48da7

文件差異過大導致無法顯示
+ 585 - 0
public/static/views/performance.html


+ 10 - 10
src/assets/js/common.js

@@ -263,16 +263,16 @@ let common = {
                     if (!obj.disableLoading) {
                         loading.close()
                     }
-                    if (response.data.code === 1 ||response.data.code == '1') {
-                        bus.$message.success(response.data.message)
-                         loading.close()
-                         success(response.data.data)
-                         return response
-                        // if (response.code === 1 ||response.code == '1') {
-                        //     bus.$message.success(response.data.message)
-                        //      loading.close()
-                        //      success(response.data.data)
-                        //      return response
+                    // if (response.data.code === 1 ||response.data.code == '1') {
+                    //     bus.$message.success(response.data.message)
+                    //      loading.close()
+                    //      success(response.data.data)
+                    //      return response
+                        if (response.code === 1 ||response.code == '1') {
+                            bus.$message.success(response.message)
+                             loading.close()
+                             success(response.data?response.data:response)
+                             return response
                     } else {
                         if (obj.printMsg) {
                             if (response.message) {

+ 47 - 42
src/components/search.vue

@@ -16,12 +16,16 @@
 				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'datetime'"
 					size="medium" type="datetime" :placeholder="item.tit">
 				</el-date-picker>
-                <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'month'"
-					size="medium" type="month" :placeholder="item.tit">
+				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'month'" size="medium"
+					type="month" :placeholder="item.tit">
 				</el-date-picker>
-                <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'year'"
-					size="medium" type="year" :placeholder="item.tit">
+				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'year'" size="medium"
+					type="year" :placeholder="item.tit">
 				</el-date-picker>
+				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'daterange'" size="medium"
+					type="daterange" :placeholder="item.tit" format="yyyy-MM-dd HH:mm:ss"
+					value-format="yyyy-MM-dd HH:mm:ss" :default-time="defaultTime" start-placeholder="开始时间"
+					end-placeholder="结束时间" />
 			</div>
 		</div>
 		<el-button class="btn-check" size="medium" type="primary" plain icon="el-icon-search" @click="searchInfo">搜索
@@ -29,54 +33,55 @@
 	</div>
 </template>
 <script>
-	export default {
-		props: ["searchList"],
-		data() {
-			return {
-				infoList: [],
-			};
-		},
-		methods: {
-			searchInfo() {
-				this.infoList = [];
-				for (let i = 0; i < this.searchList.length; i++) {
-					if (this.searchList[i].type === "date" && this.searchList[i].value) {
-						this.infoList.push(Date.parse(this.searchList[i].value));
-					} else {
-						this.infoList.push(this.searchList[i].value);
-					}
+export default {
+	props: ["searchList"],
+	data() {
+		return {
+			infoList: [],
+			defaultTime: ['00:00:00', '23:59:59'],
+		};
+	},
+	methods: {
+		searchInfo() {
+			this.infoList = [];
+			for (let i = 0; i < this.searchList.length; i++) {
+				if (this.searchList[i].type === "date" && this.searchList[i].value) {
+					this.infoList.push(Date.parse(this.searchList[i].value));
+				} else {
+					this.infoList.push(this.searchList[i].value);
 				}
-				this.$emit("searchInfo", this.infoList);
-			},
+			}
+			this.$emit("searchInfo", this.infoList);
 		},
-		mounted() {},
-		created() {},
-	};
+	},
+	mounted() { },
+	created() { },
+};
 </script>
 <style scoped lang="scss">
-	.search-box {
+.search-box {
+	display: flex;
+	justify-content: space-between;
+
+	.box-l {
 		display: flex;
 		justify-content: space-between;
 
-		.box-l {
-			display: flex;
-			justify-content: space-between;
-
-			.box-info {
-				display: inline-block;
-				// min-width: 100px;
-			}
+		.box-info {
+			display: inline-block;
+			// min-width: 100px;
 		}
+	}
 
-		.btn-check {}
+	.btn-check {}
 
-		.el-date-editor.el-input,
-		.el-date-editor.el-input__inner {
-			width: 100%;
-		}
+	.el-date-editor.el-input,
+	.el-date-editor.el-input__inner {
+		width: 100%;
+	}
 
-		.el-select-dropdown {
-			z-index: 100000 !important;
-		}
+	.el-select-dropdown {
+		z-index: 100000 !important;
 	}
+}
 </style>

+ 535 - 0
src/pages/main/documentCollection/documentCollectionApproval.vue

@@ -0,0 +1,535 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
+        <div class="container-box">
+            <!-- <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList> -->
+            <div>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <!-- <div style="margin-top: 20px;float: right;" class="bigbtns">
+                    <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
+                               @click="addNew()">新增模板
+                    </el-button>
+                </div> -->
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="templateName" label="模板名称" align="center">
+                    </el-table-column>
+                    <el-table-column prop="reason" label="填报事由" align="center">
+                    </el-table-column>
+                    <el-table-column prop="precautions" label="填报注意事项" align="center">
+                    </el-table-column>
+                    <el-table-column prop="endTime" label="截至时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createName" label="工单发起人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="receiverName" label="接收人" align="center">
+                        <template slot-scope="scope">
+                            <span @click="toOneDialog(scope.row.id)" style="cursor:pointer;color: #007eff;">{{
+                                scope.row.receiverName
+                            }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="processName" label="当前处理人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="发起时间" align="center">
+                    </el-table-column>
+
+                    <el-table-column prop="status" label="状态" align="center">
+                        <template slot-scope="scope">
+                            <!-- -1.已撤销 0.待处理 1.部门人员审批 2.部门领导审批 3.退回修改 4.已完成 -->
+                            <span v-if="scope.row.status == -1">已撤销</span>
+                            <span v-if="scope.row.status == 0">待处理</span>
+                            <span v-if="scope.row.status == 1">部门人员审批</span>
+                            <span v-if="scope.row.status == 2">部门领导审批</span>
+                            <span v-if="scope.row.status == 3">退回修改</span>
+                            <span v-if="scope.row.status == 4">已完成</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="superviseFlag" label="是否为督办" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.superviseFlag == 0">否</span>
+                            <span v-if="scope.row.superviseFlag == null">否</span>
+                            <span v-if="scope.row.superviseFlag == 1">是</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="220px" align="center" fixed="right">
+                        <template slot-scope="scope">
+                            <el-button size="mini" @click="toView(scope.row)">查看</el-button>
+                            <el-button size="mini" @click="toChuli(scope.row)"
+                                v-if="scope.row.status != 4 && (loginNo == scope.row.processId)">处理</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+            <el-dialog title="下发" :visible.sync="issuedAddStatus" width="40%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="false">
+                <el-form :model="issuedParam" ref="addInfoList">
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span style="width: 6px;color: red">*</span><span>填报事由</span>
+                            <el-input v-model="issuedParam.editReason" placeholder="填报事由"></el-input>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span style="width: 6px;color: red">*</span><span>填报注意事项</span>
+                            <el-input v-model="issuedParam.editRemark" placeholder="填报注意事项"></el-input>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span style="width: 6px;color: red">*</span><span>截止时间</span>
+                            <el-date-picker type="date" placeholder="截止时间" v-model="issuedParam.endTime"
+                                :picker-options="pickerOptions" value-format="yyyy-MM-dd"></el-date-picker>
+                        </el-form-item>
+                    </div>
+                </el-form>
+                <div slot="footer" class="dialog-footer myfooter">
+
+                    <el-button @click="issuedAddStatus = false">取消</el-button>
+                    <el-button @click="processNewIssued()" type="primary">确定</el-button>
+                </div>
+            </el-dialog>
+            <el-dialog :title="'回复详情'" :visible.sync="toOnevisible" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div style="height: 450px;">
+                    <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableDataDialog"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loadingDialog">
+                        <el-table-column prop="receiveName" label="接收人" align="center">
+                        </el-table-column>
+                        <el-table-column prop="dept" label="接收人科室" align="center">
+                        </el-table-column>
+                        <el-table-column prop="arriveTime" label="到达时间" align="center">
+                        </el-table-column>
+                        <el-table-column prop="processTime" label="处理时间" align="center">
+                        </el-table-column>
+                        <el-table-column prop="selectionPath" label="选择路径" align="center">
+                        </el-table-column>
+                        <el-table-column prop="replyComments" label="回复意见" align="center">
+                        </el-table-column>
+                    </el-table>
+                    <el-pagination class="pageBox" @current-change="currchangeDialog" layout="prev, pager, next" background
+                        :total="totalDialog">
+                    </el-pagination>
+                </div>
+
+                <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                    <el-button type="primary" @click="toOnevisible = false">确 定</el-button>
+                </div>
+            </el-dialog>
+        </div>
+        <myMessageNew :messTit='deleteTag' @closeMessage="processDelete" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible" yes-btn-name="是" no-btn-name="否"></myMessageNew>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "./search.vue";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+import myMessageNew from "../../../components/myMessageNew.vue"
+
+export default {
+    components: {
+        myUpload,
+        mySearch,
+        toolList,
+        myMessageNew
+    },
+    data() {
+        return {
+            tableData: [{}],
+            total: 0,
+            params: {},
+            deleteTag: '',
+            loginNo: '',
+            centerDialogVisible: false,
+            loading: false,
+            issuedAddStatus: false,
+            issuedParam: {},
+            pickerOptions: {
+                disabledDate(time) {
+                    return time.getTime() < Date.now();
+                }
+            },
+            tooltit: '收入模板管理',
+            searchList: [{
+                type: 'input',
+                tit: '模板名称',
+                value: '',
+                width: '22%',
+            }, {
+                type: 'date',
+                tit: '截止时间',
+                value: '',
+                width: '22%',
+            }, {
+                type: 'sel',
+                tit: '是否为督办',
+                value: '',
+                width: '22%',
+                options: [
+                    {
+                        dataCode: "0",
+                        dataName: "否"
+                    },
+                    {
+                        dataCode: "1",
+                        dataName: "是"
+                    }
+                ]
+            },
+            {
+                type: 'sel',
+                tit: '状态',
+                value: '',
+                width: '22%',
+                options: [
+                    {
+                        dataName: "待处理",
+                        dataCode: "0",
+                    },
+                    {
+                        dataName: "部门人员审核",
+                        dataCode: "1",
+                    },
+                    {
+                        dataName: "部门领导审批",
+                        dataCode: "2",
+                    },
+
+                    {
+                        dataName: "已完成",
+                        dataCode: "4",
+                    },
+                    {
+                        dataName: "退回修改",
+                        dataCode: "3",
+                    },
+                ]
+            },],
+            delTemplateId: '',
+            fullscreen: false,
+            toOnevisible: false,
+            loadingDialog: false,
+            totalDialog: 0,
+            pageSize: 0,
+            pageSizeDialog: 0,
+            paramsDialog: {},
+            tableDataDialog: [{}],
+        }
+    },
+    methods: {
+        checkDelete(row) {
+            this.deleteTag = '确认删除吗?';
+            this.centerDialogVisible = true;
+            this.delTemplateId = row.id;
+        },
+        processDelete(v) {
+            this.centerDialogVisible = false;
+            var _this = this;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/cIncomeExcelTemplate/deleteTemplate",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: { excelId: this.delTemplateId },
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: '删除失败',
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                        _this.getList({}, _this.pageSize);
+                    }
+                });
+            }
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? this.params.templateName = v[0] : '';
+            v[1] ? this.params.endTime = this.$formatDate(v[1], "YYYY-MM-DD") : '';
+            v[2] ? this.params.superviseFlag = v[2] : '';
+            v[3] ? this.params.status = v[3] : '';
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+
+        getList(v, n) {
+            this.pageSize = n;
+            this.loading = true;
+            this.tableData = [];
+            let _this = this;
+            this.$http({
+                url: "/market/Issued/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableData = data;
+                this.total = totalRecord;
+                this.loading = false;
+            });
+        },
+        toOneDialog(o) {
+            this.toOnevisible = true
+            this.paramsDialog.issuedId = o
+            this.getListDialog(this.paramsDialog, 1);
+        },
+        // 分页
+        currchangeDialog(v) {
+            this.pageSizeDialog = v;
+            this.getListDialog(this.paramsDialog, this.pageSizeDialog);
+        },
+        getListDialog(v, n) {
+            this.pageSizeDialog = n;
+            this.loadingDialog = true;
+            this.tableDataDialog = [];
+            let _this = this;
+            this.$http({
+                url: "/market/FileOperateLog/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableDataDialog = data;
+                this.totalDialog = totalRecord;
+                this.loadingDialog = false;
+            });
+        },
+        addNew() {
+            var _this = this;
+            _this.jumpinfop('/incomeExcelInfo', 1, '新增模板', "")
+        },
+        toEdit(row) {
+            var _this = this;
+            _this.jumpinfop('/incomeExcelInfo', 2, '修改模板', row.id);
+        },
+        toView(row) {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 5, '查看', row.id);
+        },
+        toChuli(row) {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 4, '处理', row.id, row.status);
+        },
+        addNewIssued(row) {
+            this.issuedParam = {
+                templateId: row.id,
+            };
+            this.issuedAddStatus = true;
+        },
+        processNewIssued() {
+            if (!this.issuedParam.editReason) {
+                this.$message({
+                    message: '填报事由不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (!this.issuedParam.editRemark) {
+                this.$message({
+                    message: '填报注意事项不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (!this.issuedParam.endTime) {
+                this.$message({
+                    message: '截止时间不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (this.issuedParam.editReason.length > 240) {
+                this.$message({
+                    message: '填报事由长度不能大于240字',
+                    type: 'error'
+                });
+                return;
+            }
+            if (this.issuedParam.editRemark.length > 240) {
+                this.$message({
+                    message: '填报注意事项长度不能大于240字',
+                    type: 'error'
+                });
+                return;
+            }
+            var _this = this;
+            //执行下发
+            this.$http({
+                url: '/market/cIncomeExcelIssued/addNewIssued',
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: this.issuedParam,
+            }).then((res) => {
+                this.loading = false;
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: 'error'
+                    });
+                } else {
+                    _this.$message({
+                        message: '下发成功',
+                        type: 'success'
+                    });
+                    this.issuedAddStatus = false;
+                    this.getList({}, 1);
+                }
+            });
+        },
+        //跳转页面
+        jumpinfop(p, v, n, id, status) {
+            this.$router.push({
+                path: p,
+                query: {
+                    type: v,
+                    id: id,
+                    status: status,
+                }
+            });
+            this.setabList(n, p + '?type=' + v + '&id=' + id);
+        },
+        //新建一个页面
+        setabList(n, p) {
+            let params = {
+                children: "",
+                name: n,
+                rountPath: p,
+                target: "_self",
+            };
+            for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                if (this.$store.state.tabList[i].name === params.name) {
+                    this.$store.state.tabList[i] = params;
+                }
+            }
+            let set = new Set([...this.$store.state.tabList, params]);
+            set.add(params);
+            this.$store.commit("setDefaultActive", params.rountPath);
+            this.$store.commit("setTabList", Array.from(set));
+        },
+        getUrlKey(name) {
+            return (
+                decodeURIComponent(
+                    (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
+                        location.href
+                    ) || [, ""])[1].replace(/\+/g, "%20")
+                ) || null
+            );
+        },
+    },
+    mounted() {
+        this.getList({
+            id: this.getUrlKey("id"),//获取地址栏参数
+        }, 1);
+        this.loginNo = JSON.parse(window.sessionStorage.userInfo).loginNo
+    },
+    created() {
+
+    }
+}
+</script>
+<style scoped lang="scss">
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 16px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 90%;
+        display: inline-block;
+    }
+
+    span {
+        width: 100px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 150px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+</style>
+

文件差異過大導致無法顯示
+ 1159 - 0
src/pages/main/documentCollection/documentCollectionApprovalExcel.vue


+ 472 - 0
src/pages/main/documentCollection/documentCollectionApprovalIssuedCollect.vue

@@ -0,0 +1,472 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
+        <div class="container-box">
+            <!-- <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList> -->
+            <div>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="templateName" label="模板名称" align="center">
+                    </el-table-column>
+                    <el-table-column prop="reason" label="填报事由" align="center">
+                    </el-table-column>
+                    <el-table-column prop="precautions" label="填报注意事项" align="center">
+                    </el-table-column>
+                    <el-table-column prop="endTime" label="截至时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createName" label="工单发起人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="receiveNameList" label="接收人" align="center">
+                        <template slot-scope="scope">
+                            <span v-for="(item, index) in scope.row.receiveNameList" :key="index">
+                                <span @click="toOneDialog(item)" style="cursor:pointer;color: #007eff;">{{
+                                    item.name
+                                }}</span>
+                                <span @click="toOneDialog(item)" style="cursor:pointer;color: #007eff;">,</span>
+                            </span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="currentProcessName" label="当前处理人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="发起时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="progressBar" label="完成进度" align="center">
+                        <template slot-scope="props">
+                            <el-progress :percentage="props.row.progressBar"></el-progress>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="superviseFlag" label="是否为督办" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.superviseFlag == 0">否</span>
+                            <span v-if="scope.row.superviseFlag == null">否</span>
+                            <span v-if="scope.row.superviseFlag == 1">是</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="status" label="状态" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.status == -1">已撤销</span>
+                            <span v-if="scope.row.status == 0">待处理</span>
+                            <span v-if="scope.row.status == 1">已完成</span>
+                            <!-- <span v-if="scope.row.status == 1">待汇总</span> -->
+                            <!-- <span v-if="scope.row.status == 2">待审批</span> -->
+                            <!-- <span v-if="scope.row.status == 3">已完成</span> -->
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="220px" align="center" fixed="right">
+                        <template slot-scope="scope">
+                            <el-button size="mini" @click="toView(scope.row)">查看
+                            </el-button>
+                            <el-button size="mini" @click="toChehuiBtn(scope.row)" v-if="scope.row.status != '-1'">撤回
+                            </el-button>
+                            <el-button size="mini" @click="delDialog(scope.row)">删除
+                            </el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+
+
+            <el-dialog :title="'回复详情'" :visible.sync="toOnevisible" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div style="height: 450px;">
+                    <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableDataDialog"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loadingDialog">
+                        <el-table-column prop="receiveName" label="接收人" align="center">
+                        </el-table-column>
+                        <el-table-column prop="dept" label="接收人科室" align="center">
+                        </el-table-column>
+                        <el-table-column prop="arriveTime" label="到达时间" align="center">
+                        </el-table-column>
+                        <el-table-column prop="processTime" label="处理时间" align="center">
+                        </el-table-column>
+                        <el-table-column prop="selectionPath" label="选择路径" align="center">
+                        </el-table-column>
+                        <el-table-column prop="replyComments" label="回复意见" align="center">
+                        </el-table-column>
+                    </el-table>
+                    <el-pagination class="pageBox" @current-change="currchangeDialog" layout="prev, pager, next"
+                        background :total="totalDialog">
+                    </el-pagination>
+                </div>
+
+                <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                    <el-button type="primary" @click="toOnevisible = false">确 定</el-button>
+                </div>
+            </el-dialog>
+
+
+        </div>
+        <myMessageNew :messTit='deleteTag' @closeMessage="processDel" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible" yes-btn-name="是" no-btn-name="否"></myMessageNew>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "./search.vue";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+import myMessageNew from "../../../components/myMessageNew.vue"
+
+export default {
+    components: {
+        myUpload,
+        mySearch,
+        toolList,
+        myMessageNew
+    },
+    data() {
+        return {
+            tableData: [{}],
+            tableDataDialog: [{}],
+            total: 0,
+            totalDialog: 0,
+            pageSize: 0,
+            pageSizeDialog: 0,
+            params: {},
+            paramsDialog: {},
+            deleteTag: '',
+            centerDialogVisible: false,
+            toOnevisible: false,
+            loadingDialog: false,
+            loading: false,
+            issuedAddStatus: false,
+            issuedParam: {},
+            tooltit: '收入信息发布',
+            searchList: [
+                //     {
+                //     type: 'input',
+                //     tit: '模板类型',
+                //     value: '',
+                //     width: '18%',
+                // },
+                {
+                    type: 'input',
+                    tit: '模板名称',
+                    value: '',
+                    width: '22%',
+                }, {
+                    type: 'daterange',
+                    tit: '截至时间',
+                    value: '',
+                    width: '43%',
+                }, {
+                    type: 'sel',
+                    tit: '是否为督办',
+                    value: '',
+                    width: '22%',
+                    options: [
+                        {
+                            dataCode: "0",
+                            dataName: "否"
+                        },
+                        {
+                            dataCode: "1",
+                            dataName: "是"
+                        }
+                    ]
+                },],
+            fullscreen: false,
+            delViewId: ''
+        }
+    },
+    methods: {
+        delDialog(row) {
+            // this.delViewId = row.id;
+            // this.deleteTag = '确认删除吗?';
+            // this.centerDialogVisible = true;
+
+            this.$confirm("确认删除吗?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            }).then(() => {
+                this.$http({
+                    url: '/market/IssuedCollect/del',
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: { id: row.id },
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        this.getList({}, this.pageSize);
+                    }
+                });
+            }).catch(() => { });
+        },
+        processDel(v) {
+            this.centerDialogVisible = false;
+            var _this = this;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/IssuedCollect/del",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: { id: this.delViewId },
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: '删除失败',
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                        _this.getList({}, _this.pageSize);
+                    }
+                });
+            }
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? this.params.templateName = v[0] : '';
+            v[2] ? this.params.superviseFlag = v[2] : '';
+            // v[3] ? this.params.deptName = v[3] : '';
+            v[1] ? this.params.endTimeFrom = v[1][0] : '';
+            v[1] ? this.params.endTimeTo = v[1][1] : '';
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        // 分页
+        currchangeDialog(v) {
+            this.pageSizeDialog = v;
+            this.getListDialog(this.paramsDialog, this.pageSizeDialog);
+        },
+        getList(v, n) {
+            this.pageSize = n;
+            this.loading = true;
+            this.tableData = [];
+            let _this = this;
+            this.$http({
+                url: "/market/IssuedCollect/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableData = data;
+                this.total = totalRecord;
+                this.loading = false;
+            });
+        },
+        getListDialog(v, n) {
+            this.pageSizeDialog = n;
+            this.loadingDialog = true;
+            this.tableDataDialog = [];
+            let _this = this;
+            this.$http({
+                url: "/market/FileOperateLog/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableDataDialog = data;
+                this.totalDialog = totalRecord;
+                this.loadingDialog = false;
+            });
+        },
+        processDelete(v) {
+            this.centerDialogVisible = false;
+            if (v === 1) {
+                console.log("删除")
+            }
+        },
+        addNew() {
+            var _this = this;
+            _this.jumpinfop('/incomeExcelViewInfo', 1, '新增收入信息', "")
+        },
+        toEdit(row) {
+            var _this = this;
+            _this.jumpinfop('/incomeExcelViewInfo', 2, '修改收入信息', row.viewId);
+        },
+        toView(row) {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 6, '查看', row.id);
+        },
+        toOneDialog(o) {
+            this.toOnevisible = true
+            this.paramsDialog.issuedId = o.id
+            this.getListDialog(this.paramsDialog, 1);
+        },
+        toChehuiBtn(row) {
+            this.$confirm("确认撤回吗?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            }).then(() => {
+                this.$http({
+                    url: '/market/IssuedCollect/withdraw',
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: row.id,
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        this.getList({}, this.pageSize);
+                    }
+                });
+            }).catch(() => { });
+            // var _this = this;
+            // _this.jumpinfop('/incomeExcelViewInfo', 4, '查看收入信息', row.id);
+        },
+        addNewIssued(row) {
+            this.issuedParam = {
+                templateId: row.id,
+            };
+            this.issuedAddStatus = true;
+        },
+        //跳转页面
+        jumpinfop(p, v, n, id) {
+            this.$router.push({
+                path: p,
+                query: {
+                    type: v,
+                    id: id
+                }
+            });
+            this.setabList(n, p + '?type=' + v + '&id=' + id);
+        },
+        //新建一个页面
+        setabList(n, p) {
+            let params = {
+                children: "",
+                name: n,
+                rountPath: p,
+                target: "_self",
+            };
+            for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                if (this.$store.state.tabList[i].name === params.name) {
+                    this.$store.state.tabList[i] = params;
+                }
+            }
+            let set = new Set([...this.$store.state.tabList, params]);
+            set.add(params);
+            this.$store.commit("setDefaultActive", params.rountPath);
+            this.$store.commit("setTabList", Array.from(set));
+        },
+    },
+    mounted() {
+        this.getList({}, 1);
+    },
+    created() {
+
+    }
+}
+</script>
+<style scoped lang="scss">
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 16px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 90%;
+        display: inline-block;
+    }
+
+    span {
+        width: 100px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 150px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+</style>
+

+ 689 - 0
src/pages/main/documentCollection/documentCollectionApprovalIssuedMoud.vue

@@ -0,0 +1,689 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
+        <div class="container-box">
+            <!-- <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList> -->
+            <div>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <div style="float: right;" class="bigbtns">
+                    <el-button style="margin-top: 10px;" class="btn-check" size="medium" @click="addNew()">
+                        <i class="el-icon-document-add font-weight-bold" />新增模板
+                    </el-button>
+                </div>
+            </div>
+
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="number" label="序号" align="center">
+                        <template slot-scope="scope">
+                            <span> {{ scope.$index + 1 }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="templateName" label="模板名称" align="center">
+                    </el-table-column>
+                    <el-table-column prop="templateType" label="模板类型" align="center">
+                    </el-table-column>
+                    <el-table-column prop="updateTime" label="配置时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createId" label="配置人员" align="center">
+                    </el-table-column>
+
+                    <el-table-column prop="status" label="模板状态" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.status == 0">已创建</span>
+                            <span v-if="scope.row.status == 2">起草中</span>
+                            <span v-if="scope.row.status == 3">已下发</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="superviseFlag" label="是否为督办" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.superviseFlag == 0">否</span>
+                            <span v-if="scope.row.superviseFlag == null">否</span>
+                            <span v-if="scope.row.superviseFlag == 1">是</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="220px" align="center" fixed="right">
+                        <template slot-scope="scope">
+                            <el-button size="mini" @click="toView(scope.row)">查看</el-button>
+                            <el-button size="mini"
+                                v-if="scope.row.status == '0' || scope.row.status == '3' || scope.row.status == '2'"
+                                @click="checkDelete(scope.row)">删除
+                            </el-button>
+                            <el-button size="mini" v-if="scope.row.status == '0'" @click="xiafaBtn(scope.row)">下发
+                            </el-button>
+                            <el-button size="mini"
+                                v-if="scope.row.status == '0' || scope.row.status == '2' || scope.row.status == '3' && (scope.row.status == '3' && scope.row.superviseFlag == '0')"
+                                @click="toEdit(scope.row)">编辑
+                            </el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+
+            <el-dialog :title="'下发'" :visible.sync="issue_visible" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div style="width:60%;margin:0 auto;">
+                    <el-form label-width="120px" :model="issue_form" ref="issue_ref" :rules="rules">
+                        <el-form-item label="填报事由" prop="reason" :rules="{
+                            required: true,
+                            message: '填报事由不能为空',
+                            trigger: 'blur',
+                        }">
+                            <el-input v-model="issue_form.reason"></el-input>
+                        </el-form-item>
+                        <el-form-item label="填报注意事项" prop="precautions" :rules="{
+                            required: true,
+                            message: '填报注意事项不能为空',
+                            trigger: 'blur',
+                        }">
+                            <el-input v-model="issue_form.precautions"></el-input>
+                        </el-form-item>
+                        <el-form-item label="截止时间" prop="endTime" v-if="superviseFlag !== '1'" :rules="{
+                            required: true,
+                            message: '截止时间不能为空',
+                            trigger: 'change',
+                        }">
+                            <el-date-picker v-model="issue_form.endTime" type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;">
+                            </el-date-picker>
+                        </el-form-item>
+                    </el-form>
+                </div>
+
+                <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                    <el-button type="primary" @click="xiafaqueding()" :disabled="BtnDisabled">确 定</el-button>
+                    <el-button @click="issue_visible = false">取 消</el-button>
+                </div>
+            </el-dialog>
+
+
+            <el-dialog :title="'收入信息处理'" :visible.sync="authDialog" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <el-form :model="testModel">
+                    <div>
+                        <div class="info-line">
+                            <span style="margin-right: 20px;margin-left: 40px">选择路径:</span>
+                            <el-select v-model="auditForm.authType" placeholder="选择路径">
+                                <el-option v-for="(item, index) in auditBoxList" :key="index" :label="item.name"
+                                    :value="item.value"></el-option>
+                            </el-select>
+                        </div>
+                        <br />
+                        <div class="info-line" v-if="auditForm.authType == 1">
+                            <span style="margin-right: 20px;margin-left: 40px">下一步处理人:</span>
+                            <el-button type="primary" @click="checkexa = true;">选择处理人</el-button>
+                            <span style="width: 80px;margin-right: 20px;margin-left: 20px">{{ auditUserName }}</span>
+                        </div>
+                        <br />
+                        <div class="info-line">
+                            <span style="margin-right: 20px;margin-left: 40px;">意见内容:</span>
+                            <el-input type="textarea" v-model="auditForm.auditRemark" style="width: 400px"></el-input>
+                        </div>
+                        <br />
+                        <div slot="footer" style="text-align: right;padding-bottom: 20px;padding-top: 20px">
+                            <el-button @click="authDialog = false">取 消</el-button>
+                            <el-button type="primary" @click="processAudit()">确 定</el-button>
+                        </div>
+                    </div>
+                </el-form>
+            </el-dialog>
+
+            <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div>
+                    <el-form :model="addInfoList" ref="addInfoList">
+                        <el-form-item prop="processUserId" class="info-line online">
+                            <span style="width: 80px">审批人员&nbsp;</span>
+                            <deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                :type="depttype" :closeList="closeList"></deptTreeOnly>
+                            <div class="tree treeUser">
+                                <p>{{ treeListonly.leaderAuditName }}
+                                    <i v-if="treeListonly.leaderAuditName" @click="treeDelete()"
+                                        class="el-icon-error"></i>
+                                </p>
+                            </div>
+                            <el-form-item style="margin-bottom:0;display:none;">
+                                <el-input></el-input>
+                            </el-form-item>
+                        </el-form-item>
+                    </el-form>
+
+                    <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                        <el-button type="primary" @click="processAuditUser()">确 定</el-button>
+                        <el-button @click="checkexa = false">取 消</el-button>
+                    </div>
+                </div>
+            </el-dialog>
+
+            <el-dialog title="回复详情" :visible.sync="issuedLogStatus" width="70%" :close-on-press-escape="false"
+                :show-close="true" :before-close="closeIssuedLog" :destroy-on-close="true" :modal-append-to-body="false"
+                :close-on-click-modal="false" :fullscreen="true">
+                <div class="tabbox" style="height: 500px">
+                    <el-table height="calc(100% - 50px)" class="com-table" ref="multipleTable" :data="issuedLogData"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                        <el-table-column prop="beforeUserName" label="接收人">
+                        </el-table-column>
+                        <el-table-column prop="beforeUserDept" label="部门">
+                        </el-table-column>
+                        <el-table-column prop="opTime" label="回复时间">
+                        </el-table-column>
+                        <el-table-column prop="remark" label="审批记录">
+                        </el-table-column>
+                        <el-table-column prop="status" label="审批意见">
+                        </el-table-column>
+                    </el-table>
+                    <el-pagination class="pageBox" @current-change="issuedLogChange" layout="prev, pager, next"
+                        background :total="issuedLogTotal">
+                    </el-pagination>
+                </div>
+            </el-dialog>
+        </div>
+        <myMessageNew :messTit='deleteTag' @closeMessage="processDelete" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible" yes-btn-name="是" no-btn-name="否"></myMessageNew>
+    </fullscreen>
+</template>
+
+<script>
+import mySearch from "./search.vue";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+import myMessageNew from "../../../components/myMessageNew.vue"
+import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+export default {
+    components: {
+        myUpload,
+        mySearch,
+        toolList,
+        myMessageNew,
+        deptTreeOnly
+    },
+    data() {
+        return {
+            rules: {
+                endTime: [
+                    {
+                        required: true,
+                        trigger: "change",
+                        message: "截止时间不能为空",
+                    },
+                ],
+                reason: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "填报事由不能为空",
+                    },
+                ],
+                precautions: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "填报注意事项不能为空",
+                    },
+                ],
+            },
+            testModel: {},
+            issue_form: {},
+            tableData: [{}],
+            total: 0,
+            params: {},
+            deleteTag: '',
+            centerDialogVisible: false,
+            BtnDisabled: false,
+            loading: false,
+            tooltit: '收入信息收集',
+            searchList: [{
+                type: 'input',
+                tit: '模板名称',
+                value: '',
+                width: '48%',
+            }, {
+                type: 'input',
+                tit: '模板类型',
+                value: '',
+                width: '48%',
+            },],
+            nowUserId: '',
+            auditBoxList: [{}],
+            authDialog: false,
+            auditForm: {},
+            auditUserName: '',
+            auditUserId: '',
+            //选择审批人
+            checkexa: false,
+            //审批人用到的
+            treeListonly: {},
+            excelData: {},
+            fullscreen: false,
+            defaultList: [],
+            addInfoList: [],
+            closeList: [],
+            depttype: '',
+            issuedLogStatus: false,
+            issue_visible: false,
+            issuedLogData: [],
+            issuedLogPageSize: 1,
+            issuedLogParams: {},
+            issuedLogTotal: 0,
+            delIssuedUserId: '',
+            superviseFlag: ''
+        }
+    },
+    methods: {
+        xiafaBtn(row) {
+            this.issue_form.templateId = row.id
+            this.issue_visible = true
+            this.superviseFlag = row.superviseFlag
+        },
+        addNew() {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 1, '新增模板', "")
+        },
+        processIssuedLog(row) {
+            this.issuedLogParams = {
+                issuedUserId: row
+            };
+            console.log(this.issuedLogParams);
+            this.getIssuedLog(this.issuedLogParams, this.issuedLogPageSize);
+            this.issuedLogStatus = true;
+        },
+        xiafaqueding() {
+            console.log(this.issue_form);
+            console.log(this.$refs.issue_ref);
+            
+            this.$refs.issue_ref.validate((valid) => {
+                if (valid) {
+                    this.BtnDisabled=true
+                    if (this.issue_form.endTime) {
+                        this.$http({
+                            url: "/market/Issued/issuedTemplate",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.issue_form,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                this.$message({
+                                    message: '下发成功',
+                                    type: 'success'
+                                });
+                                this.getList({}, this.pageSize);
+                            }
+                            this.issue_visible = false;
+                            this.BtnDisabled=false;
+                        });
+                    } else {
+                        this.$http({
+                            url: "/market/Issued/issuedSuperviseTemplate",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.issue_form,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                this.$message({
+                                    message: '下发成功',
+                                    type: 'success'
+                                });
+                                this.getList({}, this.pageSize);
+                            }
+                            this.issue_visible = false;
+                            this.BtnDisabled=false;
+                        });
+                    }
+
+
+                } else {
+                    // this.$message.error("请完善表单信息");
+                    return false;
+                }
+            });
+
+
+        },
+        getIssuedLog(v, n) {
+            this.issuedLogPageSize = n;
+            this.loading = true;
+            this.issuedLogData = [];
+            this.$http({
+                url: "/market/cIncomeExcelIssued/getIssuedLog",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v,
+            }).then((res) => {
+                this.issuedLogData = res.data.data;
+                this.issuedLogTotal = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        issuedLogChange(v) {
+            this.issuedLogPageSize = v;
+            this.getIssuedLog(this.issuedLogParams, this.issuedLogPageSize);
+        },
+        closeIssuedLog() {
+            this.issuedLogStatus = false;
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? this.params.templateName = v[0] : '';
+            v[1] ? this.params.templateType = v[1] : '';
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        getList(v, n) {
+            this.pageSize = n;
+            this.loading = true;
+            this.tableData = [];
+            let _this = this;
+            this.$http({
+                url: "/market/FileTemplate/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableData = data;
+                this.total = totalRecord;
+                this.loading = false;
+            });
+        },
+        toView(row) {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 3, '查看', row.id);
+        },
+        checkDelete(row) {
+            this.deleteTag = '确认删除吗?';
+            this.centerDialogVisible = true;
+            this.delIssuedUserId = row.id;
+        },
+        processDelete(v) {
+            this.centerDialogVisible = false;
+            var _this = this;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/FileTemplate/del",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: { id: this.delIssuedUserId },
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: '删除失败',
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                        _this.getList({}, _this.pageSize);
+                    }
+                });
+            }
+        },
+        toEdit(row) {
+            var _this = this;
+            if (row.status == '2') {
+                _this.jumpinfop('/documentCollectionApprovalExcel', 2, '编辑模板', row.id);
+            } else {
+                _this.jumpinfop('/documentCollectionApprovalExcel', 2, '编辑模板', row.id, 1);
+            }
+
+        },
+        toAudit(row) {
+            this.auditForm = {};
+            this.auditUserId = '';
+            this.auditUserName = '';
+            this.auditBoxList = [{
+                name: '提交审核',
+                value: '1'
+            }, {
+                name: '退回修改',
+                value: '3'
+            }, {
+                name: '结束',
+                value: '2'
+            }];
+            this.nowUserId = row.id;
+            this.authDialog = true;
+        },
+        processAuditUser() {
+            console.log(this.treeListonly);
+            this.auditUserId = this.treeListonly.leaderAuditNo;
+            this.auditUserName = this.treeListonly.leaderAuditName;
+            this.checkexa = false;
+        },
+        processAudit() {
+            //检查选项
+            if (this.auditForm.authType == null) {
+                this.$message({
+                    message: '请选择路径',
+                    type: 'error'
+                });
+                return;
+            }
+            if (this.auditForm.authType == '1') {
+                if (this.auditUserId == '') {
+                    this.$message({
+                        message: '请选择下一步处理人',
+                        type: 'error'
+                    });
+                    return;
+                }
+            }
+            if (this.auditForm.auditRemark
+                && this.auditForm.auditRemark.length > 240) {
+                this.$message({
+                    message: '意见内容长度不能大于240字',
+                    type: 'error'
+                });
+                return;
+            }
+            //提交
+            var _this = this;
+            var url = '/market/cIncomeExcelIssued/issuedUserProcessAuth';
+            this.loading = true;
+            this.$http({
+                url: url,
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    issuedUserId: this.nowUserId,
+                    type: this.auditForm.authType,
+                    nextUserId: this.auditUserId,
+                    auditRemark: this.auditForm.auditRemark
+                },
+            }).then((res) => {
+                this.loading = false;
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: 'error'
+                    });
+                } else {
+                    this.authDialog = false;
+                    _this.$message({
+                        message: '处理成功',
+                        type: 'success'
+                    });
+                    //刷新列表
+                    this.getList({}, 1);
+                }
+            });
+
+        },
+        //跳转页面
+        jumpinfop(p, v, n, id, s) {
+            this.$router.push({
+                path: p,
+                query: {
+                    type: v,
+                    id: id,
+                    types: s,
+                }
+            });
+            this.setabList(n, p + '?type=' + v + '&id=' + id);
+        },
+        //新建一个页面
+        setabList(n, p) {
+            let params = {
+                children: "",
+                name: n,
+                rountPath: p,
+                target: "_self",
+            };
+            for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                if (this.$store.state.tabList[i].name === params.name) {
+                    this.$store.state.tabList[i] = params;
+                }
+            }
+            let set = new Set([...this.$store.state.tabList, params]);
+            set.add(params);
+            this.$store.commit("setDefaultActive", params.rountPath);
+            this.$store.commit("setTabList", Array.from(set));
+        },
+        //填报人相关
+        deletes(val, index) {
+            this.treeList.splice(index, 1);
+            this.closeList = this.treeList;
+        },
+        treeCheckonly(v) {
+            this.treeList = v;
+            this.treeListonly = v;
+        },
+        treeDelete() {
+            this.treeListonly = {};
+            this.closeList = !this.closeList;
+        },
+    },
+    mounted() {
+        this.getList({}, 1);
+    },
+    created() {
+
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 16px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+
+    .tree {
+        width: calc(50% - 60px);
+        display: inline-block;
+        margin-right: 20px;
+        height: 300px;
+        overflow-y: scroll;
+
+        .el-icon-error {
+            float: right;
+            font-size: 20px;
+            margin-top: 9px;
+            cursor: pointer;
+        }
+    }
+
+    .treeUser {
+        margin: 0;
+        border: 1px solid #ddd;
+
+        p {
+            background: #f4f4f4;
+            padding: 0 20px;
+            margin-bottom: 5px;
+        }
+    }
+
+    .treeUserb {
+        width: calc(100% - 100px);
+        border: 1px solid #ddd;
+        background: #f4f4f4;
+        border-radius: 3px;
+        height: auto;
+        overflow: hidden;
+
+        p {
+            display: inline-block;
+            padding: 0 20px;
+            margin-bottom: 5px;
+        }
+    }
+}
+</style>
+

+ 131 - 0
src/pages/main/documentCollection/home.vue

@@ -0,0 +1,131 @@
+<template>
+    <div class="inner-container">
+        <div class="tabBox">
+            <el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick" type="card">
+                <el-tab-pane v-for="(item, index) in routerList" :key="index" :name="item.path" :label="item.label">
+                </el-tab-pane>
+            </el-tabs>
+        </div>
+        <div class="infoBox">
+            <router-view />
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            activeName: "",
+            showList: [],
+            routerList: [
+                { label: "我接收的", path: "/documentCollectionApproval", name: "incomeExcelTemplate" },
+                { label: "我发起的", path: "/documentCollectionApprovalIssuedCollect", name: "incomeExcelView" },
+                { label: "模板管理", path: "/documentCollectionApprovalIssuedMoud", name: "incomeExcelIssued" },
+                
+                // { label: "收入附件收集", path: "/incomeExcelAppendixs", name: "incomeExcelAppendix" }
+            ],
+        };
+    },
+    computed: {
+        menuList: function () {
+            let arr = [];
+            this.routerList.map((item) => {
+                this.showList.map((row) => {
+                    if (item.path == row) {
+                        arr.push(item);
+                    }
+                });
+            });
+            return arr;
+        },
+    },
+    methods: {
+        handleClick(val) {
+            if (this.$route.path != this.activeName) {
+                console.log(this.activeName);
+                this.$router.push(this.activeName);
+            }
+        },
+    },
+    mounted() {
+        this.activeName = this.$route.path;
+    },
+    created() {
+        JSON.parse(sessionStorage.childrenMenus).map((item) => {
+            this.showList.push(item.jspUrl);
+        });
+    },
+    watch: {
+        $route(to, from) {
+            this.activeName = this.$route.path;
+        },
+    },
+};
+</script>
+<style  lang="scss" scoped>
+.el-tabs__content {
+    display: none;
+}
+
+.inner-container {
+    background: #ffffff;
+    padding-top: 20px;
+    margin: 15px;
+    overflow: auto;
+    width: calc(100% - 30px);
+    max-width: calc(100% - 30px);
+    height: 100%;
+    overflow-x: hidden;
+
+    &-viewport {
+        width: 100%;
+        overflow: auto;
+    }
+}
+
+.tabBox {
+    border-bottom: 1px solid #e1e1e1;
+    height: 60px;
+}
+
+.infoBox {
+    background: #f4f4f4 !important;
+    height: 100%;
+    width: calc(100%)
+}
+
+::v-deep .el-tabs__item {
+    width: 166px;
+    text-align: center;
+    border-left: 10px solid #ffffff;
+    border-right: 10px solid #ffffff;
+
+}
+
+::v-deep .el-tabs__header {
+    margin: 0px;
+    background: #d8eaf6;
+    color: black;
+    margin-left: 20px;
+    display: inline-block;
+    border: 0px
+}
+
+::v-deep .is-active {
+    background: #0583cd;
+    color: white;
+}
+
+::v-deep .el-tabs__item:hover {
+    color: black;
+}
+
+::v-deep .is-active:hover {
+    background: #0583cd;
+    color: white;
+}
+
+::v-deep .el-tabs--card>.el-tabs__header .el-tabs__nav {
+    border: 0px
+}
+</style>

+ 293 - 0
src/pages/main/documentCollection/newTree.vue

@@ -0,0 +1,293 @@
+<template>
+  <div class="flex-box">
+    <div class="treebox">
+      <!-- <div class="tree-text">组织机构</div> -->
+      <el-input placeholder="可按名字匹配所在部门" v-model="filterText">
+      </el-input>
+      <el-tree ref="tree" @node-click="handleNodeClick" :data="treeList" node-key="o" :indent="20"
+        :default-checked-keys="defaultListc" :default-expanded-keys="defaultList">
+        <span class="span-ellipsis" slot-scope="{ node, data }">
+          <span :title="node.label"><i v-if="data.children.length === 0" class="el-icon-caret-right icon-right"></i>
+            {{ node.label }}</span>
+        </span>
+      </el-tree>
+    </div>
+    <div class="flex-transfer">
+      <el-transfer v-model="value" :titles="['待选人员', '已选人员']" @change="handleCheckChange"
+        :data="transferList"></el-transfer>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: ["defaultList", "type", "oneORmore","treeListType"],
+  data() {
+    return {
+      filterTexts: "",
+      filterText: "",
+      transferList: [],
+      treeList: [],
+      treeLists: [],
+      rightList: [],
+      value: [],
+      newArr: [],
+      opt: [],
+      treeId: 1,
+      defaultProps: {
+        children: "children",
+        label: "label",
+      },
+      defaultListc: [],
+    };
+  },
+  methods: {
+    handleNodeClick(v) {
+      for (let i = v.children.length - 1; i >= 0; i--) {
+        if (v.children[i].haveUserFlag == "N") {
+          v.children.splice(i, 1);
+        }
+      }
+      // v.children.map((item,index) =>{
+
+      //   if(item.haveUserFlag == "N"){
+      //     v.children.splice(index, 1);
+      //   }
+      //   console.log(v.children);
+      // })
+      let list = {
+        groupId: v.o,
+      };
+      if (this.filterTexts) {
+        list.loginNameStr = this.filterTexts;
+      }
+      if (v.o !== this.treeId) {
+        if (this.value.length !== 0) {
+          let a = [];
+          for (let i = 0; i <= this.transferList.length - 1; i++) {
+            for (let y = 0; y <= this.value.length; y++) {
+              if (this.transferList[i].key === this.value[y]) {
+                console.log(this.transferList[i].key);
+                console.log(this.value[y]);
+                a.push(this.transferList[i]);
+
+              }
+            }
+          }
+          console.log(a);
+          this.transferList = a;
+          // console.log(this.transferList);
+        } else {
+          this.transferList = [];
+        }
+      }
+      let s = false;
+      if (v.children && v.children.length == 0) {
+        s = true;
+      }
+      if (v.type) {
+        return;
+      }
+      if (
+        v.children &&
+        v.children.length > 0 &&
+        v.children[v.children.length - 1].type == 1
+      ) {
+        return;
+      }
+      if (v.o !== this.treeId) {
+        this.$http({
+          url: "/sysmgr/sysuserinfo/queryListByName",
+          method: "post",
+          headers: {
+            "Content-Type": "application/json",
+          },
+          data: list
+        }).then((res) => {
+          v.children = v.children ? v.children : [];
+          this.treeId = v.o;
+          this.treeLists = res.data;
+          res.data.map((item, index) => {
+            this.transferList.push({
+              label: item.loginNameStr,
+              key: item.loginNoStr,
+              groupName: item.groupName,
+            });
+          });
+          const dalaoyang = (arr, key) => {
+            let map = new Map()
+            return arr.filter(item => !map.has(item[key]) && map.set(item[key], 1))
+          }
+          this.transferList = dalaoyang(this.transferList, "key")
+          console.log(this.transferList);
+        });
+      } else {
+        console.log(this.transferList);
+      }
+    },
+    getTree(v, e) {
+      let list = {
+        parentorgId: v,
+        type:this.treeListType,//* 1:全部传递 2:值传递第一层 3:值传递第一层之后数据
+      };
+      if (e) {
+        list.name = e;
+      }
+      this.loading = true;
+      this.$http({
+        // url: "/sysmgr/csysdept/queryAllList",
+        url: "/sysmgr/csysdept/queryAllListByParentorgId",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: list,
+      }).then((res) => {
+        this.loading = false;
+        this.treeList = res.data;
+        let list = res.data[0].children.filter((item, i, array) => {
+          return item.haveUserFlag === "Y";
+        });
+        this.treeList[0].children = list;
+      });
+    },
+    handleCheckChange(v) {
+      // console.log(this.value);
+      if (this.oneORmore == '2') {
+        if (this.value.length > 1) {
+
+          this.$message({
+            message: '只能选择一人',
+            type: 'error'
+          });
+          this.value = [this.value[0]]
+          let opt = [];
+          this.transferList.map((item) => {
+            this.value.map((items) => {
+              if (item.key === items) {
+                opt.push(item);
+              }
+            });
+          });
+          // console.log(opt);
+          this.$emit("treeCheck", opt);
+        } else {
+          let opt = [];
+          this.transferList.map((item) => {
+            this.value.map((items) => {
+              if (item.key === items) {
+                opt.push(item);
+              }
+            });
+          });
+          // console.log(opt);
+          this.$emit("treeCheck", opt);
+        }
+      } else {
+        let opt = [];
+        this.transferList.map((item) => {
+          this.value.map((items) => {
+            if (item.key === items) {
+              opt.push(item);
+            }
+          });
+        });
+        // console.log(opt);
+        this.$emit("treeCheck", opt);
+      }
+
+
+    },
+  },
+  created() {
+    this.getTree('00440063000000000000');
+    this.defaultListc = this.defaultList;
+  },
+  watch: {
+    filterText(val) {
+      // this.$refs.tree.filter(val);
+      console.log(val);
+      this.filterTexts = val;
+      this.getTree("00440063000000000000", this.filterTexts);
+    },
+  },
+};
+</script>
+
+
+<style scoped lang="scss">
+::v-deep .el-checkbox.el-transfer-panel__item {
+  display: block !important;
+}
+
+// ::v-deep .el-transfer-panel__list.is-filterable {
+//   height: calc(100%);
+// }
+
+// ::v-deep .el-checkbox-group .el-transfer-panel__list {
+//   height: 388px;
+// }
+
+.el-transfer-panel {
+  height: 500px;
+}
+
+.el-transfer-panel__list.is-filterable {
+  height: 400px;
+}
+
+::v-deep .el-transfer-panel__body {
+  height: 100%;
+}
+
+.tree-text {
+  font-size: 20px;
+  color: black;
+  padding: 15px;
+  font-weight: 600;
+}
+
+.flex-box {
+  display: flex;
+  width: 100%;
+  justify-content: center;
+  height: 80%;
+}
+
+::v-deep .el-icon-caret-right {
+  font-size: 12px;
+  background-size: cover;
+  margin-left: px;
+}
+
+.icon-right {
+  margin-left: 5px;
+  color: #fff;
+}
+
+.treebox {
+  width: 30%;
+  border: 1px solid #ddd;
+  height: 100%;
+  background-color: #fff;
+  overflow: scroll;
+  overflow-x: hidden;
+  max-height: 390px;
+  height: 390px;
+}
+
+.flex-transfer {
+  width: 50%;
+  height: 390px;
+  margin-left: 30px;
+}
+
+::v-deep .el-transfer-panel {
+  width: 35%;
+  height: 100%;
+}
+
+::v-deep .el-transfer {
+  height: 100%;
+}
+</style>

+ 95 - 0
src/pages/main/documentCollection/search.vue

@@ -0,0 +1,95 @@
+<template>
+	<div class="search-box">
+		<div class="box-l">
+			<div v-for="(item, index) in searchList" :key="index" class="box-info" :style="'width:' + item.width">
+				<!-- <span>{{ item.tit }}</span> -->
+				<el-form>
+					<el-form-item :label="item.tit"   label-width="90px">
+						<el-input v-model="item.value" v-if="item.type === 'input'" size="medium"
+							:placeholder="item.tit">
+						</el-input>
+						<el-select :popper-append-to-body="false" clearable v-if="item.type === 'sel'"
+							v-model="item.value" :placeholder="item.tit" size="medium">
+							<el-option v-for="items in item.options" :key="items.dataCode" :label="items.dataName"
+								:value="items.dataCode">
+							</el-option>
+						</el-select>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'date'"
+							size="medium" type="date" :placeholder="item.tit">
+						</el-date-picker>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'datetime'"
+							size="medium" type="datetime" :placeholder="item.tit">
+						</el-date-picker>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'month'"
+							size="medium" type="month" :placeholder="item.tit">
+						</el-date-picker>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'year'"
+							size="medium" type="year" :placeholder="item.tit">
+						</el-date-picker>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'daterange'"
+							size="medium" type="daterange" :placeholder="item.tit" format="yyyy-MM-dd HH:mm:ss"
+							value-format="yyyy-MM-dd HH:mm:ss" :default-time="defaultTime" start-placeholder="开始时间"
+							end-placeholder="结束时间" />
+					</el-form-item>
+				</el-form>
+			</div>
+		</div>
+		<el-button class="btn-check" size="medium" type="primary" plain icon="el-icon-search" @click="searchInfo">搜索
+		</el-button>
+	</div>
+</template>
+<script>
+export default {
+	props: ["searchList"],
+	data() {
+		return {
+			infoList: [],
+			defaultTime: ['00:00:00', '23:59:59'],
+		};
+	},
+	methods: {
+		searchInfo() {
+			this.infoList = [];
+			for (let i = 0; i < this.searchList.length; i++) {
+				if (this.searchList[i].type === "date" && this.searchList[i].value) {
+					this.infoList.push(Date.parse(this.searchList[i].value));
+				} else {
+					this.infoList.push(this.searchList[i].value);
+				}
+			}
+			this.$emit("searchInfo", this.infoList);
+		},
+	},
+	mounted() { },
+	created() { },
+};
+</script>
+<style scoped lang="scss">
+.search-box {
+	display: flex;
+	justify-content: space-between;
+
+	.box-l {
+		display: flex;
+		justify-content: space-between;
+
+		.box-info {
+			display: inline-block;
+			// min-width: 100px;
+		}
+	}
+
+	.btn-check {
+		height: 38px;
+	}
+
+	.el-date-editor.el-input,
+	.el-date-editor.el-input__inner {
+		width: 100%;
+	}
+
+	.el-select-dropdown {
+		z-index: 100000 !important;
+	}
+}
+</style>

+ 37 - 0
src/router/index.js

@@ -2175,6 +2175,43 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/leader/risk/riskManagement.vue'], resolve)
         },
+        {
+            meta: { name: '新文件收集与审批', keepAlive: false },
+            path: '/documentCollectionApprovalHome',
+            name: 'documentCollectionApprovalHome',
+            redirect: 'documentCollectionApproval',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/documentCollection/home.vue'], resolve),
+            children: [
+                {
+                    meta: { name: '文件收集与审批我接收的', keepAlive: false },
+                    path: '/documentCollectionApproval',
+                    name: 'documentCollectionApproval',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApproval'], resolve)
+                },
+                {
+                    meta: { name: '收入信息收集', keepAlive: false },
+                    path: '/documentCollectionApprovalIssuedMoud',
+                    name: 'documentCollectionApprovalIssuedMoud',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalIssuedMoud'], resolve)
+                }, {
+                    meta: { name: '文件收集与审批我发起的', keepAlive: false },
+                    path: '/documentCollectionApprovalIssuedCollect',
+                    name: 'documentCollectionApprovalIssuedCollect',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalIssuedCollect'], resolve)
+                },
+               
+            ]
+        },
+        {
+            meta: {
+                name: '模板详情',
+                keepAlive: false
+            },
+            path: '/documentCollectionApprovalExcel',
+            name: 'documentCollectionApprovalExcel',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalExcel'], resolve)
+        },
     ]
 },
 {