fan 2 سال پیش
والد
کامیت
d14b705279

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 463 - 0
public/static/views/incomeViewExcel.html


+ 2 - 2
src/pages/main/incomeExcel/home.vue

@@ -29,8 +29,8 @@ export default {
             routerList: [
                 {label: "收入模板管理", path: "/incomeExcelTemplate", name: "incomeExcelTemplate"},
                 {label: "收入信息收集", path: "/incomeExcelIssued", name: "incomeExcelIssued"},
-                {label: "收入信息发布", path: "/c", name: "c"},
-                {label: "收入附件收集", path: "/d", name: "d"},
+                {label: "收入信息发布", path: "/incomeExcelView", name: "incomeExcelView"},
+                {label: "收入附件收集", path: "/incomeExcelAppendix", name: "incomeExcelAppendix"},
             ],
         };
     },

+ 730 - 0
src/pages/main/incomeExcel/incomeExcelAppendix.vue

@@ -0,0 +1,730 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div style="overflow: hidden;">
+                <div class="search" style="float: left;">
+                    <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                </div>
+                <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="appendixName" label="名称" align="center">
+                    </el-table-column>
+                    <el-table-column prop="opTime" label="发起时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="deptName" label="发起部门" align="center">
+                    </el-table-column>
+                    <el-table-column prop="userName" label="发起人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="endTime" label="截止时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="state" label="状态" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.state == 0">待办</span>
+                            <span v-if="scope.row.state == 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="openAppendixInfo(scope.row)" v-if="scope.row.type == '1'">
+                                回复详情
+                            </el-button>
+                            <el-button size="mini" @click="processAppendixInfo(scope.row,1)"
+                                       v-if="scope.row.type == '1'">
+                                查看
+                            </el-button>
+                            <el-button size="mini" @click="processAppendixInfo(scope.row,1)"
+                                       v-if="scope.row.type == '2'">
+                                查看
+                            </el-button>
+                            <el-button size="mini" @click="processAppendixInfo(scope.row,2)"
+                                       v-if="scope.row.type == '2' && scope.row.state =='0'">处理
+                            </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="addDialogStatus" width="40%" :destroy-on-close="true"
+                       :modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="false">
+                <el-form :model="addDialogParam" ref="addInfoList">
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span>名称</span>
+                            <el-input v-model="addDialogParam.name" placeholder="名称" :disabled="addDisabled"></el-input>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span>截止日期</span>
+                            <el-date-picker type="date" placeholder="截止日期" v-model="addDialogParam.endTime"
+                                            :picker-options="pickerOptions" value-format="yyyy-MM-dd"
+                                            :disabled="addDisabled"></el-date-picker>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span>材料说明</span>
+                            <el-input v-model="addDialogParam.remark" placeholder="材料说明"
+                                      :disabled="addDisabled"></el-input>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line" v-if="addDialogParam.type == '1'">
+                        <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo"
+                                  :fileList="fileInfo.fileList"></myUpload>
+                    </div>
+                    <div class="info-line" v-if="addDialogParam.type == '2'">
+                        <span>附件材料</span><br/>
+                        <uploadDown :datalist="uploadUserFileList" :dialogStatus="uploadstatus"></uploadDown>
+                    </div>
+                    <div class="info-line" v-if="addDialogParam.type == '2'">
+                        <br/>
+                        <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo"
+                                  :fileList="fileInfo.fileList"></myUpload>
+                    </div>
+                </el-form>
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button @click="addDialogStatus = false">取消</el-button>
+                    <el-button @click="checkAddForm()" type="primary" v-if="addDialogParam.type == '1'">确定</el-button>
+                    <el-button @click="processUserAdd()" type="primary" v-if="addDialogParam.type == '2'">确定
+                    </el-button>
+                </div>
+            </el-dialog>
+
+            <el-dialog title="查看" :visible.sync="viewDialogStatus" width="40%" :destroy-on-close="true"
+                       :modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="false">
+                <el-form :model="addDialogParam" ref="addInfoList">
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span>名称</span>
+                            <el-input v-model="addDialogParam.name" placeholder="名称" :disabled="true"></el-input>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span>截止日期</span>
+                            <el-date-picker type="date" placeholder="截止日期" v-model="addDialogParam.endTime"
+                                            :picker-options="pickerOptions" value-format="yyyy-MM-dd"
+                                            :disabled="true"></el-date-picker>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span>材料说明</span>
+                            <el-input v-model="addDialogParam.remark" placeholder="材料说明" :disabled="true"></el-input>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <span>附件材料</span><br/>
+                        <uploadDown :datalist="uploadUserFileList" :dialogStatus="uploadstatus"></uploadDown>
+                    </div>
+                    <div class="info-line" v-if="this.userFileList.attList.length > 0">
+                        <br/>
+                        <span>回复附件</span><br/>
+                        <uploadDown :datalist="userFileList" :dialogStatus="uploadstatus"></uploadDown>
+                    </div>
+                </el-form>
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button @click="viewDialogStatus = false">关闭</el-button>
+                </div>
+            </el-dialog>
+
+            <el-dialog title="选择接收人" :visible.sync="appendixUserDialog" width="50%" :destroy-on-close="true"
+                       :modal-append-to-body="false" :close-on-click-modal="false">
+                <div>
+                    <el-form :model="exaList" ref="addInfoList">
+                        <el-form-item prop="processUserId" class="info-line online">
+                            <span style="width: 80px;">接收人</span>
+                            <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                             :type="depttype" :closeList="closeList"></deptTreeUserNew>
+                            <div class="tree treeUser">
+                                <p v-for="(item,index) in treeList" :key="index">{{ item.receiveName }}
+                                    <i @click="deletes(item,index)" class="el-icon-error"></i>
+                                </p>
+                            </div>
+                        </el-form-item>
+                    </el-form>
+
+                    <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                        <el-button @click="appendixUserDialog = false">取 消</el-button>
+                        <el-button type="primary" @click="checkUserList()">确 定</el-button>
+                    </div>
+                </div>
+            </el-dialog>
+
+            <el-dialog title="查看" :visible.sync="appendixInfoStatus" width="70%" :close-on-press-escape="false"
+                       :show-close="true" :before-close="closeAppendixInfo" :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="appindixInfoData"
+                              tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                        <el-table-column
+                            type="index"
+                            width="50">
+                        </el-table-column>
+                        <el-table-column prop="deptName" label="回复部门">
+                        </el-table-column>
+                        <el-table-column prop="userName" label="回复人">
+                        </el-table-column>
+                        <el-table-column prop="state" label="回复情况">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.state == 0">未回复</span>
+                                <span v-if="scope.row.state == 1">已回复</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="isOverTime" label="是否超时">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.isOverTime == 0">否</span>
+                                <span v-if="scope.row.isOverTime == 1">是</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="回复内容">
+                            <template slot-scope="scope">
+                                <div v-for="item in scope.row.filesList">
+                                    <span style="color: #0b82ff;cursor: pointer"
+                                          @click="downAppendixFile(item.id,item.fileName)">{{
+                                            item.fileName
+                                        }}&nbsp;</span>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <el-pagination class="pageBox" @current-change="appendixInfoChange"
+                                   layout="prev, pager, next" background
+                                   :total="appendixInfoTotal">
+                    </el-pagination>
+                </div>
+                <div class="dialog-footer myfooter">
+                    <el-button @click="exportZip()" type="primary">导出</el-button>
+                    <el-button @click="appendixInfoStatus = false">关闭</el-button>
+                </div>
+            </el-dialog>
+        </div>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "../../../components/search.vue";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+import myMessageNew from "../../../components/myMessageNew.vue"
+import uploadDown from '../../../components/uploadDown'
+import deptTreeUserNew from "../../../components/deptTreeUserNew";
+
+export default {
+    components: {
+        myUpload,
+        mySearch,
+        toolList,
+        myMessageNew,
+        uploadDown,
+        deptTreeUserNew
+    },
+    data() {
+        return {
+            tableData: [{}],
+            total: 0,
+            appendixInfoTotal: 0,
+            params: {},
+            deleteTag: '',
+            centerDialogVisible: false,
+            loading: false,
+            issuedAddStatus: false,
+            addDialogParam: {},
+            tooltit: '收入附件收集',
+            searchList: [{
+                type: 'input',
+                tit: '名称',
+                value: '',
+                width: '100%',
+            },],
+            pickerOptions: {
+                disabledDate(time) {
+                    return time.getTime() < Date.now();
+                }
+            },
+            fullscreen: false,
+            addDialogStatus: false,
+            fileInfo: {
+                limit: 350,
+                url: '/market/cIncomeExcelAppendix/upload',
+                fileList: []
+            },
+            attList: [],
+            //选择审批人
+            checkexa: false,
+            //审批人用到的
+            treeListonly: {},
+            exaList: {},
+            defaultList: [],
+            treeList: [],
+            closeList: false,
+            depttype: 0,
+            appendixUserDialog: false,
+            viewDialogStatus: false,
+            //提交人下载文件库
+            uploadUserFileList: {
+                url: '/market/cIncomeExcelAppendix/downFile',
+                type: 1,
+                attList: []
+            },
+            //发起人下载文件框
+            userFileList: {
+                url: '/market/cIncomeExcelAppendix/downFile',
+                type: 1,
+                attList: []
+            },
+            uploadStatus: false,
+            addDisabled: false,
+            nowUserId: '',
+            //回复详情
+            appendixInfoStatus: false,
+            appindixInfoData: [{}],
+            appendixInfoPageSize: 1,
+            pageSize: 1,
+            appendixInfoParams: {},
+        }
+    },
+    methods: {
+        closeAppendixInfo() {
+            this.appendixInfoStatus = false;
+        },
+        openAppendixInfo(row) {
+            console.log(row);
+            this.appendixInfoParams = {
+                excelId: row.appendixId,
+                name: row.appendixName
+            }
+            this.getAppendixInfoPage(this.appendixInfoParams, this.appendixInfoPageSize);
+            this.appendixInfoStatus = true;
+        },
+        processUserAdd() {
+            var _this = this;
+            if (this.attList.length == 0) {
+                this.$message({
+                    message: '请上传附件',
+                    type: 'error'
+                });
+                return;
+            }
+            //执行下发
+            this.$http({
+                url: '/market/cIncomeExcelAppendix/uploadUserAppendix',
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    appendixUserId: this.nowUserId,
+                    fileList: _this.attList
+                },
+            }).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.addDialogStatus = false;
+                    this.getList({}, 1);
+                }
+            });
+        },
+        processAppendixInfo(row, type) {
+            this.addDialogParam = {
+                type: '2'
+            };
+            this.attList = [];
+            this.uploadUserFileList.attList = [];
+            this.userFileList.attList = [];
+            var _this = this;
+            //执行下发
+            this.$http({
+                url: '/market/cIncomeExcelAppendix/queryAppendixInfo',
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    excelId: row.id
+                },
+            }).then((res) => {
+                this.loading = false;
+                var d = res.data.body;
+                console.log(d);
+                this.addDialogParam = {
+                    type: '2',
+                    name: d.appendix.name,
+                    remark: d.appendix.remark,
+                    endTime: d.appendix.endTime
+                }
+                this.uploadUserFileList.attList = d.fileList[0];
+                this.userFileList.attList = d.fileList[1];
+                if (type == 1) {
+                    this.viewDialogStatus = true;
+                } else if (type == 2) {
+                    this.addDialogStatus = true;
+                    this.addDisabled = true;
+                    this.nowUserId = row.id;
+                }
+            });
+        },
+        checkAddForm() {
+            if (!this.addDialogParam.name) {
+                this.$message({
+                    message: '名称不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (!this.addDialogParam.remark) {
+                this.$message({
+                    message: '材料说明不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (!this.addDialogParam.endTime) {
+                this.$message({
+                    message: '截止日期不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (this.attList.length == 0) {
+                this.$message({
+                    message: '请上传附件',
+                    type: 'error'
+                });
+                return;
+            }
+            this.appendixUserDialog = true;
+        },
+        checkUserList() {
+            if (this.treeList.length == 0) {
+                this.$message({
+                    message: '请选择接收人',
+                    type: 'error'
+                });
+            } else {
+                this.processAddNew();
+            }
+        },
+        addNew() {
+            this.addDialogParam = {
+                type: '1'
+            };
+            this.addDialogStatus = true;
+        },
+        processAddNew() {
+            var _this = this;
+            var userList = [];
+            this.treeList.map((o) => {
+                userList.push({
+                    userId: o.receiveNo
+                });
+            });
+            //执行下发
+            this.$http({
+                url: '/market/cIncomeExcelAppendix/addNewAppendix',
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    appendix: this.addDialogParam,
+                    userList: userList,
+                    fileList: _this.attList
+                },
+            }).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.addDialogStatus = false;
+                    this.getList({}, 1);
+                }
+            });
+        },
+        //文件返回值
+        uploadBack(v) {
+            this.attList = v;
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? this.params.name = v[0] : '';
+            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);
+        },
+        appendixInfoChange(v) {
+            this.appendixInfoPageSize = v;
+            this.getAppendixInfoPage(this.appendixInfoParams, this.appendixInfoPageSize);
+        },
+        getList(v, n) {
+            this.pageSize = n;
+            this.loading = true;
+            this.tableData = [];
+            let _this = this;
+            this.$http({
+                url: "/market/cIncomeExcelAppendix/queryAppendixList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v,
+            }).then((res) => {
+                this.tableData = res.data.data;
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        getAppendixInfoPage(v, n) {
+            this.appendixInfoPageSize = n;
+            this.loading = true;
+            this.appindixInfoData = [];
+            this.$http({
+                url: "/market/cIncomeExcelAppendix/queryAppendixUserList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v,
+            }).then((res) => {
+                this.appindixInfoData = res.data.data;
+                this.appendixInfoTotal = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        //填报人相关
+        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;
+        },
+        downAppendixFile(fileId, fileName) {
+            this.$http({
+                url: "/market/cIncomeExcelAppendix/downFile",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: {"id": fileId, "fileName": fileName},
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    });
+                    window.navigator.msSaveOrOpenBlob(blob, fileName);
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob);
+                    downloadElement.href = href;
+                    downloadElement.download = fileName;
+                    document.body.appendChild(downloadElement);
+                    downloadElement.click();
+                    document.body.removeChild(downloadElement);
+                    window.URL.revokeObjectURL(href);
+                }
+            });
+        },
+        exportZip() {
+            let _this = this;
+            _this.$http({
+                url: '/market/cIncomeExcelAppendix/downloadAppendixZip',
+                method: "post",
+                responseType: 'blob',
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    excelId: this.appendixInfoParams.excelId
+                },
+            }).then(res => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([res.data], {
+                        type: "application/x-msdownload"
+                    });
+                    window.navigator.msSaveOrOpenBlob(
+                        blob,
+                        // this.wo.bizName + ".xlsx"
+                        this.appendixInfoParams.name + ".zip"
+                    );
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([res.data]);
+                    var downloadElement = document.createElement("a");
+                    var href = window.URL.createObjectURL(blob);
+                    downloadElement.href = href;
+                    downloadElement.download = this.appendixInfoParams.name + ".zip";
+                    document.body.appendChild(downloadElement);
+                    downloadElement.click();
+                    document.body.removeChild(downloadElement);
+                    window.URL.revokeObjectURL(href);
+                }
+            });
+        }
+    },
+    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);
+    }
+
+    .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>
+

+ 19 - 11
src/pages/main/incomeExcel/incomeExcelInfo.vue

@@ -2,7 +2,7 @@
     <div class="container" id="container" v-loading="loading">
         <iframe height="100%" width="100%" src="/static/views/incomeTemplateExcel.html" frameborder="0"
                 ref="iframe" name="excelIframe" id="excelIframe"></iframe>
-        <el-dialog :title="'权限设置'" :visible.sync="authSettingStatus" width="50%" :destroy-on-close="true"
+        <el-dialog :title="'权限设置'" :visible.sync="authSettingStatus" width="70%" :destroy-on-close="true"
                    :modal-append-to-body="false" :close-on-click-modal="false">
             <el-form :model="testModel" ref="addInfoList">
                 <div>
@@ -22,9 +22,9 @@
                                 <el-button type="primary" @click="limitUserAdd(index)">组织机构</el-button>
                                 <span style="margin-right: 20px;margin-left: 20px">{{ item.userName }}</span>
                                 <span style="margin-right: 10px;margin-left: 10px">可编辑行:从</span>
-                                <el-input v-model="item.editStart" style="width: 60px;"></el-input>
+                                <el-input v-model="item.editStart" style="width: 80px;" type="number" min="1" oninput="value=value.replace('-','')"></el-input>
                                 <span style="margin-right: 10px;margin-left: 10px">到</span>
-                                <el-input v-model="item.editEnd" style="width: 60px;"></el-input>
+                                <el-input v-model="item.editEnd" style="width: 80px;" type="number" min="1" oninput="value=value.replace('-','')"></el-input>
                                 <br/><br/>
                             </div>
                             <el-button style="width: 80px;margin-right: 20px;margin-left: 40px"
@@ -351,17 +351,25 @@ export default {
         },
         addNewLimitAuth() {
             var _this = this;
-            var lastLimitUserList = _this.limitList[_this.limitList.length - 1].userIds;
-            if (lastLimitUserList == null) {
+            if (this.authType == '2') {
+                var lastLimitUserList = _this.limitList[_this.limitList.length - 1].userIds;
+                if (lastLimitUserList == null) {
+                    _this.$message({
+                        message: '请先选择上一条记录的负责人',
+                        type: 'error'
+                    });
+                } else {
+                    _this.limitList.push({
+                        index: 1
+                    });
+                }
+            } else {
                 _this.$message({
-                    message: '请先选择上一条记录的负责人',
+                    message: '请先选择特殊权限再添加',
                     type: 'error'
                 });
-            } else {
-                _this.limitList.push({
-                    index: 1
-                });
             }
+
         },
         processNoLimitUsers() {
             var userNameString = '';
@@ -429,7 +437,7 @@ export default {
                     var i = -1;
                     var nowStart = '';
                     var nowEnd = '';
-                    this.limitList = [];
+                    this.limitList = [{}];
                     this.noLimitUsers = [];
                     this.noLimitUserName = '';
                     authUsers.map((o) => {

+ 35 - 14
src/pages/main/incomeExcel/incomeExcelIssued.vue

@@ -1,11 +1,9 @@
 <template>
     <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
-        <div class="container-box" style="padding: 0 20px 0 0;">
+        <div class="container-box">
             <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
-            <div style="overflow: hidden;">
-                <div class="search" style="float: left;">
-                    <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
-                </div>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
             </div>
             <div class="tabbox">
                 <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
@@ -58,7 +56,7 @@
 
             <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" ref="addInfoList">
+                <el-form :model="testModel">
                     <div>
                         <div class="info-line">
                             <span style="margin-right: 20px;margin-left: 40px">选择路径:</span>
@@ -143,17 +141,34 @@ export default {
                 type: 'input',
                 tit: '模板名称',
                 value: '',
-                width: '100%',
+                width: '32%',
             }, {
-                type: 'input',
+                type: 'date',
                 tit: '截止时间',
-                value: '',
-                width: '100%',
+                width: '32%',
             }, {
-                type: 'input',
+                type: 'sel',
                 tit: '状态',
                 value: '',
-                width: '100%',
+                width: '32%',
+                options: [
+                    {
+                        dataCode: "0",
+                        dataName: "待处理"
+                    },
+                    {
+                        dataCode: "1",
+                        dataName: "已完成"
+                    },
+                    {
+                        dataCode: "2",
+                        dataName: "待审批"
+                    },
+                    {
+                        dataCode: "3",
+                        dataName: "驳回"
+                    }
+                ]
             },],
             nowUserId:'',
             auditBoxList: [{}],
@@ -166,14 +181,20 @@ export default {
             //审批人用到的
             treeListonly: {},
             excelData: {},
+            fullscreen: false,
+            defaultList:[],
+            addInfoList:[],
+            closeList:[],
+            depttype:'',
         }
     },
     methods: {
         //搜索数据
         searchInfo(v) {
             this.params = {};
-            v[0] ? this.params.name = v[0] : '';
-            v[1] ? this.params.templateType = v[1] : '';
+            v[0] ? this.params.templateName = v[0] : '';
+            v[1] ? this.params.endTime = this.$formatDate(v[1] , "YYYY-MM-DD")  : '';
+            v[2] ? this.params.state = v[2] : '';
             this.getList(this.params, this.pageSize);
         },
         //功能栏

+ 4 - 4
src/pages/main/incomeExcel/incomeExcelTemplate.vue

@@ -1,6 +1,6 @@
 <template>
     <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
-        <div class="container-box" style="padding: 0 20px 0 0;">
+        <div class="container-box">
             <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
             <div style="overflow: hidden;">
                 <div class="search" style="float: left;">
@@ -111,12 +111,12 @@ export default {
                 type: 'input',
                 tit: '模板名称',
                 value: '',
-                width: '100%',
+                width: '48%',
             }, {
                 type: 'input',
                 tit: '模板类型',
                 value: '',
-                width: '100%',
+                width: '48%',
             },],
         }
     },
@@ -202,7 +202,7 @@ export default {
             }
             if (!this.issuedParam.endTime) {
                 this.$message({
-                    message: '截时间不能为空',
+                    message: '截时间不能为空',
                     type: 'error'
                 });
                 return;

+ 288 - 0
src/pages/main/incomeExcel/incomeExcelView.vue

@@ -0,0 +1,288 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div style="overflow: hidden;">
+                <div class="search" style="float: left;">
+                    <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                </div>
+                <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="viewName" label="模板名称" align="center">
+                    </el-table-column>
+                    <el-table-column prop="opTime" label="发起时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="deptName" label="发起部门" align="center">
+                    </el-table-column>
+                    <el-table-column prop="userName" label="发起人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="typeName" label="模板类型" align="center">
+                    </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)" v-if="scope.row.type == '1'">查看
+                            </el-button>
+                            <el-button size="mini" @click="toViewer(scope.row)" v-if="scope.row.type == '2'">查看
+                            </el-button>
+                            <el-button size="mini" @click="toEdit(scope.row)" v-if="scope.row.type == '1'">修改
+                            </el-button>
+                            <el-button size="mini" @click="delDialog(scope.row)" v-if="scope.row.type == '1'">删除
+                            </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>
+        </div>
+        <myMessageNew :messTit='deleteTag' @closeMessage="processDel" :centerDialogVisible="centerDialogVisible"
+                      v-if="centerDialogVisible" yes-btn-name="是" no-btn-name="否"></myMessageNew>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "../../../components/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: '',
+            centerDialogVisible: false,
+            loading: false,
+            issuedAddStatus: false,
+            issuedParam: {},
+            tooltit: '收入信息发布',
+            searchList: [{
+                type: 'input',
+                tit: '模板名称',
+                value: '',
+                width: '100%',
+            },],
+            fullscreen: false,
+            delViewId: ''
+        }
+    },
+    methods: {
+        delDialog(row) {
+            this.delViewId = row.viewId;
+            this.deleteTag = '确认删除吗?';
+            this.centerDialogVisible = true;
+        },
+        processDel(v) {
+            this.centerDialogVisible = false;
+            var _this = this;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/cIncomeExcelView/delView",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {excelId: 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.name = v[0] : '';
+            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/cIncomeExcelView/getViewList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v,
+            }).then((res) => {
+                this.tableData = res.data.data;
+                this.total = res.data.totalRecord;
+                this.loading = 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('/incomeExcelViewInfo', 3, '查看收入信息', row.viewId);
+        },
+        toViewer(row) {
+            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>
+

+ 484 - 0
src/pages/main/incomeExcel/incomeExcelViewInfo.vue

@@ -0,0 +1,484 @@
+<template>
+    <div class="container" id="container" v-loading="loading">
+        <iframe height="100%" width="100%" src="/static/views/incomeViewExcel.html" frameborder="0"
+                ref="iframe" name="excelIframe" id="excelIframe"></iframe>
+        <el-dialog :title="'权限设置'" :visible.sync="authSettingStatus" width="70%" :destroy-on-close="true"
+                   :modal-append-to-body="false" :close-on-click-modal="false">
+            <el-form :model="testModel" ref="addInfoList">
+                <div>
+                    <div class="info-line">
+                        <div id="noLimit" class="info-line">
+                            <span style="margin-right: 10px;margin-left: 40px">请设置表头范围:从</span>
+                            <el-input v-model="topStart" style="width: 80px;" type="number" min="1" oninput="value=value.replace('-','')"></el-input>
+                            <span style="margin-right: 10px;margin-left: 10px">到</span>
+                            <el-input v-model="topEnd" style="width: 80px;" type="number" min="1" oninput="value=value.replace('-','')"></el-input>行
+                            <br/><br/>
+                            <span style="margin-right: 10px;margin-left: 40px;font-size: 12px;color: red">注意:表头跟随可查看行进行组合下发,可查看行不填写,默认可查看整个表</span>
+                            <br/><br/>
+                        </div>
+                    </div>
+                    <div class="info-line">
+                        <div id="limit">
+                            <div v-for="(item,index) in limitList">
+                                <span style="margin-right: 20px;margin-left: 40px">查看人:</span>
+                                <el-button type="primary" @click="limitUserAdd(index)">组织机构</el-button>
+                                <span style="margin-right: 20px;margin-left: 20px">{{ item.userName }}</span>
+                                <span style="margin-right: 10px;margin-left: 10px">可查看行:从</span>
+                                <el-input v-model="item.editStart" style="width: 80px;" type="number" min="1" oninput="value=value.replace('-','')"></el-input>
+                                <span style="margin-right: 10px;margin-left: 10px">到</span>
+                                <el-input v-model="item.editEnd" style="width: 80px;" type="number" min="1" oninput="value=value.replace('-','')"></el-input>
+                                <br/><br/>
+                            </div>
+                            <el-button style="width: 80px;margin-right: 20px;margin-left: 40px"
+                                       @click="addNewLimitAuth()">添加
+                            </el-button>
+                        </div>
+                    </div>
+                    <div slot="footer" style="text-align: right;padding-bottom: 20px;padding-top: 20px">
+                        <el-button @click="authSettingStatus = false">取 消</el-button>
+                        <el-button type="primary" @click="processAuth()">确 定</el-button>
+                    </div>
+                </div>
+            </el-form>
+        </el-dialog>
+        <el-dialog title="选择填报人" :visible.sync="noLimitDialog" width="50%" :destroy-on-close="true"
+                   :modal-append-to-body="false" :close-on-click-modal="false">
+            <div>
+                <el-form :model="exaList" ref="addInfoList">
+                    <el-form-item prop="processUserId" class="info-line online">
+                        <span style="width: 80px;margin-right: 20px">审批人员</span>
+                        <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                         :type="depttype" :closeList="closeList"></deptTreeUserNew>
+                        <div class="tree treeUser">
+                            <p v-for="(item,index) in treeList" :key="index">{{ item.receiveName }}
+                                <i @click="deletes(item,index)" class="el-icon-error"></i>
+                            </p>
+                        </div>
+                    </el-form-item>
+                </el-form>
+
+                <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                    <el-button @click="noLimitDialog = false">取 消</el-button>
+                    <el-button type="primary" @click="processNoLimitUsers()">确 定</el-button>
+                </div>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import myMessage from "../../../components/myMessage.vue"
+import deptTreeUserNew from "../../../components/deptTreeUserNew";
+
+export default {
+    components: {
+        myMessage,
+        deptTreeUserNew,
+    },
+    data() {
+        return {
+            testModel: {},
+            authSettingStatus: false,
+            authType: '1',
+            noLimitUserName: '',
+            noLimitUsers: [],
+            noLimitDialog: false,
+            exaList: {},
+            defaultList: [],
+            treeList: [],
+            closeList: false,
+            depttype: 0,
+            limitUserIndex: -1,
+            limitList: [{}],
+            type: '',
+            loading: false,
+            auditBoxList: [{}],
+            authDialog: false,
+            auditForm: {},
+            auditUserName: '',
+            auditUserId: '',
+            //选择审批人
+            checkexa: false,
+            //审批人用到的
+            treeListonly: {},
+            excelData: {},
+            topStart:'',
+            topEnd:'',
+        }
+    },
+    methods: {
+        auditUserAdd() {
+            this.checkexa = true;
+        },
+        processAuditUser() {
+            console.log(this.treeListonly);
+            this.auditUserId = this.treeListonly.leaderAuditNo;
+            this.auditUserName = this.treeListonly.leaderAuditName;
+            this.checkexa = false;
+        },
+        openAuditWindow(sheetName, excelData) {
+            this.auditBoxList = [{
+                name: '提交审核',
+                value: '1'
+            }, {
+                name: '结束',
+                value: '2'
+            }];
+            this.authDialog = true;
+            this.excelData = excelData;
+        },
+        addNewTemplate(sheetName, excelData, templateType) {
+            //处理一下数据,提交给后端
+            var authUser = [];
+            if (this.authType == '1') {
+                this.noLimitUsers.map((o) => {
+                    authUser.push({
+                        userId: o,
+                        type: 0
+                    })
+                });
+            } else {
+                //外层是权限组
+                this.limitList.map((o) => {
+                    //内层是权限用户
+                    o.userIds.map((o1) => {
+                        authUser.push({
+                            userId: o1,
+                            viewStart: o.editStart,
+                            viewEnd: o.editEnd
+                        })
+                    })
+                });
+            }
+            //console.log(authUser);
+            //提交
+            var _this = this;
+            var url = '/market/cIncomeExcelView/addNewView';
+            if (this.type == '2') {
+                url = '/market/cIncomeExcelView/updateView';
+            }
+            this.loading = true;
+            this.$http({
+                url: url,
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    excelData: excelData,
+                    excelName: sheetName,
+                    userList: authUser,
+                    templateType: templateType,
+                    excelId: this.getUrlKey('id'),
+                    topStart:this.topStart,
+                    topEnd:this.topEnd
+                },
+            }).then((res) => {
+                this.loading = false;
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: 'error'
+                    });
+                } else {
+                    var msgText = '新增成功';
+                    if (this.type == '2') {
+                        msgText = '修改成功';
+                    }
+                    _this.$message({
+                        message: msgText,
+                        type: 'success'
+                    });
+                    const newUrl = '#' + this.$route.path + '?type=2&id=' + res.data.desc;
+                    console.log(newUrl);
+                    window.history.replaceState('', '', newUrl);
+                    if (this.type == '1') {
+                        this.type = '2';
+                        document.getElementById('excelIframe').contentWindow.location.reload();
+                    }
+                }
+            });
+        },
+        showAuthDialog() {
+            this.authType = '2';
+            this.authSettingStatus = true;
+        },
+        processAuth() {
+            console.log(this.limitList);
+            //判断一下
+            var success = true;
+            if (this.authType == '1') {
+                if (this.noLimitUsers.length == 0) {
+                    this.$message({
+                        message: '请选择无特殊权限的负责人',
+                        type: 'error'
+                    });
+                    success = false;
+                    return;
+                }
+            } else if (this.authType == '2') {
+                if (this.topStart == '' || this.topEnd == '') {
+                    this.$message({
+                        message: '请填写表头行',
+                        type: 'error'
+                    });
+                    success = false;
+                    return;
+                }
+                if (this.topStart > this.topEnd) {
+                    this.$message({
+                        message: '表头行开始不能大于结束',
+                        type: 'error'
+                    });
+                    success = false;
+                    return;
+                }
+                this.limitList.map((o) => {
+                    if (o.userIds == null) {
+                        this.$message({
+                            message: '请选择查看人',
+                            type: 'error'
+                        });
+                        success = false;
+                        return;
+                    }
+                    if (o.editStart > o.editEnd) {
+                        this.$message({
+                            message: '可查看行开始不能大于结束',
+                            type: 'error'
+                        });
+                        success = false;
+                        return;
+                    }
+                });
+            }
+            if (success) {
+                if (this.type == '1') {
+                    this.$refs.iframe.contentWindow.enableUpload('abc');
+                } else if (this.type == '2') {
+                    this.$refs.iframe.contentWindow.enableSave('def');
+                }
+                this.authSettingStatus = false;
+            }
+        },
+        addNewLimitAuth() {
+            var _this = this;
+            var lastLimitUserList = _this.limitList[_this.limitList.length - 1].userIds;
+            if (lastLimitUserList == null) {
+                _this.$message({
+                    message: '请先选择上一条记录的查看人',
+                    type: 'error'
+                });
+            } else {
+                _this.limitList.push({
+                    index: 1
+                });
+            }
+        },
+        processNoLimitUsers() {
+            var userNameString = '';
+            if (this.authType == '1') {
+                this.noLimitUsers = [];
+                this.treeList.map((o) => {
+                    this.noLimitUsers.push(o.receiveNo);
+                    userNameString += o.receiveName += ' ';
+                });
+                this.noLimitUserName = userNameString;
+            } else {
+                this.limitList[this.limitUserIndex].userIds = [];
+                this.treeList.map((o) => {
+                    this.limitList[this.limitUserIndex].userIds.push(o.receiveNo);
+                    userNameString += o.receiveName += ' ';
+                });
+                this.limitList[this.limitUserIndex].userName = userNameString;
+            }
+            this.exaList = {};
+            this.defaultList = [];
+            this.treeList = [];
+            this.noLimitDialog = false;
+        },
+
+        limitUserAdd(index) {
+            if (this.authType == '2') {
+                this.limitUserIndex = index;
+                this.noLimitDialog = true;
+            } else {
+                this.$message({
+                    message: '请先选择特殊权限,再添加负责人',
+                    type: 'error'
+                });
+            }
+        },
+        setAuth(id) {
+            var _this = this;
+            this.$http({
+                url: '/market/cIncomeExcelView/getAuthInfo',
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    excelId: id
+                },
+            }).then((res) => {
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: '获取负责人信息失败',
+                        type: 'error'
+                    });
+                } else {
+                    console.log(res.data.body);
+                    var authUsers = res.data.body.viewUserList;
+                    var i = -1;
+                    var nowStart = '';
+                    var nowEnd = '';
+                    this.limitList = [];
+                    this.noLimitUsers = [];
+                    this.noLimitUserName = '';
+                    this.topStart = res.data.body.topStart;
+                    this.topEnd = res.data.body.topEnd;
+                    authUsers.map((o) => {
+                        console.log(o);
+                        //无特殊权限的简单一点,有特殊权限的,需要把相同可编辑行的放在一起
+                        if (o.type == '0') {
+                            this.authType = '1';
+                            this.noLimitUsers.push(o.userId);
+                            this.noLimitUserName += o.userName += ' ';
+                        } else {
+                            this.authType = '2';
+                            if (o.viewStart == nowStart && o.viewEnd == nowEnd) {
+                                var processLimitUser = this.limitList[i];
+                                processLimitUser.userIds.push(o.userId);
+                                processLimitUser.userName += o.userName += ' ';
+                            } else {
+                                var userIds = [o.userId];
+                                var userName = o.userName += ' ';
+                                this.limitList.push({
+                                    userIds: userIds,
+                                    userName: userName,
+                                    editStart: o.viewStart,
+                                    editEnd: o.viewEnd
+                                })
+                                nowStart = o.viewStart;
+                                nowEnd = o.viewEnd;
+                                i++;
+                            }
+                        }
+                    });
+                }
+            });
+        },
+        //填报人相关
+        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;
+        },
+        getUrlKey(name) {
+            return (
+                decodeURIComponent(
+                    (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
+                        location.href
+                    ) || [, ""])[1].replace(/\+/g, "%20")
+                ) || null
+            );
+        },
+    },
+    mounted() {
+        this.type = this.getUrlKey("type")
+    },
+    created() {
+        window['showAuthDialog'] = (rp) => {
+            this.showAuthDialog(rp);
+        }
+        window['addNewTemplate'] = (sheetName, excelData, templateType) => {
+            this.addNewTemplate(sheetName, excelData, templateType);
+        };
+        window['setAuth'] = (id) => {
+            this.setAuth(id);
+        };
+        window['openAuditWindow'] = (sheetName, excelData) => {
+            this.openAuditWindow(sheetName, excelData);
+        };
+    }
+}
+</script>
+<style lang="scss" scoped>
+.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>
+<style scoped>
+.containerr {
+    background: #fff;
+    height: calc(100vh);
+    width: calc(100vw);
+    position: fixed;
+    left: 0;
+    top: 0;
+    overflow: hidden;
+}
+
+span {
+    width: 80px;
+}
+</style>

+ 15 - 6
src/router/index.js

@@ -2016,15 +2016,15 @@ const routes = [{
                     component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/incomeExcel/incomeExcelIssued'], resolve)
                 },{
                     meta: { name:  '收入信息发布', keepAlive: false },
-                    path: '/c',
-                    name: 'c',
-                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/incomeExcel/incomeExcelTemplate'], resolve)
+                    path: '/incomeExcelView',
+                    name: 'incomeExcelView',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/incomeExcel/incomeExcelView'], resolve)
                 },
                 {
                     meta: { name:  '收入附件收集', keepAlive: false },
-                    path: '/d',
-                    name: 'd',
-                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/incomeExcel/incomeExcelTemplate'], resolve)
+                    path: '/incomeExcelAppendix',
+                    name: 'incomeExcelAppendix',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/incomeExcel/incomeExcelAppendix'], resolve)
                 },
             ]
         },
@@ -2037,6 +2037,15 @@ const routes = [{
             name: 'incomeExcelInfo',
             component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/incomeExcel/incomeExcelInfo'], resolve)
         },
+        {
+            meta: {
+                name: '下发模板详情',
+                keepAlive: false
+            },
+            path: '/incomeExcelViewInfo',
+            name: 'incomeExcelViewInfo',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/incomeExcel/incomeExcelViewInfo'], resolve)
+        },
     ]
 },
 {