TerryJ 3 anni fa
parent
commit
cefafb876c

+ 324 - 46
src/pages/main/demandDevelop/index.vue

@@ -28,7 +28,7 @@
           style="width: 100%"
           v-loading="loading"
         >
-          <el-table-column prop="busiSubject" label="业务名称">
+          <el-table-column prop="demandName" label="需求名称">
           </el-table-column>
           <el-table-column prop="createName" label="申请姓名">
           </el-table-column>
@@ -237,13 +237,14 @@
             </el-upload>
           </div>
           <!-- 信息补填的情况 -->
-          <myUpload
+          <el-upload
             v-if="vision == '信息补填'"
             style="float: right; margin-bottom: 20px"
-            @uploadBack="uploadBackin"
-            :fileInfo="fileInfoin"
-            :fileList="fileInfoin.fileList"
-          ></myUpload>
+            action=""
+            :http-request="handleMessage"
+            :show-file-list="false"
+            ><el-button size="small" type="primary">导入</el-button></el-upload
+          >
           <div
             style="margin: 20px 0; padding: 0 20px"
             v-if="vision == '信息补填'"
@@ -261,7 +262,7 @@
                 <template slot-scope="scope">
                   <el-input
                     v-model="scope.row.factoryName"
-                    :disabled="titname != '审批'"
+                    :disabled="tableSatus === '4'"
                   ></el-input>
                 </template>
               </el-table-column>
@@ -269,7 +270,7 @@
                 <template slot-scope="scope">
                   <el-input
                     v-model="scope.row.workLoad"
-                    :disabled="titname != '审批'"
+                    :disabled="tableSatus === '4'"
                   ></el-input>
                 </template>
               </el-table-column>
@@ -283,12 +284,14 @@
                   <el-button
                     size="mini"
                     type="primary"
+                    :disabled="tableSatus === '4'"
                     @click="choline(1, scope)"
                     >添加</el-button
                   >
                   <el-button
                     size="mini"
                     type="danger"
+                    :disabled="tableSatus === '4'"
                     @click="choline(2, scope)"
                     >删除</el-button
                   >
@@ -349,8 +352,9 @@
               :key="index"
               type="primary"
               @click="handleApprove(item)"
-              >item</el-button
+              >{{ item }}</el-button
             >
+            <el-button @click="handleApprove('取消')">取消</el-button>
           </div>
         </div>
       </div>
@@ -410,6 +414,7 @@
               :type="depttype"
               :closeList="closeList"
               :reset-list="treeList"
+              :only="only"
             ></deptTreeOnly>
             <div class="tree treeUser">
               <p v-for="(item, index) in treeList" :key="index">
@@ -443,7 +448,7 @@ import toolList from "../../../components/toolList";
 import myUpload from "../../../components/upload";
 import uploadDown from "../../../components/uploadDown.vue";
 import deptTreeOnly from "../performance/components/deptTreeOnly.vue";
-
+const Excel = require("exceljs");
 export default {
   components: {
     // mySearch,
@@ -464,28 +469,8 @@ export default {
           },
         ],
       },
-      // 领导人数组
-      leaderList: [
-        {
-          label: "王其侠(二级经理正职)",
-          value: "wangqixia",
-        },
-        {
-          label: "张志伟(二级经理副职)",
-          value: "zhangzhiwei",
-        },
-        {
-          label: "金鑫(二级经理副职)",
-          value: "jinxin",
-        },
-        {
-          label: "于洋(二级经理副职)",
-          value: "yuyang01",
-        },
-      ],
-      // 领导人名称
-      leader: "",
-      // 编号
+      // 操作名称
+      operateName: "",
       woNo: "",
       // 当前进行到的步骤计数
       step: "",
@@ -501,17 +486,52 @@ export default {
       file: [], // 附件数组
       titname: "",
       dialogStatus: false,
+      tableSatus: null,
       number: 0,
       // 按钮标识
       type: "",
       // 联系人
       checkLaeder: false,
       checkexa: false,
+      // 审核人组件只可选一人
+      leader: "",
+      leaderList: [
+        {
+          label: "王其侠(二级经理正职)",
+          value: "wangqixia",
+        },
+        {
+          label: "张志伟(二级经理副职)",
+          value: "zhangzhiwei",
+        },
+        {
+          label: "金鑫(二级经理副职)",
+          value: "jinxin",
+        },
+        {
+          label: "于洋(二级经理副职)",
+          value: "yuyang01",
+        },
+      ],
+      // 用来控制多选里的单选
+      only: false,
       // 信息回显
       infolist: {},
       // 用户信息
       userInfo: {},
-      buttonList: [],
+      buttonList: [
+        "送部门人员审核",
+        "送领导审核",
+        "送申请人编号发送",
+        "确认编号",
+        "确认需求",
+        "送项目经理会签",
+        "送电商接口人阅办",
+        "送其他人办理",
+        "确认上线",
+        "已办结",
+        "打回",
+      ],
       params: {},
       centerDialogVisible: false,
       messTit: "",
@@ -550,7 +570,7 @@ export default {
           name: "否",
         },
       ],
-      infodatas: [{}, {}],
+      infodatas: [],
       busiTime: [],
       urgDegreeopt: [
         {
@@ -609,10 +629,35 @@ export default {
     handleSuccess({ file }) {
       this.file.push(file);
     },
+    handleMessage({ file }) {
+      const workbook = new Excel.Workbook();
+      // workbook.xlsx.readFile(file.path) // use path
+      const Array = [];
+      workbook.xlsx.load(file).then(async () => {
+        const worksheet = await workbook.getWorksheet(1);
+        worksheet.eachRow(({ values }) => {
+          let obj = {
+            factoryName: values[1],
+            workLoad: values[2],
+          };
+          Array.push(obj);
+        });
+        if (
+          this.infodatas.length === 1 &&
+          !this.infodatas[0].factoryName &&
+          !this.infodatas[0].workLoad
+        ) {
+          this.infodatas = Array;
+        } else {
+          this.infodatas.push(...Array);
+        }
+      });
+    },
     handleApprove(type) {
       if (type === "取消") {
         this.dialogStatus = false;
         this.disableStatus = false;
+        this.only = false;
         this.number++;
         this.infolist = {};
         return;
@@ -631,7 +676,7 @@ export default {
               this.checkLaeder = true;
               console.log("送领导审核");
               break;
-            case "送申请人编号发送":
+            case "送起草人编号发送":
               this.handleSendNo();
               break;
             case "确认编号":
@@ -640,7 +685,199 @@ export default {
             case "打回":
               this.handleBackRecord();
               break;
+            case "确认需求":
+              this.checkexa = true;
+              this.type = "0";
+              this.operateName = "确认需求";
+              break;
+            case "送项目经理会签":
+              this.checkexa = true;
+              this.type = "0";
+              this.operateName = "送项目经理会签";
+              break;
+            case "送电商接口人阅办":
+              this.operateName = "送电商接口人阅办";
+              this.handleDeliverReadOfficeOrOtherDo("1");
+              break;
+            case "送其他人办理":
+              this.checkexa = true;
+              this.only = true;
+              this.operateName = "送其他人办理";
+              break;
+            case "确认上线":
+              this.operateName = "确认上线";
+              this.handleConfirmOnline("1");
+              break;
+            case "已办结":
+              this.operateName = "已办结";
+              this.handleConfirmOnline("2");
+              break;
+            case "保存":
+              this.operateName = "保存";
+              this.handleConfirmOnline("3");
+              break;
+          }
+        }
+      });
+    },
+    // 确认上线/已办结
+    handleConfirmOnline(type) {
+      let flag = 1;
+      const factoryName = [];
+      const workLoad = [];
+      this.infodatas.forEach((el) => {
+        // 判断条件
+        if (el.factoryName && el.workLoad) {
+          flag = flag * 1;
+          factoryName.push(el.factoryName);
+          workLoad.push(el.workLoad);
+        } else {
+          flag = flag * 0;
+        }
+      });
+      if (flag) {
+        let reqdata = {
+          operateName: this.operateName,
+          type,
+          support: factoryName,
+          workload: workLoad,
+          woNo: this.woNo + "",
+        };
+        this.$http({
+          url: "/market/mkOnlineChannel/confirmOnline",
+          method: "post",
+          headers: {
+            "Content-Type": "application/json",
+          },
+          data: reqdata,
+        }).then(({ data: { desc } }) => {
+          console.log(desc);
+          if (desc === "操作成功") {
+            this.$message.success("操作成功");
+            this.dialogStatus = false;
+            this.handleInit();
+          } else {
+            this.$message.error("操作失败");
           }
+        });
+      } else {
+        this.$message.error("请输入必要的信息");
+      }
+    },
+    // 送电商接口人阅办或送其他人办理
+    handleDeliverReadOfficeOrOtherDo(type) {
+      console.log(this.operateName, type);
+      let receiveId = [];
+      let receiveName = [];
+      // console.log(this.treeList);
+      this.treeList.forEach((item) => {
+        receiveId.push(item.loginNoStr);
+        receiveName.push(item.label);
+      });
+      let reqdata = {
+        operateName: this.operateName,
+        type,
+        reviewOpinion: this.operateName + "," + this.remark,
+        woId: this.woNo + "",
+      };
+      if (type === "2") {
+        reqdata = {
+          ...reqdata,
+          receiveId: receiveId.join(","),
+          receiveName: receiveName.join(","),
+        };
+      }
+      console.log(reqdata);
+      this.$http({
+        url: "/market/mkOnlineChannel/deliverReadOfficeOrOtherDo",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: reqdata,
+      }).then(({ data: { desc } }) => {
+        console.log(desc);
+        if (desc === "操作成功") {
+          this.$message.success("操作成功");
+          this.checkexa = false;
+          this.dialogStatus = false;
+          this.handleInit();
+        } else {
+          this.$message.error("操作失败");
+        }
+      });
+    },
+    // 电商接口人阅办---送项目经理会签
+    handleCountersigned() {
+      let receiveId = [];
+      let receiveName = [];
+      console.log(this.treeList);
+      this.treeList.forEach((item) => {
+        receiveId.push(item.loginNoStr);
+        receiveName.push(item.label);
+      });
+      let reqdata = {
+        operateName: this.operateName,
+        receiveId: receiveId.join(","),
+        receiveName: receiveName.join(","),
+        reviewOpinion: this.operateName + "," + this.remark,
+        woNo: this.woNo + "",
+      };
+      console.log(reqdata);
+
+      this.$http({
+        url: "/market/mkOnlineChannel/countersigned",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: reqdata,
+      }).then(({ data: { desc } }) => {
+        console.log(desc);
+        if (desc === "操作成功") {
+          this.$message.success("操作成功");
+          this.checkexa = false;
+          this.dialogStatus = false;
+          this.handleInit();
+        } else {
+          this.$message.error("操作失败");
+        }
+      });
+    },
+    // 确认需求
+    handleNeedyComfirm() {
+      let receiveId = [];
+      let receiveName = [];
+      // console.log(this.treeList);
+      this.treeList.forEach((item) => {
+        receiveId.push(item.loginNoStr);
+        receiveName.push(item.label);
+      });
+      let reqdata = {
+        operateName: this.operateName,
+        receiveId: receiveId.join(","),
+        receiveName: receiveName.join(","),
+        reviewOpinion: this.operateName + "," + this.remark,
+        woNo: this.woNo + "",
+      };
+      console.log(reqdata);
+
+      this.$http({
+        url: "/market/mkOnlineChannel/confirmDemand",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: reqdata,
+      }).then(({ data: { desc } }) => {
+        console.log(desc);
+        if (desc === "操作成功") {
+          this.$message.success("操作成功");
+          this.checkexa = false;
+          this.dialogStatus = false;
+          this.handleInit();
+        } else {
+          this.$message.error("操作失败");
         }
       });
     },
@@ -689,6 +926,7 @@ export default {
           woNo: this.infolist.woNo,
           createId: this.infolist.createId,
           createName: this.infolist.createName,
+          id: this.infolist.id,
         };
       }
       let params = {
@@ -742,6 +980,18 @@ export default {
           }
         });
       }
+      if (this.operateName === "确认需求") {
+        this.handleNeedyComfirm();
+        return;
+      }
+      if (this.operateName === "送项目经理会签") {
+        this.handleCountersigned();
+        return;
+      }
+      if (this.operateName === "送其他人办理") {
+        this.handleDeliverReadOfficeOrOtherDo("2");
+        return;
+      }
       request = 1;
       if (request) {
         this.$http({
@@ -768,7 +1018,7 @@ export default {
         });
       }
     },
-    // 送申请人编号发送
+    // 送起草人编号发送
     handleSendNo() {
       this.$http({
         url: "/market/mkOnlineChannel/createDemandNo",
@@ -798,7 +1048,7 @@ export default {
         headers: {
           "Content-Type": "application/json",
         },
-        data: this.woNo,
+        data: { woNo: this.woNo + "" },
       }).then(({ data: { desc } }) => {
         console.log(desc);
         if (desc === "操作成功") {
@@ -844,9 +1094,10 @@ export default {
       }).then(
         ({
           data: {
-            body: { mkOnlineChannel },
+            body: { button, mkOnlineChannel },
           },
         }) => {
+          this.buttonList = button;
           this.infolist = {
             ...mkOnlineChannel,
             carryChannelCode: mkOnlineChannel.carryChannelCode.split(","),
@@ -855,7 +1106,7 @@ export default {
             mkOnlineChannel.busiStartTime,
             mkOnlineChannel.busiEndTime,
           ];
-          // this.rovaList = mkOnlineChannel.logList;
+          this.rovaList = mkOnlineChannel.logList;
           this.datalist = {
             ...this.datalist,
             attList: mkOnlineChannel.attList,
@@ -864,20 +1115,46 @@ export default {
           this.woNo = mkOnlineChannel.woNo;
           // 步骤
           this.step = mkOnlineChannel.step;
-          // 数组回显
-          this.infodatas = mkOnlineChannel.logList;
+          // 最后一步是否办结
+          this.tableSatus = mkOnlineChannel.sts;
           this.dialogStatus = true;
           if (this.titname === "添加") {
             // 审批说明
             this.visionsts = "";
             this.disableStatus = false;
           } else {
-            // this.disableStatus = true;
-            this.disableStatus = true;
             if (this.titname === "查看") {
+              this.disableStatus = true;
               this.visionsts = "";
+              // 数组回显
+              this.infodatas = mkOnlineChannel.logList;
             } else {
-              this.visionsts = "2";
+              if (this.step === "0") {
+                this.dialogStatus = false;
+                return;
+              }
+              this.dialogStatus = true;
+              if (this.step === "7") {
+                if (mkOnlineChannel.sts === "4") {
+                }
+                this.vision = "信息补填";
+                this.visionsts = "";
+                this.infodatas = mkOnlineChannel.workloadAndsupport.length
+                  ? mkOnlineChannel.workloadAndsupport.map((el) => ({
+                      factoryName: el.support,
+                      workLoad: el.workload,
+                    }))
+                  : [
+                      {
+                        factoryName: "",
+                        workLoad: "",
+                      },
+                    ];
+              } else {
+                // 数组回显
+                this.infodatas = mkOnlineChannel.logList;
+                this.visionsts = "2";
+              }
             }
           }
         }
@@ -943,6 +1220,7 @@ export default {
       this.fileInfo.fileList = [];
       this.dialogStatus = false;
       this.checkexa = false;
+      this.only = false;
       this.busiTime = [];
     },
     //获取列表
@@ -975,7 +1253,6 @@ export default {
       // let infolist = Object.assign({}, n);
       this.vision = "";
       this.visionsts = "";
-      this.infodatas = [{}, {}];
       if (type === 1) {
         this.titname = "查看";
         this.visionsts = "2";
@@ -1426,6 +1703,7 @@ export default {
       this.attList = v;
     },
     uploadBackin(v) {
+      console.log(v, "v");
       let x = [];
       for (let i = 1; i < v.data.body.length; i++) {
         x.push({
@@ -1438,7 +1716,7 @@ export default {
     //功能栏
     iconCli(v) {
       if (v === 1) {
-        this.getList(this.params, this.pageSize);
+        this.handleInit();
       }
       if (v === 2) {
         this.fullscreen = !this.fullscreen;

+ 321 - 261
src/pages/main/demandDevelop/ywStanding.vue

@@ -1,287 +1,347 @@
 <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="outlist">导出
-                </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%">
-                    <el-table-column prop="demandName" label="需求名称">
-                    </el-table-column>
-                    <el-table-column prop="deptName" label="提出部门/地市">
-                    </el-table-column>
-                    <el-table-column prop="busiStartTime" label="时间段">
-						<template slot-scope="scope">
-							{{scope.row.busiStartTime + '~' + scope.row.busiEndTime}}
-						</template>
-                    </el-table-column>
-                    <el-table-column prop="factoryName" label="支撑方">
-                    </el-table-column>
-					<el-table-column prop="workLoad" label="工作量">
-                    </el-table-column>
-                </el-table>
-                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
-                    :total="total">
-                </el-pagination>
-            </div>
-        </div>
-    </fullscreen>
+  <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="outlist"
+          >导出
+        </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%"
+        >
+          <el-table-column prop="demandName" label="需求名称">
+          </el-table-column>
+          <el-table-column prop="groupName" label="提出部门/地市">
+          </el-table-column>
+          <el-table-column prop="busiStartTime" label="时间段">
+            <template slot-scope="scope">
+              {{ scope.row.busiStartTime + "~" + scope.row.busiEndTime }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="status" label="状态"> </el-table-column>
+          <el-table-column prop="support" label="支撑方"> </el-table-column>
+          <el-table-column prop="workload" label="工作量"> </el-table-column>
+        </el-table>
+        <el-pagination
+          class="pageBox"
+          @current-change="currchange"
+          layout="prev, pager, next"
+          background
+          :total="total"
+        >
+        </el-pagination>
+      </div>
+    </div>
+  </fullscreen>
 </template>
 <script>
-    import mySearch from "../../../components/search.vue";
-    import toolList from "../../../components/toolList.vue";
+import mySearch from "../../../components/search.vue";
+import toolList from "../../../components/toolList.vue";
 
-    export default {
-        components: {
-            mySearch,
-            toolList
+export default {
+  components: {
+    mySearch,
+    toolList,
+  },
+  data() {
+    return {
+      searchList: [
+        {
+          type: "input",
+          tit: "需求名称",
+          value: "",
+          width: "23%",
         },
-        data() {
-
-            return {
-				searchList: [{
-					type: 'input',
-					tit: '需求名称',
-					value: '',
-					width: '32%',
-				},{
-					type: 'date',
-					tit: '开始时间',
-					value: '',
-					width: '32%',
-				}, {
-					type: 'date',
-					tit: '结束时间',
-					value: '',
-					width: '32%',
-				}],
-                tooltit: '线上业务需求台账',
-                fullscreen: false,
-                total: 0,
-                pageSize: 1,
-                tableData: [],
-                dialogStatus: false,
-                disableStatus: false,
-                titname: '终端',
-                infolist: {},
-                typeOptions: [{
-                    dataCode: 1,
-                    dataName: 111,
-                }],
-                userInfo: {},
-                params: {},
-                infoApply: []
-            }
+				{
+					type: "input",
+          tit: "部门或地市",
+          value: "",
+          width: "23%",
+				},
+        {
+          type: "date",
+          tit: "开始时间",
+          value: "",
+          width: "23%",
         },
-        methods: {
-			//搜索数据
-			searchInfo(v) {
-				this.params = {};
-				v[0] ? this.params.demandName = v[0] : '';
-				v[1] ? this.params.busiStartTimeTo = v[1] : '';
-				v[2] ? this.params.busiEndTimeFrom = v[2]:'';
-				this.getList(this.params, this.pageSize);
-			},
-            //获取列表
-            getList(v, n) {
-				v.sts = 1;
-                this.pageSize = n;
-                let _this = this;
-                this.$http({
-                    url: "/market/cChannelDemand/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;
-                });
-            },
-            // 分页
-            currchange(v) {
-                this.pageSize = v;
-                this.getList(this.params, this.pageSize);
-            },
-            //功能栏
-            iconCli(v) {
-                if (v === 1) {
-                    this.getList(this.params, this.pageSize);
-                }
-                if (v === 2) {
-                    this.fullscreen = !this.fullscreen
-                }
-            },
-            // =======================
-            outlist() {
-                let data = {
-                    colStr: "demandName,deptName,busiStartTime,busiEndTime,factoryName,workLoad",
-                    fileName: "台账.xlsx",
-                    tital: [
-                        [
-                            {
-                                "colNum": "0",
-                                "colSpan": "0",
-                                "rowSpan": "1",
-                                "val": "需求名称"
-                            },
-                            {
-                                "colNum": "1",
-                                "colSpan": "0",
-                                "rowSpan": "1",
-                                "val": "提出部门"
-                            },
-                            {
-                                "colNum": "2",
-                                "colSpan": "0",
-                                "rowSpan": "1",
-                                "val": "开始时间"
-                            },
-                            {
-                                "colNum": "3",
-                                "colSpan": "0",
-                                "rowSpan": "1",
-                                "val": "结束时间"
-                            },
-                            {
-                                "colNum": "4",
-                                "colSpan": "0",
-                                "rowSpan": "1",
-                                "val": "支撑方"
-                            },
-                            {
-                                "colNum": "5",
-                                "colSpan": "0",
-                                "rowSpan": "1",
-                                "val": "工作量"
-                            },
-                        ]
-                    ]
-                }
-                // data.tital = JSON.stringify(data.tital)
-                this.$http({
-                    url: "/market/cChannelDemand/excelExport",
-                    method: "post",
-                    headers: {
-                        "Content-Type": "application/json",
-                    },
-                    responseType: "blob",
-                    data: data,
-                }).then((response) => {
-                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
-                        let blob = new Blob([response.data], {
-                            type: 'application/vnd.ms-excel'
-                        })
-                        window.navigator.msSaveOrOpenBlob(blob,
-                            new Date().getTime() + '.xlsx')
-                    } else {
-                        /* 火狐谷歌的文件下载方式 */
-                        var blob = new Blob([response.data])
-                        var downloadElement = document.createElement('a')
-                        var href = window.URL.createObjectURL(blob)
-                        downloadElement.href = href
-                        downloadElement.download = new Date().getTime() + '.xlsx'
-                        document.body.appendChild(downloadElement)
-                        downloadElement.click()
-                        document.body.removeChild(downloadElement)
-                        window.URL.revokeObjectURL(href)
-                    }
-                });
-            },
-            getUser() {
-                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
-                this.infolist = {
-                    opNo: '',
-                    opName: '',
-                };
-                this.infolist.opNo = this.userInfo.loginNo;
-                this.infolist.opName = this.userInfo.loginName;
-
-            }
+        {
+          type: "date",
+          tit: "结束时间",
+          value: "",
+          width: "23%",
         },
-        mounted() {
-            this.getList({}, 1);
-            this.getUser();
+      ],
+      tooltit: "线上业务需求台账",
+      fullscreen: false,
+      total: 0,
+			page:1,
+      pageSize: 10,
+      tableData: [],
+      dialogStatus: false,
+      disableStatus: false,
+      titname: "终端",
+      infolist: {},
+      typeOptions: [
+        {
+          dataCode: 1,
+          dataName: 111,
         },
-        created() {
-
+      ],
+      userInfo: {},
+      params: {},
+      infoApply: [],
+    };
+  },
+  methods: {
+    //搜索数据
+    searchInfo(v) {
+			console.log(v);
+      this.params = {};
+      v[0] ? (this.params.demandName = v[0]) : "";
+      v[1] ? (this.params.deptOrCity = v[1]) : "";
+      v[2] ? (this.params.startTime = v[2]) : "";
+      v[3] ? (this.params.endTime = v[3]) : "";
+      this.handleInit();
+    },
+    // 初始化列表
+    handleInit() {
+			this.$http({
+				url: "/market/mkOnlineChannel/ledgerList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+					...this.params,
+          page: this.page,
+          pageSize: this.pageSize,
+        },
+      }).then(
+        ({
+          data: {
+            body: { data },
+          },
+        }) => {
+          this.tableData = data;
         }
-    }
+      );
+		},
+		outlist() {
+      // let data = {
+      //   colStr:
+      //     "demandName,deptName,busiStartTime,busiEndTime,factoryName,workLoad",
+      //   fileName: "台账.xlsx",
+      //   tital: [
+      //     [
+      //       {
+      //         colNum: "0",
+      //         colSpan: "0",
+      //         rowSpan: "1",
+      //         val: "需求名称",
+      //       },
+      //       {
+      //         colNum: "1",
+      //         colSpan: "0",
+      //         rowSpan: "1",
+      //         val: "提出部门",
+      //       },
+      //       {
+      //         colNum: "2",
+      //         colSpan: "0",
+      //         rowSpan: "1",
+      //         val: "开始时间",
+      //       },
+      //       {
+      //         colNum: "3",
+      //         colSpan: "0",
+      //         rowSpan: "1",
+      //         val: "结束时间",
+      //       },
+      //       {
+      //         colNum: "4",
+      //         colSpan: "0",
+      //         rowSpan: "1",
+      //         val: "支撑方",
+      //       },
+      //       {
+      //         colNum: "5",
+      //         colSpan: "0",
+      //         rowSpan: "1",
+      //         val: "工作量",
+      //       },
+      //     ],
+      //   ],
+      // };
+      // // data.tital = JSON.stringify(data.tital)
+      this.$http({
+        url: "/market/mkOnlineChannel/exportLedger",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        responseType: "blob",
+        data: this.params,
+      }).then((response) => {
+        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+          let blob = new Blob([response.data], {
+            type: "application/vnd.ms-excel",
+          });
+          window.navigator.msSaveOrOpenBlob(
+            blob,
+            new Date().getTime() + ".xlsx"
+          );
+        } else {
+          /* 火狐谷歌的文件下载方式 */
+          var blob = new Blob([response.data]);
+          var downloadElement = document.createElement("a");
+          var href = window.URL.createObjectURL(blob);
+          downloadElement.href = href;
+          downloadElement.download = new Date().getTime() + ".xlsx";
+          document.body.appendChild(downloadElement);
+          downloadElement.click();
+          document.body.removeChild(downloadElement);
+          window.URL.revokeObjectURL(href);
+        }
+      });
+    },
+		// 分页
+    currchange(v) {
+      this.page = v;
+			this.handleInit()
+    },
+
+
+
+    //获取列表
+    getList(v, n) {
+      v.sts = 1;
+      this.pageSize = n;
+      let _this = this;
+      this.$http({
+        url: "/market/cChannelDemand/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;
+      });
+    },
+    
+    //功能栏
+    iconCli(v) {
+      if (v === 1) {
+        this.handleInit()
+      }
+      if (v === 2) {
+        this.fullscreen = !this.fullscreen;
+      }
+    },
+    // =======================
+    
+    getUser() {
+      this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+      this.infolist = {
+        opNo: "",
+        opName: "",
+      };
+      this.infolist.opNo = this.userInfo.loginNo;
+      this.infolist.opName = this.userInfo.loginName;
+    },
+  },
+  mounted() {
+    // this.getList({}, 1);
+		this.handleInit()
+    this.getUser();
+  },
+  created() {},
+};
 </script>
 <style scoped lang="scss">
-    .onetab {
-        margin-bottom: 20px;
-        padding: 0 20px;
-    }
+.onetab {
+  margin-bottom: 20px;
+  padding: 0 20px;
+}
 
-    .titbox {
-        div {
-            float: right;
+.titbox {
+  div {
+    float: right;
 
-            i {
-                font-size: 22px;
-                margin-left: 20px;
-                cursor: pointer;
-            }
-        }
-    }
-
-    .tabbox {
-        margin-top: 15px;
+    i {
+      font-size: 22px;
+      margin-left: 20px;
+      cursor: pointer;
     }
+  }
+}
 
-    .pageBox {
-        text-align: right;
-        margin-top: 10px;
-    }
+.tabbox {
+  margin-top: 15px;
+}
 
-    .info-line {
-        width: 100%;
-        display: block;
-        padding-left: 20px;
+.pageBox {
+  text-align: right;
+  margin-top: 10px;
+}
 
-        div {
-            width: 50%;
-            display: inline-block;
-        }
+.info-line {
+  width: 100%;
+  display: block;
+  padding-left: 20px;
 
-        span {
-            width: 80px;
-            display: inline-block;
-            text-align: left;
+  div {
+    width: 50%;
+    display: inline-block;
+  }
 
-            i {
-                color: red;
-                display: inline-block;
-                padding-right: 5px;
-            }
-        }
+  span {
+    width: 80px;
+    display: inline-block;
+    text-align: left;
 
-        .el-select,
-        .el-input {
-            width: calc(100% - 100px);
-        }
+    i {
+      color: red;
+      display: inline-block;
+      padding-right: 5px;
     }
+  }
 
-    .online {
-        width: 100%;
+  .el-select,
+  .el-input {
+    width: calc(100% - 100px);
+  }
+}
 
-        .el-select {
-            width: calc(100% - 100px);
-        }
+.online {
+  width: 100%;
 
-        span {
-            vertical-align: top;
-        }
+  .el-select {
+    width: calc(100% - 100px);
+  }
 
-        .el-textarea {
-            width: calc(100% - 100px);
-        }
-    }
+  span {
+    vertical-align: top;
+  }
+
+  .el-textarea {
+    width: calc(100% - 100px);
+  }
+}
 </style>

+ 20 - 19
src/pages/main/performance/components/deptTreeOnly.vue

@@ -33,7 +33,7 @@
 
 <script>
 export default {
-  props: ["defaultList", "type", "closeList", "resetList"],
+  props: ["defaultList", "type", "closeList", "resetList", "only"],
   data() {
     return {
       treeList: [],
@@ -119,23 +119,25 @@ export default {
       }
     },
     handleCheckChange() {
+      console.log(this.only, "only");
       const nodeList = this.$refs.tree.store.getCheckedNodes();
-      // let opt = {
-      //   loginNameStr: v.data.loginNoStr,
-      //   leaderAuditName: v.data.label,
-      //   displayname: v.data.displayname,
-      //   groupId: v.data.o,
-      // };
-      this.$emit("treeCheck", nodeList);
-      // for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
-      //   if (v.data.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
-      //     this.$refs.tree.store._getAllNodes()[i].checked = !this.$refs.tree.store._getAllNodes()[i].checked;
-      //   }
-      //   //  else {
-      //   //   this.$refs.tree.store._getAllNodes()[i].checked = false;
-      //   // }
-      // }
-      // this.$forceUpdate();
+      if (this.only) {
+        if (nodeList.length === 1) {
+          this.$emit("treeCheck", nodeList);
+        } else if (nodeList.length === 0) {
+          this.$refs.tree.setCheckedKeys([]);
+          this.$emit("treeCheck", nodeList);
+        } else {
+          let obj = { ...nodeList[0] };
+          this.$refs.tree.setCheckedKeys([]);
+          this.$nextTick(() => {
+            this.$refs.tree.setChecked(obj, true);
+          });
+          this.$message.error("这里只能选择一个审批人");
+        }
+      } else if (!this.only) {
+        this.$emit("treeCheck", nodeList);
+      }
     },
   },
   created() {
@@ -144,7 +146,6 @@ export default {
   },
   watch: {
     type() {
-      console.log("aaa");
       this.defaultListc = this.defaultList;
       this.$forceUpdate();
     },
@@ -152,7 +153,7 @@ export default {
       this.$forceUpdate();
     },
     closeList() {
-       this.$refs.tree.setCheckedKeys([]);
+      this.$refs.tree.setCheckedKeys([]);
       if ([...this.resetList] && [...this.resetList].length > 0) {
         [...this.resetList].forEach((el) => {
           this.$nextTick(() => {