Explorar o código

Merge remote-tracking branch 'origin/test'

mqd %!s(int64=3) %!d(string=hai) anos
pai
achega
b7d71ba85f
Modificáronse 60 ficheiros con 15330 adicións e 3096 borrados
  1. 9 1
      public/static/views/ecClubWork.html
  2. 5 4
      public/static/views/monthExcel.html
  3. 17 9
      public/static/views/publiAccount.html
  4. 5 5
      public/static/views/quarterExcel.html
  5. 4 4
      public/static/views/yearExcel.html
  6. 2 2
      src/components/p-header.vue
  7. 7 0
      src/components/upload.vue
  8. 16 5
      src/pages/main/achievements/achievementsIndex.vue
  9. 13 2
      src/pages/main/achievements/achievementsMuban.vue
  10. 319 0
      src/pages/main/achievements/issueList.vue
  11. 275 0
      src/pages/main/achievements/noRecall.vue
  12. 15 13
      src/pages/main/achievements/recall.vue
  13. 2 1
      src/pages/main/achievements/recallBumen.vue
  14. 1 1
      src/pages/main/achievements/recallMuban.vue
  15. 5 3
      src/pages/main/advReleaseAppro/index.vue
  16. 3 3
      src/pages/main/advReleaseAppro/outdoors.vue
  17. 689 0
      src/pages/main/advertising/acceptance.vue
  18. 704 0
      src/pages/main/advertising/acceptanceSituation.vue
  19. 1284 667
      src/pages/main/advertising/businessHall.vue
  20. 541 392
      src/pages/main/advertising/contractCap.vue
  21. 6 6
      src/pages/main/advertising/index.vue
  22. 232 70
      src/pages/main/advertising/materialApplication.vue
  23. 959 0
      src/pages/main/advertising/materialApplicationDetail.vue
  24. 1354 428
      src/pages/main/advertising/materialApplicationExa.vue
  25. 1598 703
      src/pages/main/advertising/materialApplicationadd.vue
  26. 988 575
      src/pages/main/advertising/materiel.vue
  27. 587 0
      src/pages/main/advertising/subtaskList.vue
  28. 159 75
      src/pages/main/advertising/supplier.vue
  29. 14 7
      src/pages/main/budget/budgetIndex.vue
  30. 16 3
      src/pages/main/budget/budgetList.vue
  31. 319 0
      src/pages/main/budget/issueList.vue
  32. 274 0
      src/pages/main/budget/noRecall.vue
  33. 35 33
      src/pages/main/budget/recall.vue
  34. 75 3
      src/pages/main/cooOperation/index.vue
  35. 6 2
      src/pages/main/demandCollection/index.vue
  36. 77 4
      src/pages/main/demandDevelop/index.vue
  37. 75 3
      src/pages/main/development/index.vue
  38. 19 13
      src/pages/main/ecClubWork/index.vue
  39. 76 4
      src/pages/main/introduce/index.vue
  40. 254 0
      src/pages/main/knowledgetop/addKnowledge.vue
  41. 503 0
      src/pages/main/knowledgetop/catalog.vue
  42. 724 0
      src/pages/main/knowledgetop/copyIndex.vue
  43. 2 0
      src/pages/main/knowledgetop/data.js
  44. 173 0
      src/pages/main/knowledgetop/index.vue
  45. 566 0
      src/pages/main/knowledgetop/knowledgeExamine.vue
  46. 987 0
      src/pages/main/knowledgetop/knowledgeManagement.vue
  47. 374 0
      src/pages/main/knowledgetop/knowledgeType.vue
  48. 366 0
      src/pages/main/knowledgetop/mcIndex.vue
  49. 24 3
      src/pages/main/leader/processInitiation.vue
  50. 9 0
      src/pages/main/memberFamily/empInfoFilling.vue
  51. 21 7
      src/pages/main/memberFamily/haveInHand.vue
  52. 84 6
      src/pages/main/memberFamily/index.vue
  53. 4 4
      src/pages/main/memberFamily/speedOfProgress.vue
  54. 76 2
      src/pages/main/officialAccount/officialAccountadd.vue
  55. 93 1
      src/pages/main/organizaStructure/staffManage.vue
  56. 77 3
      src/pages/main/productOnSale/index.vue
  57. 34 14
      src/pages/main/terminal/advcheck.vue
  58. 31 6
      src/pages/main/terminal/components/advert.vue
  59. 142 8
      src/router/index.js
  60. 1 1
      vue.config.js

+ 9 - 1
public/static/views/ecClubWork.html

@@ -231,7 +231,15 @@
                     util.ajaxJson("正在加载中", ctx + urlsave, {
                         data: data
                     }, function (data) {
-                        getData()
+                        if(data.result == 0){
+                            getData()
+                        }else if(data.result == 2){
+                            window.top.$vm.$message({
+                            message: data.desc,
+                            type: 'error'
+                            })
+                        }
+                        
                     });
                 })
                 // 导出

+ 5 - 4
public/static/views/monthExcel.html

@@ -165,7 +165,7 @@
                 luckysheet.create({
                     container: 'luckysheet',
                     data: data,
-                    showtoolbar: lockFlag == '1' ? false : true,
+                    showtoolbar: (lockFlag == '1' || lockFlag == '3' ) ? false : true,
                     showsheetbar: false, // 底部sheet显示/隐藏
                     showstatisticBar: false, // 底部计数
                     myFolderUrl: false,
@@ -220,7 +220,7 @@
 							}
 						},
                         cellMousedown: function (a, b, c) {
-                            if (lockFlag == '1') {
+                            if (lockFlag == '1' || lockFlag == '3' ) {
                                 // window.top.$vm.$message({
                                 //     message: '只能查看',
                                 //     type: 'info'
@@ -270,7 +270,8 @@
             } catch (err) {
                 console.log(err)
             }
-            if (lockFlag == '1') {
+
+            if (lockFlag == '1' || lockFlag == '3' ) {
                 $('#saves').hide()
                 $('#save').hide()
                 $('#updates').hide()
@@ -366,4 +367,4 @@
     </script>
 </body>
 
-</html>
+</html>

+ 17 - 9
public/static/views/publiAccount.html

@@ -98,7 +98,6 @@
 				i = Menus.length;
 			}
 		}
-		console.log(lockFlag)
         var id = '' //  模板id 查看/修改load时候用
         var powerFlag = '0'; // 权限控制 0 开启 1关闭
         var excelId = '';
@@ -122,7 +121,6 @@
                 }
 				var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
 				var r = window.top.location.href.split('?')[1];
-				console.log(r == 'type=2')
 				var url = '/market/cadvLedger/load';
 				if(lockFlag == 'updata' && r == 'type=2'){
 					url = '/market/cadvLedger/loadProv';
@@ -148,7 +146,7 @@
 							// res.body[0].calcChain = [];
 							initExcel(res.body)
 						}else{
-							getData()
+							//getData()
 						}
                     }
                 });
@@ -241,7 +239,7 @@
 								// 	})
 								// 	return false
 								// }
-								
+
 						        // if (luckysheet.getSheet().readOnly != '') {
 						        //     if (luckysheet.getSheet().data[r][luckysheet.getSheet().data[r].length - 1] != null && luckysheet.getSheet().data[r][luckysheet.getSheet().data[r].length - 1].v !== userId) {
 						        //         window.top.$vm.$message({
@@ -265,20 +263,30 @@
                 } catch (err) {
                     console.log(err)
                 }
+
                 if (lockFlag == 'see') { // 查看预算跳转过来
-                    // $('#saves').hide()
-                  
                     $('#monthSelect').hide()
                 }else if (lockFlag == 'add') { // 查看预算跳转过来
-                  
 					$('#monthSelect').hide()
                 }
+                // let r = window.top.location.href.split('?')[1];
+                // if(r == 'type=2'){
+                //     if(powerFlag == 1){
+                //         $('#saves').hide();
+                //         $('#imports').hide();
+                //     }
+                //     $('#monthSelect').hide();
+                // }
+                // if(r == 'type=3'){
+                //     $('#imports').hide();
+                //     $('#monthSelect').hide();
+                //     $('#saves').hide();
+                // }
                 initHandel()
             }
             // 绑定按钮事件
             function initHandel() {
                 $("#fullScreen").on("click", function () {
-					console.log(document.getElementById('container'))
                     fullScreen();
                 })
                 //退出全屏
@@ -364,4 +372,4 @@
     </script>
 </body>
 
-</html>
+</html>

+ 5 - 5
public/static/views/quarterExcel.html

@@ -84,7 +84,7 @@
                 <input type="text" class="layui-input" id="year" placeholder="请选择年份">
             </div>
         </div>
-        <div class="layui-inline" id="quarter">
+        <div class="layui-inline">
             <label class="layui-form-label">请选择季度</label>
             <div class="layui-input-inline">
                 <form class="layui-form mc-work-form">
@@ -185,7 +185,7 @@
                 luckysheet.create({
                     container: 'luckysheet',
                     data: data,
-                    showtoolbar: lockFlag == '1' ? false : true,
+                    showtoolbar: (lockFlag == '1' || lockFlag == '3' ) ? false : true,
                     showsheetbar: false, // 底部sheet显示/隐藏
                     showstatisticBar: false, // 底部计数
                     myFolderUrl: false,
@@ -240,7 +240,7 @@
 							}
 						},
                         cellMousedown: function (a, b, c) {
-                            if (lockFlag == '1') {
+                            if (lockFlag == '1' || lockFlag == '3' ) {
                                 // window.top.$vm.$message({
                                 //     message: '只能查看',
                                 //     type: 'info'
@@ -290,7 +290,7 @@
             } catch (err) {
                 console.log(err)
             }
-            if (lockFlag == '1') {
+            if (lockFlag == '1' || lockFlag == '3' ) {
                 $('#saves').hide()
                 $('#save').hide()
                 $('#updates').hide()
@@ -386,4 +386,4 @@
     </script>
 </body>
 
-</html>
+</html>

+ 4 - 4
public/static/views/yearExcel.html

@@ -158,7 +158,7 @@
                     showstatisticBar: false, // 底部计数
                     showinfobar: true, // 是否显示顶部信息栏
                     allowUpdate: false,
-                    showtoolbar: lockFlag == '1' ? false : true, //是否显示工具栏
+                    showtoolbar: (lockFlag == '1' || lockFlag == '3' ) ? false : true, //是否显示工具栏
                     allowEdit: flag, // 是否允许前台编辑
                     forceCalculation: true, // 强制刷新公式
                     column: 12,
@@ -205,7 +205,7 @@
 							}
 						},
                         cellMousedown: function (a, b, c) {
-                            if (lockFlag == '1') {
+                            if (lockFlag == '1' || lockFlag == '3' ) {
                                 // window.top.$vm.$message({
                                 //     message: '只能查看',
                                 //     type: 'info'
@@ -255,7 +255,7 @@
             } catch (err) {
                 console.log(err)
             }
-            if (lockFlag == '1') {
+            if (lockFlag == '1' || lockFlag == '3' ) {
                 $('#saves').hide()
                 $('#save').hide()
                 $('#updates').hide()
@@ -347,4 +347,4 @@
     </script>
 </body>
 
-</html>
+</html>

+ 2 - 2
src/components/p-header.vue

@@ -22,7 +22,7 @@
       </div>
       <div class="bars-item" @click="handleCall">
         <i class="el-icon-chat-dot-round"></i>
-        智能应答
+        知识库
       </div>
       <div class="bars-item" @click="handleLogout">
         <i class="el-icon-guide"></i>
@@ -73,7 +73,7 @@ export default {
   },
   methods: {
     handleCall() {
-      this.$switchTab(this, { rountPath: "/chatInit", name: "智能应答" },'chatInit');
+      this.$switchTab(this, { rountPath: "/knowledgetop", name: "知识库" },'knowledgetop');
     },
     change(index, item) {
       this.currentIndex = index;

+ 7 - 0
src/components/upload.vue

@@ -71,6 +71,13 @@
                         return false
                     }
                 }
+                if(this.fileInfo.typexz == 'xlsx'){
+                    const isImg = file.name.split(".")[1] == 'xlsx';
+                    if (!isImg) {
+                        this.$message.error('请上传xlsx格式文件!');
+                        return false
+                    }
+                }
                 this.loading = true;
                 let query = new FormData();
                 query.append("file", file);

+ 16 - 5
src/pages/main/achievements/achievementsIndex.vue

@@ -35,16 +35,27 @@
 						path: "/recallGs",
 						name: "recallGs"
 					},
-					{
-						label: "绩效回复列表",
-						path: "/kpiRecall",
-						name: "kpiRecall"
-					},
+					// {
+					// 	label: "绩效回复列表",
+					// 	path: "/kpiRecall",
+					// 	name: "kpiRecall"
+					// },
 					{
 						label: "绩效模板管理",
 						path: "/kpiMuban",
 						name: "kpiMuban"
 					},
+                    {
+                        label: "下发管理",
+                        path: "/kpiIssueList",
+                        name: "kpiIssueList"
+                    },
+                    {
+                        label: "科室绩效",
+                        path: "/recallkpi",
+                        name: "recallkpi"
+                    },
+
 				],
 			};
 		},

+ 13 - 2
src/pages/main/achievements/achievementsMuban.vue

@@ -72,7 +72,7 @@
 				</el-form-item>
 				<el-form-item label="反馈时间" prop="requiredTime">
 					<el-date-picker style="width: 100%" v-model="formData.requiredTime" type="datetime"
-						placeholder="选择反馈时间" value-format="YYYY-MM-DD">
+						placeholder="选择反馈时间" value-format="yyyy-MM-01 HH:mm:ss">
 					</el-date-picker>
 				</el-form-item>
 				<el-form-item label="接收科室" prop="sendNoArr">
@@ -83,6 +83,15 @@
 						</el-option>
 					</el-select>
 				</el-form-item>
+                <el-form-item label="需要回复" prop="needReply">
+                    <el-select
+                        style="width: 100% !important"
+                        v-model="formData.needReply"
+                        placeholder="请选择是否需要回复">
+                        <el-option label="是" value="是"> </el-option>
+                        <el-option label="否" value="否"> </el-option>
+                    </el-select>
+                </el-form-item>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
 				<el-button @click="resetUser('ruleForm')">取 消</el-button>
@@ -112,6 +121,7 @@
 					sendNoArr: [],
 					sendMonth: "",
 					sendYear: "",
+                    needReply: "是",
 				},
 				rules: {
 					woTitle: [{
@@ -190,12 +200,13 @@
 					let data = {
 						tabName: this.tableCell.tabName,
 						tabCode: this.tableCell.tabCode,
-						requiredTime: this.formData.requiredTime,
+						requireTime: this.formData.requiredTime,
 						receive: sendNoArr,
 						kpiMonth: this.formData.sendMonth,
 						tempType: this.tempType,
 						subType: this.tableCell.subType || "a",
 						kpiYear: this.formData.sendYear,
+                        needReply: this.formData.needReply,
 					};
 					let results = await this.$http({
 						url: "/market/kpidepts/checkExists",

+ 319 - 0
src/pages/main/achievements/issueList.vue

@@ -0,0 +1,319 @@
+<template>
+    <!-- <div style="height: 95%"> -->
+    <div class="container" style="margin: 15px 0 0 0">
+        <fullscreen
+            :fullscreen.sync="fullscreen"
+            class="container-box"
+            style="margin: 0 !important; padding: 0 !important"
+        >
+            <div class="titbox">
+                <h2>下发管理</h2>
+                <div>
+                    <i class="el-icon-refresh" @click="iconCli(1)"></i>
+                    <i class="el-icon-full-screen" @click="iconCli(2)"></i>
+                </div>
+            </div>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+            </div>
+
+            <div class="tabbox">
+                <el-table
+                    height="calc(100% - 40px)"
+                    v-loading="loading"
+                    class="com-table"
+                    ref="multipleTable"
+                    :data="tableData"
+                    tooltip-effect="dark"
+                    size="small"
+                    border
+                    style="width: 100%"
+                >
+                    <el-table-column align="center" prop="kpiTempName" show-overflow-tooltip
+                                     label="模板名称"></el-table-column>
+                    <el-table-column align="center" prop="woTitle" show-overflow-tooltip label="标题"></el-table-column>
+                    <el-table-column align="center" prop="sendName" show-overflow-tooltip label="派发人"></el-table-column>
+                    <el-table-column align="center" prop="requiredTime" show-overflow-tooltip
+                                     label="反馈时间"></el-table-column>
+                    <el-table-column align="center" prop="needReply" show-overflow-tooltip
+                                     label="是否需要回复"></el-table-column>
+                    <el-table-column align="center" prop="hotline" width="200" label="操作">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" plain
+                                       @click="detailes(scope.row)">查看
+                            </el-button>
+                            <el-button size="mini" type="danger" plain
+                                       v-show="scope.row.sts != '3' && scope.row.isNew == '1' && scope.row.needReply == '是'"
+                                       @click="discontinue(scope.row)">中止
+                            </el-button>
+                            <el-button size="mini" type="primary" plain
+                                       v-show="scope.row.isNew == '1' && scope.row.needReply == '是' && scope.row.sts != '3'"
+                                       @click="updatesDialog(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>
+            <myMessage
+                :messTit="messTit"
+                @closeMessage="closeMessage"
+                :centerDialogVisible="centerDialogVisible"
+                v-if="centerDialogVisible"
+            ></myMessage>
+        </fullscreen>
+        <el-dialog
+            title="修改"
+            :visible.sync="dialogStatus"
+            width="50%"
+            :close-on-press-escape="false"
+            :show-close="false"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+        >
+            <el-form ref="issueForm" :rules="rules" :model="infolist" label-width="80px">
+                <el-form-item label="反馈时间" prop="requiredTime">
+                    <el-date-picker
+                        style="width: 100%"
+                        v-model="infolist.requiredTime"
+                        type="datetime"
+                        placeholder="选择反馈时间"
+                        value-format="yyyy-MM-01 HH:mm:ss">
+                    </el-date-picker>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="resetForm('issueForm')">取 消</el-button>
+                <el-button @click="updates('issueForm')">确 定</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import mySearch from "../../../components/search";
+import myMessage from "../../../components/myMessage.vue";
+
+export default {
+    components: {
+        mySearch,
+        myMessage,
+    },
+    data() {
+        return {
+            infolist:{
+                woNo: "",
+                requiredTime: "",
+            },
+            centerDialogVisible: false,
+            messTit: "",
+            dialogStatus: false,
+            rules: {
+                requiredTime: [
+                    {
+                        required: true,
+                        message: "请选择反馈时间",
+                        trigger: 'blur',
+                    },
+                ],
+            },
+            headers: {
+                agileauthtoken: sessionStorage.agileauthtoken.replace(/"/g, ""),
+            },
+            fullscreen: false,
+            total: 0,
+            pageSize: 1,
+            tableData: [],
+            searchList: [
+                {
+                    type: "input",
+                    tit: "模板名称",
+                    value: "",
+                    width: "100%",
+                    options: [],
+                },
+            ],
+            params: {
+                preTempName: "",
+            },
+            loading: false,
+        };
+    },
+    methods: {
+        detailes(val) {
+            if (val.needReply == '是') {
+                this.$router.push("/kpiRecall?status=see&id=" + val.woNo + "");
+            } else {
+                this.$router.push("/kpiNoRecall?status=see&id=" + val.woNo + "");
+            }
+        },
+        updates(formName) {
+            this.$refs[formName].validate((valid) => {
+                if (valid) {
+                    let data = this.infolist;
+                    this.$http({
+                        url: "/market/kpiWo/updates",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: data,
+                    }).then((res) => {
+                        if (res.data.result == 0) {
+                            this.$message({
+                                type: "success",
+                                message: "修改成功",
+                            });
+                        } else {
+                            this.$message({
+                                type: "error",
+                                message: res.data.desc,
+                            });
+                        }
+                        this.resetForm(formName);
+                        this.closeDialog();
+                        this.getList(this.params, this.pageSize);
+                    });
+                }
+            });
+        },
+        // 取消提交
+        resetForm(formName) {
+            //this.$refs[formName].resetFields();
+            this.woNo = "";
+            this.requiredTime = "";
+            this.closeDialog();
+        },
+        showDialog() {
+            this.dialogStatus = true;
+        },
+        closeDialog() {
+            this.dialogStatus = false;
+        },
+        updatesDialog(val) {
+            this.infolist.woNo = val.woNo;
+            this.infolist.requiredTime = val.requiredTime;
+            this.showDialog();
+        },
+        discontinue(val) {
+            this.centerDialogVisible = true;
+            this.messTit = "中止后将不能修改回复,是否确定中止?";
+            this.infolist.woNo = val.woNo;
+        },
+        closeMessage(v) {
+            this.centerDialogVisible = false;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/kpiWo/discontinue",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {woNo: this.infolist.woNo},
+                }).then((res) => {
+                    if (res.data.result == "0") {
+                        this.$message({message: "中止成功", type: "success"});
+                        this.getList(this.params, this.pageSize);
+                    } else {
+                        this.$message({message: res.data.desc, type: 'error'});
+                    }
+                });
+            }
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? (this.params.preTempName = v[0]) : "";
+            this.getList(this.params, this.pageSize);
+        },
+        //获取列表
+        getList(v, n) {
+            this.loading = true;
+            this.pageSize = n;
+            this.$http({
+                url: "/market/kpiWo/querySMkKpiWoPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}',
+                },
+                data: v,
+            }).then((res) => {
+                this.loading = false;
+                this.tableData = res.data.data;
+                this.total = res.data.totalRecord;
+            });
+        },
+        //功能栏
+        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);
+        },
+
+    },
+    mounted() {
+        this.getList(this.params, this.pageSize);
+    },
+    watch: {
+        $route() {
+            this.getList(this.params, this.pageSize);
+        },
+    },
+};
+</script>
+<style scoped>
+.el-upload-list {
+    float: right;
+}
+
+.el-input__suffix {
+    cursor: pointer;
+}
+
+.container .el-upload {
+    width: auto !important;
+}
+</style>
+<style scoped lang="scss">
+.btn-default {
+    display: inline;
+    margin-left: 10px;
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+</style>

+ 275 - 0
src/pages/main/achievements/noRecall.vue

@@ -0,0 +1,275 @@
+<template>
+  <div class="container">
+    <fullscreen :fullscreen.sync="fullscreen" class="container-box" style="margin: 0;padding: 0;">
+      <div class="titbox">
+        <h2>绩效回复</h2>
+        <div>
+          <i class="el-icon-refresh" @click="iconCli(1)"></i>
+          <i class="el-icon-full-screen" @click="iconCli(2)"></i>
+          <!--                    <i class="el-icon-folder-opened"></i>-->
+          <!--                    <i class="el-icon-view"></i>-->
+          <!--                    <i class="el-icon-more"></i>-->
+        </div>
+      </div>
+      <div class="search">
+<!--        <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>-->
+      </div>
+
+      <div class="tabbox">
+        <el-table
+          height="calc(100% - 40px)"
+          v-loading="loading"
+          class="com-table"
+          ref="multipleTable"
+          :data="tableData"
+          tooltip-effect="dark"
+          size="small"
+          border
+          style="width: 100%"
+        >
+          <el-table-column
+            align="center"
+            prop="tabName"
+            label="绩效模板名称"
+            show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="kpiTitle"
+            show-overflow-tooltip
+            label="绩效标题"
+          >
+          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="sendTime"-->
+<!--            show-overflow-tooltip-->
+<!--            label="派发时间"-->
+<!--          >-->
+<!--          </el-table-column>-->
+          <el-table-column
+            align="center"
+            prop="sendName"
+            show-overflow-tooltip
+            label="派发人"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="receiveName"
+            show-overflow-tooltip
+            label="接收人"
+          >
+          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="requiredTime"-->
+<!--            show-overflow-tooltip-->
+<!--            label="要求回复时间"-->
+<!--          >-->
+<!--          </el-table-column>-->
+          <el-table-column
+            align="center"
+            show-overflow-tooltip
+            label="任务状态"
+          >
+              已发送
+          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="backTime"-->
+<!--            show-overflow-tooltip-->
+<!--            label="回复时间"-->
+<!--          >-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="overTimeDesc"-->
+<!--            show-overflow-tooltip-->
+<!--            label="是否超时回复"-->
+<!--          >-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            width="120"-->
+<!--            prop="sts"-->
+<!--            label="开启编辑"-->
+<!--          >-->
+<!--            <template slot-scope="scope">-->
+<!--              <el-switch-->
+<!--                @click.native="chenck(scope.row.taskId, scope.row.sts)"-->
+<!--                v-model="scope.row.sts"-->
+<!--                active-text="开"-->
+<!--                inactive-text="关"-->
+<!--                active-value="0"-->
+<!--                inactive-value="1"-->
+<!--              >-->
+<!--              </el-switch>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
+        </el-table>
+        <el-pagination
+          class="pageBox"
+          @current-change="currchange"
+          layout="prev, pager, next"
+          background
+          :total="total"
+        >
+        </el-pagination>
+      </div>
+    </fullscreen>
+  </div>
+</template>
+<script>
+// import mySearch from "../../../components/search";
+
+export default {
+  components: {
+    // mySearch,
+  },
+  data() {
+    return {
+      loginNo: JSON.parse(sessionStorage.userInfo).loginNo,
+      fullscreen: false,
+      total: 0,
+      pageSize: 1,
+      tableData: [],
+      // searchList: [
+      //   {
+      //     type: "input",
+      //     tit: "预算名称",
+      //     value: "",
+      //     width: "100%",
+      //     options: [],
+      //   },
+      //   {
+      //     type: "sel",
+      //     tit: "回复状态",
+      //     value: "",
+      //     width: "100%",
+      //     options: [
+      //       { dataCode: "0", dataName: "未回复" },
+      //       { dataCode: "1", dataName: "已回复" },
+      //     ],
+      //   },
+      // ],
+      params: {
+        taskName: "",
+        sts: "",
+      },
+      loading: false,
+      // fileList: [],
+      // fileName: "",
+    };
+  },
+  methods: {
+    // chenck(id, sts) {
+    //   this.$http({
+    //     url: "/market/preTask/openOrClose",
+    //     method: "post",
+    //     headers: {
+    //       "Content-Type": "application/json",
+    //     },
+    //     data: { taskId: id, sts: sts },
+    //   }).then((res) => {
+    //     if (res.data.result == 0) {
+    //       this.$message({
+    //         message: "操作成功",
+    //         type: "success",
+    //       });
+    //       this.getList(this.params, this.pageSize);
+    //     }
+    //   });
+    // },
+    // //搜索数据
+    // searchInfo(v) {
+    //   this.params = {};
+    //   v[0] ? (this.params.taskName = v[0]) : "";
+    //   v[1] ? (this.params.sts = v[1]) : "";
+    //   this.getList(this.params, this.pageSize);
+    // },
+    //获取列表
+    getList(v, n) {
+      this.loading = true;
+      this.pageSize = n;
+      this.$http({
+        // url: "/market/kpiWo/querySMkKpiWoPage",
+        url: "/market/kpidept/queryPage",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+          page: '{"pageNo":"' + n + '","pageSize":"10"}',
+        },
+        data: v,
+      }).then((res) => {
+        this.loading = false;
+        this.tableData = res.data.data;
+        this.total = res.data.totalRecord;
+      });
+    },
+    //功能栏
+    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);
+    },
+  },
+  mounted() {
+    if (JSON.stringify(this.$route.query) != "{}") {
+      this.params.woNo = this.$route.query.id;
+    }
+    this.getList(this.params, this.pageSize);
+  },
+  watch: {
+    $route() {
+      this.getList(this.params, this.pageSize);
+    },
+  },
+};
+</script>
+<style scoped>
+.el-upload-list {
+  float: right;
+}
+.el-input__suffix {
+  cursor: pointer;
+}
+.container .el-upload {
+  width: auto !important;
+}
+</style>
+<style scoped lang="scss">
+.btn-default {
+  display: inline;
+  margin-left: 10px;
+}
+.titbox {
+  div {
+    float: right;
+
+    i {
+      font-size: 22px;
+      margin-left: 20px;
+      cursor: pointer;
+    }
+  }
+}
+
+.tabbox {
+  margin-top: 15px;
+}
+
+.pageBox {
+  text-align: right;
+  margin-top: 10px;
+}
+</style>

+ 15 - 13
src/pages/main/achievements/recall.vue

@@ -6,7 +6,7 @@
       style="margin: 0 !important; padding: 0 !important"
     >
       <div class="titbox">
-        <h2>部门绩效回复</h2>
+        <h2>绩效回复</h2>
         <div>
           <i class="el-icon-refresh" @click="iconCli(1)"></i>
           <i class="el-icon-full-screen" @click="iconCli(2)"></i>
@@ -82,7 +82,7 @@
           </el-table-column>
           <el-table-column
             align="center"
-            prop="backTime"
+            prop="opTime"
             show-overflow-tooltip
             label="回复时间"
           >
@@ -142,13 +142,13 @@ export default {
       pageSize: 1,
       tableData: [],
       searchList: [
-        {
-          type: "input",
-          tit: "预算名称",
-          value: "",
-          width: "100%",
-          options: [],
-        },
+        // {
+        //   type: "input",
+        //   tit: "预算名称",
+        //   value: "",
+        //   width: "100%",
+        //   options: [],
+        // },
         {
           type: "sel",
           tit: "回复状态",
@@ -161,7 +161,7 @@ export default {
         },
       ],
       params: {
-        tabName: "",
+        woNo: "",
         sts: "",
       },
       loading: false,
@@ -190,13 +190,15 @@ export default {
     },
     //搜索数据
     searchInfo(v) {
-      this.params = {};
-      v[0] ? (this.params.tabName = v[0]) : "";
-      v[1] ? (this.params.sts = v[1]) : "";
+      // this.params = {};
+      // v[0] ? (this.params.tabName = v[0]) : "";
+      // v[1] ? (this.params.sts = v[1]) : "";
+        v[0] ? (this.params.sts = v[0]) : "";
       this.getList(this.params, this.pageSize);
     },
     //获取列表
     getList(v, n) {
+
       this.loading = true;
       this.pageSize = n;
       this.$http({

+ 2 - 1
src/pages/main/achievements/recallBumen.vue

@@ -139,7 +139,7 @@ export default {
           tabName: "",
         },
         task: {
-          sts: 0,
+          sts: 1,
         },
       },
       hangIndex: "",
@@ -331,6 +331,7 @@ export default {
         },
       }).then((res) => {
         if (res.data.result == 0) {
+            console.log(res.data.body);
           this.dataBody = res.data.body;
         } else {
           this.$message({

+ 1 - 1
src/pages/main/achievements/recallMuban.vue

@@ -105,7 +105,7 @@
 						tabName: "",
 					},
 					task: {
-						sts: 0,
+						sts: 1,
 					},
 				},
 				contextMenuData: {

+ 5 - 3
src/pages/main/advReleaseAppro/index.vue

@@ -144,7 +144,7 @@
                     <paper v-if="woTypeCode == 3" :titname='titname' :vision='vision' @backsum="backsum"
                         :infodatas="infodatas" :status="status" :allSumnum="allSum"></paper>
                     <outdoors v-if="woTypeCode == 4" :titname='titname' :vision='vision' @backsum="backsum"
-                        :taxRate="suppinfo.taxRate" :infodatas="infodatas" :status="status" :allSumnum="allSum"
+                        :taxRate="infolist.taxRate" :infodatas="infodatas" :status="status" :allSumnum="allSum"
                         :otherinfo="otherinfo"></outdoors>
 
                     <div class="info-line" style="clear: both;">
@@ -820,7 +820,8 @@
                             });
                             return
                         }
-                        if (this.suppinfo.surplusSum < this.allSum) {
+                        // if (this.suppinfo.surplusSum < this.allSum) {
+                        if (this.suppinfo.surplusSum < this.contractAdvCost) {
                             this.$message({
                                 message: '供应商剩余预算不足!',
                                 type: 'error'
@@ -836,7 +837,8 @@
                             },
                             data: {},
                         }).then((res) => {
-                            if (res.data.data[0].surplusSum < this.allSum) {
+                            // if (res.data.data[0].surplusSum < this.allSum) {
+                            if (res.data.data[0].surplusSum < this.contractAdvCost) {
                                 this.$message({
                                     message: '地市预算不足!',
                                     type: 'error'

+ 3 - 3
src/pages/main/advReleaseAppro/outdoors.vue

@@ -134,11 +134,11 @@
 				this.sumadd();
 			},
 			sumzkj(v) {
-                v.row.discountRate=v.row.discountRate.replace(/[^\d.]/g,'');
+                v.row.discountRate=(v.row.discountRate.toString()).replace(/[^\d.]/g,'');
 				let info = this.infodata[v.$index];
 				this.infodata[v.$index].discountPrice = info.pubPrice * info.discountRate / 100;
 				this.infodata[v.$index].discountPrice = Math.floor(this.infodata[v.$index].discountPrice * 100) / 100;
-				this.sumadd();
+				this.sumadd();				
 			},
 			sumadd(){
 				this.advPriceSum = 0;
@@ -153,7 +153,7 @@
 						type: 'error'
 					});
 					return
-				}
+				}				
 				this.contractAdvCost = (this.advDiscountSum - this.otherDiscount) / (this.taxRate.split("%")[0]*1 + 100) * 100;
 				this.contractAdvTax = this.contractAdvCost*(this.taxRate.split("%")[0]*1)/100;
 				this.contractAdvCost = Math.round(this.contractAdvCost * 100) / 100;

+ 689 - 0
src/pages/main/advertising/acceptance.vue

@@ -0,0 +1,689 @@
+<template>
+    <div>
+        <div class="container">
+            <el-form
+                :model="infolist"
+                ref="infolist"
+                :rules="rules"
+                class="container-box"
+                label-width="80px"
+            >
+                <div>
+                    <div class="section2">
+                        <a
+                            href="#"
+                            style="margin: 20px 0;margin-right: 20px;"
+                            @click="dialogApplication(1)"
+                            >验收清单</a
+                        >
+                        <a
+                            href="#"
+                            style="margin: 20px 0;margin-right: 20px;"
+                            @click="dialogApplication(2)"
+                            >发货回执</a
+                        >
+                    </div>
+                    <div>
+                        <el-form-item class="info-line online">
+                            <span>验收说明</span>
+                            <el-input
+                                v-model="examDescription"
+                                type="textarea"
+                                :rows="4"
+                            ></el-input>
+                        </el-form-item>
+                    </div>
+
+                    <div>
+                        <el-form-item class="info-line online">
+                            <span>验收证明</span>
+                            <myUpload
+                                @uploadBack="uploadBack"
+                                :fileInfo="fileInfo"
+                                :fileList="fileInfo.fileList"
+                            >
+                            </myUpload>
+                        </el-form-item>
+                    </div>
+                </div>
+
+                <div class="t-footer t-footer1">
+                    <el-button
+                        type="primary"
+                        style="width: 120px"
+                        @click="dialogCli(1)"
+                        >完 成</el-button
+                    >
+                    <el-button @click="dialogCli(2)" style="width: 120px"
+                        >取 消</el-button
+                    >
+                </div>
+            </el-form>
+        </div>
+        <el-dialog
+            title="验收清单"
+            :visible.sync="ysListDialogStatus"
+            width="50%"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+        >
+            <el-form
+                :model="infolist"
+                ref="infolist"
+                :rules="rules"
+                style="height: 50vh;overflow-y: scroll; width:100%"
+                :fullscreen="true"
+            >
+                <div class="info-line">
+                    <el-table
+                        :data="tableData"
+                        style="width: 100%;"
+                        border
+                        size="large"
+                        
+                    >
+                        <el-table-column prop="id" label="物料ID">
+                        </el-table-column>
+                        <el-table-column prop="regionName" label="地市公司">
+                        </el-table-column>
+                        <el-table-column prop="countyName" label="区县名称">
+                        </el-table-column>
+                        <el-table-column prop="channelCode" label="渠道编码">
+                        </el-table-column>
+                        <el-table-column prop="channelName" label="渠道名称">
+                        </el-table-column>
+                        <el-table-column prop="sceneName" label="场景">
+                        </el-table-column>
+                        <el-table-column prop="metirialType" label="物料类别">
+                        </el-table-column>
+                        <el-table-column prop="metirialCode" label="物料编码">
+                        </el-table-column>
+                        <el-table-column prop="metirialName" label="物料名称">
+                        </el-table-column>
+                        <el-table-column prop="unit" label="物料单位">
+                        </el-table-column>
+                        <el-table-column prop="size" label="规格尺寸">
+                        </el-table-column>
+                        <el-table-column prop="length" label="长">
+                        </el-table-column>
+                        <el-table-column prop="width" label="宽">
+                        </el-table-column>
+                        <el-table-column prop="direction" label="横竖">
+                        </el-table-column>
+                        <el-table-column prop="coefficient" label="系数">
+                        </el-table-column>
+                        <el-table-column prop="price" label="单价">
+                        </el-table-column>
+                        <el-table-column
+                            prop="quantity"
+                            label="数量"
+                            width="100"
+                        >
+                        </el-table-column>
+                        <el-table-column prop="priority" label="优先级">
+                        </el-table-column>
+                        <el-table-column label="结算金额" width="140px" prop="settlementAmount">
+                            <template slot-scope="scope">
+                            <div>
+                                {{
+                                    scope.row.quantity *
+                                        scope.row.price *
+                                        scope.row.coefficient
+                                }}
+                            </div>
+                        </template>
+                        </el-table-column>
+                    </el-table>
+                </div>
+            </el-form>
+
+            <div class="t-footer">
+                <el-button type="primary" @click="downloadExcel">下载</el-button
+                >
+                
+                <el-button @click="ysListDialogStatus = false">取 消</el-button>
+            </div>
+        </el-dialog>
+        <el-dialog
+            title="发货回执"
+            :visible.sync="feedbackListDialogStatus"
+            width="30%"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+        >
+            <el-form
+                :model="infolist"
+                ref="infolist"
+                :rules="rules"
+                style="height: 20vh;"
+            >
+                <div class="info-line">
+                    <!-- <a :href="feedbackList">{{ feedbackList }}</a> -->
+                    {{ feedbackList }}
+                </div>
+            </el-form>
+
+            <div class="t-footer">
+                <!-- <el-button type="primary" @click="dialogSubmit()"
+                    >确 定</el-button
+                > -->
+                <el-button @click="feedbackListDialogStatus = false"
+                    >取 消</el-button
+                >
+            </div>
+        </el-dialog>
+        <myMessage
+            :messTit="messTit"
+            @closeMessage="closeMessage(1)"
+            :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"
+        ></myMessage>
+    </div>
+</template>
+<script>
+import mySearch from "../../../components/search.vue";
+import myUpload from "../../../components/upload.vue";
+import deptTreeOnly from "../../../components/deptTreeOnly.vue";
+
+export default {
+    components: {
+        mySearch,
+        myUpload,
+        deptTreeOnly
+    },
+    data() {
+        const terminalTypeName = (rule, value, callback) => {
+            if (!this.infolist.tit) {
+                callback(new Error("不能为空"));
+            } else {
+                callback();
+            }
+        };
+        return {
+            rules: {
+                terminalTypeName: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        validator: terminalTypeName
+                    }
+                ]
+            },
+            fullscreen: false,
+            tableData: [],
+            disableStatus: false,
+            infolist: {},
+            terminal: "758639528378826752",
+            userInfo: {},
+            params: {},
+            attList: [],
+            loadinged: false,
+            options: [],
+            materType: "",
+            scene: "",
+            fileInfo: {
+                // type: "img",
+                limit: 50,
+                url: "/market/cknowledgeatt/upload",
+                fileList: []
+            },
+            infomaterType: [],
+            // metirialName: "",
+            regionsts: false,
+            multipleSelection: [],
+            centerDialogVisible: false,
+            delid: "",
+            uploadstatus: false,
+            userListOpt: [],
+            ysListDialogStatus: false,
+            feedbackListDialogStatus: false,
+            examDescription: "",
+            examList: {},
+            feedbackList: ""
+        };
+    },
+    methods: {
+        dialogApplication(v) {
+            if (v === 1) {
+                //验收清单
+                this.ysListDialogStatus = true;
+                this.$http({
+                    url: "/market/advSubtask/getYsqd",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json"
+                    },
+                    data: { 
+                        woId: this.params.woId,
+                        cityWoId: this.params.cityWoId,
+                        countryWoId: this.params.countyWoId
+                        }
+                }).then(res => {
+                    this.tableData = res.data;
+                    // this.feedbackList = res.data.receipt;
+
+                });
+
+            } else if (v === 2) {
+                this.feedbackListDialogStatus = true;
+                this.$http({
+                    url: "/market/advSubtask/getReceipt",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json"
+                    },
+                    data: { id: this.params.cityWoId }
+                }).then(res => {
+                    this.feedbackList = res.data.receipt;
+                });
+            }
+        },
+        //添加
+        dialogCli(v) {
+            if (v === 1) {
+                let fileList = [];
+                this.attList.forEach(item => {
+                    fileList.push({
+                        id: item.fileCode,
+                        fileCode: item.fileCode,
+                        fileName: item.fileName
+                    });
+                });
+                // this.examList.id = "1";
+                // this.examList.woCityId = this.params.cityWoId;
+                // this.examList.id = this.params.countyWoId;
+                // this.examList.woId = this.params.woId;
+
+                this.examList.woId = this.params.woId,
+                this.examList.woCityId = this.params.cityWoId,
+                this.examList.id = this.params.countyWoId
+                this.examList.attList = JSON.stringify(fileList);
+                this.examList.remark = this.examDescription;
+                this.submitInfo(
+                    "/market/cadvBusiMetirialWo/acceptance",
+                    this.examList
+                );
+            } else if (v === 2) {
+                // this.fileInfo.fileList = [];
+                // this.infolist = {};
+                // this.attList = [];
+                // this.examDescription = "";
+                this.$router.push({ path: '/materialApplication'});
+                return;
+            }
+        },
+        submitInfo(u, v) {
+            let _this = this;
+            this.$refs.infolist.validate(valid => {
+                if (valid) {
+                    this.loadinged = true;
+                    this.$http({
+                        url: u,
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json"
+                        },
+                        data: v
+                    }).then(res => {
+                        this.loadinged = false;
+                        if (res.data.result === 2) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: "error"
+                            });
+                        } else if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: "error"
+                            });
+                        } else {
+                            _this.$message({
+                                message: "成功",
+                                type: "success"
+                            });
+
+                            // _this.getList();
+                            this.attList = [];
+                            this.fileInfo.fileList = [];
+                            this.examDescription = "";
+                            this.$router.push("/materialApplication");
+                        }
+                    });
+                }
+            });
+        },
+        downloadExcel(){
+            this.$http({
+                    url: "/market/cadvBusiMetirialWo/export",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json"
+                    },
+                    responseType: "blob",
+                    data: { id: this.params.woId }
+                }).then(res => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([res.data], {
+                            type: "application/vnd.ms-excel"
+                        });
+                        window.navigator.msSaveOrOpenBlob(
+                            blob,
+                            // this.wo.bizName + ".xlsx"
+                            "验收清单" + ".xlsx"
+                        );
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([res.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = "验收清单" + ".xlsx";
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+
+                        this.ysListDialogStatus = false
+                    }
+                });
+        },
+        closedia() {
+            this.infolist = {};
+
+            this.ysListDialogStatus = false;
+            this.feedbackListDialogStatus = false;
+        },
+
+        getUser() {
+            this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+        },
+        uploadBack(v) {
+            this.attList = v;
+        },
+
+        // getList() {
+        //     this.$http({
+        //         url: "/market/cadvBusiMetirialWo/getInitiateInitialization",
+        //         method: "post",
+        //         headers: {
+        //             "Content-Type": "application/json"
+        //         },
+        //         data: {}
+        //     }).then(res => {
+        //     });
+        // }
+    },
+    mounted() {
+        if (JSON.stringify(this.$route.query) != "{}") {
+            this.params.cityWoId = this.$route.query.cityWoId;
+            this.params.countyWoId = this.$route.query.countyWoId;
+            this.params.woId = this.$route.query.woId;
+        }
+        // this.getList(this.params);
+        this.getUser();
+    },
+    watch: {
+        $route() {
+            // this.getList(this.params);
+        }
+    },
+    created() {}
+};
+</script>
+<style scoped lang="scss">
+a {
+    text-decoration: none;
+    color: #169bd5;
+    cursor: pointer;
+}
+.img-box {
+    height: calc(100vh - 240px);
+    overflow-y: scroll;
+
+    .boximg {
+        display: flex;
+        flex-wrap: wrap;
+        margin-top: 20px;
+
+        div {
+            display: inline-block;
+            width: 18%;
+            margin-right: 2%;
+            margin-bottom: 20px;
+            overflow: hidden;
+            border: 1px solid #ddd;
+            border-radius: 3px;
+            background: #fff;
+            position: relative;
+            height: 100px;
+
+            img {
+                width: 100%;
+                position: absolute;
+                top: 0;
+                bottom: 0;
+                margin: auto;
+                // height: 100%;
+            }
+        }
+    }
+}
+
+.boximgc {
+    display: flex;
+    flex-wrap: wrap;
+    width: calc(100% - 80px) !important;
+    margin-left: 80px;
+
+    div {
+        display: inline-block;
+        width: 18% !important;
+        margin-right: 2%;
+        margin-bottom: 20px;
+        overflow: hidden;
+        border: 1px solid #ddd;
+        border-radius: 3px;
+        background: #fff;
+        position: relative;
+        height: 100px;
+
+        img {
+            width: 100%;
+            position: absolute;
+            top: 0;
+            bottom: 0;
+            margin: auto;
+            // height: 100%;
+        }
+    }
+}
+
+.typebox {
+    div {
+        border: 1px solid #ddd;
+        border-top: transparent;
+
+        span {
+            display: inline-block;
+            width: 20%;
+            line-height: 30px;
+            padding: 10px;
+            vertical-align: top;
+        }
+
+        .big {
+            width: 35%;
+            // background: #f4f4f4;
+        }
+
+        .small {
+            width: 5%;
+            text-align: center;
+            // border-right: 1px solid #ddd;
+        }
+
+        .gys {
+            width: 40%;
+        }
+    }
+}
+
+.t-footer {
+    text-align: center;
+    padding-right: 20px;
+    margin-top: 20px;
+}
+.t-footer1 {
+    padding-right: 0;
+    margin-top: 80px;
+}
+.onetab {
+    padding: 20px;
+    height: calc(100% - 180px);
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    // padding-left: 20px;
+
+    div {
+        width: 60%;
+        display: inline-block;
+    }
+
+    span {
+        width: 80px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 100px);
+    }
+
+    .el-checkbox-group {
+        border: 1px solid #ddd;
+        padding-left: 20px;
+        height: 40px;
+        width: calc(100% - 100px);
+        border-radius: 5px;
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: 60%;
+    }
+}
+
+.section2 {
+    display: flex;
+    align-items: center;
+    margin-bottom: 20px;
+    button {
+        margin-bottom: 0 !important;
+    }
+    h3 {
+        margin-right: 40px;
+    }
+}
+/deep/.online .el-form-item__content {
+    width: 100%;
+    margin-left: 0 !important;
+}
+
+/deep/.el-upload {
+    width: 100% !important;
+    padding: 0 !important;
+}
+.el-row {
+    margin: 0 !important;
+}
+.tree {
+    width: calc(50% - 60px) !important;
+    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;
+    }
+}
+/deep/.container .el-upload-dragger {
+    height: 120px !important;
+}
+.upload-demo {
+    width: 60% !important;
+}
+</style>

+ 704 - 0
src/pages/main/advertising/acceptanceSituation.vue

@@ -0,0 +1,704 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <div class="section2">
+                <el-button
+                    type="primary"
+                    @click="dialogApplication(1)"
+                    style="width: 100px;margin-right: 20px;margin-bottom: 20px;"
+                    v-if="companyFlag == 0"
+                    >审批</el-button
+                >
+                <el-button
+                    type="primary"
+                    @click="dialogApplication(2)"
+                    style="width: 100px;margin-right: 20px;margin-bottom: 20px;"
+                    v-if="companyFlag == 1 && isSubmitBtnShow"
+                    >提交</el-button
+                >
+                <el-button
+                    type="primary"
+                    @click="dialogApplication(3)"
+                    style="width: 100px;margin-right: 20px;margin-bottom: 20px;"
+                    v-if="companyFlag == 1"
+                    >发货回执</el-button
+                >
+            </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"
+                    @selection-change="tableSelectionChange"
+                >
+
+                    <!-- <el-table-column type="selection" width="55" v-if="companyFlag == 0" :selectable="selectable">
+                    </el-table-column> -->
+                    <el-table-column prop="countryName" label="区县名称">
+                    </el-table-column>
+                    <el-table-column prop="nextOpName" 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 label="附件" align="center">
+                        <template slot-scope="scope">
+                            <a
+                                style="width: 70px; display: inline-block; color:#169BD5; cursor:pointer"
+                                @click="applicationCli(1, scope.row)"
+                                >导出</a
+                            >
+                            <a
+                                style="width: 70px; display: inline-block; color:#169BD5; cursor:pointer"
+                                @click="applicationCli(2, scope.row)"
+                                v-if="companyFlag == 1 && scope.row.sts == 3"
+                                >打回</a
+                            >
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <!-- <el-pagination
+                    class="pageBox"
+                    @current-change="currchange"
+                    layout="prev, pager, next"
+                    background
+                    :total="total"
+                >
+                </el-pagination> -->
+            </div>
+        </div>
+        <el-dialog
+            :title="titname"
+            :visible.sync="approvalDialogStatus"
+            width="30%"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+            :before-close="closedia"
+        >
+            <div v-loading="loadinged">
+                <el-form
+                    :model="approvalinfolist"
+                    ref="approvalinfolist"
+                    :rules="rules"
+                >
+                    <el-form-item
+                        class="info-line online"
+                        style="margin-left: 10%"
+                    >
+                        <el-radio-group v-model="approvalinfolist.opinionradio">
+                            <el-radio :label="1">同意</el-radio>
+                            <el-radio :label="2">打回</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                    <!-- <el-form-item
+                        class="info-line online"
+                        style="text-align: center"
+                    >
+                        <el-input
+                            v-model="approvalinfolist.opinion"
+                            placeholder="审批意见"
+                            type="textarea"
+                            :rows="2"
+                        ></el-input>
+                    </el-form-item> -->
+                </el-form>
+
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button @click="closedia">取 消</el-button>
+                    <el-button type="primary" @click="dialogCli(1)"
+                        >确 定</el-button
+                    >
+                </div>
+            </div>
+        </el-dialog>
+        
+        <el-dialog
+            title="发货回执"
+            :visible.sync="feedbackDialogStatus"
+            width="30%"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+            :before-close="closedia"
+        >
+            <div v-loading="loadinged">
+                <el-form
+                    :model="approvalinfolist"
+                    ref="approvalinfolist"
+                    :rules="rules"
+                >
+                    <el-form-item class="info-line online" style="text-align: center">
+                        <span>发货回执</span>
+                        <el-input
+                            v-model="feedbackInfo"
+                            placeholder="发货回执"
+                            type="textarea"
+                            :rows="2"
+                        ></el-input>
+                    </el-form-item>
+                </el-form>
+
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button @click="closedia">取 消</el-button>
+                    <el-button type="primary" @click="dialogCli(3)">确 定</el-button>
+                    
+                </div>
+            </div>
+        </el-dialog>
+        <el-dialog
+            title="附件"
+            :visible.sync="attStatus"
+            width="50%"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+            :before-close="closedia"
+        >
+            <div slot="title">
+                <div>
+                    附件
+                    <i
+                        class="el-icon-full-screen"
+                        style="float: right; margin-right: 30px"
+                        @click="
+                            () => {
+                                fullscreen = !fullscreen;
+                            }
+                        "
+                    ></i>
+                </div>
+            </div>
+            <div v-loading="loadinged">
+                <div style="margin: 10px 0">
+                    <uploadDown :datalist="datalist"></uploadDown>
+                </div>
+                <div class="dialog-footer myfooter">
+                    <el-button @click="attStatus = false">取 消</el-button>
+                </div>
+            </div>
+        </el-dialog>
+        <myMessage
+            :messTit="messTit"
+            @closeMessage="closeMessage"
+            :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"
+        ></myMessage>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "../../../components/search.vue";
+import myMessage from "../../../components/myMessage.vue";
+import toolList from "../../../components/toolList";
+import myUpload from "../../../components/upload";
+import uploadDown from "../../../components/uploadDown";
+import { MessageBox } from "element-ui";
+
+export default {
+    components: {
+        mySearch,
+        myMessage,
+        toolList,
+        myUpload,
+        uploadDown,
+        MessageBox
+    },
+    data() {
+        const regionName = (rule, value, callback) => {
+            if (!this.infolist.regionName) {
+                callback(new Error("不能为空"));
+            } else {
+                callback();
+            }
+        };
+        const advTypeDesc = (rule, value, callback) => {
+            if (!this.infolist.advTypeDesc) {
+                callback(new Error("不能为空"));
+            } else {
+                callback();
+            }
+        };
+        return {
+            loginNo: JSON.parse(sessionStorage.userInfo).loginNo,
+            rules: {
+                regionName: [
+                    {
+                        required: true,
+                        trigger: "change",
+                        validator: regionName
+                    }
+                ],
+                advTypeDesc: [
+                    {
+                        required: true,
+                        trigger: "change",
+                        validator: advTypeDesc
+                    }
+                ]
+            },
+            searchList: [
+                // {
+                //     type: 'input',
+                //     tit: '物料名称',
+                //     value: '',
+                //     width: '48%',
+                // },
+                {
+                    type: "sel",
+                    tit: "物料类别",
+                    value: "",
+                    width: "98%",
+                    options: []
+                }
+                // {
+                //     type: 'input',
+                //     tit: '地市名称',
+                //     value: '',
+                //     width: '98%',
+                // },
+            ],
+            tooltit: "物料申请审核",
+            fullscreen: false,
+            total: 0,
+            pageSize: 1,
+            tableData: [],
+            dialogStatus: false,
+            disableStatus: false,
+            applicationDialogStatus: false,
+            titname: "",
+            infolist: {},
+            approvalinfolist: {
+                opinionradio: 1
+            },
+            userInfo: {},
+            params: {},
+            centerDialogVisible: false,
+            messTit: "",
+            delid: "",
+            loading: false,
+            loadinged: false,
+            fileInfo: {
+                limit: 10,
+                url: "/market/cwo/upload",
+                fileList: []
+            },
+            infoApply: {},
+            rovaList: [],
+            woNoArr: [],
+            feedbackDialogStatus: false,
+            feedbackInfo: "",
+            datalist: {
+                url: "/market/cadvBusiMetirialWo/checkExport",
+                type: 2
+            },
+            attStatus: false,
+            companyFlag: "",
+            isSubmitBtnShow: false,
+            step: {},
+            passedList:[],
+            approvalDialogStatus: false,
+            yzInfo:{}
+        };
+    },
+    methods: {
+        tableSelectionChange(val, row) {
+            this.multipleSelection = val;
+        },
+        selectable(row, index){
+            if(row.sts == 4){
+                return false
+            }else{
+                return true
+            }
+        },
+        closedia() {
+            this.infolist = {};
+            this.dialogStatus = false;
+            this.applicationDialogStatus = false;
+            this.approvalinfolist = {};
+            this.feedbackDialogStatus = false;
+            this.approvalDialogStatus = false;
+            this.approvalinfolist.opinionradio = "1";
+            this.attStatus = false;
+        },
+        //获取列表
+        getList(v, n) {
+            this.pageSize = n;
+            let _this = this;
+            // this.loading = true;
+            this.tableData = [];
+            // v.assigneeNo = this.loginNo;
+            this.$http({
+                url:
+                    "/market/advSubtask/queryCountry",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v
+            }).then(res => {
+                this.tableData = res.data.body.pageList;
+                this.companyFlag = res.data.body.companyFlag
+                // this.total = res.data.totalRecord;
+                this.loading = false;
+                // this.tableData.forEach(item => {
+                //     if(item.sts == 3){
+
+                //     }
+                // });
+                let finishData = []
+                finishData = this.tableData.filter(item=>{
+                    // if(this.params.pcId == 1 && this.companyFlag == 1){
+                    //     return item.sts == 3
+                    // }else if(this.params.pcId == 2 || this.params.pcId == 3){
+                    //     return item.sts == 4
+                    // } 
+                    return item.sts == 3    
+                })
+
+                if(this.tableData.length == finishData.length){
+                    this.isSubmitBtnShow = true
+                }
+
+            }); 
+        },
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        // 审批/提交
+        dialogApplication(v){
+            if(v === 1){
+
+                //批量,复选框提示
+                // if (this.multipleSelection == undefined ||this.multipleSelection == "") 
+                // {
+
+                //     MessageBox.alert("请至少选择一条进行审批", "温馨提示", {
+                //         confirmButtonText: "确定"
+                //     });
+                // } else 
+                // {
+                //     this.titname = "审批";
+                //     this.approvalDialogStatus = true;
+                // }
+
+                this.titname = "审批";
+                this.approvalDialogStatus = true;
+
+            }else if(v === 2){
+                let info = {};
+                // info.id = this.params.countyWoId;
+                info.id = this.params.cityWoId;
+                info.woId = this.params.woId;
+                this.submitInfo("/market/cadvBusiMetirialWo/ystj", info);
+
+            }else if(v===3){
+                this.feedbackDialogStatus = true;
+            }
+        },
+        // 导出/打回
+        applicationCli(v, n){
+            if(v === 1){
+                this.attStatus = true;
+                this.datalist.attList = JSON.parse(n.attList);
+            }else if(v === 2){
+                let info = {};
+                // info.id = this.params.countyWoId;
+                info.id = n.id;
+                info.woId = this.params.woId;
+                this.submitInfo("/market/cadvBusiMetirialWo/dh", info);
+            }
+        },
+        //省审批验收
+        dialogCli(v) {
+            if(v === 1){
+                // this.yzInfo.mkAdvBusiMetirialWoCountryList = this.multipleSelection;
+
+                    this.yzInfo.mkAdvBusiMetirialWoCountryList = this.tableData;
+                    this.yzInfo.woId = this.params.woId;
+                
+                //同意
+                if (this.approvalinfolist.opinionradio == 1) {
+                    this.yzInfo.sts = "1";
+                    
+                    this.submitInfo(
+                        "/market/cadvBusiMetirialWo/provYsdh",this.yzInfo
+                        );
+                    this.approvalDialogStatus = false;
+
+                } //驳回
+                else if (this.approvalinfolist.opinionradio == 2) {
+                    
+                    this.yzInfo.sts = "2";
+                    this.submitInfo(
+                        "/market/cadvBusiMetirialWo/provYsdh",this.yzInfo
+                        );
+                    this.approvalDialogStatus = false;
+                }
+            }else if (v === 3) {
+                this.feedbackDialogStatus = false;
+                let feedback = {};
+                feedback.receipt = this.feedbackInfo;
+                feedback.id = this.params.cityWoId;
+
+                this.submitInfo("market/advSubtask/deliveryReceipt", feedback);
+            }
+        },
+        submitInfo(u, v) {
+            let _this = this;
+            this.$http({
+                url: u,
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: v
+            }).then(res => {
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: "error"
+                    });
+                } else if (res.data.result === 2) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: "error"
+                    });
+                } else {
+                    _this.$message({
+                        message: "成功",
+                        type: "success"
+                    });
+                    _this.getList(this.params, this.pageSize);
+                    _this.$router.push("/materialApplication");
+                    // this.isSubmitBtnShow = false;
+                }
+            });
+        },
+        closeMessage(v) {
+            this.centerDialogVisible = false;
+            let _this = this;
+            if (v === 1) {
+                _this
+                    .$http({
+                        url: "/bpm/api/deleteBpmPrePlugin",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json"
+                        },
+                        data: {
+                            id: this.delid
+                        }
+                    })
+                    .then(res => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: "error"
+                            });
+                        } else {
+                            _this.$message({
+                                message: "删除成功",
+                                type: "success"
+                            });
+                            _this.getList(this.params, this.pageSize);
+                        }
+                    });
+            }
+        },
+        //删除
+        delLine(v) {
+            this.centerDialogVisible = true;
+            this.messTit = "即将删除此条数据, 是否删除?";
+            this.delid = v.id;
+        },
+        //文件返回值
+        uploadBack(v) {
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen;
+            }
+        },
+        getUser() {
+            this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+        }
+    },
+    mounted() {
+        //地址栏不带参
+        // if (JSON.stringify(this.$route.params) != "{}") {
+        //     this.params.cityWoId = this.$route.params.cityWoId;
+        //     this.params.countyWoId = this.$route.params.countyWoId;
+        //     this.params.woId = this.$route.params.woId;
+        //     this.params.pcId = this.$route.params.pcId;
+        // }
+        //地址栏带参
+        // if (JSON.stringify(this.$route.query) != "{}") {
+        //     this.params.cityWoId = this.$route.query.cityWoId;
+        //     this.params.countyWoId = this.$route.query.countyWoId;
+        //     this.params.woId = this.$route.query.woId;
+        //     this.params.pcId = this.$route.query.pcId;
+        // }
+        
+        this.getUser();
+        let jumpParams = JSON.parse(sessionStorage.getItem("jumpParams"))
+        this.params.cityWoId = jumpParams.cityWoId;
+        this.params.countyWoId = jumpParams.countyWoId;
+        this.params.woId = jumpParams.woId;
+        this.params.pcId = jumpParams.pcId;
+        // console.log(this.companyFlag);
+        if(this.userInfo.cityName == null && this.userInfo.countyName == null){
+            
+            this.params.woCityId = this.$route.query.cityWoId;
+
+        }else if(this.userInfo.cityName!=null && this.userInfo.countyName == null){
+            
+            this.params.woCityId = jumpParams.cityWoId;
+            this.params.id = jumpParams.countyWoId;
+           
+
+        }
+        
+
+        this.getList(this.params, 1);
+        
+    },
+    watch: {
+        $route() {
+            this.getList(this.params, 1);
+        }
+    },
+    created() {}
+};
+</script>
+<style scoped lang="scss">
+.onetab {
+    margin-bottom: 20px;
+    padding: 0 20px;
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 50%;
+        display: inline-block;
+    }
+
+    span {
+        width: 80px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 100px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+.adv-type {
+    margin-top: 20px;
+    display: flex;
+    justify-content: space-between;
+    flex-wrap: wrap;
+    // border: 1px solid #ddd;
+    border-radius: 5px;
+    padding: 20px;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+    div {
+        width: 33%;
+        text-align: center;
+        height: 80px;
+        overflow: hidden;
+        min-width: 100px;
+        cursor: pointer;
+        padding-top: 10px;
+        margin: 10px 0;
+    }
+    div:hover {
+        background: #cfe8fc;
+        border-radius: 5px;
+    }
+    span {
+        width: 100%;
+        display: inline-block;
+        height: 40px;
+        // line-height: 40px;
+        i {
+            color: #0074d9;
+            font-size: 36px;
+        }
+    }
+}
+.section2 {
+    display: flex;
+    align-items: center;
+    margin: 40px 0;
+    button {
+        margin-bottom: 0 !important;
+    }
+    h3 {
+        margin-right: 40px;
+    }
+}
+</style>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1284 - 667
src/pages/main/advertising/businessHall.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 541 - 392
src/pages/main/advertising/contractCap.vue


+ 6 - 6
src/pages/main/advertising/index.vue

@@ -19,11 +19,11 @@
 			</div> -->
 			<h2 style="margin-top: 20px;">宣传物料管理</h2>
 			<div class="adv-type">
-			    <div class="wfour" @click="jumpinfo('/materialApplication','省级物料申请')">
+			    <div class="wfour" @click="jumpinfo('/materialApplication','宣传物料申请及审批')">
 			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>省级物料申请</span>
+			        <span>宣传物料申请及审批</span>
 			    </div>
-				<div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
+				<!-- <div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
 			        <span><i class="el-icon-folder-opened"></i></span>
 			        <span>市级物料申请</span>
 			    </div>
@@ -34,14 +34,14 @@
 				<div class="wfour" @click="jumpinfo('/materialApplicationExac','物料申请审核')">
 				    <span><i class="el-icon-folder-opened"></i></span>
 				    <span>市级物料审批</span>
-				</div>
+				</div> -->
 			</div>
 			<h2 style="margin-top: 20px;">基础数据管理</h2>
 			<div class="adv-type">
-			    <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
+			    <!-- <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
 			        <span><i class="el-icon-folder-opened"></i></span>
 			        <span>一采物料类型建档</span>
-			    </div>
+			    </div> -->
 				<div class="wfive" @click="jumpinfo('/materiel','二采物料类型建档')" v-if="province">
 			        <span><i class="el-icon-folder-opened"></i></span>
 			        <span>二采物料类型建档</span>

+ 232 - 70
src/pages/main/advertising/materialApplication.vue

@@ -4,7 +4,7 @@
 			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
             <div class="search">
                 <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
-                <el-button class="btn-check" size="medium" type="primary" @click='jumpadd'>添加
+                <el-button class="btn-check" size="medium" type="primary" @click='jumpadd' v-if="(userInfo.cityName==null&&userInfo.countyName==null)||(userInfo.cityName!=null&&userInfo.countyName==null)">添加
                 </el-button>
             </div>
             <div class="tabbox">
@@ -12,50 +12,71 @@
                     tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
                     <el-table-column prop="bizName" label="业务名称">
                     </el-table-column>
-					<el-table-column prop="woNo" label="业务编码">
+                    <el-table-column prop="orderCycle" label="下单周期">
                     </el-table-column>
-                    <el-table-column prop="scence" label="使用场景">
+                    <el-table-column prop="opName" label="申请人">
                     </el-table-column>
-                    <el-table-column prop="approvalNo" label="申请工号">
+                    <el-table-column prop="opCom" label="申请人所属公司">
                     </el-table-column>
-					<el-table-column prop="approvalName" label="申请姓名">
+                    <el-table-column prop="provinceCity" label="申请类型">
+                        <template slot-scope="scope">
+                            {{provinceCityArr[scope.row.provinceCity-1]}}
+                        </template>
                     </el-table-column>
-                    <el-table-column prop="approvalTime" label="申请时间">
+                    <el-table-column prop="opTime" label="申请时间">
                     </el-table-column>
-					<el-table-column prop="budget" label="预算金额">
+                    <el-table-column prop="sts" label="任务状态">
+                        <template slot-scope="scope">
+                            {{stsArr[scope.row.sts]}}
+                        </template>
                     </el-table-column>
-					<!-- <el-table-column prop="sts" label="状态">
-                    </el-table-column> -->
-                    <el-table-column label="操作" width="100px" align="center">
+                    <el-table-column label="操作" width="300px" align="center">
                         <template slot-scope="scope">
-                            <el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+                            <!-- <el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button> -->
                             <!-- <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)">修改</el-button> -->
-                            <!-- <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button> -->
+                            <el-button size="mini" type="primary" @click="jump(2, scope.row)">查看</el-button>
+                            <!-- <el-button size="mini" type="primary" @click="jump(1, scope.row)" v-if="loginNoStr == scope.row.nextOpNo && scope.row.woSts == 0">审批</el-button>                             -->
+                           <el-button size="mini" type="primary" @click="jump(1, scope.row)" v-if="(loginNoStr == scope.row.nextOpNo && ((scope.row.provinceCity == 1 && scope.row.nextStep != 12) || (scope.row.provinceCity == 2 && scope.row.nextStep != 10) || (scope.row.provinceCity == 3 && scope.row.nextStep != 11))) && (scope.row.sts != 3)">审批</el-button>
+                            <el-button size="mini" type="primary" @click="jump(3, scope.row)" v-if="(loginNoStr == scope.row.nextOpNo && ((scope.row.provinceCity == 1 && scope.row.nextStep ==7) || (scope.row.provinceCity == 1 && scope.row.nextStep ==11) || (scope.row.provinceCity == 2 && scope.row.nextStep == 9) || (scope.row.provinceCity == 3 && scope.row.nextStep == 10))) && (scope.row.sts != 3)">子任务列表</el-button>
+                            <el-button size="mini" type="danger" @click="delLine(scope.row)" v-if="(loginNoStr == scope.row.opNo && ((scope.row.provinceCity == 1 && scope.row.nextStep <= 7) || (scope.row.provinceCity == 2 && scope.row.nextStep <= 10) || (scope.row.provinceCity == 3 && scope.row.nextStep <= 11)) && (scope.row.sts != 3))">删除</el-button>
+                            <el-button size="mini" type="primary" @click="jump(4, scope.row)" v-if="((scope.row.provinceCity == 1 && scope.row.nextStep == 12) || (scope.row.provinceCity == 2 && scope.row.nextStep == 10) || (scope.row.provinceCity == 3 && scope.row.nextStep == 11)) && (scope.row.countrySts == 0 || scope.row.countrySts == 2)">验收</el-button>
+
+                            <!--<el-button size="mini" type="primary" @click="jump(1, scope.row)" v-if="scope.row.sp">审批</el-button>-->
+                            <!--<el-button size="mini" type="primary" @click="jump(3, scope.row)" v-if="scope.row.zrw">子任务列表</el-button>-->
+                            <!--<el-button size="mini" type="danger" @click="delLine(scope.row)" v-if="scope.row.sc">删除</el-button>-->
+                            <!--<el-button size="mini" type="primary" @click="jump(4, scope.row)" v-if="scope.row.yc">验收</el-button>-->
+
+
                         </template>
                     </el-table-column>
                 </el-table>
-                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
-                    :total="total">
+                <el-pagination
+                    class="pageBox"
+                    @current-change="currchange"
+                    layout="prev, pager, next"
+                    background
+                    :total="total"
+                >
                 </el-pagination>
             </div>
         </div>
 
-        <el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+        <!-- <el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
             :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
             <div v-loading="loadinged">
                 <el-form :model="infolist" ref="infolist" :rules="rules" style="height: calc(100vh - 180px);overflow-y: scroll;">
                     <div class="info-line">
 						<el-form-item>
 						    <span>业务名称</span>
-						    <el-input v-model="infoApply.tit" disabled></el-input>
+						    <el-input v-model="infolist.bizName" disabled></el-input>
 						</el-form-item>
 						<el-form-item>
 							<span>使用场景</span>
-							<el-input v-model="infoApply.scene" disabled></el-input>
+							<el-input v-model="infoApply.sceneName" disabled></el-input>
 						</el-form-item>
 						<el-form-item>
 						    <span>下单周期</span>
-						    <el-date-picker v-model="infoApply.overtime" type="date" disabled></el-date-picker>
+                            <el-input v-model="infolist.orderCycle" disabled></el-input>
 						</el-form-item>
 						<el-form-item>
 							<span>物料类型</span>
@@ -138,8 +159,45 @@
                     <el-button @click="dialogCli(1)">取 消</el-button>
                 </div>
             </div>
-        </el-dialog>
+        </el-dialog> -->
+
+        <el-dialog
+            :title="titname"
+            :visible.sync="applicationDialogStatus"
+            width="30%"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+            :before-close="closedia"
+        >
+            <div v-loading="loadinged">
+                <el-form
+                    :model="approvalinfolist"
+                    ref="approvalinfolist"
+                >
+                    <el-form-item class="info-line online" style="margin-left: 10%">
+                        <el-radio-group v-model="approvalinfolist.opinionradio">
+                            <el-radio :label="1">同意</el-radio>
+                            <el-radio :label="2">打回</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                    <el-form-item class="info-line online" style="text-align: center">
+                        <el-input
+                            v-model="approvalinfolist.opinion"
+                            placeholder="审批意见"
+                            type="textarea"
+                            :rows="2"
+                        ></el-input>
+                    </el-form-item>
+                </el-form>
 
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button @click="dialogCli(4)">取 消</el-button>
+                    <el-button type="primary" @click="dialogCli(5)">确 定</el-button>
+
+                </div>
+            </div>
+        </el-dialog>
         <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible" v-if="centerDialogVisible"></myMessage>
     </fullscreen>
 
@@ -150,6 +208,7 @@
     import toolList from '../../../components/toolList'
 	import myUpload from '../../../components/upload'
 
+
     export default {
         components: {
             mySearch,
@@ -158,45 +217,69 @@
 			myUpload
         },
         data() {
-            const regionName = (rule, value, callback) => {
-                if (!this.infolist.regionName) {
-                    callback(new Error('不能为空'))
-                } else {
-                    callback()
-                }
-            }
-            const advTypeDesc = (rule, value, callback) => {
-                if (!this.infolist.advTypeDesc) {
-                    callback(new Error('不能为空'))
-                } else {
-                    callback()
-                }
-            }
+            // const regionName = (rule, value, callback) => {
+            //     if (!this.infolist.regionName) {
+            //         callback(new Error('不能为空'))
+            //     } else {
+            //         callback()
+            //     }
+            // }
+            // const advTypeDesc = (rule, value, callback) => {
+            //     if (!this.infolist.advTypeDesc) {
+            //         callback(new Error('不能为空'))
+            //     } else {
+            //         callback()
+            //     }
+            // }
             return {
-                rules: {
-                    regionName: [{
-                        required: true,
-                        trigger: 'change',
-                        validator: regionName
-                    }],
-                    advTypeDesc: [{
-                        required: true,
-                        trigger: 'change',
-                        validator: advTypeDesc
-                    }],
-                },
+                // rules: {
+                //     regionName: [{
+                //         required: true,
+                //         trigger: 'change',
+                //         validator: regionName
+                //     }],
+                //     advTypeDesc: [{
+                //         required: true,
+                //         trigger: 'change',
+                //         validator: advTypeDesc
+                //     }],
+                // },
                 searchList: [
                     {
                         type: 'input',
-                        tit: '物料名称',
+                        tit: '业务名称',
                         value: '',
-                        width: '48%',
+                        width: '32%',
                     },
 					{
-                        type: 'input',
-                        tit: '地市名称',
+                        type: 'sel',
+                        tit: '状态',
+                        value: '',
+                        width: '32%',
+                        options: [
+                        {
+                            dataCode: "0",
+                            dataName: "待审批"
+                        },
+                        {
+                            dataCode: "1",
+                            dataName: "待确认"
+                        },
+                        {
+                            dataCode: "2",
+                            dataName: "待验收"
+                        },
+                        {
+                            dataCode: "3",
+                            dataName: "已完成"
+                        }
+                    ]
+                    },
+                    {
+                        type: 'date',
+                        tit: '申请时间',
                         value: '',
-                        width: '48%',
+                        width: '32%',
                     },
                 ],
                 tooltit:'物料申请管理',
@@ -221,7 +304,15 @@
 				    fileList: []
 				},
 				infoApply:{},
-				rovaList:[]
+				rovaList:[],
+                applicationDialogStatus:false,
+                approvalinfolist: {
+                    opinionradio: 1
+                },
+                stsArr: ['待审批','待确认','待验收','已完成'],
+                provinceCityArr:['省',"地市","区县"],
+                loginNoStr: "",
+                cityWoId: "",
             }
         },
         methods: {
@@ -231,6 +322,48 @@
 				});
 				this.setabList('物料宣传申请','/materialApplicationadd');
 			},
+            jump(v, n){
+                if(v === 1){
+                    // this.$router.push("/materialApplicationExa?id=" + n.id + "");
+                    this.$router.push({
+                                path: '/materialApplicationExa',
+                                query: {cityWoId: n.cityWoId, id: n.id, btnS: 1}
+                        })
+
+                }else if(v === 2){
+                    this.$router.push("/materialApplicationDetail?id="+ n.id + "")
+                }else if(v === 3){
+                    let jumpParams = {cityWoId: n.cityWoId, countyWoId: n.countryWoId, woId: n.id, pcId: n.provinceCity};
+
+                    sessionStorage.setItem("jumpParams", JSON.stringify(jumpParams))
+                    if(n.provinceCity == 1 && n.nextStep ==7){
+
+                        this.$router.push({
+                                path: '/subtaskList',
+                                // query: { cityWoId: n.cityWoId, countyWoId: n.countryWoId, woId: n.id, }
+                                // path: '/subtaskList/:name',
+                                // name: 'subtaskList',
+                                // params: { cityWoId: n.cityWoId, countyWoId: n.countryWoId, woId: n.id, }
+                        })
+
+                    } else if((n.provinceCity == 1 && n.nextStep ==11) || (n.provinceCity == 2 && n.nextStep == 9) || (n.provinceCity == 3 && n.nextStep == 10)){
+                        this.$router.push({
+                                path: '/acceptanceSituation',
+                                // query: { cityWoId: n.cityWoId, countyWoId: n.countryWoId, woId: n.id, pcId: n.provinceCity}
+
+                                // path: '/acceptanceSituation/:name',
+                                // name: 'acceptanceSituation',
+                                // params: { cityWoId: n.cityWoId, countyWoId: n.countryWoId, woId: n.id, pcId: n.provinceCity}
+                            })
+                    }
+                }else if(v === 4){
+                    // this.$router.push("/acceptance?cityWoId="+ n.cityWoId + "&countyWoId=" + n.countryWoId)
+                    this.$router.push({
+                                path: '/acceptance',
+                                query: { cityWoId: n.cityWoId, countyWoId: n.countryWoId, woId: n.id }
+                        })
+                }
+            },
             setabList(n, p) {
             	let params = {
             		children: "",
@@ -251,22 +384,33 @@
             closedia() {
                 this.infolist = {};
                 this.dialogStatus = false;
+                this.approvalinfolist = {};
+                this.applicationDialogStatus = false;
             },
             //搜索数据
             searchInfo(v) {
                 this.params = {};
-                v[0] ? this.params.metirialName = v[0] : '';
-                v[0] ? this.params.regionName = v[0] : '';
+                v[0] ? this.params.bizName = v[0] : '';
+                v[1] ? this.params.sts = v[1] : '';
+                let timeFrom = '';
+                let timeTo = '';
+                if (v[2]){
+                    timeFrom = this.$formatDate(v[2],"YYYY-MM-DD")+ ' 00:00:00'
+                    timeTo = this.$formatDate(v[2],"YYYY-MM-DD")+ ' 23:59:59'
+                }
+                timeFrom ? this.params.opTimeFrom = timeFrom : '';
+                timeTo ? this.params.opTimeTo = timeTo : '';
                 this.getList(this.params, this.pageSize);
             },
             //获取列表
             getList(v, n) {
+
                 this.pageSize = n;
                 let _this = this;
                 this.loading = true;
                 this.tableData = [];
                 this.$http({
-                    url: "/market/cadvMetirialApproval/queryPage",
+                    url: "/market/cadvBusiMetirialWo/queryPage",
                     method: "post",
                     headers: {
                         "Content-Type": "application/json",
@@ -274,9 +418,11 @@
                     },
                     data: v,
                 }).then((res) => {
-                    this.tableData = res.data.data;
-                    this.total = res.data.totalRecord;
+                    this.tableData = res.data.body.pageList.data;
+                    this.total = res.data.body.pageList.totalRecord;
+                    // console.log(this.tableData);
                     this.loading = false;
+
                 });
             },
             // 分页
@@ -287,12 +433,14 @@
             //申请
             dialogCheck(v, n) {
                 this.dialogStatus = true;
+                // 审批同意对话框
+                this.applicationDialogStatus = true;
                 this.infolist = Object.assign({}, n);
                 if (v === 1) {
                     this.titname = '查看';
                     this.disableStatus = true;
                 } else if (v === 2) {
-                    this.titname = '修改';
+                    this.titname = '审批';
                     this.disableStatus = false;
                 }
 				this.$http({
@@ -305,31 +453,44 @@
 				        woNo: n.woNo
 				    },
 				}).then((res) => {
+
 				    this.infolist = Object.assign({}, res.data);
-				    this.infoApply = JSON.parse(this.infolist.params.terminalRes);
+				    this.infoApply = JSON.parse(this.infolist.params.wo);
+
 					this.rovaList = res.data.taskList;
 				});
             },
+
+
             //添加
             dialogCli(v) {
                 if (v === 1) {
                     this.infolist = {};
                     this.dialogStatus = false;
                     return
-                } else {
+                }else if(v===5){
+                    if(this.approvalinfolist.opinionradio == 1){
+                        this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
+                        this.infolist.dealType = '2';
+                        this.infolist.dealTypeDesc = this.approvalinfolist.opinion;
+                        this.applicationDialogStatus = false;
+
+                        this.submitInfo("/bpm/api/submitTask", this.infolist);
+                    }
+                }
+                 else {
                     this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
                     if (this.titname === '添加') {
                         this.submitInfo("/bpm/api/addBpmPrePlugin");
-                    } else if (this.titname === '修改') {
+                    } else if (this.titname === '审批') {
                         this.submitInfo("/bpm/api/updateBpmPrePlugin", v);
                     }
-
                 }
             },
             submitInfo(u) {
                 let _this = this;
-                this.$refs.infolist.validate(valid => {
-                    if (valid) {
+                //this.$refs.infolist.validate(valid => {
+                    //if (valid) {
                         this.loadinged = true;
                         this.$http({
                             url: u,
@@ -356,21 +517,21 @@
                             }
 
                         });
-                    }
-                })
+                    //}
+                //})
             },
             closeMessage(v) {
                 this.centerDialogVisible = false;
                 let _this = this;
                 if (v === 1) {
                     _this.$http({
-                        url: "/bpm/api/deleteBpmPrePlugin",
+                        url: "/market/cadvBusiMetirialWo/del",
                         method: "post",
                         headers: {
                             "Content-Type": "application/json",
                         },
                         data: {
-                            id: this.delid
+                            woId: this.delid
                         },
                     }).then((res) => {
                         if (res.data.result === 1) {
@@ -409,6 +570,7 @@
             },
             getUser() {
                 this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.loginNoStr = this.userInfo.loginNoStr;
 
             }
         },
@@ -530,7 +692,7 @@
 		flex-wrap: wrap;
 		width: 100% !important;
 		margin-top: 20px;
-	
+
 		div {
 			display: inline-block;
 			width: 18% !important;
@@ -542,7 +704,7 @@
 			background: #fff;
 			position: relative;
 			height: 100px;
-	
+
 			img {
 				width: 100%;
 				position: absolute;
@@ -551,7 +713,7 @@
 				margin: auto;
 				// height: 100%;
 			}
-	
+
 		}
 	}
 </style>

+ 959 - 0
src/pages/main/advertising/materialApplicationDetail.vue

@@ -0,0 +1,959 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
+            <div class="search">
+                <el-form
+                :model="searchSection"
+                ref="searchSection"
+                :rules="rules"
+                v-loading="loadinged"
+            >
+                <div class="info-line search-box">
+                    <el-form-item prop="regionCode">
+                        <span>地市名称</span>
+                        <el-select
+                            @change="changeSearch(1)"
+                            clearable
+                            v-model="searchSection.regionCode"
+                            placeholder="地市名称"
+                            @clear="clearSearch"
+                        >
+                            <el-option
+                                v-for="item in regionOpt"
+                                :key="item.compId"
+                                :label="item.compName"
+                                :value="item.compId"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item prop="countyCode">
+                        <span>区县名称</span>
+                        <el-select
+                            :popper-append-to-body="false"
+                            v-model="searchSection.countyCode"
+                            placeholder="区县名称"
+                            @change="changeSearch(2, $event)"
+                            clearable
+                        >
+                            <el-option
+                                v-for="item in countyOpt"
+                                :key="item.compId"
+                                :label="item.compName"
+                                :value="item.compId"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                     <el-form-item prop="metirialType">
+                        <span>物料类别</span>
+                        <el-select
+                            @change="changeSearch(3)"
+                            clearable
+                            v-model="searchSection.metirialType"
+                            placeholder="物料类别"
+                        >
+                            <el-option
+                                v-for="(items, index) in metirialTypeOpt"
+                                :key="index"
+                                :label="items"
+                                :value="items"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                   <el-form-item prop="stsId">
+                        <span>状态</span>
+                        <el-select
+                            @change="changeSearch(4)"
+                            clearable
+                            v-model="searchSection.stsId"
+                            placeholder="状态"
+                        >
+                            <el-option
+                                v-for="(items) in stsOpt"
+                                :key="items.stsId"
+                                :label="items.stsName"
+                                :value="items.stsId"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-button class="btn-check" size="medium" type="primary" plain icon="el-icon-search" @click="searchCli">搜索
+                </el-button>
+                </div>
+
+            </el-form>
+
+
+            </div>
+            <div class="section2">
+                <el-button
+                    type="primary"
+                    @click="dialogApplication(2)"
+                    style="margin-right: 20px;margin-bottom: 20px;"
+                    >审批轨迹</el-button
+                >
+                <el-button
+                    type="primary"
+                    @click="dialogApplication(3)"
+                    style="margin-right: 20px;margin-bottom: 20px;"
+                    >导出</el-button
+                >
+                <a
+                    style="margin-right:50px; color:#169BD5; cursor:pointer"
+                    @click="attStatus = true"
+                    v-if="wo.fileUrl != null"
+                    >下载附件</a
+                >
+            </div>
+            <div class="tabbox">
+                <el-table
+                    height="calc(100% - 140px)"
+                    class="com-table"
+                    ref="multipleTable"
+                    :data="tableData"
+                    tooltip-effect="dark"
+                    size="small"
+                    border
+                    style="width: 100%"
+                    v-loading="loading"
+                >
+                    <!-- <el-table-column type="selection" width="55">
+                    </el-table-column> -->
+                    <el-table-column prop="woSts" label="状态">
+                        <template slot-scope="scope">
+                            {{ stsArr[scope.row.woSts] }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="regionName" label="地市公司">
+                    </el-table-column>
+                    <el-table-column prop="regionCode" label="公司编码">
+                    </el-table-column>
+                    <el-table-column prop="countyName" label="区县名称">
+                    </el-table-column>
+                    <el-table-column prop="countyCode" label="区县编码">
+                    </el-table-column>
+                    <el-table-column prop="channelCode" label="渠道编码">
+                    </el-table-column>
+                    <el-table-column prop="channelName" label="渠道名称">
+                    </el-table-column>
+                    <el-table-column prop="sceneName" label="场景">
+                    </el-table-column>
+                    <el-table-column prop="metirialType" label="物料类别">
+                    </el-table-column>
+                    <el-table-column prop="metirialCode" label="物料编码">
+                    </el-table-column>
+                    <el-table-column prop="metirialName" label="物料名称">
+                    </el-table-column>
+                    <el-table-column prop="unit" label="物料单位">
+                    </el-table-column>
+                    <el-table-column prop="size" label="规格尺寸">
+                    </el-table-column>
+                    <el-table-column prop="length" label="长">
+                    </el-table-column>
+                    <el-table-column prop="width" label="宽"> </el-table-column>
+                    <el-table-column prop="direction" label="横竖">
+                    </el-table-column>
+                    <el-table-column prop="coefficient" label="系数">
+                    </el-table-column>
+                    <el-table-column prop="sts" label="营业状态">
+                    </el-table-column>
+                    <el-table-column prop="quantity" label="数量" width="100">
+                    </el-table-column>
+                    <el-table-column prop="settlementAmount" label="结算金额">
+                        <template slot-scope="scope">
+                            <div>
+                                {{
+                                    scope.row.quantity *
+                                        scope.row.price *
+                                        scope.row.coefficient
+                                }}
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="supplierName" label="供应商">
+                    </el-table-column>
+                </el-table>
+                <!-- <el-pagination
+                    class="pageBox"
+                    @current-change="currchange"
+                    layout="prev, pager, next"
+                    background
+                    :total="total"
+                >
+                </el-pagination> -->
+            </div>
+        </div>
+        <!-- 审批轨迹 -->
+        <el-dialog
+            :title="titname"
+            :visible.sync="approvalStepDialogStatus"
+            width="50%"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+            :before-close="closedia"
+        >
+            <div v-loading="loadinged">
+                <div
+                    style="margin-bottom: 20px;padding: 0 20px;"
+                    v-if="titname != '添加'"
+                >
+                    <el-table
+                        class="com-table"
+                        ref="multipleTable"
+                        :data="rovaList"
+                        tooltip-effect="dark"
+                        size="small"
+                        border
+                        style="width: 100%"
+                    >
+                        <el-table-column prop="woId" label="编号">
+                        </el-table-column>
+                        <el-table-column prop="name" label="环节">
+                        </el-table-column>
+                        <el-table-column prop="opName" label="处理人">
+                        </el-table-column>
+                        <el-table-column prop="opNo" label="处理人工号">
+                        </el-table-column>
+                        <el-table-column prop="opTime" label="处理时间">
+                        </el-table-column>
+                        <el-table-column prop="descs" label="备注">
+                        </el-table-column>
+                    </el-table>
+                </div>
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button @click="closedia">关 闭</el-button>
+                </div>
+            </div>
+        </el-dialog>
+
+        <el-dialog
+            title="附件"
+            :visible.sync="attStatus"
+            width="50%"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+            :before-close="closedia"
+        >
+            <div slot="title">
+                <div>
+                    附件
+                    <i
+                        class="el-icon-full-screen"
+                        style="float: right; margin-right: 30px"
+                        @click="
+                            () => {
+                                fullscreen = !fullscreen;
+                            }
+                        "
+                    ></i>
+                </div>
+            </div>
+            <div v-loading="loadinged">
+                <div style="margin: 10px 0">
+                    <uploadDown :datalist="datalist"></uploadDown>
+                </div>
+                <div class="dialog-footer myfooter">
+                    <el-button @click="attStatus = false">取 消</el-button>
+                </div>
+            </div>
+        </el-dialog>
+        <myMessage
+            :messTit="messTit"
+            @closeMessage="closeMessage"
+            :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"
+        ></myMessage>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "../../../components/search.vue";
+import myMessage from "../../../components/myMessage.vue";
+import toolList from "../../../components/toolList";
+import myUpload from "../../../components/upload";
+import deptTreeOnly from "../../../components/deptTreeOnly.vue";
+import { MessageBox } from "element-ui";
+import { Loading } from "element-ui";
+import uploadDown from "../../../components/uploadDown";
+
+export default {
+    components: {
+        mySearch,
+        myMessage,
+        deptTreeOnly,
+        MessageBox,
+        toolList,
+        myUpload,
+        uploadDown
+    },
+    data() {
+        const regionName = (rule, value, callback) => {
+            if (!this.infolist.regionName) {
+                callback(new Error("不能为空"));
+            } else {
+                callback();
+            }
+        };
+        const advTypeDesc = (rule, value, callback) => {
+            if (!this.infolist.advTypeDesc) {
+                callback(new Error("不能为空"));
+            } else {
+                callback();
+            }
+        };
+        return {
+            loginNo: JSON.parse(sessionStorage.userInfo).loginNo,
+            rules: {
+                regionName: [
+                    {
+                        required: true,
+                        trigger: "change",
+                        validator: regionName
+                    }
+                ],
+                advTypeDesc: [
+                    {
+                        required: true,
+                        trigger: "change",
+                        validator: advTypeDesc
+                    }
+                ]
+            },
+            searchList: [
+                {
+                    type: "sel",
+                    tit: "地市",
+                    value: "",
+                    width: "24%",
+                    options: []
+                },
+                {
+                    type: "sel",
+                    tit: "区县",
+                    value: "",
+                    width: "24%",
+                    options: []
+                },
+                {
+                    type: "sel",
+                    tit: "物料类别",
+                    value: "",
+                    width: "24%",
+                    options: []
+                },
+                {
+                    type: "sel",
+                    tit: "状态",
+                    value: "",
+                    width: "24%",
+                    options: []
+                }
+            ],
+            tooltit: "物料申请审核",
+            fullscreen: false,
+            total: 0,
+            pageSize: 1,
+            tableData: [],
+            supplierDialogStatus: false,
+            disableStatus: false,
+            approvalDialogStatus: false,
+            approvalStepDialogStatus: false,
+            titname: "",
+            infolist: {
+                distributionChoose: ""
+            },
+            approvalinfolist: {
+                opinionradio: 1
+            },
+            userInfo: {},
+            params: {},
+            centerDialogVisible: false,
+            messTit: "",
+            delid: "",
+            loading: false,
+            loadinged: false,
+            fileInfo: {
+                limit: 10,
+                url: "/market/cwo/upload",
+                fileList: []
+            },
+            infoApply: {},
+            rovaList: [],
+            woNoArr: [],
+            supplierOpt: [],
+            isSupplierTable: false,
+            // 树形弹窗
+            checkexa: false,
+            treeListonly: {},
+            defaultList: [],
+            closeList: false,
+            visionchonly: false,
+            depttype: 0,
+            // 固定审批人员
+            fixedDialogStatus: false,
+            // userListOpt: [],
+            cMkAdvMetirialWoInfoSubmit: {},
+            stsArr: ["待审批", "审批通过", "打回", "待确认"],
+            // 分发
+            distributionDialogStatus: false,
+            distributionRegionOpt: [],
+            cWoInfoIssued: {},
+            wo: {},
+            datalist: {
+                url: "/market/cadvBusiMetirialWo/checkExport",
+                type: 2
+            },
+            attStatus: false,
+            stsOpt:[
+                {
+                    stsId: 0,
+                    stsName: "待审批",
+                },
+                {
+                    stsId: 1,
+                    stsName: "审批通过",
+                },
+                {
+                    stsId: 2,
+                    stsName: "打回",
+                }
+                ,
+                {
+                    stsId: 3,
+                    stsName: "待确认",
+                },
+                {
+                    stsId: 4,
+                    stsName: "已结束",
+                }
+            ],
+            //搜索
+            searchSection:{}, //搜索list
+            regionOpt:[],
+            countyOpt:[],
+            metirialTypeOpt:[],
+        };
+    },
+    computed: {
+        amountsum: {
+            set() {},
+            get() {
+                var sum = 0;
+                this.tableData.forEach(item => {
+                    sum += parseFloat(
+                        item.price * item.quantity * item.coefficient
+                    );
+                });
+                return sum.toFixed(2);
+            }
+        },
+        countsum: {
+            set() {},
+            get() {
+                var sum = 0;
+                this.tableData.forEach(item => {
+                    sum += parseFloat(item.quantity);
+                });
+                return sum;
+            }
+        }
+    },
+    methods: {
+        tableSelectionChange(val, row) {
+            this.multipleSelection = val;
+
+            // this.woNoArr=[]
+            // this.multipleSelection.forEach(item => {
+            //     this.woNoArr.push(item.woNo)
+            // });
+        },
+        closedia() {
+            this.infolist = {};
+            this.approvalDialogStatus = false;
+            this.approvalinfolist = {};
+            this.supplierDialogStatus = false;
+            this.approvalStepDialogStatus = false;
+            this.distributionDialogStatus = false;
+            this.attStatus = false;
+        },
+
+        changeSearch(v, e) {
+            if (v === 1) {
+                this.searchSection.countyCode = ""
+                let regionSingle = this.regionOpt.filter(item=>{
+                    return item.compId == this.searchSection.regionCode
+                })
+
+                this.$http({
+                    url: "/sysmgr/regionComp/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json"
+                    },
+                    data: {
+                        parentCompId: regionSingle[0].compId,
+                    }
+                }).then(res => {
+                    this.countyOpt = res.data;
+
+                });
+
+            }else if(v===2){
+                this.searchSection.countyCode = e;
+                this.$forceUpdate();
+            }
+
+        },
+        clearSearch(){
+            this.params.metirialType = '';
+
+            this.searchSection.regionCode ? this.params.regionCode = this.searchSection.regionCode : '';
+            this.searchSection.countyCode ? this.params.countyCode = this.searchSection.countyCode : '';
+            this.params.woSts = this.searchSection.stsId
+        },
+        //获取地市(搜索)
+        getRegion() {
+            this.$http({
+                url: "/sysmgr/regionComp/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    parentCompId: "0"
+                }
+            }).then(res => {
+                this.regionOpt = res.data;
+            });
+        },
+        //搜索数据
+        searchCli(){
+            this.params = {}
+
+            this.searchSection.regionCode ? this.params.regionCode = this.searchSection.regionCode : '';
+            this.searchSection.countyCode ? this.params.countyCode = this.searchSection.countyCode : '';
+            this.searchSection.metirialType ? this.params.metirialType = this.searchSection.metirialType : '';
+            this.params.woSts = this.searchSection.stsId;
+            this.params.woId = this.$route.query.id;
+
+            this.getList(this.params, this.pageSize);
+        },
+        //获取列表
+        getList(v, n) {
+            this.pageSize = n;
+            let _this = this;
+            // this.loading = true;
+            this.tableData = [];
+            // v.assigneeNo = this.loginNo;
+            this.$http({
+                url: "/market/cadvBusiMetirialWo/queryPageForWoInfo",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v
+            }).then(res => {
+                this.tableData = res.data.body.pageList;
+                // this.userListOpt =
+                //     res.data.body.step.next.userList;
+                this.total = res.data.totalRecord;
+                this.wo = res.data.body.wo;
+                this.datalist.attList = JSON.parse(this.wo.fileUrl);
+
+
+                let mOpt = []
+                this.tableData.forEach(item=>{
+                    mOpt.push(item.metirialType)
+                });
+                this.metirialTypeOpt = Array.from(new Set(mOpt))
+                this.loading = false;
+            });
+        },
+
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+
+        // 申请(new)
+        dialogApplication(v, n) {
+            var _this = this;
+            // if(this.multipleSelection == undefined){
+            //     this.centerDialogVisible = true;
+            //     this.messTit = "请至少选择一条进行审批";
+
+            // }else{
+            //     this.approvalDialogStatus = true;
+            //     this.titname = "审批";
+            //     this.disableStatus = false;
+            // }
+            if (v === 2) {
+                this.titname = "审批轨迹";
+                this.approvalStepDialogStatus = true;
+                this.$http({
+                    url: "/market/advBusiMetirialWoStep/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json"
+                    },
+                    data: { woId: this.params.woId }
+                }).then(res => {
+                    this.rovaList = res.data;
+                });
+            } else if (v === 3) {
+                this.$http({
+                    url: "/market/cadvBusiMetirialWo/export",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json"
+                    },
+                    responseType: "blob",
+                    data: { id: this.params.woId }
+                }).then(res => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([res.data], {
+                            type: "application/vnd.ms-excel"
+                        });
+                        window.navigator.msSaveOrOpenBlob(
+                            blob,
+                            this.wo.bizName + ".xlsx"
+                        );
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([res.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = this.wo.bizName + ".xlsx";
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            }
+        },
+
+        treeCheckonly(v) {
+            this.treeListonly = v;
+        },
+        //添加
+        dialogCli(v) {
+            //2审批轨迹 3导出
+            // if (v === 1) {
+            //     this.approvalDialogStatus = false;
+            //     // let list = {};
+            //     this.cMkAdvMetirialWoInfoSubmit.mkAdvBusiMetirialWoInfoList = this.multipleSelection;
+            //     this.cMkAdvMetirialWoInfoSubmit.woId = this.params.woId;
+            //     this.cMkAdvMetirialWoInfoSubmit.remark = this.approvalinfolist.opinion;
+            //     if (this.approvalinfolist.opinionradio == 1) {
+            //         this.cMkAdvMetirialWoInfoSubmit.woSts = "1";
+            //         if (this.userListOpt == null) {
+            //             // 树形审批人
+            //             this.checkexa = true;
+            //         } else {
+            //             // 固定审批人弹窗
+            //             this.fixedDialogStatus = true;
+            //         }
+            //         // this.submitInfo("/market/cadvBusiMetirialWo/submitWo", list);
+            //     } else if (this.approvalinfolist.opinionradio == 2) {
+            //         this.cMkAdvMetirialWoInfoSubmit.woSts = "2";
+            //         this.checkexa = false;
+            //         this.fixedDialogStatus = false;
+
+            //         this.submitInfo(
+            //             "/market/cadvBusiMetirialWo/submitWo",
+            //             this.cMkAdvMetirialWoInfoSubmit
+            //         );
+            //     }
+            // } else
+            if (v === 2) {
+                this.approvalStepDialogStatus = false;
+            } else if (v === 3) {
+                //
+            }
+        },
+        submitInfo(u, v) {
+            let _this = this;
+            let loadingInstance = Loading.service()
+            this.$http({
+                url: u,
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: v
+            }).then(res => {
+                loadingInstance.close()
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: "error"
+                    });
+                }
+                if (res.data.result === 2) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: "error"
+                    });
+                } else {
+                    _this.$message({
+                        message: "成功",
+                        type: "success"
+                    });
+                    _this.getList(this.params, this.pageSize);
+                }
+            });
+        },
+        closeMessage(v) {
+            this.centerDialogVisible = false;
+            let _this = this;
+            if (v === 1) {
+                _this
+                    .$http({
+                        url: "/bpm/api/deleteBpmPrePlugin",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json"
+                        },
+                        data: {
+                            id: this.delid
+                        }
+                    })
+                    .then(res => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: "error"
+                            });
+                        } else {
+                            _this.$message({
+                                message: "删除成功",
+                                type: "success"
+                            });
+                            _this.getList(this.params, this.pageSize);
+                        }
+                    });
+            }
+        },
+        //删除
+        delLine(v) {
+            this.centerDialogVisible = true;
+            this.messTit = "即将删除此条数据, 是否删除?";
+            this.delid = v.id;
+        },
+        //文件返回值
+        uploadBack(v) {
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen;
+            }
+        },
+        getUser() {
+            this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+        }
+    },
+    mounted() {
+        if (JSON.stringify(this.$route.query) != "{}") {
+            this.params.woId = this.$route.query.id;
+        }
+        this.getList(this.params, 1);
+        this.getUser();
+        this.getRegion();
+    },
+    watch: {
+        $route() {
+            this.getList(this.params, 1);
+        }
+    },
+    created() {}
+};
+</script>
+<style scoped lang="scss">
+.onetab {
+    margin-bottom: 20px;
+    padding: 0 20px;
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 50%;
+        display: inline-block;
+    }
+
+    span {
+        width: 80px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 100px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+.search{
+    width: 100%;
+    display: unset;
+    margin-top: 20px;
+}
+.search-box{
+    margin-top: 40px;
+    div{
+        width: 20%
+    }
+    .el-form{
+        width: 100%;
+    }
+
+}
+.adv-type {
+    margin-top: 20px;
+    display: flex;
+    justify-content: space-between;
+    flex-wrap: wrap;
+    // border: 1px solid #ddd;
+    border-radius: 5px;
+    padding: 20px;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+    div {
+        width: 33%;
+        text-align: center;
+        height: 80px;
+        overflow: hidden;
+        min-width: 100px;
+        cursor: pointer;
+        padding-top: 10px;
+        margin: 10px 0;
+    }
+    div:hover {
+        background: #cfe8fc;
+        border-radius: 5px;
+    }
+    span {
+        width: 100%;
+        display: inline-block;
+        height: 40px;
+        // line-height: 40px;
+        i {
+            color: #0074d9;
+            font-size: 36px;
+        }
+    }
+}
+.section2 {
+    display: flex;
+    align-items: center;
+    margin: 40px 0;
+    button {
+        margin-bottom: 0 !important;
+    }
+    h3 {
+        margin-right: 40px;
+    }
+}
+.t-footer {
+    text-align: center;
+    padding-right: 20px;
+    margin-top: 20px;
+    padding-bottom: 20px;
+}
+.tree {
+    width: calc(50% - 60px) !important;
+    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>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1354 - 428
src/pages/main/advertising/materialApplicationExa.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1598 - 703
src/pages/main/advertising/materialApplicationadd.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 988 - 575
src/pages/main/advertising/materiel.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 587 - 0
src/pages/main/advertising/subtaskList.vue


+ 159 - 75
src/pages/main/advertising/supplier.vue

@@ -3,8 +3,8 @@
         <div class="container-box">
             <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
             <div class="search">
-                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
-                <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)">添加
+                <!-- <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch> -->
+                <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)" v-if="userInfo.loginNo=='rensiying'">添加
                 </el-button>
             </div>
             <div class="tabbox">
@@ -19,18 +19,21 @@
                     </el-table-column>
                     <el-table-column prop="frameContractNo" label="合同编号">
                     </el-table-column>
- 
 					<el-table-column prop="cost" label="框架总额">
                     </el-table-column>
-					<el-table-column prop="buyTypeName" label="采购类型">
+                    <el-table-column prop="lastCost" label="框架剩余总额">
+                    </el-table-column>
+                    <el-table-column prop="schedule" label="框架总额进度">
 					</el-table-column>
+					<!-- <el-table-column prop="buyTypeName" label="采购类型">
+					</el-table-column> -->
 					<el-table-column prop="contractEndTime" label="截止时间">
 					</el-table-column>
                     <el-table-column label="操作" width="160px" align="center">
                         <template slot-scope="scope">
                             <el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
-                            <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)">修改</el-button>
-                            <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button>
+                            <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)" v-if="userInfo.loginNo=='rensiying'">修改</el-button>
+                            <el-button size="mini" type="danger" @click="delLine(scope.row)" v-if="userInfo.loginNo=='rensiying'">删除</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -41,7 +44,7 @@
         </div>
 
         <el-dialog :title="titname + '供应商'" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
-            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :append-to-body="true" >
             <div v-loading="loadinged">
                 <el-form :model="infolist" ref="infolist" :rules="rules">
 					
@@ -58,6 +61,14 @@
 						    <span>框架总额</span>
 						    <el-input v-model="infolist.cost" placeholder="框架总额" :disabled="disableStatus"></el-input>
 						</el-form-item>
+                        <el-form-item prop="lastCost">
+						    <span>剩余总额</span>
+						    <el-input v-model="infolist.lastCost" placeholder="剩余总额" :disabled="disableStatus"></el-input>
+						</el-form-item>
+                        <el-form-item prop="schedule">
+						    <span>总额进度</span>
+						    <el-input v-model="infolist.schedule" placeholder="总额进度" disabled></el-input>
+						</el-form-item>
 						<el-form-item prop="frameContractName">
 						    <span>合同名称</span>
 						    <el-input v-model="infolist.frameContractName" placeholder="合同名称" :disabled="disableStatus"></el-input>
@@ -68,15 +79,15 @@
 						</el-form-item>
 						<el-form-item prop="contractSignTime">
 						    <span>签订时间</span>
-						    <el-date-picker v-model="infolist.contractSignTime" type="date" placeholder="签订时间">
+						    <el-date-picker v-model="infolist.contractSignTime" type="datetime" placeholder="签订时间" :disabled="disableStatus">
 						    </el-date-picker>
 						</el-form-item>
 						<el-form-item prop="contractEndTime">
 						    <span>截止时间</span>
-						    <el-date-picker v-model="infolist.contractEndTime" type="date" placeholder="截止时间">
+						    <el-date-picker v-model="infolist.contractEndTime" type="datetime" placeholder="截止时间" :disabled="disableStatus">
 						    </el-date-picker>
 						</el-form-item>
-						<el-form-item prop="type">
+						<!-- <el-form-item prop="type">
 						    <span>采购类型</span>
 						    <el-select :disabled="disableStatus" :popper-append-to-body="false"
 						    	v-model="infolist.buyTypeName" placeholder="采购类型">
@@ -84,7 +95,7 @@
 						    		:value="item.name">
 						    	</el-option>
 						    </el-select>
-						</el-form-item>
+						</el-form-item> -->
                     </div>
                 </el-form>
 
@@ -101,15 +112,17 @@
 
 </template>
 <script>
-    import mySearch from "../../../components/search.vue";
+    //import mySearch from "../../../components/search.vue";
     import myMessage from "../../../components/myMessage.vue"
     import toolList from '../../../components/toolList'
+    import { MessageBox } from "element-ui";
 
     export default {
         components: {
-            mySearch,
+            //mySearch,
             myMessage,
-            toolList
+            toolList,
+            MessageBox
         },
         data() {
             const name = (rule, value, callback) => {
@@ -119,20 +132,34 @@
                     callback()
                 }
             }
-            const buyTypeName = (rule, value, callback) => {
-                if (!this.infolist.buyTypeName) {
+            // const buyTypeName = (rule, value, callback) => {
+            //     if (!this.infolist.buyTypeName) {
+            //         callback(new Error('不能为空'))
+            //     } else {
+            //         callback()
+            //     }
+            // }
+			const cost = (rule, value, callback) => {
+                if (!this.infolist.cost) {
                     callback(new Error('不能为空'))
                 } else {
                     callback()
                 }
             }
-			const cost = (rule, value, callback) => {
-                if (!this.infolist.cost) {
+            const lastCost = (rule, value, callback) => {
+                if (!this.infolist.lastCost) {
                     callback(new Error('不能为空'))
                 } else {
                     callback()
                 }
             }
+            // const schedule = (rule, value, callback) => {
+            //     if (!this.infolist.schedule) {
+            //         callback(new Error('不能为空'))
+            //     } else {
+            //         callback()
+            //     }
+            // }
             const frameContractName = (rule, value, callback) => {
                 if (!this.infolist.frameContractName) {
                     callback(new Error('不能为空'))
@@ -147,20 +174,20 @@
                     callback()
                 }
             }
-			const contractSignTime = (rule, value, callback) => {
-                if (!this.infolist.contractSignTime) {
-                    callback(new Error('不能为空'))
-                } else {
-                    callback()
-                }
-            }
-            const contractEndTime = (rule, value, callback) => {
-                if (!this.infolist.contractEndTime) {
-                    callback(new Error('不能为空'))
-                } else {
-                    callback()
-                }
-            }
+			// const contractSignTime = (rule, value, callback) => {
+            //     if (!this.infolist.contractSignTime) {
+            //         callback(new Error('不能为空'))
+            //     } else {
+            //         callback()
+            //     }
+            // }
+            // const contractEndTime = (rule, value, callback) => {
+            //     if (!this.infolist.contractEndTime) {
+            //         callback(new Error('不能为空'))
+            //     } else {
+            //         callback()
+            //     }
+            // }
             return {
                 rules: {
                     name: [{
@@ -173,6 +200,16 @@
                         trigger: 'blur',
                         validator: cost
                     }],
+                    lastCost: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: lastCost
+                    }],
+                    // schedule: [{
+                    //     required: true,
+                    //     trigger: 'blur',
+                    //     validator: schedule
+                    // }],
 					frameContractName: [{
                         required: true,
                         trigger: 'blur',
@@ -186,42 +223,44 @@
 					contractSignTime: [{
                         required: true,
                         trigger: 'change',
-                        validator: contractSignTime
+                        // validator: contractSignTime
+                        message: '不能为空',
                     }],
 					contractEndTime: [{
                         required: true,
                         trigger: 'change',
-                        validator: contractEndTime
-                    }],
-                    buyTypeName: [{
-                        required: true,
-                        trigger: 'change',
-                        validator: buyTypeName
+                        message: '不能为空',
+                        // validator: contractEndTime
                     }],
+                    // buyTypeName: [{
+                    //     required: true,
+                    //     trigger: 'change',
+                    //     validator: buyTypeName
+                    // }],
                 },
-                searchList: [
-                    {
-                        type: 'input',
-                        tit: '供应商名称',
-                        value: '',
-                        width: '48%',
-                    },{
-                        type: 'sel',
-                        tit: '采购类型',
-                        value: '',
-                        width: '48%',
-						options:[
-							{
-								dataCode:'1',
-								dataName:'一采'
-							},
-							{
-								dataCode:'2',
-								dataName:'二采'
-							}
-						]
-                    }
-                ],
+                // searchList: [
+                //     {
+                //         type: 'input',
+                //         tit: '供应商名称',
+                //         value: '',
+                //         width: '48%',
+                //     },{
+                //         type: 'sel',
+                //         tit: '采购类型',
+                //         value: '',
+                //         width: '48%',
+				// 		options:[
+				// 			{
+				// 				dataCode:'1',
+				// 				dataName:'一采'
+				// 			},
+				// 			{
+				// 				dataCode:'2',
+				// 				dataName:'二采'
+				// 			}
+				// 		]
+                //     }
+                // ],
                 tooltit:'供应商管理',
                 fullscreen: false,
                 total: 0,
@@ -257,7 +296,8 @@
 						id:'2',
 						name:'二采'
 					}
-				]
+				],
+                supplierNameOrigin: ""
             }
         },
         methods: {
@@ -265,13 +305,14 @@
                 this.infolist = {};
                 this.dialogStatus = false;
             },
-            //搜索数据
-            searchInfo(v) {
-                this.params = {};
-                v[0] ? this.params.name = v[0] : '';
-                v[1] ? this.params.buyTypeCode = v[1] : '';
-                this.getList(this.params, this.pageSize);
-            },
+            // //搜索数据
+            // searchInfo(v) {
+            //     this.params = {};
+            //     v[0] ? this.params.name = v[0] : '';
+            //     v[1] ? this.params.buyTypeCode = v[1] : '';
+            //     this.getList(this.params, this.pageSize);
+            // },
+            
             //获取列表
             getList(v, n) {
                 this.pageSize = n;
@@ -308,6 +349,8 @@
                 } else if (v === 2) {
                     this.titname = '修改';
                     this.disableStatus = false;
+                    this.supplierNameOrigin = this.infolist.name
+
                 } else if (v === 3) {
                     this.titname = '添加';
                     this.disableStatus = false;
@@ -322,14 +365,44 @@
                     this.dialogStatus = false;
                     return
                 } else {
-					this.infolist.buyTypeCode = this.infolist.buyTypeName == '一采'?'1':'2';
+					// this.infolist.buyTypeCode = this.infolist.buyTypeName == '一采'?'1':'2';
                     this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
                     this.infolist.contractSignTime = this.infolist.contractSignTime?this.$formatDate(this.infolist.contractSignTime, "YYYY-MM-DD"):'';
                     this.infolist.contractEndTime = this.infolist.contractEndTime?this.$formatDate(this.infolist.contractEndTime, "YYYY-MM-DD"):'';
                     if (this.titname === '添加') {
-                        this.submitInfo("/market/cadvSupplier/add");
+                           
+                            let supplierNameArr = this.tableData.filter(item => {
+                                    return item.name == this.infolist.name
+                                });
+                            if(parseFloat(this.infolist.cost) < parseFloat(this.infolist.lastCost)){
+                                MessageBox.alert("框架总额应>=框架剩余总额", "温馨提示", {
+                                    confirmButtonText: "确定"
+                                })
+                            }else if(supplierNameArr.length != 0){
+                                MessageBox.alert("该供应商已存在", "温馨提示", {
+                                    confirmButtonText: "确定"
+                                });
+                            }else{
+                                this.submitInfo("/market/cadvSupplier/add");
+                            }
+                            
+
+                        
                     } else if (this.titname === '修改') {
-                        this.submitInfo("/market/cadvSupplier/update", v);
+                            let supplierNameArr = this.tableData.filter(item => {
+                                    return item.name == this.infolist.name
+                                });
+                            if(parseFloat(this.infolist.cost) < parseFloat(this.infolist.lastCost)){
+                                MessageBox.alert("框架总额应>=框架剩余总额", "温馨提示", {
+                                    confirmButtonText: "确定"
+                                })
+                            }else if(this.supplierNameOrigin != this.infolist.name && supplierNameArr.length != 0){
+                                MessageBox.alert("该供应商已存在", "温馨提示", {
+                                    confirmButtonText: "确定"
+                                });
+                            }else{
+                                this.submitInfo("/market/cadvSupplier/update", v);
+                            }
                     }
                 }
             },
@@ -352,7 +425,12 @@
                                     message: res.data.desc,
                                     type: 'error'
                                 });
-                            } else {
+                            } else if(res.data.result === -1){
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'fail'
+                                });
+                            }else {
                                 _this.$message({
                                     message: '成功',
                                     type: 'success'
@@ -403,7 +481,6 @@
             },
             //文件返回值
             uploadBack(v) {
-                console.log(v)
             },
             //功能栏
             iconCli(v) {
@@ -498,4 +575,11 @@
             width: calc(100% - 100px);
         }
     }
+    .container .search{
+        justify-content: flex-end
+    }
+    .myfooter{
+        display: flex;
+        justify-content: flex-end;
+    }
 </style>

+ 14 - 7
src/pages/main/budget/budgetIndex.vue

@@ -52,13 +52,13 @@
 						sts:0,
 						num:0
 					},
-					{
-						label: "预算回复",
-						path: "/recallAdmin",
-						name: "recallAdmin",
-						sts:0,
-						num:0
-					},
+					// {
+					// 	label: "预算回复",
+					// 	path: "/recallAdmin",
+					// 	name: "recallAdmin",
+					// 	sts:0,
+					// 	num:0
+					// },
 					{
 						label: "预算模板管理",
 						path: "/budgetList",
@@ -66,6 +66,13 @@
 						sts:0,
 						num:0
 					},
+                    {
+                        label: "下发管理",
+                        path: "/issueList",
+                        name: "issueList",
+                        sts:0,
+                        num:0
+                    },
 				],
 			};
 		},

+ 16 - 3
src/pages/main/budget/budgetList.vue

@@ -213,10 +213,10 @@
             v-model="formData.requiredTime"
             type="datetime"
             placeholder="选择反馈时间"
-            value-format="YYYY-MM-DD"
-          >
+            value-format="yyyy-MM-01 HH:mm:ss">
           </el-date-picker>
         </el-form-item>
+
         <el-form-item label="接收人" prop="sendNoArr">
           <el-select
             placeholder="选择接收人"
@@ -234,6 +234,17 @@
             </el-option>
           </el-select>
         </el-form-item>
+
+          <el-form-item label="需要回复" prop="needReply">
+              <el-select
+                  style="width: 100% !important"
+                  v-model="formData.needReply"
+                  placeholder="请选择是否需要回复">
+                  <el-option label="是" value="是"> </el-option>
+                  <el-option label="否" value="否"> </el-option>
+              </el-select>
+          </el-form-item>
+
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="resetUser('ruleForm')">取 消</el-button>
@@ -267,6 +278,7 @@ export default {
         sendYear: "",
         sendMonth: "",
         sendQuarter: "",
+        needReply: "是",
       },
       rules: {
         woTitle: [
@@ -430,6 +442,7 @@ export default {
             woDesc: this.formData.woDesc,
             requiredTime: this.formData.requiredTime,
             sendNoArr: JSON.stringify(sendNoArr),
+            needReply: this.formData.needReply,
             preTempId: this.preTempId,
             sendYear: this.typeFlag == "1" ? "" : this.formData.sendYear,
             sendMonth: this.formData.sendMonth,
@@ -449,7 +462,7 @@ export default {
                 ? "1003"
                 : "",
           };
-          console.log(data);
+          // console.log(data);
           this.$http({
             url: "/market/pre/pub",
             method: "post",

+ 319 - 0
src/pages/main/budget/issueList.vue

@@ -0,0 +1,319 @@
+<template>
+    <!-- <div style="height: 95%"> -->
+    <div class="container" style="margin: 15px 0 0 0">
+        <fullscreen
+            :fullscreen.sync="fullscreen"
+            class="container-box"
+            style="margin: 0 !important; padding: 0 !important"
+        >
+            <div class="titbox">
+                <h2>下发管理</h2>
+                <div>
+                    <i class="el-icon-refresh" @click="iconCli(1)"></i>
+                    <i class="el-icon-full-screen" @click="iconCli(2)"></i>
+                </div>
+            </div>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+            </div>
+
+            <div class="tabbox">
+                <el-table
+                    height="calc(100% - 40px)"
+                    v-loading="loading"
+                    class="com-table"
+                    ref="multipleTable"
+                    :data="tableData"
+                    tooltip-effect="dark"
+                    size="small"
+                    border
+                    style="width: 100%"
+                >
+                    <el-table-column align="center" prop="preTempName" show-overflow-tooltip
+                                     label="模板名称"></el-table-column>
+                    <el-table-column align="center" prop="woTitle" show-overflow-tooltip label="标题"></el-table-column>
+                    <el-table-column align="center" prop="sendName" show-overflow-tooltip label="派发人"></el-table-column>
+                    <el-table-column align="center" prop="requiredTime" show-overflow-tooltip
+                                     label="反馈时间"></el-table-column>
+                    <el-table-column align="center" prop="needReply" show-overflow-tooltip
+                                     label="是否需要回复"></el-table-column>
+                    <el-table-column align="center" prop="hotline" width="200" label="操作">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" plain
+                                       @click="detailes(scope.row)">查看
+                            </el-button>
+                            <el-button size="mini" type="danger" plain
+                                       v-show="scope.row.sts != '3' && scope.row.isNew == '1' && scope.row.needReply == '是'"
+                                       @click="discontinue(scope.row)">中止
+                            </el-button>
+                            <el-button size="mini" type="primary" plain
+                                       v-show="scope.row.isNew == '1' && scope.row.needReply == '是' && scope.row.sts != '3'"
+                                       @click="updatesDialog(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>
+            <myMessage
+                :messTit="messTit"
+                @closeMessage="closeMessage"
+                :centerDialogVisible="centerDialogVisible"
+                v-if="centerDialogVisible"
+            ></myMessage>
+        </fullscreen>
+        <el-dialog
+            title="修改"
+            :visible.sync="dialogStatus"
+            width="50%"
+            :close-on-press-escape="false"
+            :show-close="false"
+            :destroy-on-close="true"
+            :modal-append-to-body="false"
+            :close-on-click-modal="false"
+        >
+            <el-form ref="issueForm" :rules="rules" :model="infolist" label-width="80px">
+                <el-form-item label="反馈时间" prop="requiredTime">
+                    <el-date-picker
+                        style="width: 100%"
+                        v-model="infolist.requiredTime"
+                        type="datetime"
+                        placeholder="选择反馈时间"
+                        value-format="yyyy-MM-01 HH:mm:ss">
+                    </el-date-picker>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="resetForm('issueForm')">取 消</el-button>
+                <el-button @click="updates('issueForm')">确 定</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import mySearch from "../../../components/search";
+import myMessage from "../../../components/myMessage.vue";
+
+export default {
+    components: {
+        mySearch,
+        myMessage,
+    },
+    data() {
+        return {
+            infolist:{
+                woNo: "",
+                requiredTime: "",
+            },
+            centerDialogVisible: false,
+            messTit: "",
+            dialogStatus: false,
+            rules: {
+                requiredTime: [
+                    {
+                        required: true,
+                        message: "请选择反馈时间",
+                        trigger: 'blur',
+                    },
+                ],
+            },
+            headers: {
+                agileauthtoken: sessionStorage.agileauthtoken.replace(/"/g, ""),
+            },
+            fullscreen: false,
+            total: 0,
+            pageSize: 1,
+            tableData: [],
+            searchList: [
+                {
+                    type: "input",
+                    tit: "模板名称",
+                    value: "",
+                    width: "100%",
+                    options: [],
+                },
+            ],
+            params: {
+                preTempName: "",
+            },
+            loading: false,
+        };
+    },
+    methods: {
+        detailes(val) {
+            if (val.needReply == '是') {
+                this.$router.push("/recallAdmin?status=see&id=" + val.woNo + "");
+            } else {
+                this.$router.push("/noRecallAdmin?status=see&id=" + val.woNo + "");
+            }
+        },
+        updates(formName) {
+            this.$refs[formName].validate((valid) => {
+                if (valid) {
+                    let data = this.infolist;
+                    this.$http({
+                        url: "/market/preWo/updates",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: data,
+                    }).then((res) => {
+                        if (res.data.result == 0) {
+                            this.$message({
+                                type: "success",
+                                message: "修改成功",
+                            });
+                        } else {
+                            this.$message({
+                                type: "error",
+                                message: res.data.desc,
+                            });
+                        }
+                        this.resetForm(formName);
+                        this.closeDialog();
+                        this.getList(this.params, this.pageSize);
+                    });
+                }
+            });
+        },
+        // 取消提交
+        resetForm(formName) {
+            //this.$refs[formName].resetFields();
+            this.woNo = "";
+            this.requiredTime = "";
+            this.closeDialog();
+        },
+        showDialog() {
+            this.dialogStatus = true;
+        },
+        closeDialog() {
+            this.dialogStatus = false;
+        },
+        updatesDialog(val) {
+            this.infolist.woNo = val.woNo;
+            this.infolist.requiredTime = val.requiredTime;
+            this.showDialog();
+        },
+        discontinue(val) {
+            this.centerDialogVisible = true;
+            this.messTit = "中止后将不能修改回复,是否确定中止?";
+            this.infolist.woNo = val.woNo;
+        },
+        closeMessage(v) {
+            this.centerDialogVisible = false;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/preWo/discontinue",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {woNo: this.infolist.woNo},
+                }).then((res) => {
+                    if (res.data.result == "0") {
+                        this.$message({message: "中止成功", type: "success"});
+                        this.getList(this.params, this.pageSize);
+                    } else {
+                        this.$message({message: res.data.desc, type: 'error'});
+                    }
+                });
+            }
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? (this.params.preTempName = v[0]) : "";
+            this.getList(this.params, this.pageSize);
+        },
+        //获取列表
+        getList(v, n) {
+            this.loading = true;
+            this.pageSize = n;
+            this.$http({
+                url: "/market/preWo/querySMkPreWoPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}',
+                },
+                data: v,
+            }).then((res) => {
+                this.loading = false;
+                this.tableData = res.data.data;
+                this.total = res.data.totalRecord;
+            });
+        },
+        //功能栏
+        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);
+        },
+
+    },
+    mounted() {
+        this.getList(this.params, this.pageSize);
+    },
+    watch: {
+        $route() {
+            this.getList(this.params, this.pageSize);
+        },
+    },
+};
+</script>
+<style scoped>
+.el-upload-list {
+    float: right;
+}
+
+.el-input__suffix {
+    cursor: pointer;
+}
+
+.container .el-upload {
+    width: auto !important;
+}
+</style>
+<style scoped lang="scss">
+.btn-default {
+    display: inline;
+    margin-left: 10px;
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+</style>

+ 274 - 0
src/pages/main/budget/noRecall.vue

@@ -0,0 +1,274 @@
+<template>
+  <div class="container">
+    <fullscreen :fullscreen.sync="fullscreen" class="container-box" style="margin: 0;padding: 0;">
+      <div class="titbox">
+        <h2>部门预算回复</h2>
+        <div>
+          <i class="el-icon-refresh" @click="iconCli(1)"></i>
+          <i class="el-icon-full-screen" @click="iconCli(2)"></i>
+          <!--                    <i class="el-icon-folder-opened"></i>-->
+          <!--                    <i class="el-icon-view"></i>-->
+          <!--                    <i class="el-icon-more"></i>-->
+        </div>
+      </div>
+      <div class="search">
+<!--        <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>-->
+      </div>
+
+      <div class="tabbox">
+        <el-table
+          height="calc(100% - 40px)"
+          v-loading="loading"
+          class="com-table"
+          ref="multipleTable"
+          :data="tableData"
+          tooltip-effect="dark"
+          size="small"
+          border
+          style="width: 100%"
+        >
+          <el-table-column
+            align="center"
+            prop="preTempName"
+            label="预算模板名称"
+            show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="taskName"
+            show-overflow-tooltip
+            label="预算标题"
+          >
+          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="sendTime"-->
+<!--            show-overflow-tooltip-->
+<!--            label="派发时间"-->
+<!--          >-->
+<!--          </el-table-column>-->
+          <el-table-column
+            align="center"
+            prop="sendName"
+            show-overflow-tooltip
+            label="派发人"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="receiveName"
+            show-overflow-tooltip
+            label="接收人"
+          >
+          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="requiredTime"-->
+<!--            show-overflow-tooltip-->
+<!--            label="要求回复时间"-->
+<!--          >-->
+<!--          </el-table-column>-->
+          <el-table-column
+            align="center"
+            show-overflow-tooltip
+            label="任务状态"
+          >
+              已发送
+          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="backTime"-->
+<!--            show-overflow-tooltip-->
+<!--            label="回复时间"-->
+<!--          >-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="overTimeDesc"-->
+<!--            show-overflow-tooltip-->
+<!--            label="是否超时回复"-->
+<!--          >-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            width="120"-->
+<!--            prop="sts"-->
+<!--            label="开启编辑"-->
+<!--          >-->
+<!--            <template slot-scope="scope">-->
+<!--              <el-switch-->
+<!--                @click.native="chenck(scope.row.taskId, scope.row.sts)"-->
+<!--                v-model="scope.row.sts"-->
+<!--                active-text="开"-->
+<!--                inactive-text="关"-->
+<!--                active-value="0"-->
+<!--                inactive-value="1"-->
+<!--              >-->
+<!--              </el-switch>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
+        </el-table>
+        <el-pagination
+          class="pageBox"
+          @current-change="currchange"
+          layout="prev, pager, next"
+          background
+          :total="total"
+        >
+        </el-pagination>
+      </div>
+    </fullscreen>
+  </div>
+</template>
+<script>
+// import mySearch from "../../../components/search";
+
+export default {
+  components: {
+    // mySearch,
+  },
+  data() {
+    return {
+      loginNo: JSON.parse(sessionStorage.userInfo).loginNo,
+      fullscreen: false,
+      total: 0,
+      pageSize: 1,
+      tableData: [],
+      // searchList: [
+      //   {
+      //     type: "input",
+      //     tit: "预算名称",
+      //     value: "",
+      //     width: "100%",
+      //     options: [],
+      //   },
+      //   {
+      //     type: "sel",
+      //     tit: "回复状态",
+      //     value: "",
+      //     width: "100%",
+      //     options: [
+      //       { dataCode: "0", dataName: "未回复" },
+      //       { dataCode: "1", dataName: "已回复" },
+      //     ],
+      //   },
+      // ],
+      params: {
+        taskName: "",
+        sts: "",
+      },
+      loading: false,
+      // fileList: [],
+      // fileName: "",
+    };
+  },
+  methods: {
+    chenck(id, sts) {
+      this.$http({
+        url: "/market/preTask/openOrClose",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: { taskId: id, sts: sts },
+      }).then((res) => {
+        if (res.data.result == 0) {
+          this.$message({
+            message: "操作成功",
+            type: "success",
+          });
+          this.getList(this.params, this.pageSize);
+        }
+      });
+    },
+    // //搜索数据
+    // searchInfo(v) {
+    //   this.params = {};
+    //   v[0] ? (this.params.taskName = v[0]) : "";
+    //   v[1] ? (this.params.sts = v[1]) : "";
+    //   this.getList(this.params, this.pageSize);
+    // },
+    //获取列表
+    getList(v, n) {
+      this.loading = true;
+      this.pageSize = n;
+      this.$http({
+        url: "/market/preTask/queryCMkPreTaskPage",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+          page: '{"pageNo":"' + n + '","pageSize":"10"}',
+        },
+        data: v,
+      }).then((res) => {
+        this.loading = false;
+        this.tableData = res.data.data;
+        this.total = res.data.totalRecord;
+      });
+    },
+    //功能栏
+    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);
+    },
+  },
+  mounted() {
+    if (JSON.stringify(this.$route.query) != "{}") {
+      this.params.woNo = this.$route.query.id;
+    }
+    this.getList(this.params, this.pageSize);
+  },
+  watch: {
+    $route() {
+      this.getList(this.params, this.pageSize);
+    },
+  },
+};
+</script>
+<style scoped>
+.el-upload-list {
+  float: right;
+}
+.el-input__suffix {
+  cursor: pointer;
+}
+.container .el-upload {
+  width: auto !important;
+}
+</style>
+<style scoped lang="scss">
+.btn-default {
+  display: inline;
+  margin-left: 10px;
+}
+.titbox {
+  div {
+    float: right;
+
+    i {
+      font-size: 22px;
+      margin-left: 20px;
+      cursor: pointer;
+    }
+  }
+}
+
+.tabbox {
+  margin-top: 15px;
+}
+
+.pageBox {
+  text-align: right;
+  margin-top: 10px;
+}
+</style>

+ 35 - 33
src/pages/main/budget/recall.vue

@@ -38,16 +38,16 @@
             align="center"
             prop="taskName"
             show-overflow-tooltip
-            label="工单标题"
-          >
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="sendTime"
-            show-overflow-tooltip
-            label="派发时间"
+            label="预算标题"
           >
           </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="sendTime"-->
+<!--            show-overflow-tooltip-->
+<!--            label="派发时间"-->
+<!--          >-->
+<!--          </el-table-column>-->
           <el-table-column
             align="center"
             prop="sendName"
@@ -62,13 +62,13 @@
             label="接收人"
           >
           </el-table-column>
-          <el-table-column
-            align="center"
-            prop="requiredTime"
-            show-overflow-tooltip
-            label="要求回复时间"
-          >
-          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="requiredTime"-->
+<!--            show-overflow-tooltip-->
+<!--            label="要求回复时间"-->
+<!--          >-->
+<!--          </el-table-column>-->
           <el-table-column
             align="center"
             prop="stsDesc"
@@ -83,13 +83,13 @@
             label="回复时间"
           >
           </el-table-column>
-          <el-table-column
-            align="center"
-            prop="overTimeDesc"
-            show-overflow-tooltip
-            label="是否超时回复"
-          >
-          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="overTimeDesc"-->
+<!--            show-overflow-tooltip-->
+<!--            label="是否超时回复"-->
+<!--          >-->
+<!--          </el-table-column>-->
           <el-table-column
             align="center"
             width="120"
@@ -136,13 +136,13 @@ export default {
       pageSize: 1,
       tableData: [],
       searchList: [
-        {
-          type: "input",
-          tit: "预算名称",
-          value: "",
-          width: "100%",
-          options: [],
-        },
+        // {
+        //   type: "input",
+        //   tit: "预算名称",
+        //   value: "",
+        //   width: "100%",
+        //   options: [],
+        // },
         {
           type: "sel",
           tit: "回复状态",
@@ -155,7 +155,8 @@ export default {
         },
       ],
       params: {
-        taskName: "",
+        // taskName: "",
+        woNo:"",
         sts: "",
       },
       loading: false,
@@ -184,9 +185,10 @@ export default {
     },
     //搜索数据
     searchInfo(v) {
-      this.params = {};
-      v[0] ? (this.params.taskName = v[0]) : "";
-      v[1] ? (this.params.sts = v[1]) : "";
+      // this.params = {};
+      // v[0] ? (this.params.woNo = v[0]) : "";
+      // v[1] ? (this.params.sts = v[1]) : "";
+        v[0] ? (this.params.sts = v[0]) : "";
       this.getList(this.params, this.pageSize);
     },
     //获取列表

+ 75 - 3
src/pages/main/cooOperation/index.vue

@@ -143,6 +143,7 @@
 					</el-button>
 					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">打 回
 					</el-button>
+                    <el-button v-if="titname == '添加'" type="primary" @click="temp">保 存</el-button>
 					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
 					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
@@ -280,9 +281,53 @@
                 closeList: false,
                 visionchonly: false,
                 depttype: 0,
+                tempSave: false,
 			}
 		},
+        watch:{
+            tempSave (value) {
+                if (value) {
+                    // 监听编辑状态,每20秒请求一次,注意函数不加()
+                    this.timer = window.setInterval(this.temp, 20000)
+                } else {
+                    // 停止监听
+                    clearInterval(this.timer)
+                }
+            }
+        },
 		methods: {
+            temp() {
+                if (JSON.stringify(this.infolist)=='{}') {
+                    return;
+                }
+                let params = {};
+                params.infolist = this.infolist
+                params.fileList = [];
+                params.attList = [];
+                this.attList.forEach(item => {
+                    let file = {
+                        id: item.fileCode,
+                        fileCode: item.fileCode,
+                        fileName: item.fileName,
+                        name: item.fileName
+                    };
+                    params.fileList.push(file);
+                    params.attList.push(file);
+                });
+                this.$http({
+                    url: "/market/bpmTemp/temp",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        bpmType: "5",
+                        content: JSON.stringify(params),
+                    },
+                }).then((res) => {
+                    //console.log(res)
+                });
+            },
             deletes() {
             	this.treeListonly = {};
             	this.closeList = !this.closeList;
@@ -344,9 +389,23 @@
 					this.titname = '审批';
 					this.disableStatus = true;
 				} else if (v === 3) {
-					this.titname = '添加';
-					this.disableStatus = false;
-					return
+                    this.$http({
+                        url: '/market/bpmTemp/query',
+                        method: "post",
+                        headers: {"Content-Type": "application/json",},
+                        data: {bpmType: "5"},
+                    }).then((res) => {
+                        if (res.data) {
+                            let content = JSON.parse(res.data.content);
+                            this.infolist = content.infolist;
+                            this.attList = content.attList;
+                            this.fileInfo.fileList =  content.fileList;
+                        }
+                        this.tempSave = true;
+                        this.titname = '添加';
+                        this.disableStatus = false;
+                    });
+                    return
 				}
 				this.$http({
 					url: '/bpm/api/taskInit',
@@ -492,6 +551,19 @@
 							});
 						}
 						param.params.attList = JSON.stringify(attList)
+
+                        this.$http({
+                            url: "/market/bpmTemp/del",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: {
+                                bpmType: "5",
+                            },
+                        }).then((res) => {
+                            //console.log(res)
+                        });
 					}
 					this.submitInfo("/bpm/api/submitTask", param);
 				}

+ 6 - 2
src/pages/main/demandCollection/index.vue

@@ -638,6 +638,7 @@
                 };
                 this.infodata = [{}];
                 this.dialogStatus = false;
+                this.dialogStatusadd = false;
             },
             //获取列表
             getList(v, n) {
@@ -682,13 +683,16 @@
             },
             //申请
             dialogCheck(v, n) {
-                this.appBtnSts=n.appBtnSts;
+                console.log(n);
+                if(n != undefined){
+                    this.appBtnSts=n.appBtnSts;
+                }
                 this.stsdown=v;
                 let url = '/market/cWorkDemand/queryDemandDetailList';
                 let params = {}
                 if (v != 3) {
                     params = {
-                        demandId: n.id
+                        id: n.id
                     }
                 }
                 if (v === 1) {

+ 77 - 4
src/pages/main/demandDevelop/index.vue

@@ -179,6 +179,7 @@
 					</el-button>
 					<el-button v-if="titname != '查看' && visionsts == '2'" type="primary" @click="dialogCli(1)">打 回
 					</el-button>
+                    <el-button v-if="titname == '添加'" type="primary" @click="temp">保 存</el-button>
 					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
 					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
@@ -337,9 +338,53 @@
 				    url: '/market/cChannelDemand/demandCarryImport',
 				    fileList: []
 				},
+                tempSave: false,
 			}
 		},
+        watch:{
+            tempSave (value) {
+                if (value) {
+                    // 监听编辑状态,每20秒请求一次,注意函数不加()
+                    this.timer = window.setInterval(this.temp, 20000)
+                } else {
+                    // 停止监听
+                    clearInterval(this.timer)
+                }
+            }
+        },
 		methods: {
+		    temp() {
+                if (JSON.stringify(this.infolist)=='{}') {
+                    return;
+                }
+                let params = {};
+                params.infolist = this.infolist
+                params.fileList = [];
+                params.attList = [];
+                this.attList.forEach(item => {
+                    let file = {
+                        id: item.fileCode,
+                        fileCode: item.fileCode,
+                        fileName: item.fileName,
+                        name: item.fileName
+                    };
+                    params.fileList.push(file);
+                    params.attList.push(file);
+                });
+                this.$http({
+                    url: "/market/bpmTemp/temp",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        bpmType: "1",
+                        content: JSON.stringify(params),
+                    },
+                }).then((res) => {
+                    //console.log(res)
+                });
+            },
 			deletes() {
 				this.treeListonly = {};
 				this.closeList = !this.closeList;
@@ -400,9 +445,23 @@
 					this.titname = '审批';
 					this.disableStatus = true;
 				} else if (v === 3) {
-					this.titname = '添加';
-					this.visionchonly = false;
-					this.disableStatus = false;
+                    this.$http({
+                        url: '/market/bpmTemp/query',
+                        method: "post",
+                        headers: {"Content-Type": "application/json",},
+                        data: {bpmType: "1"},
+                    }).then((res) => {
+                        if (res.data) {
+                            let content = JSON.parse(res.data.content);
+                            this.infolist = content.infolist;
+                            this.attList = content.attList;
+                            this.fileInfo.fileList =  content.fileList;
+                        }
+                        this.tempSave = true;
+                        this.titname = '添加';
+                        this.visionchonly = false;
+                        this.disableStatus = false;
+                    });
 					return
 				}
 				this.$http({
@@ -517,6 +576,7 @@
 					this.attList = [];
 					this.fileInfo.fileList = [];
                     this.checkexa = false;
+                    this.tempSave = false;
 					return
 				}
 				let _this = this;
@@ -613,7 +673,20 @@
 									attchFileId: this.attList[i].attchFileId,
 								});
 							}
-							param.params.attList = JSON.stringify(attList)
+							param.params.attList = JSON.stringify(attList);
+
+                            this.$http({
+                                url: "/market/bpmTemp/del",
+                                method: "post",
+                                headers: {
+                                    "Content-Type": "application/json",
+                                },
+                                data: {
+                                    bpmType: "1",
+                                },
+                            }).then((res) => {
+                                //console.log(res)
+                            });
 						}
 						this.submitInfo("/bpm/api/submitTask", param);
 					}

+ 75 - 3
src/pages/main/development/index.vue

@@ -149,6 +149,7 @@
 				<div slot="footer" class="dialog-footer myfooter">
 					<el-button v-if="titname != '查看' && vision == '记录开发信息'" type="primary" @click="dialogCli(2)">确 定
 					</el-button>
+                    <el-button v-if="titname == '添加'" type="primary" @click="temp">保 存</el-button>
 					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
 					<el-button v-if="vision == '结束'||titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
@@ -287,9 +288,53 @@
                 closeList: false,
                 visionchonly: false,
                 depttype: 0,
+                tempSave: false,
 			}
 		},
+        watch:{
+            tempSave (value) {
+                if (value) {
+                    // 监听编辑状态,每20秒请求一次,注意函数不加()
+                    this.timer = window.setInterval(this.temp, 20000)
+                } else {
+                    // 停止监听
+                    clearInterval(this.timer)
+                }
+            }
+        },
 		methods: {
+            temp() {
+                if (JSON.stringify(this.infolist)=='{}') {
+                    return;
+                }
+                let params = {};
+                params.infolist = this.infolist
+                params.fileList = [];
+                params.attList = [];
+                this.attList.forEach(item => {
+                    let file = {
+                        id: item.fileCode,
+                        fileCode: item.fileCode,
+                        fileName: item.fileName,
+                        name: item.fileName
+                    };
+                    params.fileList.push(file);
+                    params.attList.push(file);
+                });
+                this.$http({
+                    url: "/market/bpmTemp/temp",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        bpmType: "4",
+                        content: JSON.stringify(params),
+                    },
+                }).then((res) => {
+                    //console.log(res)
+                });
+            },
             deletes() {
             	this.treeListonly = {};
             	this.closeList = !this.closeList;
@@ -344,9 +389,23 @@
 					this.titname = '审批';
 					this.disableStatus = true;
 				} else if (v === 3) {
-					this.titname = '添加';
-					this.disableStatus = false;
-					return
+                    this.$http({
+                        url: '/market/bpmTemp/query',
+                        method: "post",
+                        headers: {"Content-Type": "application/json",},
+                        data: {bpmType: "4"},
+                    }).then((res) => {
+                        if (res.data) {
+                            let content = JSON.parse(res.data.content);
+                            this.infolist = content.infolist;
+                            this.attList = content.attList;
+                            this.fileInfo.fileList =  content.fileList;
+                        }
+                        this.tempSave = true;
+                        this.titname = '添加';
+                        this.disableStatus = false;
+                    });
+                    return
 				}
 				this.$http({
 					url: '/bpm/api/taskInit',
@@ -480,6 +539,19 @@
 							});
 						}
 						param.params.attList = JSON.stringify(attList)
+
+                        this.$http({
+                            url: "/market/bpmTemp/del",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: {
+                                bpmType: "4",
+                            },
+                        }).then((res) => {
+                            //console.log(res)
+                        });
 					}
 					this.submitInfo("/bpm/api/submitTask", param);
 				}

+ 19 - 13
src/pages/main/ecClubWork/index.vue

@@ -3,7 +3,9 @@
 	<fullscreen :fullscreen.sync="fullscreen" class="container">
 		<div class="container-box">
 			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
-			<div style="overflow: hidden;margin: 10px 0;" v-if="exa">
+			<!-- 以前的'添加'按钮权限 -->
+			<!-- <div style="overflow: hidden;margin: 10px 0;" v-if="exa"> -->
+			<div style="overflow: hidden;margin: 10px 0;" v-if="userInfo.loginNoStr == 'zhangyuchen'">
 				<el-button class="btn-check" style="float: right;" size="medium" type="primary" @click="dialogCheck(2)">
 					添加
 				</el-button>
@@ -66,7 +68,7 @@
 				delid: '',
 				loading: false,
 				loadinged: false,
-				exa: false
+				// exa: false
 			}
 		},
 		methods: {
@@ -136,18 +138,22 @@
 					this.fullscreen = !this.fullscreen
 				}
 			},
-			ctrlbtn() {
-				let menus = JSON.parse(window.sessionStorage.childrenMenus);
-				for (let i = 0; i < menus.length; i++) {
-					if (menus[i].jspUrl === '/ecClubWorkexa' && menus[i].systemflag === '1') {
-						this.exa = true;
-						return
-					}
-				}
-			},
+			//以前的'添加'按钮权限
+			// ctrlbtn() {
+				
+			// 	let menus = JSON.parse(window.sessionStorage.childrenMenus);
+			// 	for (let i = 0; i < menus.length; i++) {
+			// 		if (menus[i].jspUrl === '/ecClubWorkexa' && menus[i].systemflag === '1') {
+			// 			this.exa = true;
+			// 			return
+			// 		}
+			// 	}
+			// },
 			getUser() {
-				let menus = JSON.parse(window.sessionStorage.menus);
-				this.ctrlbtn(menus);
+				//以前的'添加'按钮权限
+				// let menus = JSON.parse(window.sessionStorage.menus);
+				// this.ctrlbtn(menus);
+
 				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
 				this.infolist = {
 					opNo: '',

+ 76 - 4
src/pages/main/introduce/index.vue

@@ -158,6 +158,7 @@
 					</el-button>
 					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">驳 回
 					</el-button>
+                    <el-button v-if="titname == '添加'" type="primary" @click="temp">保 存</el-button>
 					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
 					<el-button v-if="vision == '结束'||titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
@@ -284,10 +285,53 @@
                 closeList: false,
                 visionchonly: false,
                 depttype: 0,
-
+                tempSave: false,
 			}
 		},
+        watch:{
+            tempSave (value) {
+                if (value) {
+                    // 监听编辑状态,每20秒请求一次,注意函数不加()
+                    this.timer = window.setInterval(this.temp, 20000)
+                } else {
+                    // 停止监听
+                    clearInterval(this.timer)
+                }
+            }
+        },
 		methods: {
+            temp() {
+                if (JSON.stringify(this.infolist)=='{}') {
+                    return;
+                }
+                let params = {};
+                params.infolist = this.infolist
+                params.fileList = [];
+                params.attList = [];
+                this.attList.forEach(item => {
+                    let file = {
+                        id: item.fileCode,
+                        fileCode: item.fileCode,
+                        fileName: item.fileName,
+                        name: item.fileName
+                    };
+                    params.fileList.push(file);
+                    params.attList.push(file);
+                });
+                this.$http({
+                    url: "/market/bpmTemp/temp",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        bpmType: "3",
+                        content: JSON.stringify(params),
+                    },
+                }).then((res) => {
+                    //console.log(res)
+                });
+            },
             deletes() {
             	this.treeListonly = {};
             	this.closeList = !this.closeList;
@@ -343,9 +387,23 @@
 					this.titname = '审批';
 					this.disableStatus = true;
 				} else if (v === 3) {
-					this.titname = '添加';
-					this.disableStatus = false;
-					return
+                    this.$http({
+                        url: '/market/bpmTemp/query',
+                        method: "post",
+                        headers: {"Content-Type": "application/json",},
+                        data: {bpmType: "3"},
+                    }).then((res) => {
+                        if (res.data) {
+                            let content = JSON.parse(res.data.content);
+                            this.infolist = content.infolist;
+                            this.attList = content.attList;
+                            this.fileInfo.fileList =  content.fileList;
+                        }
+                        this.tempSave = true;
+                        this.titname = '添加';
+                        this.disableStatus = false;
+                    });
+                    return
 				}
 				this.$http({
 					url: '/bpm/api/taskInit',
@@ -427,6 +485,7 @@
 					this.attList = [];
 					this.fileInfo.fileList = [];
                     this.checkexa = false;
+                    this.tempSave = false;
 					return
 				}
 				let _this = this;
@@ -502,6 +561,19 @@
 							});
 						}
 						param.params.attList = JSON.stringify(attList)
+
+                        this.$http({
+                            url: "/market/bpmTemp/del",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: {
+                                bpmType: "3",
+                            },
+                        }).then((res) => {
+                            //console.log(res)
+                        });
 					}
 					this.submitInfo("/bpm/api/submitTask", param);
 				}

+ 254 - 0
src/pages/main/knowledgetop/addKnowledge.vue

@@ -0,0 +1,254 @@
+<template>
+  <fullscreen class="mc-container">
+    <div class="container-box">
+      <h2>新增知识库</h2>
+      <el-row :gutter="20" style="margin-top: 15px">
+        <el-col :span="24"
+          ><el-form
+            :model="formData"
+            :rules="rules"
+            ref="ruleForm"
+            label-width="50px"
+            class="demo-ruleForm"
+          >
+            <el-col :span="10">
+              <el-form-item label="标题" prop="title">
+                <el-input
+                  v-model="formData.title"
+                  placeholder="请输入标题"
+                ></el-input>
+              </el-form-item>
+              <el-form-item prop="pubType" label="类型">
+                <el-select
+                  style="width: 100%"
+                  :popper-append-to-body="false"
+                  v-model="formData.pubType"
+                  placeholder="发布类型"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in knowledgeType"
+                    :key="item.id"
+                    :label="item.pubType"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="目录" prop="catalogDesc">
+                <div style="display: flex">
+                  <el-input
+                    v-model="formData.catalogDesc"
+                    readonly
+                    placeholder="请选择目录"
+                  ></el-input>
+                  <el-button @click="selectCatalogs">选择</el-button>
+                </div>
+              </el-form-item>
+              <el-form-item label="附件" prop="catalog">
+                <myUpload
+                  @uploadBack="uploadBack"
+                  :fileInfo="fileInfo"
+                  :fileList="fileInfo.fileList"
+                >
+                </myUpload>
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="submitForm('ruleForm')"
+                  >立即创建</el-button
+                >
+                <el-button @click="resetForm('ruleForm')">取消</el-button>
+              </el-form-item>
+            </el-col>
+            <el-col :span="14">
+              <el-form-item label="内容" prop="content">
+                <p-editor-tiny
+                  imgType="upload"
+                  v-model="formData.content"
+                ></p-editor-tiny
+              ></el-form-item>
+            </el-col> </el-form
+        ></el-col>
+      </el-row>
+    </div>
+    <el-dialog
+      title="目录树"
+      :visible.sync="catalogDialogVisible"
+      width="45%"
+      :modal-append-to-body="false"
+    >
+      <el-tree
+        class="filter-tree"
+        :data="treeData"
+        node-key="catalog"
+        :props="defaultProps"
+        default-expand-all
+        :filter-node-method="filterNode"
+        @node-click="nodeClick"
+        ref="tree"
+      >
+      </el-tree>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="clearCatalog">取 消</el-button>
+        <el-button type="primary" @click="trueCatalog">确 定</el-button>
+      </span>
+    </el-dialog>
+  </fullscreen>
+</template><script>
+import myUpload from "../../../components/upload";
+export default {
+  data() {
+    return {
+      catalogDialogVisible: false,
+      departmentDialogVisible: false,
+      formData: {
+        title: "",
+        catalog: "",
+        catalogDesc: "",
+        content: "",
+        pubType: "",
+      },
+      rules: {
+        title: [{ required: true, message: "请输入标题", trigger: "blur" }],
+        catalogDesc: [
+          { required: true, message: "请选择目录", trigger: "change" },
+        ],
+        pubType: [{ required: true, message: "请选择类型", trigger: "change" }],
+        content: [
+          {
+            required: true,
+            message: "请输入内容",
+            trigger: "change",
+          },
+        ],
+      },
+      filterText: "",
+      treeData: [],
+      defaultProps: {
+        children: "children",
+        label: "title",
+      },
+      knowledgeType: [],
+      fileInfo: {
+        limit: 5,
+        url: "/market/cknowledgeatt/upload",
+        fileList: [],
+      },
+    };
+  },
+  components: {
+    PEditorTiny: () =>
+      import(
+        /* webpackChunkName: "peditor-tiny" */ "../../../components/p-editor-tiny"
+      ),
+    myUpload,
+  },
+  methods: {
+    uploadBack(v) {
+      this.attList = v;
+    },
+    // 选择完目录清空
+    clearCatalog() {
+      this.formData.catalogDesc = "";
+      this.formData.catalog = "";
+      this.catalogDialogVisible = false;
+    },
+    // 选择完目录确认
+    trueCatalog() {
+      this.catalogDialogVisible = false;
+    },
+    // 选择目录弹出
+    selectCatalogs() {
+      this.catalogDialogVisible = true;
+    },
+    // 选择部门弹出
+    selectDepartment() {
+      this.departmentDialogVisible = true;
+    },
+    //字典类型
+    getListype(v) {
+      this.$http({
+        url: "/market/mkKnowledgePubMsgType/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          dictCode: "pubType",
+        },
+      }).then((res) => {
+        this.knowledgeType = res.data;
+      });
+    },
+    // 树筛选
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    async submitForm(formName) {
+      let valid = await this.$refs[formName].validate().catch((err) => err);
+      if (valid) {
+        alert("submit!");
+      } else {
+        console.log("error submit!!");
+        return false;
+      }
+    }, // 树点击
+    nodeClick(index, data, node) {
+      this.formData.catalogDesc = data.data.title;
+      this.formData.catalog = data.data.id;
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+    },
+    getData() {
+      this.$http({
+        url: "/market/mkKnowledgeCatalog/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        this.treeData = res.data;
+      });
+    },
+  },
+  mounted() {
+    this.getData();
+    this.getListype();
+  },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+};
+</script>
+<style>
+.mc-container {
+  margin: 15px;
+  background: #fff;
+  border-radius: 5px;
+  height: calc(100vh - 150px);
+  margin-bottom: 0;
+}
+.mc-container .container-box {
+  width: 100%;
+  height: 100%;
+  max-height: 96vh;
+  margin-top: 20px;
+  padding: 0 20px 0 20px;
+  overflow-x: hidden !important;
+  padding-top: 20px;
+}
+.tinymce-editor {
+  height: 300px;
+}
+.mc-container .el-upload{
+  width:100%
+}
+.mc-container .el-upload-dragger{
+  width: 100%;
+}
+</style>

+ 503 - 0
src/pages/main/knowledgetop/catalog.vue

@@ -0,0 +1,503 @@
+<template>
+  <div class="container">
+    <div class="main-box container-box">
+      <div class="inner-left" style="overflow: hidden">
+        <div class="button-list">
+          <el-button type="primary" @click="firstMenu" plain
+            >添加一级目录</el-button
+          >
+          <el-button type="primary" @click="addMenu" plain
+            >添加子目录</el-button
+          >
+          <el-button type="primary" @click="delMenu" plain>删除</el-button>
+          <el-dropdown
+            @command="treeAction"
+            trigger="click"
+            style="margin-left: 15px"
+          >
+            <el-button type="primary" plain>
+              树操作<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item :command="1">全部展开</el-dropdown-item>
+              <el-dropdown-item :command="2">全部关闭</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </div>
+        <div class="choice-style">
+          <div class="ant-alert-info ant-alert">
+            <i style="color: #1890ff" class="el-icon-warning"></i>当前选择:{{
+              actionName
+            }}
+            <span class="canel-style" @click="canelChoice" v-show="actionName"
+              >取消选择</span
+            >
+          </div>
+        </div>
+        <div style="margin: 10px 0">
+          <el-input
+            placeholder="请输入内容"
+            v-model="filterText"
+            class="input-with-select"
+            clearable
+            @change="
+              () => {
+                if (!filterText) {
+                  searchMenu();
+                }
+              }
+            "
+          >
+            <el-button
+              slot="append"
+              @click="searchMenu"
+              icon="el-icon-search"
+            ></el-button>
+          </el-input>
+        </div>
+        <div
+          v-loading="loading"
+          style="height: calc(100% - 200px); overflow-y: scroll"
+        >
+          <el-tree
+            ref="catalogTree"
+            class="tree-line"
+            :expand-on-click-node="true"
+            :auto-expand-parent="true"
+            :default-expand-all="true"
+            :props="defaultProps"
+            :data="menuList"
+            @node-click="nodeClick"
+            :filter-node-method="filterNode"
+            node-key="id"
+          >
+            <span class="custom-tree-node" slot-scope="{ node }">
+              <span>
+                <span style="color: #009cff" class="iconfont icon-wenjianjia"></span>
+                <!-- <span
+                  v-if="
+                    node.data.hasOwnProperty('children') &&
+                    node.data.children.length > 0
+                  "
+                  style="color: #009cff"
+                  class="iconfont icon-wenjianjia"
+                ></span> -->
+                <!-- <span
+                  v-else
+                  style="color: #fdb441"
+                  class="iconfont icon-wenjian"
+                ></span> -->
+                <span
+                  :style="
+                    node.data.hasOwnProperty('parent')
+                      ? 'font-size:14px;padding-left:5px'
+                      : 'font-size:12px;padding-left:5px'
+                  "
+                  >{{ node.data.title }}</span
+                >
+              </span>
+            </span>
+          </el-tree>
+        </div>
+        <div class="tree-action"></div>
+      </div>
+      <div class="inner-right">
+        <div v-if="actionName">
+          <div class="choice-style" style="width: 80%; margin: 15px auto">
+            <div class="ant-alert-info ant-alert">
+              <i style="color: #1890ff" class="el-icon-warning"></i>请编辑信息
+            </div>
+          </div>
+          <el-form
+            :model="formData"
+            :rules="rules"
+            ref="ruleForm"
+            label-width="100px"
+            class="demo-ruleForm"
+            style="width: 80%; margin: 50px auto"
+          >
+            <el-form-item label="目录名称" prop="title">
+              <el-input
+                v-model="formData.title"
+                placeholder="请输入标题"
+              ></el-input>
+            </el-form-item>
+            <el-form-item
+              prop="parentId"
+              v-if="actionName != 'add'"
+              label="父级编码"
+            >
+              <el-input
+                disabled
+                v-model="formData.parentId"
+                placeholder="请输入父级编码"
+              ></el-input>
+            </el-form-item>
+            <el-form-item
+              label="父级名称"
+              v-if="actionName != 'add'"
+              prop="parentName"
+            >
+              <el-input
+                disabled
+                v-model="formData.parentName"
+                readonly
+                placeholder="请输入父级名称"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="操作人" prop="createName">
+              <el-input
+                v-model="formData.createName"
+                readonly
+                placeholder="请输入操作人"
+              ></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="submitForm('ruleForm')">{{
+                subType
+              }}</el-button>
+              <el-button @click="resetForm('ruleForm')">取消</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div v-else style="text-align: center">
+          <img src="../../../assets/404.png" alt="" />
+          <div>请先选择一个目录</div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      loading: false,
+      defaultExpand: true,
+      functionCode: "",
+      filterText: "", // tree搜索value
+      actionName: "", // 当前选择节点名称
+      menuList: [], // tree数据源
+      checkedMenu: [], // 选中节点的functionCode
+      checkedNodes: [], // 选中节点的node值
+      roleData: "", // 某一条数据
+      formData: {
+        id: "",
+        title: "",
+        createName: JSON.parse(sessionStorage.userInfo).loginName,
+        createId: JSON.parse(sessionStorage.userInfo).loginNo,
+        orgName: JSON.parse(sessionStorage.userInfo).groupName,
+        orgId: JSON.parse(sessionStorage.userInfo).groupId,
+        parentId: "",
+        parentName: "",
+      },
+      defaultProps: {
+        children: "children",
+        label: "title",
+      },
+      rules: {
+        title: [{ required: true, message: "请输入标题", trigger: "change" }],
+        parentId: [
+          { required: false, message: "请选择父级编码", trigger: "change" },
+        ],
+      },
+      subType: "",
+    };
+  },
+  methods: {
+    async submitForm(formName) {
+      let valid = await this.$refs[formName].validate().catch((err) => err);
+      if (valid) {
+        this.$http({
+          url:
+            this.subType == "保存"
+              ? "/market/mkKnowledgeCatalog/add"
+              : "/market/mkKnowledgeCatalog/update",
+          method: "post",
+          headers: {
+            "Content-Type": "application/json",
+          },
+          data: this.formData,
+        }).then((res) => {
+          if (res.data.result == 0) {
+            this.$message({
+              type: "success",
+              message: res.data.desc,
+            });
+            this.actionName = "";
+            this.getData();
+          }
+        });
+      } else {
+        console.log("error submit!!");
+        return false;
+      }
+    },
+    resetForm(formName) {
+      this.actionName = "";
+      this.$refs[formName].resetFields();
+    },
+    addMenu() {
+      if (!this.actionName) {
+        this.$message("请先点击选中要增加菜单的位置");
+      } else {
+        this.subType = "保存";
+        this.formData.parentId = this.formData.id;
+        this.formData.parentName = this.formData.title;
+        this.formData.title = "";
+        this.formData.id = "";
+      }
+    },
+    treeAction(val) {
+      val == 1 ? (this.defaultExpand = true) : (this.defaultExpand = false);
+      for (let i = 0; i < this.$refs.catalogTree.store._getAllNodes().length; i++) {
+        this.$refs.catalogTree.store._getAllNodes()[i].expanded = this.defaultExpand;
+      }
+    },
+    canelChoice() {
+      this.actionName = "";
+      this.formData.title = "";
+    },
+    delMenu() {
+      if (!this.formData.id) {
+        this.$message("请先点击选中要删除的菜单");
+      } else {
+        this.$confirm("即将删除此条数据, 是否删除?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+          .then(() => {
+            this.$http({
+              url: "/market/mkKnowledgeCatalog/del",
+              method: "post",
+              headers: {
+                "Content-Type": "application/json",
+              },
+              data: {
+                id: this.formData.id,
+              },
+            }).then((res) => {
+              if (res.data.result == 0) {
+                this.$notify({
+                  title: "成功",
+                  message: res.data.desc,
+                  type: "success",
+                });
+                this.actionName = "";
+                this.getData();
+              }
+            });
+          })
+          .catch(() => {});
+      }
+    },
+    // 添加一级菜单
+    firstMenu() {
+      this.actionName = "add";
+      this.subType = "保存";
+      this.formData.title = "";
+      this.formData.parentId = "";
+      this.formData.parentName = "";
+      this.formData.id = "";
+    },
+    // 搜索按钮事件
+    searchMenu() {
+      this.$refs.tree.filter(this.filterText);
+    },
+    // tree过滤方法
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.functionName.indexOf(value) !== -1;
+    },
+    // 点击树节点事件
+    nodeClick(a, b, c, d) {
+      let nodeData = JSON.parse(JSON.stringify(b.data));
+      this.formData.title = nodeData.title;
+      this.formData.parentId = nodeData.parentId;
+      this.formData.parentName = nodeData.parentName;
+      this.formData.id = nodeData.id;
+      delete Object["children"];
+      this.actionName = nodeData.title;
+      this.subType = "修改";
+    },
+    closeDialog() {
+      this.actionName = "";
+      this.getTreeData({});
+    },
+    // 树形图 复选框监听事件
+    checkChange(a, b, c, d) {
+      this.checkedNodes = b.checkedNodes;
+    },
+    getData() {
+      this.$http({
+        url: "/market/mkKnowledgeCatalog/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        this.menuList = res.data;
+      });
+    },
+  },
+  mounted() {
+    this.getData();
+  },
+};
+</script>
+<style lang="scss" scoped>
+.container {
+  background-color: #f0f2f5;
+
+  .el-col {
+    background-color: white;
+    padding: 0 20px;
+  }
+
+  .container-box {
+    padding: 0;
+    margin-top: 0;
+    height: 100%;
+  }
+
+  .main-box {
+    overflow: hidden;
+    display: flex;
+
+    > div {
+      background-color: white;
+    }
+
+    .inner-left {
+      width: 40%;
+      padding: 0 20px;
+
+      .canel-style {
+        color: #1890ff;
+        cursor: pointer;
+        padding-left: 10px;
+      }
+    }
+
+    .inner-right {
+      width: 58%;
+      margin-left: 2%;
+      overflow-y: auto;
+    }
+  }
+}
+
+.el-button + .el-button {
+  margin-left: 20px;
+}
+
+.button-list {
+  padding: 30px 0 10px 0;
+}
+
+.choice-style {
+  background: rgb(255, 255, 255);
+}
+
+.tree-action {
+  bottom: 0;
+  width: 100%;
+  // border-top: 1px solid #e8e8e8;
+  padding: 10px 16px;
+  text-align: left;
+  left: 0;
+  background: #fff;
+  border-radius: 0 0 2px 2px;
+}
+
+.tree-line {
+  .el-tree-node__content {
+    padding-left: 0 !important;
+  }
+
+  .el-tree-node__expand-icon.is-leaf {
+    display: none !important;
+  }
+
+  .el-tree-node {
+    position: relative;
+    padding-left: 16px; // 缩进量
+  }
+
+  .el-tree-node__children {
+    padding-left: 16px; // 缩进量
+  }
+
+  // 竖线
+  .el-tree-node::before {
+    content: "";
+    height: 100%;
+    width: 1px;
+    position: absolute;
+    left: -3px;
+    top: -17px;
+    border-width: 1px;
+    border-left: 1px dashed #52627c;
+  }
+
+  // 当前层最后一个节点的竖线高度固定
+  .el-tree-node:last-child::before {
+    height: 38px; // 可以自己调节到合适数值
+  }
+
+  // 横线
+  .el-tree-node::after {
+    content: "";
+    width: 24px;
+    height: 20px;
+    position: absolute;
+    left: -3px;
+    top: 20px;
+    border-width: 1px;
+    border-top: 1px dashed #52627c;
+  }
+
+  // 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了
+  & > .el-tree-node::after {
+    border-top: none;
+  }
+
+  & > .el-tree-node::before {
+    border-left: none;
+  }
+
+  // 展开关闭的icon
+  .el-tree-node__expand-icon {
+    font-size: 16px;
+
+    // 叶子节点(无子节点)
+    &.is-leaf {
+      color: transparent;
+      // display: none; // 也可以去掉
+    }
+  }
+}
+
+.ant-alert-info {
+  background-color: #e6f7ff;
+  border: 1px solid #91d5ff;
+}
+
+.ant-alert {
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: rgb(0, 0, 0);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5;
+  list-style: none;
+  font-feature-settings: "tnum";
+  position: relative;
+  padding: 8px 15px 8px 37px;
+  word-wrap: break-word;
+  border-radius: 4px;
+}
+</style>

+ 724 - 0
src/pages/main/knowledgetop/copyIndex.vue

@@ -0,0 +1,724 @@
+<template>
+
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(1)">添加
+                </el-button>
+            </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="knowledgeTitle" label="标题">
+                    </el-table-column>
+                    <el-table-column label="发布工号">
+                        <template slot-scope="scope">
+                            <span class="">{{scope.row.opNo}}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="发布姓名">
+                        <template slot-scope="scope">
+                            <span>{{$desensitization(scope.row.opName,1)}}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="pubDeptName" label="发布部门">
+                    </el-table-column>
+                    <el-table-column prop="pubTypeName" label="发布类型">
+                    </el-table-column>
+                    <el-table-column prop="pubTime" label="发布时间">
+                    </el-table-column>
+                    <el-table-column prop="stsDesc" label="状态">
+                    </el-table-column>
+
+                    <el-table-column label="操作" width="160px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)">查看</el-button>
+                            <el-button size="mini" v-if="scope.row.sts != 1" type="primary"
+                                @click="dialogCheck(3,scope.row)">修改</el-button>
+                            <el-button size="mini" v-if="scope.row.sts != 1" type="danger" @click="delLine(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="titname + '知识'" :visible.sync="dialogStatus" width="50%" :close-on-press-escape="false"
+                :show-close="true" :before-close="closedia" :destroy-on-close="true" :modal-append-to-body="false"
+                :close-on-click-modal="false">
+                <div v-loading="loadinged">
+                    <el-form :model="infolist" style="height: 50vh;overflow-y: scroll;" ref="infolist" :rules="rules">
+                        <div class="info-line">
+                            <el-form-item prop="knowledgeTitle">
+                                <span>标题</span>
+                                <el-input v-model="infolist.knowledgeTitle" placeholder="标题" :disabled="disableStatus">
+                                </el-input>
+                            </el-form-item>
+                            <el-form-item prop="pubType">
+                                <span>发布类型</span>
+                                <el-select :popper-append-to-body="false" v-model="infolist.pubType" placeholder="发布类型"
+                                    clearable :disabled="disableStatus" @change="verifcheck(1)">
+                                    <el-option v-for="item in knowledge.type.options" :key="item.dataCode"
+                                        :label="item.dataName" :value="item.dataCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </div>
+
+                        <div v-if="titname == '查看'">
+                            <div class="info-line">
+                                <el-form-item prop="opName">
+                                    <span>发布姓名</span>
+                                    <el-input v-model="infolist.opName" placeholder="发布姓名" disabled="disabled">
+                                    </el-input>
+                                </el-form-item>
+                                <el-form-item prop="opNo">
+                                    <span>发布工号</span>
+                                    <el-input v-model="infolist.opNo" placeholder="发布工号" disabled="disabled"></el-input>
+                                </el-form-item>
+                            </div>
+                            <el-form-item class="info-line online">
+                                <span>发布部门</span>
+                                <el-input v-model="infolist.pubDeptName" placeholder="发布部门" disabled></el-input>
+                            </el-form-item>
+                        </div>
+
+                        <el-form-item prop="visiblec" class="info-line online">
+                            <span>可见部门</span>
+                            <deptTree class="tree" @treeCheck="treeCheck" :defaultList="defaultList" :type="depttype"></deptTree>
+                        </el-form-item>
+
+
+                        <el-form-item class="info-line online" v-if="titname != '新建'">
+                            <span>备注</span>
+                            <el-input disabled v-model="infolist.auditDesc" placeholder="备注" type="textarea" :rows="3">
+                            </el-input>
+                        </el-form-item>
+                        <div style="padding-left: 80px" v-if="!disableStatus">
+                            <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+                            </myUpload>
+                        </div>
+                        <div style="padding:0 20px 10px 100px" v-if="disableStatus">
+                            <uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+                        </div>
+                    </el-form>
+                    <div class="dialog-footer myfooter">
+                        <el-button @click="dialogCli(2)" v-if="disableStatus">确 定</el-button>
+                        <el-button type="primary" @click="dialogCli(1)" v-if="!disableStatus">保 存</el-button>
+                        <el-button type="primary" @click="dialogCli(3)" v-if="!disableStatus">发 布</el-button>
+                        <el-button @click="dialogCli(2)">取 消</el-button>
+                    </div>
+                </div>
+            </el-dialog>
+            <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+                v-if="centerDialogVisible"></myMessage>
+        </div>
+    </fullscreen>
+
+</template>
+<script>
+    import myUpload from '../../../components/upload'
+    import uploadDown from '../../../components/uploadDown'
+    import mySearch from '../../../components/search'
+    import toolList from '../../../components/toolList'
+    import myMessage from "../../../components/myMessage.vue"
+    import deptTree from "../../../components/deptTree.vue"
+
+    export default {
+        components: {
+            myUpload,
+            uploadDown,
+            mySearch,
+            toolList,
+            myMessage,
+            deptTree
+        },
+        data() {
+            const knowledgeTitle = (rule, value, callback) => {
+                if (!this.infolist.knowledgeTitle) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const opName = (rule, value, callback) => {
+                if (!this.infolist.opName) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const pubType = (rule, value, callback) => {
+                if (!this.infolist.pubType) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const opNo = (rule, value, callback) => {
+                if (!this.infolist.opNo) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    opNo: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: opNo
+                    }],
+                    pubType: [{
+                        required: true,
+                        trigger: 'change',
+                        validator: pubType
+                    }],
+                    opName: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: opName
+                    }],
+                    knowledgeTitle: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: knowledgeTitle
+                    }],
+                },
+                tooltit: '知识库管理',
+                fileInfo: {
+                    limit: 5,
+                    url: '/market/cknowledgeatt/upload',
+                    fileList: []
+                },
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                knowledge: {
+                    type: {
+                        value: '',
+                        options: []
+                    },
+                    startime: null,
+                    endtime: null,
+                },
+                tableData: [],
+                dialogStatus: false,
+                infolist: {},
+                typeOptions: [],
+                titname: '',
+                disableStatus: false,
+                fileList: [],
+                visiblec: [],
+                visibleList: [],
+                attList: [],
+                datalist: {
+                    url: '/market/compatt/downfile',
+                    type: 1
+                },
+                uploadstatus: false,
+                userInfo: {},
+                searchList: [{
+                        type: 'sel',
+                        tit: '发布类型',
+                        value: '',
+                        width: '19%',
+                        options: []
+                    },
+                    {
+                        type: 'input',
+                        tit: '发布标题',
+                        value: '',
+                        width: '19%',
+                    },
+                    {
+                        type: 'date',
+                        tit: '开始时间',
+                        value: '',
+                        width: '19%',
+                    },
+                    {
+                        type: 'date',
+                        tit: '结束时间',
+                        value: '',
+                        width: '19%',
+                    },
+                    {
+                        type: 'input',
+                        tit: '关键字',
+                        value: '',
+                        width: '19%',
+                    },
+                ],
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+                treeList: [],
+                defaultList:[],
+                depttype:0,
+            }
+        },
+        methods: {
+            treeCheck(v){
+                this.treeList = v;
+            },
+            closedia() {
+                this.infolist = {};
+                this.dialogStatus = false;
+                this.fileInfo.fileList = [];
+                this.defaultList = [];
+                this.depttype = 0;
+            },
+            uploadBack(v) {
+                this.attList = v;
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.pubType = v[0] : '';
+                v[1] ? this.params.knowledgeTitle = v[1] : '';
+                v[2] ? this.params.opTimeFrom = this.$formatDate(v[2], "YYYY-MM-DD") : '';
+                v[3] ? this.params.opTimeTo = this.$formatDate(v[3], "YYYY-MM-DD") : '';
+                if (v[4]) {
+                    this.params = {};
+                    this.params.keyWord = v[4]
+                }
+                this.getList(this.params, this.pageSize);
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                this.tableData = [];
+                this.$http({
+                    url: "/market/cknowledge/queryListByPubDept",
+                    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;
+                });
+            },
+            //获取部门
+            getDepot() {
+                this.$http({
+                    url: "/sysmgr/sysdept/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.typeOptions = res.data;
+                });
+            },
+            //字典类型
+            getListype(v) {
+                this.$http({
+                    url: "/market/mkKnowledgePubMsgType/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        dictCode: 'pubType'
+                    },
+                }).then((res) => {
+                    let listopt = [];
+                    res.data.forEach(item => {
+                        listopt.push({
+                            dataCode: item.id,
+                            dataName: item.pubType,
+                        })
+                    })
+                    this.searchList[0].options = listopt;
+                    this.knowledge.type.options = listopt;
+                });
+            },
+            //功能栏
+            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);
+            },
+            //查看 修改 新增
+            dialogCheck(v, n) {
+                this.dialogStatus = true;
+                this.disableStatus = false;
+                this.visiblec = [];
+                this.defaultList = [];
+                this.infolist = {};
+                if (v === 1) {
+                    this.titname = '新建';
+                    this.infolist = {};
+                    this.defaultList = [];
+                    this.depttype = 0;
+                    this.getUser();
+                    return
+                } else if (v === 2) {
+                    this.titname = '查看';
+                    this.disableStatus = true;
+                } else if (v === 3) {
+                    this.titname = '修改';
+                    this.loadinged = true;
+                }
+                this.$http({
+                    url: "/market/cknowledge/queryInfo",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        id: n.id
+                    },
+                }).then((res) => {
+                    res.data.opName = this.$desensitization(res.data.opName,1);
+                    this.datalist.attList = res.data.attList;
+                    this.uploadstatus = true;
+                    this.infolist = res.data;
+                    this.fileInfo.fileList = [];
+                    this.attList = [];
+                    this.treeList = this.infolist.visibleList;
+                    res.data.attList.forEach(item => {
+                        this.fileInfo.fileList.push({
+                            name: item.fileName,
+                            url: '',
+                            id: item.id,
+                            fileName: item.fileName,
+                            fileCode: item.fileCode,
+                            opName: item.opName,
+                            opNo: item.opNo,
+                            opTime: item.opTime,
+                        });
+                        this.attList.push({
+                            name: item.fileName,
+                            url: '',
+                            id: item.id,
+                            fileName: item.fileName,
+                            fileCode: item.fileCode,
+                            opName: item.opName,
+                            opNo: item.opNo,
+                            opTime: item.opTime,
+                        });
+                    })
+                    res.data.visibleList.forEach(item => {
+                        this.defaultList.push(item.deptId);
+                    })
+                    this.depttype = 2;
+                    this.loadinged = false;
+                });
+            },
+            //添加 修改
+            dialogCli(v) {
+                this.uploadstatus = false;
+                this.datalist.attList = [];
+                this.fileInfo.fileList = [];
+                if (v === 2) {
+                    this.getUser();
+                    this.dialogStatus = false;
+                    this.defaultList = [];
+                    this.depttype = 0;
+                    return
+                }
+                this.infolist.pubTime = this.$formatDate(new Date(), "YYYY-MM-DD");
+                if (this.titname === '新建') {
+                    this.submitInfo("/market/cknowledge/save", v);
+                } else if (this.titname === '修改') {
+                    this.submitInfo("/market/cknowledge/update", v);
+                }
+            },
+            submitInfo(u, v) {
+                let _this = this;
+                this.$refs.infolist.validate(valid => {
+                    if (valid) {
+                        this.infolist.sts = "0";
+                        this.infolist.stsDesc = "草稿";
+                        this.infolist.opNo = this.userInfo.loginNo;
+                        this.infolist.opName = this.userInfo.loginName;
+                        this.infolist.contactPhone = this.userInfo.phoneNo;
+                        if (v === 3) {
+                            this.infolist.sts = "2";
+                            this.infolist.stsDesc = "待审核";
+                        }
+                        let attList = [];
+                        for (let i = 0; i < this.attList.length; i++) {
+                            attList.push({
+                                id: this.attList[i].id,
+                                fileCode: this.attList[i].fileCode,
+                                fileName: this.attList[i].fileName,
+                                opName: this.attList[i].opName,
+                                opNo: this.attList[i].opNo,
+                                opTime: this.attList[i].opTime,
+                            });
+                        }
+                        this.loadinged = true;
+                        this.$http({
+                            url: u,
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: {
+                                knowledge: this.infolist,
+                                attList: attList,
+                                visibleList: this.treeList
+                            },
+                        }).then((res) => {
+                            this.loadinged = false;
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '成功',
+                                    type: 'success'
+                                });
+                                _this.fileInfo.fileList = [];
+                                _this.infolist = {};
+                                _this.dialogStatus = false;
+                                _this.getList(_this.params, _this.pageSize);
+                                _this.defaultList = [];
+                                _this.depttype = 0;
+                            }
+                        })
+                    }
+                })
+            },
+            //处理所需数据
+            verifcheck(v) {
+                if (v === 1) {
+                    for (let i = 0; i < this.knowledge.type.options.length; i++) {
+                        if (this.knowledge.type.options[i].dataCode == this.infolist.pubType) {
+                            this.infolist.pubTypeName = this.knowledge.type.options[i].dataName
+                        }
+                    }
+                }
+            },
+            closeMessage(v) {
+                this.centerDialogVisible = false;
+                let _this = this;
+                if (v === 1) {
+                    this.$http({
+                        url: "/market/cknowledge/queryInfo",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            id: this.delid
+                        },
+                    }).then((res) => {
+                        let attList = [];
+                        for (let i = 0; i < res.data.attList.length; i++) {
+                            attList.push({
+                                id: res.data.attList[i].id
+                            })
+                        }
+                        _this.$http({
+                            url: "/market/cknowledge/delete",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: {
+                                knowledge: {
+                                    id: this.delid
+                                },
+                                attList: attList,
+                                visibleList: res.data.visibleList
+                            }
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '删除成功',
+                                    type: 'success'
+                                });
+                                _this.getList(this.params, this.pageSize);
+                            }
+                        });
+                    });
+                }
+            },
+            //删除
+            delLine(v) {
+                this.centerDialogVisible = true;
+                this.messTit = '即将删除此条数据, 是否删除?';
+                this.delid = v.id;
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.infolist = {};
+                this.infolist.opNo = this.userInfo.loginNo;
+                // this.infolist.pubDeptId = this.userInfo.group;
+                // this.infolist.pubDeptName = this.userInfo.groupName;
+                this.infolist.opName = this.userInfo.loginName;
+                this.infolist.contactPhone = this.userInfo.phoneNo;
+            },
+        },
+        mounted() {
+            this.getList(this.params, this.pageSize);
+            this.getDepot();
+            this.getListype();
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    @import "../../../assets/style";
+
+    .iconfont {
+        font-size: 42px;
+    }
+
+    .icon-excel {
+        color: #67DB63;
+    }
+
+    .icon-word {
+        color: #FF654E;
+    }
+
+    .icon-ppt {
+        color: #FF8943;
+    }
+
+    .icon-wenjian {
+        color: #ccc;
+    }
+
+    .el-icon-picture {
+        font-size: 36px;
+        color: #ccc;
+        background: #fff;
+        padding: 4px 2px;
+        margin-bottom: 2px;
+    }
+
+    .back-box {
+        margin-top: 20px;
+        background: #F2F2F2;
+        padding: 20px;
+
+        div {
+            display: inline-block;
+            text-align: center;
+            margin-right: 20px;
+            cursor: pointer;
+
+            span {
+                display: block;
+                width: 80px;
+                overflow: hidden;
+                padding-top: 10px;
+                margin: 0 10px;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                display: -webkit-box;
+                /* 将对象作为弹性伸缩盒子模型显示 */
+                -webkit-line-clamp: 1;
+                /* 控制最多显示几行 */
+                -webkit-box-orient: vertical;
+                /* 设置或检索伸缩盒对象的子元素的排列方式 */
+            }
+        }
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+        .tree{
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+</style>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2 - 0
src/pages/main/knowledgetop/data.js


+ 173 - 0
src/pages/main/knowledgetop/index.vue

@@ -0,0 +1,173 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <h2 style="margin-top: 20px;">知识库</h2>
+            <div class="adv-type">
+                <div
+                    class="wfour"
+                    @click="jumpinfo('/knowledgeManagement', '知识库管理')"
+                >
+                    <span><i class="el-icon-folder-opened"></i></span>
+                    <span>知识库管理</span>
+                </div>
+                <!-- <div
+                    class="wfour"
+                    @click="jumpinfo('/knowledgeExaminetop', '知识库审核')"
+                >
+                    <span><i class="el-icon-folder-opened"></i></span>
+                    <span>知识库审核</span>
+                </div> -->
+                <div
+                    class="wfour"
+                    @click="jumpinfo('/knowledgeTypetop', '知识类型管理')"
+                >
+                    <span><i class="el-icon-folder-opened"></i></span>
+                    <span>知识类型管理</span>
+                </div>
+                <div
+                    class="wfour"
+                    @click="
+                        jumpinfo('/knowledgeCatalogtop', '知识库目录管理')
+                    "
+                >
+                    <span><i class="el-icon-folder-opened"></i></span>
+                    <span>知识库目录管理</span>
+                </div>
+            </div>
+        </div>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "../../../components/search.vue";
+import myMessage from "../../../components/myMessage.vue";
+import toolList from "../../../components/toolList";
+import myUpload from "../../../components/upload";
+
+export default {
+    components: {
+        mySearch,
+        myMessage,
+        toolList,
+        myUpload
+    },
+    data() {
+        return {
+            fullscreen: false,
+            lockFlag: "see",
+            province: true
+        };
+    },
+    methods: {
+        jumpinfop(p, v, n) {
+            this.$router.push({
+                path: p,
+                query: {
+                    type: v
+                }
+            });
+            this.setabList(n, p + "?type=" + v);
+        },
+        jumpinfo(p, n) {
+            this.$router.push({
+                path: p
+            });
+            this.setabList(n, p);
+        },
+        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));
+        },
+        // getUser() {
+        //     this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+        //     let Menus = JSON.parse(window.sessionStorage.childrenMenus);
+        //     for (let i = 0; i < Menus.length; i++) {
+        //         if (
+        //             Menus[i].systemflag == 1 &&
+        //             Menus[i].jspUrl == "/publicityAccount"
+        //         ) {
+        //             this.lockFlag = "add"; //省级
+        //         }
+        //         if (
+        //             Menus[i].systemflag == 1 &&
+        //             Menus[i].jspUrl == "/publicity"
+        //         ) {
+        //             this.lockFlag = "updata"; //管理员
+        //             i = Menus.length;
+        //         }
+        //     }
+        //     for (let i = 0; i < Menus.length; i++) {
+        //         if (
+        //             Menus[i].systemflag == 1 &&
+        //             Menus[i].jspUrl == "/province"
+        //         ) {
+        //             this.province = true; //省公司
+        //         }
+        //     }
+        // }
+    },
+    mounted() {
+        // this.getUser();
+    },
+    created() {}
+};
+</script>
+<style scoped lang="scss">
+.container-box {
+    height: calc(100vh - 200px);
+    overflow-y: scroll;
+    padding-bottom: 20px;
+}
+.adv-type {
+    margin-top: 20px;
+    display: flex;
+    justify-content: space-between;
+    flex-wrap: wrap;
+    // border: 1px solid #ddd;
+    border-radius: 5px;
+    padding: 20px;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+    div {
+        width: 33%;
+        text-align: center;
+        height: 80px;
+        overflow: hidden;
+        min-width: 100px;
+        cursor: pointer;
+        padding-top: 10px;
+        margin: 10px 0;
+    }
+    div:hover {
+        background: #cfe8fc;
+        border-radius: 5px;
+    }
+    span {
+        width: 100%;
+        display: inline-block;
+        height: 40px;
+        // line-height: 40px;
+        i {
+            color: #0074d9;
+            font-size: 36px;
+        }
+    }
+    .wfour {
+        width: 25%;
+    }
+    .wfive {
+        width: 20%;
+    }
+}
+</style>

+ 566 - 0
src/pages/main/knowledgetop/knowledgeExamine.vue

@@ -0,0 +1,566 @@
+<template>
+
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <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"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="knowledgeTitle" label="标题">
+                    </el-table-column>
+                    <el-table-column label="发布工号">
+                        <template slot-scope="scope">
+                            <span class="">{{scope.row.opNo}}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="发布姓名">
+                        <template slot-scope="scope">
+                            <span>{{$desensitization(scope.row.opName,1)}}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="pubDeptName" label="发布部门">
+                    </el-table-column>
+                    <el-table-column prop="pubTypeName" label="发布类型">
+                    </el-table-column>
+                    <el-table-column prop="pubTime" label="发布时间">
+                    </el-table-column>
+                    <el-table-column prop="stsDesc" label="状态">
+                    </el-table-column>
+
+                    <el-table-column label="操作" width="100px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" v-if="scope.row.sts == 2" :disabled="!btnctrlStatus" type="danger"
+                                @click="dialogCheck(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="dialogStatus" width="50%" :close-on-press-escape="false"
+                :show-close="true" :before-close="closedia" :destroy-on-close="true" :modal-append-to-body="false"
+                :close-on-click-modal="false">
+                <div v-loading="loadinged">
+                    <el-form style="height: 50vh;overflow-y: scroll;" :model="infolist" ref="infolist" :rules="rules">
+                        <div class="info-line">
+                            <el-form-item>
+                                <span>标题</span>
+                                <el-input v-model="infolist.knowledgeTitle" disabled></el-input>
+                            </el-form-item>
+                            <el-form-item>
+                                <span>发布类型</span>
+                                <el-input v-model="infolist.pubTypeName" disabled></el-input>
+                            </el-form-item>
+                            <el-form-item>
+                                <span>发布姓名</span>
+                                <el-input v-model="infolist.opName" disabled></el-input>
+                            </el-form-item>
+                            <el-form-item>
+                                <span>发布工号</span>
+                                <el-input v-model="infolist.opNo" disabled></el-input>
+                            </el-form-item>
+                        </div>
+                        <el-form-item class="info-line online">
+                            <span>发布部门</span>
+                            <el-input v-model="infolist.pubDeptName" disabled></el-input>
+                        </el-form-item>
+                        <el-form-item class="info-line online">
+                            <span>可见部门</span>
+                            <deptTree class="tree" @treeCheck="treeCheck" :defaultList="defaultList" :type="depttype"></deptTree>
+                        </el-form-item>
+                        <el-form-item class="info-line online">
+                            <span>备注</span>
+                            <el-input v-model="infolist.auditDesc" placeholder="备注" type="textarea" :rows="3">
+                            </el-input>
+                        </el-form-item>
+                        <div style="padding:0 20px 10px 100px">
+                            <uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+                        </div>
+                    </el-form>
+                    <div class="dialog-footer myfooter">
+                        <el-button type="primary" @click="dialogCli(1)">通 过</el-button>
+                        <el-button type="primary" @click="dialogCli(3)">打 回</el-button>
+                        <el-button @click="dialogCli(2)">取 消</el-button>
+                    </div>
+                </div>
+            </el-dialog>
+        </div>
+    </fullscreen>
+
+</template>
+<script>
+    import myUpload from '../../../components/upload'
+    import uploadDown from '../../../components/uploadDown'
+    import mySearch from '../../../components/search'
+    import toolList from '../../../components/toolList'
+    import deptTree from '../../../components/deptTree.vue'
+
+    export default {
+        components: {
+            myUpload,
+            uploadDown,
+            mySearch,
+            toolList,
+            deptTree
+        },
+        data() {
+            const knowledgeTitle = (rule, value, callback) => {
+                if (!this.infolist.knowledgeTitle) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const opName = (rule, value, callback) => {
+                if (!this.infolist.opName) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const pubType = (rule, value, callback) => {
+                if (!this.infolist.pubType) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const opNo = (rule, value, callback) => {
+                if (!this.infolist.opNo) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    opNo: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: opNo
+                    }],
+                    pubType: [{
+                        required: true,
+                        trigger: 'change',
+                        validator: pubType
+                    }],
+                    opName: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: opName
+                    }],
+                    knowledgeTitle: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: knowledgeTitle
+                    }],
+                },
+                tooltit: '知识库审核',
+                fileInfo: {
+                    limit: 5,
+                    url: '/market/cknowledgeatt/upload',
+                    fileList: []
+                },
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                knowledge: {
+                    type: {
+                        value: '',
+                        options: []
+                    },
+                    startime: null,
+                    endtime: null,
+                },
+                tableData: [],
+                dialogStatus: false,
+                infolist: {},
+                titname: '',
+                disableStatus: false,
+                fileList: [],
+                visiblec: '',
+                visibleList: [],
+                attList: [],
+                datalist: {
+                    url: '/market/compatt/downfile',
+                    type: 1
+                },
+                uploadstatus: false,
+                userInfo: {},
+                searchList: [{
+                        type: 'sel',
+                        tit: '发布类型',
+                        value: '',
+                        width: '19%',
+                        options: []
+                    },
+                    {
+                        type: 'input',
+                        tit: '发布标题',
+                        value: '',
+                        width: '19%',
+                    },
+                    {
+                        type: 'date',
+                        tit: '开始时间',
+                        value: '',
+                        width: '19%',
+                    },
+                    {
+                        type: 'date',
+                        tit: '结束时间',
+                        value: '',
+                        width: '19%',
+                    },
+                    {
+                        type: 'input',
+                        tit: '关键字',
+                        value: '',
+                        width: '19%',
+                    },
+                ],
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+                btnctrlStatus: false,
+                treeList: [],
+                defaultList:[],
+                depttype:0,
+            }
+        },
+        methods: {
+            treeCheck(v){
+                this.treeList = v;
+            },
+            closedia() {
+                this.infolist = {};
+                this.dialogStatus = false;
+                this.fileInfo.fileList = [];
+                this.defaultList = [];
+                this.depttype = 0;
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.pubType = v[0] : '';
+                v[1] ? this.params.knowledgeTitle = v[1] : '';
+                v[2] ? this.params.opTimeFrom = this.$formatDate(v[2], "YYYY-MM-DD") : '';
+                v[3] ? this.params.opTimeTo = this.$formatDate(v[3], "YYYY-MM-DD") : '';
+                if (v[4]) {
+                    this.params = {};
+                    this.params.keyWord = v[4]
+                }
+                this.getList(this.params, this.pageSize);
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                this.tableData = [];
+                this.$http({
+                    url: "/market/cknowledge/queryChkPage",
+                    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;
+                });
+            },
+            //字典
+            getListype(v) {
+                this.$http({
+                    url: "/market/mkKnowledgePubMsgType/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        dictCode: 'pubType'
+                    },
+                }).then((res) => {
+                    let listopt = [];
+                    res.data.forEach(item => {
+                        listopt.push({
+                            dataCode: item.id,
+                            dataName: item.pubType,
+                        })
+                    })
+                    this.searchList[0].options = listopt;
+                    this.knowledge.type.options = listopt;
+                });
+            },
+            //功能栏
+            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);
+            },
+            //查看 修改 新增
+            dialogCheck(v) {
+                this.dialogStatus = true;
+                this.visiblec = '';
+                this.infolist = {};
+                this.$http({
+                    url: "/market/cknowledge/queryInfo",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        id: v.id
+                    },
+                }).then((res) => {
+                    res.data.opName = this.$desensitization(res.data.opName,1);
+                    this.datalist.attList = res.data.attList;
+                    this.uploadstatus = true;
+                    this.infolist = res.data;
+                    this.fileInfo.fileList = [];
+                    this.attList = this.infolist.attList;
+                    this.treeList = this.infolist.visibleList;
+                    this.defaultList = [];
+                    res.data.attList.forEach(item => {
+                        this.fileInfo.fileList.push({
+                            name: item.fileName,
+                            url: '',
+                            id: item.id,
+                            fileName: item.fileName,
+                            fileCode: item.fileCode,
+                            opName: item.opName,
+                            opNo: item.opNo,
+                            opTime: item.opTime,
+                        });
+                    })
+                    res.data.visibleList.forEach(item => {
+                        this.defaultList.push(item.deptId);
+                    })
+                    this.depttype = 2;
+                    this.loadinged = false;
+                });
+            },
+            //添加 修改
+            dialogCli(v) {
+                this.uploadstatus = false;
+                this.datalist.attList = [];
+                this.fileInfo.fileList = [];
+                if (v === 2) {
+                    this.getUser();
+                    this.dialogStatus = false;
+                    this.defaultList = [];
+                    this.depttype = 0;
+                    return
+                }
+                this.infolist.sts = v;
+                v == 1 ? this.infolist.stsDesc = "通过" : this.infolist.stsDesc = "打回";
+                this.infolist.auditNo = this.userInfo.loginNo;
+                this.infolist.auditName = this.userInfo.loginName;
+                this.infolist.auditTime = this.$formatDate(new Date(), "YYYY-MM-DD");
+                this.submitInfo("/market/cknowledge/update", v);
+            },
+            submitInfo(u, v) {
+                let _this = this;
+                this.loadinged = true;
+                this.$http({
+                    url: u,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        knowledge: this.infolist,
+                        attList: this.attList,
+                        visibleList: this.treeList
+                    },
+                }).then((res) => {
+                    this.loadinged = false;
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        _this.fileInfo.fileList = [];
+                        _this.infolist = {};
+                        _this.dialogStatus = false;
+                        _this.getList(_this.params, _this.pageSize);
+                        _this.defaultList = [];
+                        _this.depttype = 0;
+                    }
+                })
+            },
+            ctrlbtn() {
+                let v = JSON.parse(window.sessionStorage.childrenMenus);
+                for (let i = 0; i < v.length; i++) {
+                    if (v[i].jspUrl == this.$route.path && v[i].systemflag == '1') {
+                        this.btnctrlStatus = true;
+                        return
+                    }
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            }
+        },
+        mounted() {
+            this.getList(this.params, this.pageSize);
+            this.getListype();
+            this.ctrlbtn();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    @import "../../../assets/style";
+
+    .iconfont {
+        font-size: 42px;
+    }
+
+    .icon-excel {
+        color: #67DB63;
+    }
+
+    .icon-word {
+        color: #FF654E;
+    }
+
+    .icon-ppt {
+        color: #FF8943;
+    }
+
+    .icon-wenjian {
+        color: #ccc;
+    }
+
+    .el-icon-picture {
+        font-size: 36px;
+        color: #ccc;
+        background: #fff;
+        padding: 4px 2px;
+        margin-bottom: 2px;
+    }
+
+    .back-box {
+        margin-top: 20px;
+        background: #F2F2F2;
+        padding: 20px;
+
+        div {
+            display: inline-block;
+            text-align: center;
+            margin-right: 20px;
+            cursor: pointer;
+
+            span {
+                display: block;
+                width: 80px;
+                overflow: hidden;
+                padding-top: 10px;
+                margin: 0 10px;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                display: -webkit-box;
+                /* 将对象作为弹性伸缩盒子模型显示 */
+                -webkit-line-clamp: 1;
+                /* 控制最多显示几行 */
+                -webkit-box-orient: vertical;
+                /* 设置或检索伸缩盒对象的子元素的排列方式 */
+            }
+        }
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+        .tree{
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+</style>

+ 987 - 0
src/pages/main/knowledgetop/knowledgeManagement.vue

@@ -0,0 +1,987 @@
+<template>
+  <fullscreen :fullscreen.sync="fullscreen" class="container">
+    <div class="container-box">
+      <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
+      <el-row :gutter="20" style="height: 100%">
+        <el-col :span="4" style="height: 100%">
+          <el-input
+            style="margin-top: 20px"
+            placeholder="输入关键字进行过滤"
+            v-model="filterText"
+          >
+          </el-input>
+          <div class="choice-style">
+            <div class="ant-alert-info ant-alert">
+              <i style="color: #1890ff" class="el-icon-warning"></i>当前选择:{{
+                actionName || "无"
+              }}
+              <div class="canel-style" @click="canelChoice" v-show="actionName">
+                取消选择
+              </div>
+            </div>
+          </div>
+          <div class="tree-box">
+            <el-tree
+              class="filter-tree"
+              :data="treeData"
+              node-key="id"
+              :props="defaultProps"
+              default-expand-all
+              :filter-node-method="filterNode"
+              @node-click="checkNode"
+              ref="tree"
+            ><span class="custom-tree-node" slot-scope="{ node }">
+              <span>
+                <span style="color: #009cff" class="iconfont icon-wenjianjia"></span>
+                <!-- <span
+                  v-if="
+                    node.data.hasOwnProperty('children') &&
+                    node.data.children.length > 0
+                  "
+                  style="color: #009cff"
+                  class="iconfont icon-wenjianjia"
+                ></span> -->
+                <!-- <span
+                  v-else
+                  style="color: #fdb441"
+                  class="iconfont icon-wenjian"
+                ></span> -->
+                <span
+                  :style="
+                    node.data.hasOwnProperty('parent')
+                      ? 'font-size:14px;padding-left:5px'
+                      : 'font-size:12px;padding-left:5px'
+                  "
+                  >{{ node.data.title }}</span
+                >
+              </span>
+            </span>
+            </el-tree>
+          </div>
+        </el-col>
+        <el-col :span="20" style="height: 100%">
+          <div class="search">
+            <mySearch
+              :searchList="searchList"
+              @searchInfo="searchInfo"
+            ></mySearch>
+            <el-button
+              class="btn-check"
+              size="medium"
+              type="primary"
+              @click="dialogCheck(1)"
+              >添加
+            </el-button>
+          </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"
+              @sort-change="sortChange"
+            >
+              <el-table-column prop="title" show-overflow-tooltip label="标题">
+              </el-table-column>
+              <el-table-column label="发布工号">
+                <template slot-scope="scope">
+                  <span class="">{{ scope.row.handlerId }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="发布姓名">
+                <template slot-scope="scope">
+                  <span>{{ $desensitization(scope.row.handler, 1) }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="orgName"
+                show-overflow-tooltip
+                label="发布部门"
+              >
+              </el-table-column>
+              <el-table-column prop="typeName" label="发布类型">
+              </el-table-column>
+              <el-table-column
+                prop="catalogName"
+                show-overflow-tooltip
+                label="归属目录"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="createTime"
+                show-overflow-tooltip
+                label="发布时间"
+                width="140"
+              >
+              </el-table-column>
+              <!-- <el-table-column prop="stsDesc" label="状态"> </el-table-column> -->
+              <el-table-column
+                prop="hits"
+                width="90"
+                label="点击量"
+                sortable="custom"
+              >
+              </el-table-column>
+              <el-table-column label="操作" width="250px" align="center">
+                <template slot-scope="scope">
+                  <el-button
+                    size="mini"
+                    type="success"
+                    @click="collectionHandle(scope.row)"
+                    plain
+                    >{{
+                      scope.row.collection == "0" ? "点击收藏" : "取消收藏"
+                    }}</el-button
+                  >
+                  <el-button
+                    size="mini"
+                    type="primary"
+                    plain
+                    @click="dialogCheck(2, scope.row)"
+                    >查看</el-button
+                  >
+                  <el-button
+                    size="mini"
+                    v-if="scope.row.sts != 1"
+                    type="primary"
+                    plain
+                    @click="dialogCheck(3, scope.row)"
+                    >修改</el-button
+                  >
+                  <el-button
+                    size="mini"
+                    v-if="scope.row.sts != 1"
+                    type="danger"
+                    plain
+                    @click="delLine(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-col>
+      </el-row>
+
+      <el-dialog
+        :title="titname + '知识'"
+        :visible.sync="dialogStatus"
+        width="50%"
+        :close-on-press-escape="false"
+        :show-close="true"
+        :fullscreen="fullscreen"
+        :before-close="closedia"
+        :destroy-on-close="true"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+      >
+        <div slot="title">
+          <div>
+            {{ titname + "知识"
+            }}<i
+              class="el-icon-full-screen"
+              style="float: right; margin-right: 30px"
+              @click="
+                () => {
+                  fullscreen = !fullscreen;
+                }
+              "
+            ></i>
+          </div>
+        </div>
+        <div v-loading="loadinged">
+          <el-form
+            v-if="titname != '查看'"
+            :model="infolist"
+            :style="fullscreen ? '' : 'height: 50vh; overflow-y: scroll'"
+            ref="infolist"
+            :rules="rules"
+          >
+            <div class="info-line">
+              <el-form-item prop="title">
+                <span>标题</span>
+                <el-input v-model="infolist.title" placeholder="标题">
+                </el-input>
+              </el-form-item>
+              <el-form-item prop="type">
+                <span>发布类型</span>
+                <el-select
+                  :popper-append-to-body="false"
+                  v-model="infolist.type"
+                  placeholder="发布类型"
+                  clearable
+                  @change="verifcheck(1)"
+                >
+                  <el-option
+                    v-for="item in knowledge.type.options"
+                    :key="item.dataCode"
+                    :label="item.dataName"
+                    :value="item.dataCode"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </div>
+            <el-form-item prop="catalogName" class="info-line online">
+              <span>目录</span>
+              <div class="treebox">
+                <el-select
+                  v-model="infolist.catalogName"
+                  placeholder="请选择报表路径"
+                  ref="selectReport"
+                >
+                  <el-option
+                    style="height:auto;background-color:#fff"
+                    :value="infolist.catalogName"
+                    :label="infolist.catalogName"
+                  >
+                    <el-tree
+                      :data="treeData"
+                      :props="defaultProps"
+                      @node-click="nodeClick"
+                    ></el-tree>
+                  </el-option>
+                </el-select>
+              </div>
+              <!-- <div class="treebox tree">
+                <p style="padding-left: 10px">
+                  当前选择: <span>{{ infolist.catalogName }}</span>
+                </p>
+                <el-tree
+                  class="tree"
+                  :data="treeData"
+                  node-key="id"
+                  :props="defaultProps"
+                  @node-click="nodeClick"
+                ></el-tree>
+              </div> -->
+            </el-form-item>
+            <el-form-item class="info-line online" prop="text">
+              <span>内容</span>
+              <p-editor-tiny
+                imgType="upload"
+                v-model="infolist.text"
+              ></p-editor-tiny>
+            </el-form-item>
+            <div style="padding-left: 80px">
+              <myUpload
+                @uploadBack="uploadBack"
+                :fileInfo="fileInfo"
+                :fileList="fileInfo.fileList"
+              >
+              </myUpload>
+            </div>
+          </el-form>
+          <div v-loading="loadinged" v-else>
+            <h3 style="text-align: center; margin: 10px 0">
+              {{ infolist.title }}
+            </h3>
+            <div style="font-size: 12px; color: grey; margin: 10px 0">
+              发布时间:{{ infolist.createTime || "暂无" }} 发布人:{{
+                infolist.handler || "暂无"
+              }}
+            </div>
+            <div v-html="infolist.text"></div>
+            <div style="margin: 10px 0">
+              附件:
+              <uploadDown
+                :datalist="datalist"
+                :dialogStatus="uploadstatus"
+              ></uploadDown>
+            </div>
+          </div>
+          <div class="dialog-footer myfooter">
+            <el-button
+              type="primary"
+              v-if="titname != '查看'"
+              @click="dialogCli(1)"
+              >保 存</el-button
+            >
+            <el-button @click="dialogCli(2)">取 消</el-button>
+          </div>
+        </div>
+      </el-dialog>
+      <myMessage
+        :messTit="messTit"
+        @closeMessage="closeMessage"
+        :centerDialogVisible="centerDialogVisible"
+        v-if="centerDialogVisible"
+      ></myMessage>
+    </div>
+  </fullscreen>
+</template>
+<script>
+import myUpload from "../../../components/upload";
+import uploadDown from "../../../components/uploadDown";
+import mySearch from "../../../components/search";
+import toolList from "../../../components/toolList";
+import myMessage from "../../../components/myMessage.vue";
+export default {
+  components: {
+    myMessage,
+    myUpload,
+    uploadDown,
+    mySearch,
+    toolList,
+    PEditorTiny: () =>
+      import(
+        /* webpackChunkName: "peditor-tiny" */ "../../../components/p-editor-tiny"
+      ),
+  },
+  data() {
+    const catalogName = (rule, value, callback) => {
+      if (!this.infolist.catalogName) {
+        callback(new Error("不能为空"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      actionName: "",
+      htmlS: "",
+      filterText: "",
+      choiceName: "", // 点击树提示当前选择项
+      treeData: [], //  目录树数据
+      defaultProps: {
+        children: "children",
+        label: "title",
+      },
+      fullscreen: false, // 是否全屏控制按钮
+      rules: {
+        type: [
+          {
+            required: true,
+            trigger: "change",
+            message: "请选择类型",
+          },
+        ],
+        title: [
+          {
+            required: true,
+            trigger: "blur",
+            message: "请输入标题",
+          },
+        ],
+        text: [
+          {
+            required: true,
+            trigger: "blur",
+            message: "请输入内容",
+          },
+        ],
+        catalogName: [
+          {
+            required: true,
+            trigger: "blur",
+            message: "请选择目录",
+            validator: catalogName,
+          },
+        ],
+      },
+      tooltit: "知识库管理",
+      fileInfo: {
+        limit: 5,
+        url: "/market/cknowledgeatt/upload",
+        fileList: [],
+      },
+      total: 0,
+      pageSize: 1,
+      knowledge: {
+        type: {
+          options: [],
+        },
+      },
+      tableData: [], // 表格数据源
+      dialogStatus: false, // 弹窗开启关闭
+      infolist: {}, // 提交表单数据源
+      typeOptions: [], // 类型数据源
+      titname: "", // 操作名称 -- 新增、修改、查看
+      fileList: [], // 回显附件数据源
+      attList: [], // 修改附件数据源
+      uploadstatus: false,
+      userInfo: {}, // 登录用户信息
+      searchList: [
+        {
+          type: "sel",
+          tit: "类型",
+          value: "",
+          width: "100%",
+          options: [],
+        },
+        {
+          type: "input",
+          tit: "标题",
+          value: "",
+          width: "100%",
+        },
+        {
+          type: "sel",
+          tit: "状态",
+          value: "",
+          width: "100%",
+          options: [
+            {
+              dataCode: "0",
+              dataName: "未收藏",
+            },
+            {
+              dataCode: "1",
+              dataName: "已收藏",
+            },
+          ],
+        },
+      ],
+      params: {},
+      centerDialogVisible: false,
+      messTit: "",
+      dataId: "",
+      loading: false,
+      loadinged: false,
+      datalist: {
+        url: "/market/compatt/downfile",
+        type: 2,
+      },
+    };
+  },
+  methods: {
+    canelChoice() {
+      this.params.catalogId = "";
+      this.actionName = "";
+      this.getList(this.params, this.pageSize);
+    },
+    collectionHandle(val) {
+      this.$http({
+        url: "/market/cnewknowledge/collection",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          id: val.id,
+          collection: val.collection == "0" ? "1" : "0",
+        },
+      }).then((res) => {
+        if (res.data.result === 1) {
+          this.$message({
+            message: res.data.desc,
+            type: "error",
+          });
+        } else {
+          this.$message({
+            message: "成功",
+            type: "success",
+          });
+          this.getList(this.params, this.pageSize);
+        }
+      });
+    },
+    sortChange(val) {
+      if (val.prop == "hits") {
+        this.params.hits = val.order;
+      }
+      this.getList(this.params, this.pageSize);
+    },
+    checkNode(index, data, node) {
+      this.actionName = data.label;
+      this.searchList.map((item) => {
+        item.value = "";
+      });
+      this.params.type = "";
+      this.params.title = "";
+      this.params.collection = "";
+      this.params.catalogId = data.key;
+      this.getList(this.params, this.pageSize);
+    },
+    // 树筛选
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.title.indexOf(value) !== -1;
+    },
+    // 树点击
+    nodeClick(index, data, node) {
+      this.infolist.catalogName = data.data.title;
+      this.infolist.catalogId = data.data.id;
+      this.$forceUpdate();
+    },
+    // 获取树
+    getTreeData() {
+      this.$http({
+        url: "/market/mkKnowledgeCatalog/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        this.treeData = res.data;
+      });
+    },
+    // 关闭弹窗
+    closedia() {
+      this.fullscreen = false;
+      this.infolist = {};
+      this.dialogStatus = false;
+      this.fileInfo.fileList = [];
+      this.getList(this.params, this.pageSize);
+    },
+    // 上传回调
+    uploadBack(v) {
+      this.attList = v;
+    },
+    //搜索数据
+    searchInfo(v) {
+      this.params = {};
+      v[0] ? (this.params.type = v[0]) : "";
+      v[1] ? (this.params.title = v[1]) : "";
+      v[2] ? (this.params.collection = v[2]) : "";
+      this.getList(this.params, this.pageSize);
+    },
+    //获取列表
+    getList(v, n) {
+      this.pageSize = n;
+      this.loading = true;
+      this.tableData = [];
+      this.$http({
+        url: "/market/mkNewknowledge/queryPage",
+        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;
+      });
+    },
+    //字典类型
+    getListype(v) {
+      this.$http({
+        url: "/market/mkKnowledgePubMsgType/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          dictCode: "pubType",
+        },
+      }).then((res) => {
+        let listopt = [];
+        res.data.forEach((item) => {
+          listopt.push({
+            dataCode: item.id,
+            dataName: item.pubType,
+          });
+        });
+        this.searchList[0].options = listopt;
+        this.knowledge.type.options = listopt;
+      });
+    },
+    //功能栏
+    iconCli(v) {
+      if (v === 1) {
+        this.getList(this.params, this.pageSize);
+      }
+      if (v === 2) {
+        this.fullscreen = !this.fullscreen;
+        // let isFullscreen =
+        //   document.body.scrollHeight == window.screen.height &&
+        //   document.body.scrollWidth == window.screen.width;
+        // if (!isFullscreen) {
+        //   this.requestFullscreen();
+        // } else {
+        //   this.exitFullscreen();
+        // }
+      }
+    },
+    // 全屏
+    requestFullscreen() {
+      const element = element || document.documentElement;
+      if (element.requestFullscreen) {
+        element.requestFullscreen();
+      } else if (element.msRequestFullscreen) {
+        element.msRequestFullscreen();
+      } else if (element.mozRequestFullScreen) {
+        element.mozRequestFullScreen();
+      } else if (element.webkitRequestFullscreen) {
+        element.webkitRequestFullscreen();
+      }
+    },
+    // 退出全屏
+    exitFullscreen() {
+      const element = element || document.documentElement;
+      if (document.exitFullscreen) {
+        document.exitFullscreen();
+      } else if (document.msExitFullscreen) {
+        document.msExitFullscreen();
+      } else if (document.mozCancelFullScreen) {
+        document.mozCancelFullScreen();
+      } else if (document.webkitCancelFullScreen) {
+        document.webkitCancelFullScreen();
+      }
+    },
+    // 分页
+    currchange(v) {
+      this.pageSize = v;
+      this.getList(this.params, this.pageSize);
+    },
+    //查看 修改 新增
+    dialogCheck(v, n) {
+      this.dialogStatus = true;
+      this.infolist = {};
+      if (v === 1) {
+        this.titname = "新建";
+        this.infolist = {};
+        this.getUser();
+        return;
+      } else if (v === 2) {
+        this.titname = "查看";
+        this.loadinged = true;
+      } else if (v === 3) {
+        this.titname = "修改";
+        this.loadinged = true;
+      }
+      this.$http({
+        url: "/market/cnewknowledge/queryInfo",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          id: n.id,
+        },
+      }).then((res) => {
+        this.datalist.attList = res.data.attList;
+        this.uploadstatus = true;
+        this.infolist = res.data;
+        this.fileInfo.fileList = [];
+        this.attList = [];
+        res.data.attList.forEach((item) => {
+          this.fileInfo.fileList.push({
+            name: item.fileName,
+            url: "",
+            id: item.id,
+            fileName: item.fileName,
+            fileCode: item.fileCode,
+            opName: item.opName,
+            opNo: item.opNo,
+            opTime: item.opTime,
+          });
+          this.attList.push({
+            name: item.fileName,
+            url: "",
+            id: item.id,
+            fileName: item.fileName,
+            fileCode: item.fileCode,
+            opName: item.opName,
+            opNo: item.opNo,
+            opTime: item.opTime,
+          });
+        });
+        this.loadinged = false;
+      });
+    },
+    //添加 修改
+    dialogCli(v) {
+      this.uploadstatus = false;
+      this.fileInfo.fileList = [];
+      if (v === 2) {
+        this.getUser();
+        this.dialogStatus = false;
+        this.getList(this.params, this.pageSize);
+        return;
+      }
+      if (this.titname === "新建") {
+        this.submitInfo("/market/cnewknowledge/addSave", v);
+      } else if (this.titname === "修改") {
+        this.submitInfo("/market/cnewknowledge/update ", v);
+      }
+    },
+    submitInfo(u, v) {
+      this.$refs.infolist.validate((valid) => {
+        if (valid) {
+          let attList = [];
+          for (let i = 0; i < this.attList.length; i++) {
+            attList.push({
+              id: this.attList[i].id,
+              fileCode: this.attList[i].fileCode,
+              fileName: this.attList[i].fileName,
+              opName: this.attList[i].opName,
+              opNo: this.attList[i].opNo,
+              opTime: this.attList[i].opTime,
+            });
+          }
+          this.loadinged = true;
+          this.$http({
+            url: u,
+            method: "post",
+            headers: {
+              "Content-Type": "application/json",
+            },
+            data: {
+              newKnowleDge: this.infolist,
+              attList: attList,
+            },
+          }).then((res) => {
+            this.loadinged = false;
+            if (res.data.result === 1) {
+              this.$message({
+                message: res.data.desc,
+                type: "error",
+              });
+            } else {
+              this.$message({
+                message: "成功",
+                type: "success",
+              });
+              this.fileInfo.fileList = [];
+              this.infolist = {};
+              this.dialogStatus = false;
+              this.getList(this.params, this.pageSize);
+            }
+          });
+        }
+      });
+    },
+    //处理所需数据
+    verifcheck(v) {
+      if (v === 1) {
+        for (let i = 0; i < this.knowledge.type.options.length; i++) {
+          if (this.knowledge.type.options[i].dataCode == this.infolist.type) {
+            this.infolist.typeName = this.knowledge.type.options[i].dataName;
+          }
+        }
+      }
+    },
+    //删除
+    delLine(val) {
+      this.centerDialogVisible = true;
+      this.messTit = "即将删除此条数据, 是否删除?";
+      this.dataId = val.id;
+    },
+    closeMessage(v) {
+      this.centerDialogVisible = false;
+      if (v === 1) {
+        this.$http({
+          url: "/market/cnewknowledge/delete",
+          method: "post",
+          headers: {
+            "Content-Type": "application/json",
+          },
+          data: { id: this.dataId },
+        }).then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.getList(this.params, this.pageSize);
+        });
+      }
+    },
+    getUser() {
+      this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+      this.infolist = {};
+      this.infolist.handler = this.userInfo.loginNo;
+      this.infolist.orgId = this.userInfo.groupId;
+      this.infolist.orgName = this.userInfo.groupName;
+      this.infolist.handlerId = this.userInfo.loginName;
+    },
+  },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+  mounted() {
+    this.getList(this.params, this.pageSize);
+    this.getListype();
+    this.getUser();
+    this.getTreeData();
+  },
+  created() {},
+};
+</script>
+<style>
+.el-select-dropdown__item {
+  /* padding: 0 !important; */
+}
+</style>
+<style scoped lang="scss">
+@import "../../../assets/style";
+
+// .iconfont {
+//   font-size: 42px;
+// }
+
+.icon-excel {
+  color: #67db63;
+}
+
+.icon-word {
+  color: #ff654e;
+}
+
+.icon-ppt {
+  color: #ff8943;
+}
+
+.icon-wenjian {
+  color: #ccc;
+}
+.tinymce-editor {
+  width: calc(100% - 100px) !important;
+}
+.el-icon-picture {
+  font-size: 36px;
+  color: #ccc;
+  background: #fff;
+  padding: 4px 2px;
+  margin-bottom: 2px;
+}
+.el-icon-full-screen {
+  cursor: pointer;
+}
+.back-box {
+  margin-top: 20px;
+  background: #f2f2f2;
+  padding: 20px;
+
+  div {
+    display: inline-block;
+    text-align: center;
+    margin-right: 20px;
+    cursor: pointer;
+
+    span {
+      display: block;
+      width: 80px;
+      overflow: hidden;
+      padding-top: 10px;
+      margin: 0 10px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display: -webkit-box;
+      /* 将对象作为弹性伸缩盒子模型显示 */
+      -webkit-line-clamp: 1;
+      /* 控制最多显示几行 */
+      -webkit-box-orient: vertical;
+      /* 设置或检索伸缩盒对象的子元素的排列方式 */
+    }
+  }
+}
+.tree-box {
+  height: calc(100% - 170px);
+  overflow: auto;
+  border: 1px solid #dcdfe6;
+  border-top: none;
+}
+
+.titbox {
+  div {
+    float: right;
+
+    i {
+      font-size: 22px;
+      margin-left: 20px;
+      cursor: pointer;
+    }
+  }
+}
+
+.tabbox {
+  margin-top: 15px;
+}
+
+.pageBox {
+  text-align: right;
+  margin-top: 10px;
+}
+
+.info-line {
+  width: 100%;
+  display: block;
+  padding-left: 20px;
+
+  div {
+    width: 50%;
+    display: inline-block;
+  }
+
+  span {
+    width: 80px;
+    display: inline-block;
+    text-align: left;
+
+    i {
+      color: red;
+      display: inline-block;
+      padding-right: 5px;
+    }
+  }
+
+  .el-select,
+  .el-input {
+    width: calc(100% - 100px);
+  }
+  .tree {
+    width: calc(100% - 100px);
+  }
+}
+
+.online {
+  width: 100%;
+
+  .el-select {
+    width: calc(100% - 100px);
+  }
+
+  span {
+    vertical-align: top;
+  }
+
+  .el-textarea {
+    width: calc(100% - 100px);
+  }
+}
+.choice-style {
+  background: rgb(255, 255, 255);
+}
+.ant-alert-info {
+  background-color: #e6f7ff;
+  border: 1px solid #91d5ff;
+}
+.ant-alert {
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: rgb(0, 0, 0);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5;
+  list-style: none;
+  font-feature-settings: "tnum";
+  position: relative;
+  padding: 5px 0;
+  word-wrap: break-word;
+  border-radius: 4px;
+}
+.canel-style {
+  color: #1890ff;
+  cursor: pointer;
+  padding-left: 10px;
+}
+</style>

+ 374 - 0
src/pages/main/knowledgetop/knowledgeType.vue

@@ -0,0 +1,374 @@
+<template>
+
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)">添加
+                </el-button>
+            </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="pubType" label="知识类型">
+                    </el-table-column>
+                    <el-table-column prop="createName" label="配置姓名">
+                        <template slot-scope="scope">
+                            <span>{{$desensitization(scope.row.createName,1)}}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="createNo" label="配置工号">
+                        <template slot-scope="scope">
+                            <span class="">{{scope.row.createNo}}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="配置时间">
+                    </el-table-column>
+                    <el-table-column label="操作" width="160px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+                            <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)">修改</el-button>
+                            <el-button size="mini" type="danger" @click="delLine(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>
+        </div>
+
+        <el-dialog :title="titname + '知识类型'" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
+            <div v-loading="loadinged">
+                <el-form :model="infolist" ref="infolist" :rules="rules">
+                    <div class="info-line">
+                        <el-form-item prop="pubType">
+                            <span>知识类型</span>
+                            <el-input v-model="infolist.pubType" placeholder="知识类型" :disabled="disableStatus"></el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <span>创建时间</span>
+                            <el-date-picker v-model="infolist.createTime" type="date" placeholder="创建时间" disabled>
+                            </el-date-picker>
+                        </el-form-item>
+                    </div>
+
+                    <div class="info-line">
+                        <el-form-item>
+                            <span>创建工号</span>
+                            <el-input v-model="infolist.createNo" placeholder="创建工号" disabled></el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <span>创建姓名</span>
+                            <el-input v-model="infolist.createName" placeholder="" disabled></el-input>
+                        </el-form-item>
+                    </div>
+                </el-form>
+
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button type="primary" @click="dialogCli(2)" v-if="titname !== '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)">取 消</el-button>
+                </div>
+            </div>
+        </el-dialog>
+
+        <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible" v-if="centerDialogVisible"></myMessage>
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myUpload from '../../../components/upload'
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+
+    export default {
+        components: {
+            mySearch,
+            myUpload,
+            myMessage,
+            toolList
+        },
+        data() {
+            const pubType = (rule, value, callback) => {
+                if (!this.infolist.pubType) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    pubType: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: pubType
+                    }],
+                },
+                searchList: [
+                    {
+                        type: 'input',
+                        tit: '知识类型',
+                        value: '',
+                        width: '98%',
+                    },
+                ],
+                tooltit:'知识类型管理',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {},
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading:false,
+                loadinged:false,
+            }
+        },
+        methods: {
+            closedia() {
+                this.infolist = {};
+                this.dialogStatus = false;
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.pubType = v[0] : '';
+                this.getList(this.params, this.pageSize);
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                this.tableData = [];
+                this.$http({
+                    url: "/market/mkKnowledgePubMsgType/queryPage",
+                    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;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //申请
+            dialogCheck(v, n) {
+                this.dialogStatus = true;
+                this.infolist = Object.assign({}, n);
+                this.infolist.createNo = this.userInfo.loginNo;
+                this.infolist.createName = this.userInfo.loginName;
+                if (v === 1) {
+                    this.titname = '查看';
+                    this.disableStatus = true;
+                } else if (v === 2) {
+                    this.titname = '修改';
+                    this.disableStatus = false;
+                } else if (v === 3) {
+                    this.titname = '添加';
+                    this.disableStatus = false;
+                    return
+                }
+                this.infolist.createName = this.$desensitization(this.infolist.createName,1);
+            },
+            //添加
+            dialogCli(v) {
+                if (v === 1) {
+                    this.infolist = {};
+                    this.dialogStatus = false;
+                    return
+                } else {
+                    this.infolist.createNo = this.userInfo.loginNo;
+                    this.infolist.createName = this.userInfo.loginName;
+                    this.infolist.createTime = this.$formatDate(new Date(), "YYYY-MM-DD");
+                    if (this.titname === '添加') {
+                        this.submitInfo("/market/cpubMsgType/add");
+                    } else if (this.titname === '修改') {
+                        this.submitInfo("/market/mkKnowledgePubMsgType/update", v);
+                    }
+
+                }
+            },
+            submitInfo(u) {
+                let _this = this;
+                this.$refs.infolist.validate(valid => {
+                    if (valid) {
+                        this.loadinged = true;
+                        this.$http({
+                            url: u,
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.infolist,
+                        }).then((res) => {
+                            this.loadinged = false;
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '成功',
+                                    type: 'success'
+                                });
+                                _this.infolist = {};
+                                _this.dialogStatus = false;
+                                _this.getList({}, _this.pageSize);
+                            }
+
+                        });
+                    }
+                })
+            },
+            closeMessage(v) {
+                this.centerDialogVisible = false;
+                let _this = this;
+                if (v === 1) {
+                    _this.$http({
+                        url: "/market/mkKnowledgePubMsgType/del",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            id: this.delid
+                        },
+                    }).then((res) => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        } else {
+                            _this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            });
+                            _this.getList(this.params, this.pageSize);
+                        }
+                    });
+                }
+            },
+            //删除
+            delLine(v) {
+                this.centerDialogVisible = true;
+                this.messTit = '即将删除此条数据, 是否删除?';
+                this.delid = v.id;
+            },
+            //文件返回值
+            uploadBack(v) {
+                console.log(v)
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            }
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+</style>

+ 366 - 0
src/pages/main/knowledgetop/mcIndex.vue

@@ -0,0 +1,366 @@
+<template>
+  <fullscreen :fullscreen.sync="fullscreen" class="container">
+    <div class="container-box">
+      <el-row :gutter="20">
+        <el-col :span="4">
+          <el-input placeholder="输入关键字进行过滤" v-model="filterText">
+          </el-input>
+          <div class="tree-box">
+            <el-tree
+              class="filter-tree"
+              :data="treeData"
+              node-key="catalog"
+              :props="defaultProps"
+              default-expand-all
+              :filter-node-method="filterNode"
+              @node-click="nodeClick"
+              ref="tree"
+            >
+            </el-tree>
+          </div>
+        </el-col>
+        <el-col :span="20">
+          <el-input
+            v-model="params.knowledgeName"
+            style="width: 200px"
+            placeholder="知识标题"
+          ></el-input>
+          <el-select
+            :popper-append-to-body="false"
+            v-model="params.pubType"
+            placeholder="发布类型"
+            clearable
+          >
+            <el-option
+              v-for="item in knowledgeTypeOpation"
+              :key="item.id"
+              :label="item.pubType"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+          <el-button>查询</el-button>
+          <el-radio-group v-model="params.knowledgeType" @change="checkType">
+            <el-radio-button label="a">正常</el-radio-button>
+            <el-radio-button label="1">已收藏</el-radio-button>
+          </el-radio-group>
+          <el-button @click="addKnowledge" style="float: right">添加</el-button>
+          <el-table border ref="filterTable" :data="tableData" style="width: 100%;margin-top:20px">
+            <el-table-column prop="title" label="知识标题"> </el-table-column>
+            <el-table-column prop="address" label="地区"> </el-table-column>
+            <el-table-column prop="time" label="时间" sortable>
+            </el-table-column>
+            <el-table-column prop="point" label="点击量" sortable>
+            </el-table-column>
+            <el-table-column prop="address" label="操作">
+              <template slot-scope="scope">
+                <el-button
+                  plain
+                  size="mini"
+                  type="primary"
+                  @click="detailes(scope.row)"
+                  >查看</el-button
+                >
+                <el-button
+                  plain
+                  size="mini"
+                  type="success"
+                  @click="collection(scope.row)"
+                  >{{ scope.row.collectionDesc }}</el-button
+                >
+                <el-button
+                  plain
+                  size="mini"
+                  type="danger"
+                  @click="detailes(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>
+        </el-col>
+      </el-row>
+    </div>
+    <el-dialog
+      title="增加知识库"
+      :visible.sync="dialogVisible"
+      width="45%"
+      :modal-append-to-body="false"
+    >
+      <el-form :model="formData" ref="infolist">
+        <el-form-item prop="title">
+          <span>标题</span>
+          <el-input v-model="formData.knowledgeTitle" placeholder="标题">
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="catalog">
+          <span>目录</span>
+          <el-tree
+            class="filter-tree"
+            :data="treeData"
+            node-key="catalog"
+            :props="defaultProps"
+            default-expand-all
+            :filter-node-method="filterNode"
+            @node-click="nodeClick"
+            ref="tree"
+          >
+          </el-tree>
+        </el-form-item>
+        <el-form-item prop="content">
+          <span>内容</span>
+          <p-editor-tiny
+            imgType="upload"
+            v-model="formData.content"
+          ></p-editor-tiny>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="dialogVisible = false"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </fullscreen>
+</template>
+<script>
+export default {
+  components: {
+    PEditorTiny: () =>
+      import(
+        /* webpackChunkName: "peditor-tiny" */ "../../../components/p-editor-tiny"
+      ),
+  },
+  data() {
+    return {
+      total: 0,
+      pageSize: 1,
+      formData: {
+        title: "",
+        catalog: "",
+        department: "",
+        content: "",
+      },
+      dialogVisible: false,
+      fullscreen: false,
+      params: {
+        knowledgeType: "a",
+        knowledgeName: "",
+        pubType: "",
+      },
+
+      dataSourse: [
+        {
+          title: "知识库标题1",
+          address: "哈尔滨",
+          time: "2016-05-02",
+          point: "106",
+          collection: "1",
+          collectionDesc: "已收藏",
+          catalog: "1",
+        },
+        {
+          title: "知识库标题2",
+          address: "哈尔滨",
+          time: "2016-05-01",
+          point: "3",
+          collection: "0",
+          collectionDesc: "未收藏",
+          catalog: "2",
+        },
+        {
+          title: "知识库标题3",
+          address: "哈尔滨",
+          time: "2016-04-02",
+          point: "1",
+          collection: "1",
+          collectionDesc: "已收藏",
+          catalog: "3",
+        },
+        {
+          title: "知识库标题4",
+          address: "哈尔滨",
+          time: "2016-03-02",
+          point: "101",
+          collection: "0",
+          collectionDesc: "未收藏",
+          catalog: "3",
+        },
+      ],
+      tableData: [
+        {
+          title: "知识库标题1",
+          address: "哈尔滨",
+          time: "2016-05-02",
+          point: "106",
+          collection: "1",
+          collectionDesc: "已收藏",
+          catalog: "1",
+        },
+        {
+          title: "知识库标题2",
+          address: "哈尔滨",
+          time: "2016-05-01",
+          point: "3",
+          collection: "0",
+          collectionDesc: "未收藏",
+          catalog: "2",
+        },
+        {
+          title: "知识库标题3",
+          address: "哈尔滨",
+          time: "2016-04-02",
+          point: "1",
+          collection: "1",
+          collectionDesc: "已收藏",
+          catalog: "3",
+        },
+        {
+          title: "知识库标题4",
+          address: "哈尔滨",
+          time: "2016-03-02",
+          point: "101",
+          collection: "0",
+          collectionDesc: "未收藏",
+          catalog: "3",
+        },
+      ],
+      filterText: "",
+      treeData: [],
+      defaultProps: {
+        children: "children",
+        label: "title",
+      },
+      knowledgeTypeOpation: [],
+    };
+  },
+  methods: {
+    // 分页
+    currchange(v) {
+      this.pageSize = v;
+    },
+    //字典类型
+    getListype(v) {
+      this.$http({
+        url: "/market/mkKnowledgePubMsgType/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          dictCode: "pubType",
+        },
+      }).then((res) => {
+        this.knowledgeTypeOpation = res.data;
+      });
+    },
+    addKnowledge() {
+      this.$router.push("/addknowledge");
+      //   this.dialogVisible = true;
+    },
+    //  查看
+    detailes(val) {
+      console.log(val);
+    },
+    // 树点击
+    nodeClick(index, data, node) {
+      let dataArr = JSON.parse(JSON.stringify(this.dataSourse));
+      let catalog = data.data.hasOwnProperty("catalog")
+        ? data.data.catalog
+        : "";
+      if (catalog) {
+        this.tableData = dataArr.filter((item) => {
+          if (item.catalog == catalog) {
+            return item;
+          }
+        });
+      } else {
+        this.tableData = this.dataSourse;
+      }
+    },
+    // 列表筛选
+    checkType(val) {
+      if (val != "a") {
+        this.tableData = this.tableData.filter((item) => {
+          if (item.collection == val) {
+            return item;
+          }
+        });
+      } else {
+        this.tableData = this.dataSourse;
+      }
+    },
+    // 树筛选
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    resetDateFilter() {
+      this.$refs.filterTable.clearFilter("date");
+    },
+    clearFilter() {
+      this.$refs.filterTable.clearFilter();
+    },
+    // 列表数据格式化
+    formatter(row, column) {
+      return row.address;
+    },
+    // 列表筛选
+    filterTag(value, row) {
+      return row.tag === value;
+    },
+    // 收藏
+    collection(val) {
+      if (val.collection == "1") {
+        val.collection = "0";
+        val.collectionDesc = "为收藏";
+      } else {
+        val.collection = "1";
+        val.collectionDesc = "已收藏";
+      }
+    },
+    getData() {
+      this.$http({
+        url: "/market/mkKnowledgeCatalog/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        this.treeData = res.data;
+      });
+    },
+  },
+  mounted() {
+    this.getListype();
+    this.getData();
+  },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+};
+</script>
+<style>
+.pageBox {
+  text-align: right;
+  margin-top: 10px;
+}
+.tree-box {
+  height: 400px;
+  overflow: auto;
+  border: 1px solid #dcdfe6;
+  border-top: none;
+}
+</style>

+ 24 - 3
src/pages/main/leader/processInitiation.vue

@@ -8,11 +8,11 @@
 						<div class="f-box-tit">{{ item.unitName }}</div>
 						<div v-for="items in item.modList" :key="items.moduleName" class="f-box-info">
 							<el-badge :value="items.noTaskNum" :max="99" :hidden="items.noTaskNum == 0">
-								
+
 								<i @click="jumpTo(items)" v-if="items.sts == '0' && items.icon" v-html="items.icon">
 									{{items.icon}}
 								</i>
-									
+
 								<i @click="jumpTo(items)" :class="'el-icon-user'" v-if="items.sts == '0'&& !items.icon" style="background: #0b82ff"></i>
 								<i :class="'iconfont icon-tongji'" v-if="items.sts != '0'" style="background: #ddd"></i>
 								<el-tooltip class="item" effect="dark" :content="items.moduleName" placement="bottom">
@@ -36,6 +36,7 @@
 				boxHeight: {
 					height: "auto",
 				},
+                outsideModules: [],
 			};
 		},
 		methods: {
@@ -50,6 +51,7 @@
 					data: {},
 				}).then((res) => {
 					this.funcData = res.data.lineList;
+					this.outsideModules = res.data.outsideModules;
 				});
 			},
 			hAuto() {
@@ -63,6 +65,25 @@
 			},
 			jumpTo(v) {
 				if (v.moduleUrl) {
+				    //加入外部人员权限控制start
+                    if (this.outsideModules.length > 0) {
+                        let moduleIndex = -1;
+                        for (let i = 0; i < this.outsideModules.length; i++) {
+                            if(this.outsideModules[i].moduleUrl == v.moduleUrl){
+                                moduleIndex = i;
+                                break;
+                            }
+                        }
+                        if (moduleIndex < 0) {
+                            global.$vm.$notify.error({
+                                title: "提示",
+                                message: "暂无使用权限",
+                            });
+                            return;
+                        }
+                    }
+                    //加入外部人员权限控制end
+
 					this.$router.push({
 						path: v.moduleUrl,
 					});
@@ -244,7 +265,7 @@
 					top: 0;
 					right: 40px;
 				}
-				
+
 				.icon{
 					width: 100%!important;
 					height: 100%!important;

+ 9 - 0
src/pages/main/memberFamily/empInfoFilling.vue

@@ -265,6 +265,7 @@
                     });
                     return
                 }
+                
                 if(!n.row.memberName){
                     this.$message({
                         message: '请填写成员姓名',
@@ -272,6 +273,14 @@
                     });
                     return
                 }
+                if(!n.row.bornDate){
+                    this.$message({
+                        message: '请填写成员出生日期',
+                        type: 'error'
+                    });
+                    return
+                }
+                
                 if(!n.row.memberSex){
                     this.$message({
                         message: '请填写成员性别',

+ 21 - 7
src/pages/main/memberFamily/haveInHand.vue

@@ -202,7 +202,7 @@
                     param.time ? param.endTime = this.$formatDate(param.time[1], "YYYY-MM-DD") : '';
                     param.dutyList = [];
                     for (let i = 0; i < this.treeListp.length; i++) {
-                        console.log(this.treeListp[i].loginNoStr)
+
                         if(this.treeListp[i].loginNoStr){
                             param.dutyList.push({
                                 dutyNo: this.treeListp[i].loginNoStr,
@@ -219,17 +219,30 @@
                             fillName: this.treeList[i].label,
                         })
                     }
-                    for (let i = 0; i < this.treeList.length; i++) {
-                        for (let ii = 0; ii < this.treeListp.length; ii++) {
-                            if (this.treeListp[i].loginNoStr == this.treeList[ii].receiveNo) {
+                    // for (let i = 0; i < this.treeList.length; i++) {
+                    //     for (let ii = 0; ii < this.treeListp.length; ii++) {
+                    //         console.log(this.treeList);
+                    //         if (this.treeListp[i].loginNoStr == this.treeList[ii].receiveNo) {
+                    //             this.$message({
+                    //                 message: '负责人和填报人重复!',
+                    //                 type: 'error'
+                    //             });
+                    //             return
+                    //         }
+                    //     }
+                    // }
+                    this.treeList.forEach(item=>{
+                        this.treeListp.forEach(n=>{
+                            if(n.loginNoStr == item.receiveNo){
                                 this.$message({
                                     message: '负责人和填报人重复!',
                                     type: 'error'
                                 });
                                 return
                             }
-                        }
-                    }
+                        })
+                    })
+
                     let url = '';
                     if (this.companyFlag == 0) {
                         url = '/market/cMemberWo/saveMkMemberWoByProv';
@@ -346,7 +359,7 @@
                     this.treeListp.splice(x, 1)
                 } else {
                     this.treeListp.push(v);
-                    console.log(this.treeListp)
+                    // console.log(this.treeListp)
                 }
             },
             jumpfw(v) {
@@ -359,6 +372,7 @@
                 this.setabList("填报进度跟踪", "/reportProgress?woNo=" + v.woNo);
             },
             jumpjd(v) {
+                console.log(v.receiverGroupName)
                 this.$router.push({
                     path: "/speedOfProgress",
                     query: {

+ 84 - 6
src/pages/main/memberFamily/index.vue

@@ -4,20 +4,23 @@
 			<div class="container-box">
 				<div class="adv-type">
 					<div v-for="item in typeList" :key="item.dataCode" @click="advmaterial(item)">
-						<span><i class="el-icon-folder-opened"></i></span>
-						<span>{{item.dataName}}</span>
+						<div v-if="(roleStatus <= 1 && item.dataName=='信息汇总') || (roleStatus < 4 && item.dataName=='信息填报')">
+							<span><i class="el-icon-folder-opened"></i></span>
+							<span>{{item.dataName}}</span>
+						</div>
+
 					</div>
 				</div>
 				<div class="adv-box">
-					<div class="adv-tit" @click="jumpadv('1')">
+					<div class="adv-tit" @click="jumpadv('1')" v-if="roleStatus < 3">
 						<i class="el-icon-loading"></i>
 						<span>进行中 </span>
 					</div>
-					<div class="adv-tit" @click="jumpadv('2')">
+					<div class="adv-tit" @click="jumpadv('2')" v-if="roleStatus < 3">
 						<i class="el-icon-notebook-1"></i>
 						<span>已结束 </span>
 					</div>
-					<div class="adv-tit adv-add" @click="advadd">
+					<div class="adv-tit adv-add" @click="advadd" v-if="roleStatus == 0">
 						<i class="el-icon-plus"></i>
 						<span>申请</span>
 					</div>
@@ -141,7 +144,15 @@
 				defaultList:[],
 				depttype:0,
 				fadept:{},
-				deptList:[]
+				deptList:[],
+				// roleList: {
+				// 	isProvinceRole: false,
+				// 	isCityRole: false,
+				// 	isCountyRole: false,
+				// 	isOtherRole: false,
+				// }
+				roleStatus: '',  //0 省 1地市 2区县 3其他
+				roleList:[]
 			}
 		},
 		methods: {
@@ -381,6 +392,68 @@
 
 			getUser() {
 				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+				console.log(this.userInfo);
+				let newArr = [];
+				
+				if(this.userInfo.cityName == null && this.userInfo.countyName == null){
+					this.roleStatus = 0;
+					return;
+				}else if(this.userInfo.cityName != null && this.userInfo.countyName == null){
+					 
+					 this.$http({
+						url: "/market/cMemberWo/queryProvTraceBase",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {
+							sts: 0
+						},
+					}).then((res) => {
+						res.data.body.forEach(item=>{
+							newArr.push(...item.dutyNo.split(","));
+						})
+						let n = newArr.filter(item=>{
+							return  item == this.userInfo.loginNoStr
+						  })
+						//   console.log(n);
+						  if(n.length != 0){
+							  this.roleStatus = 1;
+						  }else{
+							  this.roleStatus = 3;
+						  }
+					});
+					return;
+				}else if(this.userInfo.cityName != null && this.userInfo.countyName != null){
+					this.$http({
+						url: "/market/cMemberWo/queryProvTraceBase",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {
+							sts: 0
+						},
+					}).then((res) => {
+						res.data.body.forEach(item=>{
+							newArr.push(...item.dutyNo.split(","));
+						})
+						let n = newArr.filter(item=>{
+							return  item == this.userInfo.loginNoStr
+						  })
+						//   console.log(n);
+						  if(n.length != 0){
+							  this.roleStatus = 2;
+						  }else{
+							  this.roleStatus = 3;
+						  }
+					});
+					// this.roleStatus = 2;
+					return;
+				}else{
+					this.roleStatus = 3;
+					return;
+				}
 			},
 		},
 		mounted() {
@@ -468,6 +541,11 @@
 			cursor: pointer;
 			padding-top: 10px;
 			margin: 10px 0;
+			div{
+				width: 100%;
+				padding-top: 0;
+				margin: 0;
+			}
 		}
 
 		div:hover {

+ 4 - 4
src/pages/main/memberFamily/speedOfProgress.vue

@@ -118,9 +118,9 @@
                 this.tableData = [];
                 let url = '';
                 if(this.companyFlag == 0){
-                    url = '/market/cMemberWo/queryProgressByRegionPage';
+                    url = '/market/cMemberWo/queryProgressByRegion';
                 }else if(this.companyFlag == 1){
-                    url = '/market/cMemberWo/queryProgressByAreaPage';
+                    url = '/market/cMemberWo/queryProgressByArea';
                     v.regionName = this.$route.query.receiverGroupName;
                 }
                 this.$http({
@@ -128,11 +128,11 @@
                     method: "post",
                     headers: {
                         "Content-Type": "application/json",
-                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                        //"page": '{"pageNo":"' + n + '","pageSize":"10"}'
                     },
                     data: v,
                 }).then((res) => {
-                    this.tableData = res.data.data;
+                    this.tableData = res.data;
                     this.total = res.data.totalRecord;
                     this.loading = false;
                 });

+ 76 - 2
src/pages/main/officialAccount/officialAccountadd.vue

@@ -56,6 +56,7 @@
 					</div>
 				</div>
 				<div class="t-footer">
+                    <el-button type="primary" @click="temp">保 存</el-button>
 					<el-button type="primary" @click="checkexa = true">确 定</el-button>
 					<el-button @click="dialogCli(1)">取 消</el-button>
 				</div>
@@ -135,7 +136,8 @@
 				treeListonly: {},
 				defaultList: [],
 				closeList: false,
-				depttype: 0
+				depttype: 0,
+                tempSave: false,
 			}
 		},
 		methods: {
@@ -197,6 +199,19 @@
 				this.infolist.sts = '1';
 				this.infolist.stsDesc = '待审核';
 				this.submitInfo("/market/cemscnpl/add");
+
+                this.$http({
+                    url: "/market/bpmTemp/del",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        bpmType: "2",
+                    },
+                }).then((res) => {
+                    //console.log(res)
+                });
 			},
 			submitInfo(u, v) {
 				let _this = this;
@@ -251,11 +266,70 @@
                         o:'全选',
                     })
 				});
-			}
+			},
+            temp() {
+			    if (JSON.stringify(this.infolist)=='{}') {
+			        return;
+                }
+                let params = {};
+                params.infolist = this.infolist
+                params.fileList = [];
+                params.attList = [];
+                this.attList.forEach(item => {
+                    let file = {
+                        id: item.fileCode,
+                        fileCode: item.fileCode,
+                        fileName: item.fileName,
+                        name: item.fileName
+                    };
+                    params.fileList.push(file);
+                    params.attList.push(file);
+                });
+                this.$http({
+                    url: "/market/bpmTemp/temp",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        bpmType: "2",
+                        content: JSON.stringify(params),
+                    },
+                }).then((res) => {
+                    //console.log(res)
+                });
+            },
 		},
+
+        watch:{
+            tempSave (value) {
+                if (value) {
+                    // 监听编辑状态,每20秒请求一次,注意函数不加()
+                    this.timer = window.setInterval(this.temp, 20000)
+                } else {
+                    // 停止监听
+                    clearInterval(this.timer)
+                }
+            }
+        },
 		mounted() {
 			this.getUser();
 			this.getRegion();
+
+            this.$http({
+                url: '/market/bpmTemp/query',
+                method: "post",
+                headers: {"Content-Type": "application/json",},
+                data: {bpmType: "2"},
+            }).then((res) => {
+                if (res.data) {
+                    let content = JSON.parse(res.data.content);
+                    this.infolist = content.infolist;
+                    this.attList = content.attList;
+                    this.fileInfo.fileList =  content.fileList;
+                }
+                this.tempSave = true;
+            });
 		},
 		created() {
 

+ 93 - 1
src/pages/main/organizaStructure/staffManage.vue

@@ -3,8 +3,13 @@
         <div class="container-box">
             <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
             <div class="search">
-                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo" style="width: 60%"></mySearch>
                 <span>
+                    <!-- <el-button type="primary" @click="dialogCheck(4)" size="medium">导入</el-button> -->
+                    <el-button type="primary" @click="downloadExcel(1)">导出</el-button>
+                    <el-button type="primary" @click="downloadExcel(2)">下载模板</el-button>
+                    <myUpload style="display:inline-block;" :fileInfo="fileInfo"
+                        :fileList="fileInfo.fileList" @uploadBack='uploadBack'></myUpload>
                     <el-button type="primary" @click="dialogCheck(3)" size="medium">添加</el-button>
                     <!-- <el-button type="primary" @click="dialogCheck(3)" size="medium">导入</el-button> -->
                     <!-- <el-button type="primary" @click="dialogCheck(3)" size="medium">导出</el-button> -->
@@ -225,6 +230,17 @@
                 uplevelopt:[],
                 kindopt:[],
                 typeopt:[],
+
+                // 导入
+                fileInfo: {
+                    type: 'btn',
+                    typename: '导入',
+                    btntype: 'primary',
+                    // limit: 1,
+                    url: '/market/cMkOrgUser/orgUserImportNew',
+                    fileList: [],
+                    typexz:"xlsx"
+                },
             }
         },
         methods: {
@@ -267,6 +283,7 @@
                 this.pageSize = v;
                 this.getList(this.params, this.pageSize);
             },
+            
             //申请
             dialogCheck(v, n) {
                 this.dialogStatus = true;
@@ -364,6 +381,81 @@
                     }
                 })
             },
+            // 导入
+            uploadBack(v) {
+                console.log(v);
+            },
+            downloadExcel(v){
+               // v:1  导出数据   v:2  导出模板
+                if(v === 1){
+                    this.$http({
+                        url: "/market/cMkOrgUser/excelExport",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json"
+                        },
+                        responseType: "blob",
+                        data: { }
+                    }).then(res => {
+                        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                            let blob = new Blob([res.data], {
+                                type: "application/vnd.ms-excel"
+                            });
+                            window.navigator.msSaveOrOpenBlob(
+                                blob,
+                                // this.wo.bizName + ".xlsx"
+                                "导出数据" + ".xlsx"
+                            );
+                        } else {
+                            /* 火狐谷歌的文件下载方式 */
+                            var blob = new Blob([res.data]);
+                            var downloadElement = document.createElement("a");
+                            var href = window.URL.createObjectURL(blob);
+                            downloadElement.href = href;
+                            downloadElement.download = "导出数据" + ".xlsx";
+                            document.body.appendChild(downloadElement);
+                            downloadElement.click();
+                            document.body.removeChild(downloadElement);
+                            window.URL.revokeObjectURL(href);
+
+                        }
+                    });
+                }else if(v === 2){
+                    this.$http({
+                        url: "/market/cMkOrgUser/excelExportTemp",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json"
+                        },
+                        responseType: "blob",
+                        data: {}
+                    }).then(res => {
+                        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                            let blob = new Blob([res.data], {
+                                type: "application/vnd.ms-excel"
+                            });
+                            window.navigator.msSaveOrOpenBlob(
+                                blob,
+                                // this.wo.bizName + ".xlsx"
+                                "导出模板" + ".xlsx"
+                            );
+                        } else {
+                            /* 火狐谷歌的文件下载方式 */
+                            var blob = new Blob([res.data]);
+                            var downloadElement = document.createElement("a");
+                            var href = window.URL.createObjectURL(blob);
+                            downloadElement.href = href;
+                            downloadElement.download = "导出模板" + ".xlsx";
+                            document.body.appendChild(downloadElement);
+                            downloadElement.click();
+                            document.body.removeChild(downloadElement);
+                            window.URL.revokeObjectURL(href);
+
+                        }
+                    });
+                }
+                
+            },
             closeMessage(v) {
                 this.centerDialogVisible = false;
                 let _this = this;

+ 77 - 3
src/pages/main/productOnSale/index.vue

@@ -151,6 +151,7 @@
 					</el-button>
 					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">打 回
 					</el-button>
+                    <el-button v-if="titname == '添加'" type="primary" @click="temp">保 存</el-button>
 					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
 					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
@@ -288,9 +289,54 @@
                 closeList: false,
                 visionchonly: false,
                 depttype: 0,
+                tempSave: false,
 			}
 		},
+        watch:{
+            tempSave (value) {
+                if (value) {
+                    // 监听编辑状态,每20秒请求一次,注意函数不加()
+                    this.timer = window.setInterval(this.temp, 20000)
+                } else {
+                    // 停止监听
+                    clearInterval(this.timer)
+                }
+            }
+        },
 		methods: {
+            temp() {
+                if (JSON.stringify(this.infolist)=='{}') {
+                    return;
+                }
+                let params = {};
+                params.infolist = this.infolist
+                params.infodatas = this.infodatas;
+                params.fileList = [];
+                params.attList = [];
+                this.attList.forEach(item => {
+                    let file = {
+                        id: item.fileCode,
+                        fileCode: item.fileCode,
+                        fileName: item.fileName,
+                        name: item.fileName
+                    };
+                    params.fileList.push(file);
+                    params.attList.push(file);
+                });
+                this.$http({
+                    url: "/market/bpmTemp/temp",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        bpmType: "6",
+                        content: JSON.stringify(params),
+                    },
+                }).then((res) => {
+                    //console.log(res)
+                });
+            },
             deletes() {
             	this.treeListonly = {};
             	this.closeList = !this.closeList;
@@ -354,9 +400,24 @@
 					this.titname = '审批';
 					this.disableStatus = true;
 				} else if (v === 3) {
-					this.titname = '添加';
-					this.disableStatus = false;
-					return
+                    this.$http({
+                        url: '/market/bpmTemp/query',
+                        method: "post",
+                        headers: {"Content-Type": "application/json",},
+                        data: {bpmType: "6"},
+                    }).then((res) => {
+                        if (res.data) {
+                            let content = JSON.parse(res.data.content);
+                            this.infolist = content.infolist;
+                            this.infodatas = content.infodatas;
+                            this.attList = content.attList;
+                            this.fileInfo.fileList =  content.fileList;
+                        }
+                        this.tempSave = true;
+                        this.titname = '添加';
+                        this.disableStatus = false;
+                    });
+                    return
 				}
 				this.$http({
 					url: '/bpm/api/taskInit',
@@ -508,6 +569,19 @@
 							});
 						}
 						param.params.attList = JSON.stringify(attList)
+
+                        this.$http({
+                            url: "/market/bpmTemp/del",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: {
+                                bpmType: "6",
+                            },
+                        }).then((res) => {
+                            //console.log(res)
+                        });
 					}
 					this.submitInfo("/bpm/api/submitTask", param);
 				}

+ 34 - 14
src/pages/main/terminal/advcheck.vue

@@ -26,9 +26,10 @@
                     <el-table-column label="操作" width="120px" align="center">
                         <template slot-scope="scope">
                             <el-button size="mini" type="primary" @click="dialogCheck(scope.row,1)">查看</el-button>
-                            <el-button size="mini" type="danger" v-if="scope.row.sts==3"
+                            <!--<el-button size="mini" type="danger" v-if="scope.row.sts==3"-->
+                            <el-button size="mini" type="danger" v-if="advstatus == 0 && scope.row.isBtnShow  && scope.row.sts=='0'"
                                 @click="dialogCheck(scope.row,2)">审核</el-button>
-                            <el-button v-if="userInfo.loginName == scope.row.opName&&scope.row.sts=='1'" size="mini"
+                            <el-button v-if="userInfo.loginName == scope.row.opName&&scope.row.sts=='3'" size="mini"
                                 type="primary" @click="advSure(scope.row)">归档
                             </el-button>
                         </template>
@@ -112,6 +113,9 @@
                 typeList: [],
                 advtype: '',
                 dgid: '',
+                singleTable: {},
+                shParam:{},
+                // isBtnShow: false,
             }
         },
         methods: {
@@ -133,18 +137,21 @@
                     },
                     data: param,
                 }).then((res) => {
-                    this.tableData = res.data.data;
+                    //this.tableData = res.data.data;
+                    let data = res.data.data;
                     this.total = res.data.totalRecord;
                     this.loading = false;
-					if(this.advstatus!=0){
-						this.tableData.forEach(item => {
-						    this.getSts(item);
+                    if(this.advstatus==0){
+						data.forEach(item => {
+                            item.isBtnShow = false;
+                            this.getSts(item)
 						});
 					}
+                    this.tableData = data;
                 });
             },
-			getSts(v){
-				this.$http({
+		    async getSts(v){
+				await this.$http({
 				    url: '/bpm/api/taskInit',
 				    method: "post",
 				    headers: {
@@ -155,15 +162,17 @@
 				        woNo: v.id
 				    },
 				}).then((res) => {
+                    this.shParam = res.data;
 				    if(res.data.taskName == '需求部门'){
-                        v.sts = '1'
+                        v.sts = '3'
                         return
                     }
                     if(res.data.assigneeNo == this.userInfo.loginNo){
-                        v.sts = '3'
+                        v.sts = '0'
+                        v.isBtnShow = true;
                         return
-                        
                     }
+            
 				});
 			},
             // 分页
@@ -194,6 +203,7 @@
                 let _this = this;
                 this.dialogStatusc = true;
                 this.dgid = v.id;
+                this.getSts(v);
             },
             dialogCli(v) {
                 let _this = this;
@@ -205,13 +215,24 @@
                             advTypeName = this.typeList[i].dataName;
                         }
                     }
-                    let param = {
+                    // let param = {
+                    //     woNo: this.dgid,
+                    //     advTypeName: advTypeName,
+                    //     advType: this.advtype
+                    // }
+                    let gdParam = {
                         woNo: this.dgid,
                         advTypeName: advTypeName,
                         advType: this.advtype
                     }
+                    
+                    this.shParam.params.terminalRes = JSON.stringify(Object.assign(JSON.parse(this.shParam.params.terminalRes) , gdParam))
+                    
+                    let param = this.shParam
+
                     this.$http({
-                        url: "/market/cadv/mkConfirmAdv",
+                        // url: "/market/cadv/mkConfirmAdv",
+                        url: "/bpm/api/submitTask",
                         method: "post",
                         headers: {
                             "Content-Type": "application/json",
@@ -276,7 +297,6 @@
         },
         mounted() {
             this.userInfo = JSON.parse(window.sessionStorage.userInfo);
-            // console.log(this.userInfo)
             this.advstatus = this.$route.query.type;
             this.getList({}, 1);
             this.ctrlbtn();

+ 31 - 6
src/pages/main/terminal/components/advert.vue

@@ -106,14 +106,14 @@
             <div v-if="suppSts" class="supp-box">
                 <span style="padding-left: 20px;padding-top: 8px;">简易设计</span>
                 <div v-for="item in gys" class="suppdiv">
-                    <el-checkbox :disabled="!changeinfo||!suppdis" v-model="item.sts"><span>{{item.type}}</span></el-checkbox>
+                    <el-checkbox :disabled="!changeinfo||!suppdis" v-model="item.sts" @change="cancel(item)"><span>{{item.type}}</span></el-checkbox>
                     <div class='box'>
                         <div v-for="one in item.list"  class="supp-list">
                             <el-select :disabled="!changeinfo||!suppdis" v-model="one.cho" placeholder="请选择供应商" @change="priceone(one,item)">
                                  <el-option v-for="items in item.supplier" :key="items.name" :label="items.name" :value="items.name">
                                  </el-option>
                             </el-select>
-                            <el-input :disabled="!changeinfo||!suppdis" v-model="one.num" placeholder="数量"></el-input>
+                            <el-input :disabled="!changeinfo||!suppdis" v-model="one.num" placeholder="数量" @input="numChange(one)"></el-input>
                         </div>
                     </div>
                     <el-button @click="item.list.push({})"type="text" v-if="suppdis">继续添加</el-button>
@@ -246,6 +246,14 @@
             }
         },
         methods: {
+            //取消勾选时清空后边对应的供应商数据
+            cancel(item){
+                let chexeboxSts = item.sts;
+                //如果页面取消勾选那么将清空复选框后的内容
+                if(!chexeboxSts){
+                    item.list  = [{}];
+                }
+            },
             uploadBack(v) {
                 this.attList = v;
             },
@@ -255,6 +263,11 @@
                         v.price = item.supplier[i].price
                     }
                 }
+                v.cho=v.cho+' '+(v.price*(v.num||1))+'元';
+            },
+            numChange(v){
+                if(!v.cho)return;
+                v.cho = v.cho.split(' ')[0]+' '+(v.price*v.num)+'元';
             },
             //处理申请
             dialogCheck() {
@@ -305,6 +318,7 @@
             },
             //添加
             dialogCli(v) {
+                
                 this.datalist.attList = [];
                 this.uploadstatus = false;
                 if (v === 3) {
@@ -318,12 +332,22 @@
                     let price = 0;
                     for (let i = 0; i < this.gys.length; i++) {
                         if(this.gys[i].sts){
-                            gys.push(this.gys[i])
-                            for (let j = 0; j < gys[i].list.length; j++) {
-                                price+=gys[i].list[j].num*gys[i].list[j].price;
-                            }
+                            gys.push(JSON.parse(JSON.stringify(this.gys[i])))
+                           // if(gys[i])
+                            
+                            // {
+                            //     for (let j = 0; j < gys[i].list.length; j++) {
+                            //         price+=gys[i].list[j].num*gys[i].list[j].price;
+                            //     }
+                            // }
+ 
                         }
                     }
+                    gys.forEach(n=>{
+                        for (let j = 0; j < n.list.length; j++) {
+                            price+=n.list[j].num*n.list[j].price;
+                        }
+                    });
                     this.infoApply.gys=gys;
                     this.infoApply.price=price;
                 }
@@ -480,6 +504,7 @@
                     res.data.forEach(item=>{
                         item.list = [{}];
                     })
+                    
                     this.gys = res.data;
                 });
             },

+ 142 - 8
src/router/index.js

@@ -605,6 +605,41 @@ const routes = [{
             name: 'materialApplicationExac',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialApplicationExac.vue'], resolve)
         },
+        {
+            meta: {
+                name: '宣传物料查看',
+                keepAlive: false
+            },
+            path: '/materialApplicationDetail',
+            name: 'materialApplicationDetail',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/advertising/materialApplicationDetail.vue'], resolve)
+        },
+        {
+            meta: {
+                name: '子任务列表',
+                keepAlive: false
+            },
+            path: '/subtaskList',
+            name: 'subtaskList',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/advertising/subtaskList.vue'], resolve)
+        }, {
+            meta: {
+                name: '验收',
+                keepAlive: false
+            },
+            path: '/acceptance',
+            name: 'acceptance',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/advertising/acceptance.vue'], resolve)
+        },
+        {
+            meta: {
+                name: '验收情况',
+                keepAlive: false
+            },
+            path: '/acceptanceSituation',
+            name: 'acceptanceSituation',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/advertising/acceptanceSituation.vue'], resolve)
+        },
 		{
             meta: { name:  '供应商管理', keepAlive: false },
             path: '/supplier',
@@ -708,16 +743,31 @@ const routes = [{
                     name: 'projectExcel',
                     component: (resolve) => require( /* webpackChunkName: "system" */
                         ['../pages/main/budget/projectExcel.vue'], resolve)
+                }, {
+                    meta: { name:  '预算回复管理', keepAlive: false },
+                    path: '/noRecallAdmin',
+                    name: 'noRecallAdmin',
+                    component: (resolve) => require( /* webpackChunkName: "system" */
+                        ['../pages/main/budget/noRecall.vue'], resolve)
+                }, {
+                    meta: { name:  '下发管理', keepAlive: false },
+                    path: '/issueList',
+                    name: 'issueList',
+                    component: (resolve) => require( /* webpackChunkName: "system" */
+                        ['../pages/main/budget/issueList.vue'], resolve)
                 },
             ]
         },
-		{
-		    meta: { name:  '科室绩效', keepAlive: false },
-		    path: '/recallkpi',
-		    name: 'recallkpi',
-		    component: (resolve) => require( /* webpackChunkName: "system" */
-		        ['../pages/main/achievements/recallMuban.vue'], resolve)
-		},
+        {
+            meta: {
+                name: '科室绩效',
+                keepAlive: false
+            },
+            path: '/recallkpi',
+            name: 'recallkpi',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/achievements/recallMuban.vue'], resolve)
+        },
         {
             meta: { name:  '绩效管理', keepAlive: false },
             path: '/kpi',
@@ -733,12 +783,24 @@ const routes = [{
                     component: (resolve) => require( /* webpackChunkName: "system" */
                         ['../pages/main/achievements/achievementsMuban.vue'], resolve)
                 }, {
+                    meta: { name:  '下发管理', keepAlive: false },
+                    path: '/kpiIssueList',
+                    name: 'kpiIssueList',
+                    component: (resolve) => require( /* webpackChunkName: "system" */
+                        ['../pages/main/achievements/issueList.vue'], resolve)
+                }, {
                     meta: { name:  '绩效回复管理', keepAlive: false },
                     path: '/kpiRecall',
                     name: 'kpiRecall',
                     component: (resolve) => require( /* webpackChunkName: "system" */
                         ['../pages/main/achievements/recall.vue'], resolve)
                 }, {
+                    meta: { name:  '绩效回复管理', keepAlive: false },
+                    path: '/kpiNoRecall',
+                    name: 'kpiNoRecall',
+                    component: (resolve) => require( /* webpackChunkName: "system" */
+                        ['../pages/main/achievements/noRecall.vue'], resolve)
+                }, {
                     meta: { name:  '新增模板', keepAlive: false },
                     path: '/initKpi',
                     name: 'initKpi',
@@ -769,6 +831,13 @@ const routes = [{
                     component: (resolve) => require( /* webpackChunkName: "system" */
                         ['../pages/main/achievements/recallGS.vue'], resolve)
                 },
+                {
+                    meta: { name:  '科室绩效', keepAlive: false },
+                    path: '/recallkpi',
+                    name: 'recallkpi',
+                    component: (resolve) => require( /* webpackChunkName: "system" */
+                        ['../pages/main/achievements/recallMuban.vue'], resolve)
+                },
             ]
         },
         {
@@ -1518,7 +1587,58 @@ const routes = [{
             path: '/tvImportTaskList',
             name: 'tvImportTaskList',
             component: (resolve) => require( ['../pages/main/homeMarket/tvIntroduction/taskList'], resolve)
-        }
+        },
+        {
+            meta: {
+                name: '知识库',
+                keepAlive: false
+            },
+            path: '/knowledgetop',
+            name: 'knowledgetop',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/knowledgetop/index'], resolve)
+        },
+        {
+            meta: {
+                name: '知识库',
+                keepAlive: false
+            },
+            path: '/knowledgeManagement',
+            name: 'knowledgeManagement',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/knowledgetop/knowledgeManagement'], resolve)
+        }, {
+            meta: {
+                name: '新增知识库',
+                keepAlive: false
+            },
+            path: '/addknowledgetop',
+            name: 'addknowledgetop',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/knowledgetop/addKnowledge'], resolve)
+        },
+        {
+            meta: {
+                name: '知识库目录',
+                keepAlive: false
+            },
+            path: '/knowledgeCatalogtop',
+            name: 'knowledgeCatalogtop',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/knowledgetop/catalog'], resolve)
+        }, {
+            meta: {
+                name: '知识库审核',
+                keepAlive: false
+            },
+            path: '/knowledgeExaminetop',
+            name: 'knowledgeExaminetop',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/knowledgetop/knowledgeExamine'], resolve)
+        }, {
+            meta: {
+                name: '知识库类型',
+                keepAlive: false
+            },
+            path: '/knowledgeTypetop',
+            name: 'knowledgeTypetop',
+            component: (resolve) => require( /* webpackChunkName: "system" */ ['../pages/main/knowledgetop/knowledgeType'], resolve)
+        },
     ]
 },
 {
@@ -1543,6 +1663,20 @@ router.beforeEach((to, from, next) => {
             next()
         } else {
             next()
+            //权限控制 过于霸道暂时注释
+            // let toNext = false;
+            // let Menus = JSON.parse(window.sessionStorage.childrenMenus);
+            // for (let i = 0; i < Menus.length; i++) {
+            //     if(Menus[i].jspUrl == to.path){
+            //         toNext = true;
+            //         break;
+            //     }
+            // }
+            // if (toNext) {
+            //     next()
+            // } else {
+            //     alert('暂无使用权限');
+            // }
         }
     }
     // let menus = JSON.parse(window.sessionStorage.menus);

+ 1 - 1
vue.config.js

@@ -96,7 +96,7 @@ module.exports = {
                 // target: 'http://114.215.71.182:29600',
                 // target: 'http://10.230.26.15:8000/spfm',
                 // target: 'http://127.0.0.1:9600/',
-                target: 'http://192.168.2.142:9610/',
+                target: 'http://192.168.0.103:9600/',
                 // target: 'http://192.168.2.170:9600/',
                 // target: 'http://192.168.2.169:9600/',
                 changeOrigin: true