Browse Source

修改冲突

yangbifan 2 years ago
parent
commit
4772272209
42 changed files with 11211 additions and 264 deletions
  1. 5 1
      .env.development
  2. 6 1
      .env.production
  3. 5 0
      .env.test
  4. 6 0
      .gitignore
  5. 0 0
      config/config.js
  6. 8 6
      config/dev.env.js
  7. 7 2
      package.json
  8. 3 3
      public/index.html
  9. 591 0
      public/static/views/performance.html
  10. 80 52
      src/assets/js/common.js
  11. 1 1
      src/assets/js/http.js
  12. 3 2
      src/components/el-form.vue
  13. 166 0
      src/components/el-formid.vue
  14. 47 42
      src/components/search.vue
  15. 240 0
      src/components/uploadMultiConfig.vue
  16. 76 72
      src/components/workflowBase.vue
  17. 48 53
      src/components/workflowEntrance.vue
  18. 2 2
      src/components/workflowUpload.vue
  19. 54 0
      src/config/dev.js
  20. 29 3
      src/http/api.js
  21. 6 2
      src/pages/main/advertising/contractCap.vue
  22. 535 0
      src/pages/main/documentCollection/documentCollectionApproval.vue
  23. 1186 0
      src/pages/main/documentCollection/documentCollectionApprovalExcel.vue
  24. 472 0
      src/pages/main/documentCollection/documentCollectionApprovalIssuedCollect.vue
  25. 691 0
      src/pages/main/documentCollection/documentCollectionApprovalIssuedMoud.vue
  26. 131 0
      src/pages/main/documentCollection/home.vue
  27. 296 0
      src/pages/main/documentCollection/newTree.vue
  28. 95 0
      src/pages/main/documentCollection/search.vue
  29. 2 0
      src/pages/main/homeMarket/tvAssess/initiateAssess.vue
  30. 1 0
      src/pages/main/homeMarket/tvAssess/tvAssessIndex.vue
  31. 1 1
      src/pages/main/leader/leaderhomeTask.vue
  32. 4 2
      src/pages/main/leader/risk/riskManagement.vue
  33. 4 2
      src/pages/main/leader/risk/riskMaterials.vue
  34. 1364 0
      src/pages/main/productionDataExport/cityHome.vue
  35. 113 0
      src/pages/main/productionDataExport/form.vue
  36. 604 0
      src/pages/main/productionDataExport/formTable.vue
  37. 1370 0
      src/pages/main/productionDataExport/provinceHome.vue
  38. 1559 0
      src/pages/main/provincialWorkOrder/provincialWorkOrder.vue
  39. 1328 0
      src/pages/main/provincialWorkOrder/provincialWorkOrderArea.vue
  40. 3 2
      src/pages/main/terminals/components/adverts.vue
  41. 69 4
      src/router/index.js
  42. 0 11
      vue.config.js

+ 5 - 1
.env.development

@@ -1,2 +1,6 @@
 VUE_APP_FILE_API = http://192.168.1.9:9114
-VUE_APP_GRID_API = http://192.168.1.19:9114
+VUE_APP_GRID_API = http://192.168.1.19:9114
+NODE_ENV = development
+
+VUE_APP_ENV = development
+outputDir = dist-dev

+ 6 - 1
.env.production

@@ -1,2 +1,7 @@
 VUE_APP_FILE_API =
-VUE_APP_GRID_API =
+VUE_APP_GRID_API =
+
+NODE_ENV = production
+
+VUE_APP_ENV = production
+outputDir = dist-production

+ 5 - 0
.env.test

@@ -0,0 +1,5 @@
+VUE_APP_FILE_API =
+VUE_APP_GRID_API =
+NODE_ENV = 'production'
+VUE_APP_ENV = test
+outputDir = dist-test

+ 6 - 0
.gitignore

@@ -1,8 +1,13 @@
 .DS_Store
 node_modules
 /dist
+<<<<<<< HEAD
 dist.zip
 
+=======
+/dist-test
+dist.zip
+>>>>>>> 2e174cfb914257ff0e2bab0e76423d7d1fe78aba
 # local env files
 .env.local
 .env.*.local
@@ -20,3 +25,4 @@ yarn-error.log*
 *.njsproj
 *.sln
 *.sw?
+*.zip

+ 0 - 0
config/config.js


+ 8 - 6
config/dev.env.js

@@ -1,18 +1,20 @@
 'use strict'
 const merge = require('webpack-merge')
 const prodEnv = require('./prod.env')
-
-module.exports = merge(prodEnv, {
+import getConfig from '/src/config/dev.js'
+let BASE_API = getConfig().BASE_API
+let BASE_URL = getConfig().BASE_URL
+export default  {
   NODE_ENV: '"development"',
   ENV_CONFIG: '"dev"',
-  ctx:'"http://192.168.2.188:8080"',
-  ctxForm: '"http://10.149.85.91:8000/api"',//dev
+  ctx:"'"+ BASE_URL + "'",
+  // ctxForm: '"http://10.149.85.91:8000"',//dev
   // ctxForm: '"http://43.138.50.94:8880"',//test
   // ctxForm: '"http://192.168.2.44:8880"',//test
-  // ctxForm: '"http://10.230.26.15:8000/api"',//生产
+  ctxForm: "'"+ BASE_API + "'",//生产
 
   excludeMeWhenSelectNextHandler:false,
   excludeFormerHanlder:false,
   envTitle:'"本地开发环境"'
-})
+}
   

+ 7 - 2
package.json

@@ -3,8 +3,13 @@
   "version": "0.1.0",
   "private": true,
   "scripts": {
-    "serve": "vue-cli-service serve",
-    "build": "vue-cli-service build",
+    "abc":"vue-cli-service build",
+    "serve": "vue-cli-service serve --mode development", 
+    "serve:test": "vue-cli-service serve --mode test", 
+    "build": "vue-cli-service build  --mode development", 
+    "build:devs": "vue-cli-service build  --mode devs", 
+    "build:test": "vue-cli-service build  --mode test",
+    "build:next": "vue-cli-service build  --mode production", 
     "lint": "vue-cli-service lint",
     "analyz": "vue-cli-service build"
   },

+ 3 - 3
public/index.html

@@ -31,9 +31,9 @@
   <div id="app"></div>
   <!-- built files will be auto injected -->
   <script type="text/javascript">
-    // window.staticHost = 'http://10.230.26.15:8000/mkt'; // 正式
-    window.staticHost = 'http://10.149.85.91:8000/spfm'; // 测试
-    // window.staticHost = 'http://192.168.0.103:9600/';
+    window.staticHost = 'http://10.230.26.15:8000/mkt/'; // 正式
+    // window.staticHost = 'http://10.149.85.91:8000/spfm/'; // 测试
+    // window.staticHost = 'http://192.168.2.92:9600';
     // window.staticHost = 'http://43.138.50.94:9600/';
 
     // document.title = "hello";

File diff suppressed because it is too large
+ 591 - 0
public/static/views/performance.html


File diff suppressed because it is too large
+ 80 - 52
src/assets/js/common.js


+ 1 - 1
src/assets/js/http.js

@@ -1,4 +1,4 @@
-
+
 import axios from 'axios'
 import common from "./common.js";
 import vue from '../../components/common/bus';

+ 3 - 2
src/components/el-form.vue

@@ -12,7 +12,6 @@
       empty-text="暂无数据"
       @cell-click="getRowList"
       :cell-style="columnbackgroundStyle"
-      row-key="id"
       :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
     >
       <!-- 是否多选 -->
@@ -121,10 +120,12 @@ export default {
   methods: {
     columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
       if (column.type == "default") {
-        if (column.label === "文件标题") {
+        if (column.type == "default") {
+        if (column.property === "need_name"||column.property === "needName"||column.property === "doc_title"||column.property === "document_title") {
           return "color:#0682CD;";
         }
       }
+      }
     },
     selectionChange(val) {
 

+ 166 - 0
src/components/el-formid.vue

@@ -0,0 +1,166 @@
+<template>
+    <div>
+      <slot :name="list.name"></slot>
+      <el-table
+        ref="table"
+        style="width: 100%"
+        :data="list.data"
+        :height="list.height + 'px'"
+        :max-height="list.height + 'px'"
+        @row-click="getRowData"
+        @selection-change="selectionChange"
+        empty-text="暂无数据"
+        @cell-click="getRowList"
+        :cell-style="columnbackgroundStyle"
+        row-key="id"
+        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+      >
+        <!-- 是否多选 -->
+        <el-table-column
+          v-if="list.isSelection"
+          :selecttable="list"
+          type="selection"
+          :width="list.width || 50"
+          align="center"
+        />
+  
+        <!-- 是否需要序号 -->
+        <el-table-column
+          v-if="list.isIndex"
+          type="index"
+          label="序号"
+          width="55"
+          align="center"
+        />
+        <template v-for="item in list.titledata">
+          <el-table-column
+            :key="item.prop"
+            :prop="item.prop"
+            :label="item.label"
+            align="center"
+            show-overflow-tooltip
+            :width="item.width || 100"
+          />
+        </template>
+        <!-- 操作列 -->
+        <el-table-column
+          v-if="list.isOperation"
+          v-bind="list.data && list.data.length ? { fixed: 'right' } : null"
+          style="margin-right: 20px"
+          class-name="handle-td"
+          label-class-name="tc"
+          :label="list.operation.label"
+          align="center"
+        >
+          <!-- UI统一一排放3个,4个以上出现更多 -->
+          <template slot-scope="scope">
+            <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
+            <template v-if="list.operation.data.length > 0">
+              <div class="btn">
+                <div v-for="item in list.operation.data" :key="item.label">
+                  <template v-if="item.type !== 'icon'">
+                    <el-button
+                      v-bind="item"
+                      :type="item.type ? item.type : ''"
+                      size="mini"
+                      @click.native.prevent="
+                        item.handleRow(scope.$index, scope.row, item.label)
+                      "
+                    >
+                      {{ item.label }}
+                    </el-button>
+                  </template>
+                  <template v-else>
+                    <i
+                      :class="[icon, item.icon]"
+                      v-bind="item"
+                      @click="item.handleRow(scope.$index, scope.row, item.label)"
+                    />
+                  </template>
+                </div>
+              </div>
+            </template>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="page">
+        <el-pagination
+          style="display: flex; flex-direction: row-reverse"
+          v-if="list.pageData.total > 0"
+          :current-page.sync="page"
+          :page-sizes="
+            list.pageData.pageSizes ? list.pageData.pageSizes : [5, 10, 15, 20]
+          "
+          :page-size="list.pageData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="list.pageData.total"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+        />
+      </div>
+    </div>
+  </template>
+  
+  <script>
+  export default {
+    data(){
+      return{
+       page:1
+      }
+    },
+    props: {
+      //  表格数据和表格部分属性的对象
+      // eslint-disable-next-line vue/require-default-prop
+      list: {
+        type: Object,
+      },
+    },
+    created() {
+  
+    },
+    methods: {
+      columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
+        if (column.type == "default") {
+          if (column.label === "文件标题"||column.label === "待办事项名称") {
+            return "color:#0682CD;";
+          }
+        }
+      },
+      selectionChange(val) {
+  
+        //多选数字回调
+        this.$emit("num", val);
+      },
+      handleAdd(name) {
+       
+        this.$emit("toolMsg", name);
+      },
+      handleRow(index, row, lable) {
+       
+      },
+      handleSizeChange(val) {
+        this.$emit("changeSize", val);
+        console.log(`每页 ${val} 条`);
+      },
+      handleCurrentChange(val) {
+        this.$emit("changeNum", val);
+        console.log(`当前页: ${val}`);
+      },
+      // 点击行即可选中
+      getRowData(row) {
+        this.$refs.table.toggleRowSelection(row);
+      },
+      getRowList(row, column, event, cell) {
+        this.$emit("clickDemand", column.label, row);
+      },
+    },
+  };
+  </script>
+  
+  <style lang="scss" scoped>
+  .btn{
+    display: flex;
+    justify-content: center;
+  }
+  </style>
+  

+ 47 - 42
src/components/search.vue

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

+ 240 - 0
src/components/uploadMultiConfig.vue

@@ -0,0 +1,240 @@
+<template>
+    <div v-loading="loading">
+        <el-upload class="upload-demo" :disabled ="disabled" :drag="drag" multiple :limit="fileInfo.limit" ref="upload"
+            action="string" :on-remove="handleRemove" :on-exceed="handleExceed" :file-list="fileList"
+             :auto-upload="true" :show-file-list="showFileList"
+            :before-upload="deforeUp" :http-request="signUpload" :on-preview = "downloadBack">
+            <div v-if="fileInfo.type !== 'btn' && !disabled">
+                <i class="el-icon-upload"></i>
+                <div class="el-upload__text">点击上传</div>
+            </div>
+            <div v-if="fileInfo.type === 'btn' && !disabled">
+                <el-button :size="fileInfo.size?fileInfo.size:'medium'" :type="fileInfo.btntype">{{fileInfo.typename}}</el-button>
+            </div>
+        </el-upload>
+    </div>
+</template>
+<script>
+    export default {
+        props: ['fileInfo', 'fileList','type', 'drag','showFileList','disabled'],
+        data() {
+            return {
+                fileLists: [],
+                attList: [],
+                loading: false,
+                num: 0,
+                s: false
+            }
+        },
+        methods: {
+            signUpload(){},
+            //删除
+            handleRemove(file) {
+                for (let i = 0; i < this.attList.length; i++) {
+                    if (this.attList[i].fileName === file.name) {
+                        this.attList.splice(i, 1);
+                        this.$emit('uploadBack', this.attList)
+                    }
+                }
+            },
+            downloadBack(file) {
+                this.$emit('clickDownload', file)
+            },
+            //数量限制
+            handleExceed(files, fileList) {
+                this.$message.warning(
+                    `当前限制选择 ${this.fileInfo.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`
+                );
+            },
+            deforeUp(file) {
+                const isLt2M = file.size / 1024 / 1024 < 100;
+                if (!isLt2M) {
+                    this.$message.error('上传文件大小不能超过 20MB!');
+                    return false
+                }
+                if(this.fileInfo.type == 'img'){
+                    const isImg = file.type.split("/")[0] == 'image';
+                    if (!isImg) {
+                        this.$message.error('请上传图片格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'ppt'){
+                    const isImg = file.name.split(".")[1] == 'pptx';
+                    console.log(file.name.split(".")[1] == 'pptx')
+                    if (!isImg) {
+                        this.$message.error('请上传ppt格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'csv'){
+                    const isImg = file.name.split(".")[1] == 'csv';
+                    if (!isImg) {
+                        this.$message.error('请上传csv格式文件!');
+                        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);
+                if(this.fileInfo.typename == '新增素材'){
+                    query.append("advType", this.fileInfo.advType);
+                    query.append("advTypeName", this.fileInfo.advTypeName);
+                }
+                if(this.fileInfo.url == '/market/cIllegalCallTask/importTempByProv'||this.fileInfo.url == '/market/cChannelInfo/cIllegalCallTask/importTempByProv'){
+                    query.append("taskId", this.fileInfo.taskId);
+                    query.append("tempId", this.fileInfo.tempId);
+                }
+                //违规外呼
+                if(this.fileInfo.uploadType == 'outCall'){
+                    query.append("uploadType", 'outCall');
+                    query.append("relId", this.fileInfo.relId);
+                }
+                if(this.fileInfo.uploadType == 'train'){
+                    query.append("uploadType", 'train');
+                    query.append("relId", this.fileInfo.relId);
+                }
+                //运营类项目考核及结算
+                if(this.fileInfo.url == '/market/cmkAttachInfo/upload'){
+                    query.append("uploadType", this.fileInfo.uploadType);
+                }
+                if(this.fileInfo.url == '/market/cStoreOutWo/importData'){
+                    query.append("woNo", this.fileInfo.woNo);
+                }
+                if(this.fileInfo.url == '/market/cStoreScheTrainEva/importDataEva'){
+                    query.append("evaId", this.fileInfo.evaId);
+                }
+                this.num++;
+                let _this = this;
+                this.$http({
+                    url: this.fileInfo.url,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: query,
+                }).then((res) => {
+                    if (this.fileInfo.type === 'btn') {
+                        this.$refs['upload'].clearFiles();
+                        this.$emit('uploadBack',res)
+                        if(res.data.result==0){
+                            this.$emit('onSuccess',file)
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'success'
+                            });
+                        }else 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: 'warning'
+                            });
+                        }else if(res.data.result==3){
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'info'
+                            });
+                        }else{
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'success'
+                            });
+                        }
+                        this.num--;
+                        if (this.num == 0) {
+                            this.loading = false;
+                        }
+                        return
+                    }
+                    if (this.fileInfo.type === 'voice') {
+                        this.attList = res.data;
+                    } else {
+                        this.attList.push({
+                            name:res.data.body.fileName,
+                            id: res.data.body.id,
+                            fileName: res.data.body.fileName,
+                            fileCode: res.data.body.fileCode,
+                            opName: res.data.body.opName,
+                            opNo: res.data.body.opNo,
+                            opTime: res.data.body.opTime,
+                            attchFileId: res.data.body.attchFileId,
+                            type: res.data.body.type,
+                        });
+                    }
+                    this.$emit('uploadBack', this.attList);
+                    this.num--;
+                    if (this.num == 0) {
+                        this.loading = false;
+                    }
+                    return true
+                }).catch((res) => {
+                    this.$message({
+                        message: file.name+'上传失败',
+                        type: 'error'
+                    });
+                    this.num--;
+                    if (this.num == 0) {
+                        this.loading = false;
+                    }
+                    for (let i = 0; i < this.$refs['upload'].uploadFiles.length; i++) {
+                        if(file.name == this.$refs['upload'].uploadFiles[i].name){
+                            this.$refs['upload'].uploadFiles.splice(i,1)
+                        }
+                    }
+                    return false
+                })
+            },
+        },
+        mounted() {
+
+        },
+        created() {
+            this.attList = [];
+            for (let i = 0; i < this.fileList.length; i++) {
+                this.attList.push({
+                    id: this.fileList[i].id,
+                    name:this.fileList[i].fileName,
+                    fileName: this.fileList[i].fileName,
+                    fileCode: this.fileList[i].fileCode,
+                    opName: this.fileList[i].opName,
+                    opNo: this.fileList[i].opNo,
+                    opTime: this.fileList[i].opTime,
+                    attchFileId: this.fileList[i].attchFileId,
+                    type: this.fileList[i].type,
+                })
+            }
+        },
+        watch: {
+            fileList() {
+                this.attList = [];
+                for (let i = 0; i < this.fileList.length; i++) {
+                    this.attList.push({
+                        id: this.fileList[i].id,
+                        name:this.fileList[i].fileName,
+                        fileName: this.fileList[i].fileName,
+                        fileCode: this.fileList[i].fileCode,
+                        opName: this.fileList[i].opName,
+                        opNo: this.fileList[i].opNo,
+                        opTime: this.fileList[i].opTime,
+                        attchFileId: this.fileList[i].attchFileId,
+                        type: this.fileList[i].type,
+                    })
+                }
+            }
+        }
+    }
+</script>
+<style scoped lang="scss">
+
+</style>

+ 76 - 72
src/components/workflowBase.vue

@@ -8,27 +8,15 @@
               选择路径
 
               <div class="flex-path-list">
-                <div
-                  v-if="manyReassignment"
-                  :class="actives"
-                  @click="clickManyTransfer(1)"
-                >
+                <div v-if="manyReassignment" :class="actives" @click="clickManyTransfer(1)">
                   转派
                 </div>
-                <div
-                  v-if="transferStatus"
-                  :class="active"
-                  @click="clickTransfer(1)"
-                >
+                <div v-if="transferStatus" :class="active" @click="clickTransfer(1)">
                   转派
                 </div>
                 <div v-if="copyStatus" @click="clickTransfer(2)">抄送</div>
-                <div
-                  v-for="(item, index) in node.nextShapes"
-                  :key="index"
-                  :class="seleIndex == index ? 'active' : ''"
-                  @click="clickGetTree(item, index)"
-                >
+                <div v-for="(item, index) in node.nextShapes" :key="index" :class="seleIndex == index ? 'active' : ''"
+                  @click="clickGetTree(item, index)">
                   {{ item.properties.name }}
                 </div>
               </div>
@@ -37,18 +25,11 @@
           <div class="flex-commons">
             <div class="flex-left-header-text">
               常用意见
-              <span @click="clickEdit" class="flex-icon"
-                ><i class="el-icon-edit"></i>修改</span
-              >
+              <span @click="clickEdit" class="flex-icon"><i class="el-icon-edit"></i>修改</span>
             </div>
             <div class="flex-slide">
-              <div
-                v-for="(item, index) in commonlyList"
-                :key="index"
-                ref="common"
-                class="flex-common"
-                @click="clickCommonly($event)"
-              >
+              <div v-for="(item, index) in commonlyList" :key="index" ref="common" class="flex-common"
+                @click="clickCommonly($event)">
                 {{ item.dataName }}
               </div>
             </div>
@@ -56,30 +37,17 @@
         </div>
         <div class="flex-opinion">
           <div class="flex-left-header-text">意见内容</div>
-          <el-input
-            type="textarea"
-            autosize
-            placeholder="请输入内容"
-            v-model="textarea"
-          >
+          <el-input type="textarea" autosize placeholder="请输入内容" v-model="textarea">
           </el-input>
         </div>
       </div>
       <div class="flex-right" :class="{ copyClass: CopyStatus }">
-        <div
-          class="flex-left-header-text"
-          :class="{ 'flex-right-text': CopyStatus }"
-        >
+        <div class="flex-left-header-text" :class="{ 'flex-right-text': CopyStatus }">
           本部门人员办理
           <div style="display: flex">
             <div class="flex-header-text-tree">
               候选人
-              <deptTree
-                ref="defTree"
-                class="flex-slide"
-                :treeList="treeList"
-                @changeTree="changeTree"
-              />
+              <deptTree ref="defTree" class="flex-slide" :treeList="treeList" @changeTree="changeTree" />
             </div>
             <div class="flex-header-text-tree">
               已选人员
@@ -95,16 +63,13 @@
           <div style="display: flex">
             <div class="flex-header-text-tree">
               抄送人
-              <deptTree
-                ref="defTrees"
-                class="flex-slide"
-                :treeList="treeCopyList"
-                @changeTree="changeTreeCopy"
-              />
+              <deptTree ref="defTrees" class="flex-slide" :treeList="treeCopyList" @changeTree="changeTreeCopy" />
             </div>
             <div class="flex-header-text-tree">
               已选人员
-              <div class="">{{ copyUser }}</div>
+              <div class="" v-for="(item, index) in copyUser" :key="index">
+                {{ item.loginNameStr }}
+              </div>
             </div>
           </div>
         </div>
@@ -115,21 +80,10 @@
         <el-button type="primary" @click="submitWork()">提交</el-button>
       </div>
     </div>
-    <el-dialog
-      title="修改常用意见"
-      :visible.sync="editStatus"
-      width="100%"
-      :before-close="editCloses"
-      :modal="false"
-      :destroy-on-close="true"
-    >
+    <el-dialog title="修改常用意见" :visible.sync="editStatus" width="100%" :before-close="editCloses" :modal="false"
+      :destroy-on-close="true">
       <div style="overflow-y: scroll; overflow-x: hidden; height: 240px">
-        <div
-          v-for="(item, index) in commonlyList"
-          :key="index"
-          ref="common"
-          class="flex-common"
-        >
+        <div v-for="(item, index) in commonlyList" :key="index" ref="common" class="flex-common">
           {{ item.dataName
           }}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
         </div>
@@ -214,7 +168,7 @@ export default {
       };
 
       let res = await this.common.httpPost(obj, success);
-      function success(data) {}
+      function success(data) { }
     },
     async nextWorks(lists, list) {
       let listss = {
@@ -309,9 +263,14 @@ export default {
             return false;
           }
         } else {
-          if (this.treeCopyList.length) {
+          if (this.copyUser.length) {
             //抄送
-            list.copyman = this.treeCopyList[0].loginNoStrCopy;
+            // list.copyman = this.treeCopyList[0].loginNoStrCopy;
+            // list.copyman = this.copyUser;
+            list.copyman = ''
+            this.copyUser.map((item) => {
+              list.copyman += item.loginNoStr + ','
+            })
           }
           if (this.isLastManStatus == true) {
             list.lastman = "yes";
@@ -331,7 +290,7 @@ export default {
               list.nextDealMan = this.backThree[0].loginNoStr;
             }
           } else {
-            if (this.clicknextName === "流程结束"||this.clicknextName === "提交至任务发起人") {
+            if (this.clicknextName === "流程结束" || this.clicknextName === "提交至任务发起人") {
             } else {
               this.$message.error("请选择候选人");
               return false;
@@ -357,6 +316,7 @@ export default {
     async nextWork(list) {
       //e:yes||no,list:传入数组,title:结束标签,res:驳回标签,id:工单更新id
       let _this = this;
+      let copylist = list
       let obj = {
         url: _this.$url.formList.nextWork, //下一步工作流接口
         data: list,
@@ -392,7 +352,8 @@ export default {
             };
             if (data.copytaskid) {
               list.copytaskid = data.copytaskid;
-              list.copyman = _this.treeCopyList[0].loginNoStrCopy;
+              // list.copyman = _this.treeCopyList[0].loginNoStrCopy;
+              list.copyman = copylist.copyman;
             }
             if (_this.demand) {
               list.needNo = _this.demand;
@@ -459,7 +420,7 @@ export default {
           }
           if (res.data.body.nextShapes[0].copy !== null) {
             if (res.data.body.nextShapes[0].copy.copy === "true") {
-              // this.copyStatus = true; //抄送按钮生效
+              this.copyStatus = true; //抄送按钮生效
               this.CopyStatus = true;
             } else {
               this.copyStatus = false;
@@ -498,7 +459,7 @@ export default {
     getTreeLists(e, status) {
       let createdId = "createId";
       let id =
-        e.nextShapes[0].properties.documentation === createdId
+        e.nextShapes[0].properties.documentation.indexOf(createdId) != -1
           ? this.list.createId
           : e.nextShapes[0].properties.documentation;
       console.log(id);
@@ -512,7 +473,7 @@ export default {
       }).then((res) => {
         console.log(status);
         if (status === 2) {
-          this.treeCopyList = res.data; //抄送
+          // this.treeCopyList = res.data; //抄送
           //  this.$refs.defTrees.treeList = res.data;
         } else {
           this.treeList = res.data; //抄送
@@ -520,6 +481,22 @@ export default {
           console.log(this.treeList);
         }
       });
+      if (this.copyStatus == true) {
+        this.$http({
+          url: "/market/api/user/info/queryNodePers?params=" + e.nextShapes[0].properties.formkeydefinition,
+          method: "post",
+          headers: {
+            "Content-Type": "application/json",
+          },
+          data: "",
+        }).then((res) => {
+          console.log(status);
+          this.treeCopyList = res.data; //抄送
+
+        });
+      } else {
+
+      }
     },
     //转派按钮方法
     clickTransfer(e) {
@@ -534,6 +511,9 @@ export default {
     clickGetTree(e, index) {
       this.$refs.defTree.userList = [];
       this.backThree = [];
+      this.$refs.defTree.userList = [];
+      this.backThree = [];
+      this.copyUser = [];
       this.CopyStatus = false;
       this.TransferStatus = false;
       //   this.clickTaskName = e.properties.name;
@@ -568,7 +548,6 @@ export default {
           if (this.CopyStatus === true) {
             this.getTreeLists(e[0].loginNoStr, 2);
           }
-
           if (e[0]) {
             this.selectUser = e[0].loginNameStr;
           } else {
@@ -577,6 +556,10 @@ export default {
         }
       }
     },
+    changeTreeCopy(e) {
+      console.log(e);
+      this.copyUser = e
+    },
     //获取字典表常用意见
     getMetirialType(e) {
       this.$http({
@@ -685,17 +668,20 @@ export default {
   text-align: center;
 }
 
+
 .flex-icon {
   float: right;
   margin-right: 20px;
   color: #4277a1;
 }
 
+
 .flex-handle {
   width: 100%;
   padding: 30px;
   display: flex;
 
+
   .flex-right {
     width: 50%;
     border: 1px solid #e1e1e1;
@@ -703,15 +689,18 @@ export default {
   }
 }
 
+
 .flex-left {
   width: 50%;
   display: flex;
   flex-direction: column;
 
+
   .flex-left-header {
     display: flex;
     justify-content: space-around;
 
+
     .flex-path {
       height: 280px;
       border: 1px solid #e1e1e1;
@@ -720,11 +709,13 @@ export default {
   }
 }
 
+
 .flex-common {
   padding: 10px 5%;
   font-size: 18px;
 }
 
+
 .flex-left-header-text {
   height: 40px;
   line-height: 40px;
@@ -735,21 +726,25 @@ export default {
   font-weight: bold;
 }
 
+
 .flex-path-list {
   overflow-y: scroll;
   overflow-x: hidden;
   height: 14rem;
 }
 
+
 .flex-slide {
   overflow-y: scroll;
   overflow-x: hidden;
 }
 
+
 .active {
   background-color: #f3faff;
 }
 
+
 .flex-opinion {
   height: 280px;
   border: 1px solid #e1e1e1;
@@ -757,28 +752,37 @@ export default {
   margin-top: 20px;
 }
 
+
 .flex-right-text {
   margin-right: 20px;
   width: 50%;
 }
 
+
 .flex-commons {
   height: 280px;
   border: 1px solid #e1e1e1;
   width: 30%;
 }
 
+
 .flex-footer-botton {
   display: flex;
   justify-content: space-evenly;
 }
 
+
 .flex-button {
   margin-top: 10px;
   margin-bottom: 10px;
 
+
   ::v-deep .el-button--primary {
     width: 222px;
   }
 }
+
+.copyClass {
+  display: flex;
+}
 </style>

+ 48 - 53
src/components/workflowEntrance.vue

@@ -25,18 +25,11 @@
           <div class="flex-commons">
             <div class="flex-left-header-text">
               常用意见
-              <span @click="clickEdit" class="flex-icon"
-                ><i class="el-icon-edit"></i>修改</span
-              >
+              <span @click="clickEdit" class="flex-icon"><i class="el-icon-edit"></i>修改</span>
             </div>
             <div class="flex-slide">
-              <div
-                v-for="(item, index) in commonlyList"
-                :key="index"
-                ref="common"
-                class="flex-common"
-                @click="clickCommonly($event)"
-              >
+              <div v-for="(item, index) in commonlyList" :key="index" ref="common" class="flex-common"
+                @click="clickCommonly($event)">
                 {{ item.dataName }}
               </div>
             </div>
@@ -44,12 +37,7 @@
         </div>
         <div class="flex-opinion">
           <div class="flex-left-header-text">意见内容</div>
-          <el-input
-            type="textarea"
-            autosize
-            placeholder="请输入内容"
-            v-model="textarea"
-          >
+          <el-input type="textarea" autosize placeholder="请输入内容" v-model="textarea">
           </el-input>
         </div>
       </div>
@@ -61,12 +49,7 @@
           <div style="display: flex">
             <div class="flex-header-text-tree">
               候选人
-              <deptTree
-                ref="defTree"
-                class="flex-slide"
-                :treeList="treeList"
-                @changeTree="changeTree"
-              />
+              <deptTree ref="defTree" class="flex-slide" :treeList="treeList" @changeTree="changeTree" />
             </div>
             <div class="flex-header-text-tree">
               已选人员
@@ -98,27 +81,15 @@
     </div>
     <div class="flex-footer-botton">
       <div class="flex-button">
-        <el-button type="primary" @click="getnewtransfertask(1)"
-          >提交</el-button
-        >
+        <el-button type="primary" @click="getnewtransfertask(1)">提交</el-button>
       </div>
     </div>
-    <el-dialog
-      title="修改常用意见"
-      :visible.sync="editStatus"
-      width="100%"
-      :before-close="editCloses"
-      :modal="false"
-      :destroy-on-close="true"
-    >
+    <el-dialog title="修改常用意见" :visible.sync="editStatus" width="100%" :before-close="editCloses" :modal="false"
+      :destroy-on-close="true">
       <div style="overflow-y: scroll; overflow-x: hidden; height: 240px">
-        <div
-          v-for="(item, index) in commonlyList"
-          :key="index"
-          ref="common"
-          class="flex-common"
-        >
-          {{ item.dataName
+        <div v-for="(item, index) in commonlyList" :key="index" ref="common" class="flex-common">
+          {{
+            item.dataName
           }}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
         </div>
         <div class="flex-common">
@@ -138,8 +109,8 @@ export default {
   name: "workflow",
   data() {
     return {
-      active:'',
-      actives:'',
+      active: '',
+      actives: '',
       MultipersonTransfer: false,
       transferStatus: false, //转派按钮控制
       TransferStatus: false, //是否点击转派状态
@@ -161,7 +132,7 @@ export default {
       treeCopyList: [],
       demand: "",
       close: "",
-      nextDealManLists:''
+      nextDealManLists: ''
     };
   },
   props: {
@@ -186,7 +157,7 @@ export default {
       this.backThree = [];
       this.treeList = [];
       this.close = "1";
-      this.actives = this.actives!=""? "" :'actives'
+      this.actives = this.actives != "" ? "" : 'actives'
       this.active = ""
     },
     // async getqueryMultiTaskId() {
@@ -222,7 +193,7 @@ export default {
         // taskName: this.clicknextName, //流程节点
         userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
         content: this.textarea, //意见内容
-        resourceId:this.list.resourceId
+        resourceId: this.list.resourceId
       };
       let obj = {};
       if (this.close == "1") {
@@ -444,7 +415,7 @@ export default {
           //   this.initialList.nextShapes[0].multi?.multi &&
           //   res.data.body.nextShapes[0].multi.multi === "true"
           // ) {
-           
+
           // }
         }
         if (status === 2) {
@@ -464,7 +435,7 @@ export default {
     getTreeLists(e, status) {
       if (e === 9) {
         this.close = ""
-        this.active = this.active!=""? '' :'active'
+        this.active = this.active != "" ? '' : 'active'
         this.actives = ""
         this.MultipersonTransfer = true;
       } else {
@@ -534,13 +505,18 @@ export default {
     //选择树的回调
     changeTree(e) {
       if (this.MultipersonTransfer) {
+        // if (e.length > 1) {
+        //   this.$message.error("只能选择一个人");
+        //   return;
+        // } else {
           this.backThree = e;
-        let arr = [];
-        this.backThree.map((item) => {
-          arr.push(item.loginNoStr);
-        });
-        this.nextDealManLists = arr.toString();
-      }
+          let arr = [];
+          this.backThree.map((item) => {
+            arr.push(item.loginNoStr);
+          });
+          this.nextDealManLists = arr.toString();
+        }
+      // }
     },
     //获取字典表常用意见
     getMetirialType(e) {
@@ -648,35 +624,43 @@ export default {
 .active {
   background-color: #f3faff;
 }
+
 .actives {
   background-color: #f3faff;
 }
+
 .flex-header-text-tree {
   width: 50%;
   text-align: center;
 }
+
 .flex-icon {
   float: right;
   margin-right: 20px;
   color: #4277a1;
 }
+
 .flex-handle {
   width: 100%;
   padding: 30px;
   display: flex;
+
   .flex-right {
     width: 50%;
     border: 1px solid #e1e1e1;
     margin-left: 20px;
   }
 }
+
 .flex-left {
   width: 50%;
   display: flex;
   flex-direction: column;
+
   .flex-left-header {
     display: flex;
     justify-content: space-around;
+
     .flex-path {
       height: 280px;
       border: 1px solid #e1e1e1;
@@ -684,10 +668,12 @@ export default {
     }
   }
 }
+
 .flex-common {
   padding: 10px 5%;
   font-size: 18px;
 }
+
 .flex-left-header-text {
   height: 40px;
   line-height: 40px;
@@ -697,40 +683,49 @@ export default {
   font-size: 18px;
   font-weight: bold;
 }
+
 .flex-path-list {
   overflow-y: scroll;
   overflow-x: hidden;
   height: 14rem;
 }
+
 .flex-slide {
   overflow-y: scroll;
   overflow-x: hidden;
 }
+
 .active {
   background-color: #f3faff;
 }
+
 .flex-opinion {
   height: 280px;
   border: 1px solid #e1e1e1;
   width: 100%;
   margin-top: 20px;
 }
+
 .flex-right-text {
   margin-right: 20px;
   width: 50%;
 }
+
 .flex-commons {
   height: 280px;
   border: 1px solid #e1e1e1;
   width: 30%;
 }
+
 .flex-footer-botton {
   display: flex;
   justify-content: space-evenly;
 }
+
 .flex-button {
   margin-top: 10px;
   margin-bottom: 10px;
+
   ::v-deep .el-button--primary {
     width: 222px;
   }

+ 2 - 2
src/components/workflowUpload.vue

@@ -44,8 +44,8 @@ export default {
     };
   },
   methods: {
-    clickDownload() {
-      this.$emit("clickDownload", true);
+    clickDownload(file) {
+      this.$emit("clickDownload", file);
     },
     signUpload() {},
     //删除

+ 54 - 0
src/config/dev.js

@@ -0,0 +1,54 @@
+'use strict'
+let devs = {
+    TITLE:'本地环境',
+    BASE_URL:"http://43.138.50.94:9600/", //本地环境
+    BASE_API:"http://43.138.50.94:8880/api",//工作流本地环境
+    EXCEL_URL:"http://43.138.50.94:7777", //本地excel路径
+    provincialWorkOrderAreafresourceId:'a682dc9f-2fea-11ed-a6ed-02427ba2d388',//通用工单地市
+    provincialWorkOrderfresourceId:'08368848-2fde-11ed-a6ed-02427ba2d388',//通用工单省
+    riskMaterialsfresourceId:'c9104902-6575-11ed-8e1e-d6cd97160e00',//风险防控
+}
+let dev = {
+    TITLE:'本地环境',
+    BASE_URL:"http://127.0.0.1:8080", //本地环境
+    BASE_API:"http://43.138.50.94:8880/api",//工作流本地环境
+    EXCEL_URL:"http://43.138.50.94:7777", //本地excel路径
+    provincialWorkOrderAreafresourceId:'a682dc9f-2fea-11ed-a6ed-02427ba2d388',//通用工单地市
+    provincialWorkOrderfresourceId:'08368848-2fde-11ed-a6ed-02427ba2d388',//通用工单省
+    riskMaterialsfresourceId:'c9104902-6575-11ed-8e1e-d6cd97160e00',//风险防控
+}
+let test = {
+    TITLE:'测试环境',
+    BASE_URL:"http://10.149.85.91:8000/spfm", //测试环境
+    BASE_API:"http://10.149.85.91:8000/api",//工作流测试环境
+    EXCEL_URL:"http://10.149.85.91:7777", //测试excel路径
+    provincialWorkOrderAreafresourceId:'33b0af93-b1ce-11ed-be6b-00505687dcd3',//通用工单地市
+    provincialWorkOrderfresourceId:'4fdbb96e-8bfd-11ed-8988-00505687dcd3',//通用工单省
+    riskMaterialsfresourceId:'3124a2d4-7209-11ed-8d6f-00505687dcd3',//风险防控
+}
+let prod = {
+    TITLE:'线上环境',
+    BASE_URL:"http://10.230.26.15:8000/mkt", //线上环境
+    BASE_API:"http://10.230.26.15:8000/api",//工作流线上环境
+    EXCEL_URL:"http://10.230.26.15:7777", //线上excel路径
+    provincialWorkOrderAreafresourceId:'db26384e-b984-11ed-afb6-e00084564cce',//通用工单地市
+    provincialWorkOrderfresourceId:'9b83efc7-b984-11ed-afb6-e00084564cce',//通用工单省
+    riskMaterialsfresourceId:'canvas',//风险防控
+}
+export const getConfig  = () =>{
+    switch(process.env.VUE_APP_ENV){
+        case "development":
+            return dev;
+        case 'test':
+            return test;
+        case 'production':
+            return prod
+        case 'devs':
+            return devs; 
+    }
+}
+export default getConfig;
+
+// 根据环境引入不同配置 process.env.ENV_CONFIG  ex:dev.conf.js
+
+// module.exports = config

+ 29 - 3
src/http/api.js

@@ -13,7 +13,7 @@ export function getTodoBase(page, seach, idNo) {
         data: idNo,
     })
 }
-//通用方法
+//通用方法
 export function getDoneBase(page, seach, idNo) {
     return axios({
         url: "/market/waf/queryDoneBase",
@@ -26,7 +26,33 @@ export function getDoneBase(page, seach, idNo) {
         data: idNo,
     })
 }
-//通用方法待办
+//通用方法待阅
+export function queryReadBase(page, seach, idNo) {
+    return axios({
+        url: "/market/waf/queryReadBase",
+        method: "post",
+        method: "post",
+        headers: {
+            "Content-Type": "application/json",
+            page: '{"pageNo":"' + page + '","pageSize":"10"}',
+        },
+        data: idNo,
+    })
+}
+//通用方法已阅
+export function queryReadDoneBase(page, seach, idNo) {
+    return axios({
+        url: "/market/waf/queryReadDoneBase",
+        method: "post",
+        method: "post",
+        headers: {
+            "Content-Type": "application/json",
+            page: '{"pageNo":"' + page + '","pageSize":"10"}',
+        },
+        data: idNo,
+    })
+}
+//通用方法发起
 export function getInitiateBase(page, seach, idNo) {
     return axios({
         url: "/market/waf/queryInitiateBase",
@@ -60,4 +86,4 @@ export function getNowdata(e) {
     let time = yy + e.a + mm + e.a + dd + e.b + hh + e.c + mf + e.c + ss
     return time
 }
-export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata };
+export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata, queryReadBase,queryReadDoneBase };

+ 6 - 2
src/pages/main/advertising/contractCap.vue

@@ -27,7 +27,11 @@
                     </el-table-column>
                     <el-table-column prop="secbuySchedule" label="使用进度">
                     </el-table-column>
-                    <el-table-column :label="item.supplierName" v-for="(item, index) in supplierArr" :key="index">
+                    <!-- <el-table-column
+                        :label="item.supplierName"
+                        v-for="(item, index) in supplierArr"
+                        :key="index"
+                    >
                         <template slot-scope="scope">
                             <div v-if="
                                 scope.row.cMkSupplierCumulativeAmounts.filter(
@@ -42,7 +46,7 @@
                                 {{ item.sumBudget }}
                             </div>
                         </template>
-                    </el-table-column>
+                    </el-table-column> -->
                     <!-- <el-table-column prop="advYearn" :label="advYearnLabel">
             					</el-table-column> -->
                     <el-table-column label="操作" width="160px" align="center" v-if="advLeader">

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

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

File diff suppressed because it is too large
+ 1186 - 0
src/pages/main/documentCollection/documentCollectionApprovalExcel.vue


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

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

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

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

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

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

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

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

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

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

+ 2 - 0
src/pages/main/homeMarket/tvAssess/initiateAssess.vue

@@ -20,6 +20,7 @@
                     <div class="tabbox" v-show="tableType" style="padding: 0 20px;">
                         <el-table
                             class="com-table"
+                            :key="Date.now()"
                             ref="multipleTable"
                             :data="infolist.tableData"
                             tooltip-effect="dark"
@@ -105,6 +106,7 @@
                     <div class="tabbox" v-show="!tableType" style="padding: 0 20px;">
                         <el-table
                             class="com-table"
+                            :key="Date.now()"
                             ref="multipleTable"
                             :data="vtableData"
                             tooltip-effect="dark"

+ 1 - 0
src/pages/main/homeMarket/tvAssess/tvAssessIndex.vue

@@ -268,6 +268,7 @@
                         </div>
                         <el-table
                             class="com-table"
+                            :key="Date.now()"
                             ref="multipleTable"
                             :data="khDetVipTable"
                             tooltip-effect="dark"

+ 1 - 1
src/pages/main/leader/leaderhomeTask.vue

@@ -105,7 +105,7 @@
           <!-- <el-pagination class="pageBox"  @current-change="currchangeDone"
             layout="total,prev, pager, next" background :total="totalDone" page-size="10">
           </el-pagination> -->
-          <el-pagination @current-change="currchangeDyiban" :current-page="yibanpage" :page-size="yibansize"
+          <el-pagination @current-change="currchangeyiban" :current-page="yibanpage" :page-size="yibansize"
             layout="total,prev, pager, next" :total="yibantotal" v-if="tabbox2">
           </el-pagination>
         </div>

+ 4 - 2
src/pages/main/leader/risk/riskManagement.vue

@@ -208,6 +208,7 @@ import {
     getDoneBase,
     getInitiateBase,
 } from "../../../../http/api.js";//../../../http/api.js
+import getConfig from '../../../../config/dev.js'
 import { log } from "console";
 export default {
     components: {
@@ -245,8 +246,9 @@ export default {
             },
             requestForm: {
                 // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
-                fresourceId: "canvas", // 生产环境
+                // fresourceId: "canvas", // 生产环境
                 // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
+                fresourceId: getConfig().riskMaterialsfresourceId, 
                 processDefinitionKey: "fxfk_process",
             },
             rule: {
@@ -906,7 +908,7 @@ export default {
             // });
         },
         setForm(e) {
-            this.request_form.title = this.fromList.needName;
+            this.request_form.title = '[市场工作台]-风险点防控-'+this.fromList.needName;
             this.fromList.transactorList = []
             this.treeListonly.map((item) => {
                 this.fromList.transactorList.push(item.key)

+ 4 - 2
src/pages/main/leader/risk/riskMaterials.vue

@@ -119,6 +119,7 @@ import {
     getDoneBase,
     getInitiateBase,
 } from "../../../../http/api.js";//../../../http/api.js
+import getConfig from '../../../../config/dev.js'
 export default {
     components: {
         Table,
@@ -181,8 +182,9 @@ export default {
             },
             requestForm: {
                 // fresourceId: "c9104902-6575-11ed-8e1e-d6cd97160e00", // 本地环境
-                fresourceId: "canvas", // 生产环境
+                // fresourceId: "canvas", // 生产环境
                 // fresourceId: "3124a2d4-7209-11ed-8d6f-00505687dcd3", //测试91环境
+                fresourceId: getConfig().riskMaterialsfresourceId, 
                 processDefinitionKey: "fxfk_process",
             },
             dialogStatus: false, //dialog显示
@@ -999,7 +1001,7 @@ export default {
         },
         setForm(e) {
             // console.log(this.$refs.form)
-            this.request_form.title = this.fromList.needName;
+            this.request_form.title = '[市场工作台]-风险点防控-'+this.fromList.needName;
             // this.request_form.title = this.$refs.form.needName;
             // this.$refs.form.taskId = e;
             this.$http({

File diff suppressed because it is too large
+ 1364 - 0
src/pages/main/productionDataExport/cityHome.vue


+ 113 - 0
src/pages/main/productionDataExport/form.vue

@@ -0,0 +1,113 @@
+<template>
+  <div>
+    <slot :name="list.name"></slot>
+    <el-table  ref="table" style="width: 100%" :data="list.data" :height="list.height + 'px'"
+      :max-height="list.height + 'px'" @row-click="getRowData" @selection-change="selectionChange"
+      :cell-style="columnbackgroundStyle" empty-text="暂无数据" @cell-click="getRowList">
+      <!-- 是否多选 -->
+      <el-table-column v-if="list.isSelection" :selecttable="list" type="selection" :width="100" align="center" />
+
+      <!-- 是否需要序号 -->
+      <el-table-column v-if="list.isIndex" type="index" label="序号" width="55" align="center" />
+      <template v-for="item in list.titledata">
+        <el-table-column :key="item.prop" :prop="item.prop" :label="item.label" align="center" show-overflow-tooltip
+          :width="item.width || 100" />
+      </template>
+      <!-- 操作列 -->
+      <el-table-column v-if="list.isOperation" v-bind="list.data && list.data.length ? { fixed: 'right' } : null"
+        style="margin-right: 20px" class-name="handle-td" label-class-name="tc" :label="list.operation.label"
+        align="center">
+        <!-- UI统一一排放3个,4个以上出现更多 -->
+        <template slot-scope="scope">
+          <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
+          <template v-if="list.operation.data.length > 0">
+            <div class="btn">
+              <div v-for="item in list.operation.data" :key="item.label">
+                <template v-if="item.type !== 'icon'">
+                  <el-button v-bind="item" :type="item.type ? item.type : ''" size="mini" @click.native.prevent="
+                    item.handleRow(scope.$index, scope.row, item.label)
+                  ">
+                    {{ item.label }}
+                  </el-button>
+                </template>
+                <template v-else>
+                  <i :class="[icon, item.icon]" v-bind="item"
+                    @click="item.handleRow(scope.$index, scope.row, item.label)" />
+                </template>
+              </div>
+            </div>
+          </template>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div class="page">
+      <el-pagination  style="display: flex; flex-direction: row-reverse;margin-bottom: 4%" v-if="list.pageData.total > 0"
+        :current-page.sync="page" :page-sizes="list.pageData.pageSizes ? list.pageData.pageSizes : [10]"
+        :page-size="list.pageData.pageSize" layout="total, sizes, prev, pager, next, jumper"
+        :total="list.pageData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      page: 1,
+    };
+  },
+  props: {
+    //  表格数据和表格部分属性的对象
+    // eslint-disable-next-line vue/require-default-prop
+    list: {
+      type: Object,
+    },
+  },
+  created() {
+    console.log(this.list);
+    // this.columnbackgroundStyle()
+  },
+  mounted() {
+    console.log(this.list);
+  },
+  methods: {
+    columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
+      if (column.type === 'default') {
+        if (column.label === '文件标题') {
+          return 'color:#0682CD;'
+        }
+      }
+    },
+    selectionChange(val) {
+      //多选数字回调
+      this.$emit("num", val);
+    },
+    handleAdd(name) {
+      this.$emit("toolMsg", name);
+    },
+    handleRow(index, row, lable) { },
+    handleSizeChange(val) {
+      this.$emit("changeSize", val);
+      console.log(`每页 ${val} 条`);
+    },
+    handleCurrentChange(val) {
+      this.$emit("changeNum", val);
+      console.log(`当前页: ${val}`);
+    },
+    // 点击行即可选中
+    getRowData(row) {
+      this.$refs.table.toggleRowSelection(row);
+    },
+    getRowList(row, column, event, cell) {
+      this.$emit("clickDemand", column.label, row);
+    },
+  },
+};
+</script>
+
+<style>
+.btn {
+  display: flex;
+  justify-content: center;
+}
+</style>

+ 604 - 0
src/pages/main/productionDataExport/formTable.vue

@@ -0,0 +1,604 @@
+<template>
+    <div>
+        <div>
+            <div class="flex-title">生产数据导出工单</div>
+            <el-form
+                ref="form"
+                :model="form"
+                :rules="rule"
+                label-width="130px"
+                style="margin-top: 30px"
+                :disabled="disabled"
+            >
+                <div class="flex-header">
+                    <el-form-item
+                        label="申请部门:"
+                        prop="applyDepartment"
+                        style="width: 25%; margin-right: 10px"
+                    >
+                        <el-input v-model="form.applyDepartment" :disabled="true"
+                        ></el-input>
+                    </el-form-item>
+
+                    <el-form-item
+                        label="申请科室:"
+                        prop="applyOffice"
+                        style="width: 25%; margin-right: 10px"
+                    >
+                        <el-input v-model="form.applyOffice" :disabled="true"
+                        ></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="拟稿人:" prop="proposer" :disabled="true"
+                    >
+                        <el-input v-model="form.proposer" :disabled="true"></el-input>
+                    </el-form-item>
+                    <el-form-item label="拟稿时间:" prop="proposerTime"
+                    >
+                        <el-input
+                            v-model="form.proposerTime"
+                            :disabled="true"
+                        ></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        label="文件标题:"
+                        prop="needName"
+                        style="width: 42%; margin-right: 10px"
+                    >
+                        <el-input v-model="form.needName" placeholder="关于XX单位导出XX业务XX数据的申请"></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="文件编号:" prop="needNo"
+                                  style="width: 42%; margin-left: 11px"
+                    >
+                        <el-input v-model="form.needNo" :disabled="true"></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 33%; margin-right: 10%"
+                        label="联系电话:"
+                        prop="phoneNo"
+                    >
+                        <el-input v-model="form.phoneNo" :disabled="true"></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="需求类型:" prop="requirementType"
+                                  style="width: 33%; margin-right: 10%"
+
+                    >
+                        <el-select v-model="form.requirementType" placeholder="需求类型">
+                            <el-option
+                                v-for="(item, index) in requirementTypeList"
+                                :label="item.name"
+                                :value="item.code"
+                                :key="index"
+                            >{{ item.name }}
+                            </el-option
+                            >
+                        </el-select>
+                    </el-form-item>
+
+                    <el-form-item label="数据导出类型:" prop="exportType"
+                                  style="width: 33%; margin-right: 10%"
+
+                    >
+                        <el-select v-model="form.exportType" placeholder="数据导出类型">
+                            <el-option
+                                v-for="(item, index) in exportTypeList"
+                                :label="item.name"
+                                :value="item.code"
+                                :key="index"
+                            >{{ item.name }}
+                            </el-option
+                            >
+                        </el-select>
+                    </el-form-item>
+                </div>
+
+
+                <div class="flex-header">
+                    <el-form-item
+                        label="数据库名:"
+                        style="width: 33%; margin-right: 10%"
+                        prop="sourceDatabase"
+                    >
+                        <el-input v-model="form.sourceDatabase"
+                                  placeholder="库名或IP"
+                        ></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="数据表:" prop="sourceTable"
+                                  style="width: 33%; margin-right: 10%"
+
+                    >
+                        <el-input v-model="form.sourceTable" placeholder="用户.表名"></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="主机IP:" prop="hostIp"
+                                  style="width: 33%; margin-right: 10%"
+
+                    >
+                        <el-input v-model="form.hostIp" placeholder="数据源所在主机IP"></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 90%; margin-right: 10%"
+                        label="导出文件名称:"
+                        prop="exportFileName"
+                    >
+                        <el-input v-model="form.exportFileName" placeholder="导出文件名称"></el-input>
+                    </el-form-item>
+                </div>
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 90%; margin-right: 10%"
+                        label="文件路径:"
+                        prop="exportFilePath"
+                    >
+                        <el-input v-model="form.exportFilePath"
+                                  placeholder="导出文件所在路径"
+                        ></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 90%; margin-right: 10%"
+                        label-width="120px" label="需求内容:"
+                        prop="requirementContent"
+                    >
+                        <el-input type="textarea"
+                                  show-word-limit v-model="form.requirementContent"
+                                  placeholder="如为明细级数据导出,请详细描述具体原由,至少50字。"
+                        ></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        label="是否涉及敏感信息:"
+                        style="white-space: nowrap;margin-right: 10%"
+                        prop="isSensitiveInformation"
+                    >
+                        <el-select v-model="form.isSensitiveInformation" placeholder="请选择">
+                            <el-option label="是" value="是"></el-option>
+                            <el-option label="否" value="否"></el-option>
+                        </el-select>
+                    </el-form-item>
+                </div>
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 90%; margin-right: 10%"
+                        label-width="120px" label="涉敏信息范围:"
+                        prop="sensitiveScope"
+                    >
+                        <el-input type="textarea" @input="change($event)"
+                                  :disabled="this.isEditSensitiveScope"
+                                   v-model="form.sensitiveScope"></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-load" style="display: flex; flex-direction: column">
+                    <el-form-item label="附件:" :disabled="disabled" prop="mkFileShareAttachList">
+                        <my-upload :showFileList ="true" :drag ="!disabled" :disabled ="disabled"  @uploadBack="uploadBack" @delloadBack="delloadBack"
+                                   @clickDownload="downloadOne" :fileInfo="fileInfo"
+                                   @downloadBack = "downloadBack"
+                                   :fileList="list.mkFileShareAttachList"
+                                   style="width: 30% !important"></my-upload>
+
+                    </el-form-item>
+                    <div @click="downExcel" class="el-upload__tip" slot="tip">
+                        附件模板: 生产数据导出申请表.doc
+                    </div>
+                </div>
+
+            </el-form>
+        </div>
+        <div></div>
+        <div></div>
+    </div>
+</template>
+
+<script>
+    import myUpload from "../../../components/uploadMultiConfig";
+
+    export default {
+        components: {
+            myUpload,
+        },
+        data() {
+            var validateRequirementContent = (rule, value, callback) => {
+                if (!this.disabled) {
+                    if (this.form.exportType === '2' && (!value || value.length < 50)) {
+                        callback(new Error('如为明细级数据导出,请详细描述具体原由,至少50字。'));
+                    } else if (!value) {
+                        callback(new Error('请输入需求内容'));
+                    } else {
+                        callback();
+                    }
+                } else {
+                    callback();
+                }
+            };
+
+            var validateSensitiveScope = (rule, value, callback) => {
+                if (!this.disabled) {
+                    if (this.form.isSensitiveInformation === "是") {
+                        if (!value) {
+                            callback(new Error('请输入涉敏信息范围'));
+                        } else {
+                            callback();
+                        }
+                    } else {
+                        callback();
+                    }
+                } else {
+                    callback();
+                }
+            };
+            return {
+                fileInfo: {
+                    type: "bt1n",
+                    typename: "上传文件",
+                    limit: 5,
+                    url: "/market/waf/upload",
+                    fileList: [],
+                },
+                //需求类型
+                requirementTypeList: [],
+                //数据导出类型
+                exportTypeList: [],
+                isEditSensitiveScope: false,
+
+                form: {
+                },
+                rule: {},
+                copyRule: {
+                    needName: [
+                        {required: true, message: "请输入文件标题", trigger: "blur"},
+                    ],
+                    requirementType: [
+                        {required: true, message: "请选择需求类型", trigger: "change"},
+                    ],
+                    exportType: [
+                        {required: true, message: "请选择数据导出类型", trigger: "change"},
+                    ],
+                    exportFileName: [
+                        {required: true, message: "请选择导出文件名称", trigger: "blur"},
+                    ],
+                    requirementContent: [
+                        {validator: validateRequirementContent, trigger: "blur"},
+                    ],
+                    isSensitiveInformation: [
+                        {required: true, message: "请选择是否涉及敏感信息", trigger: "change"},
+                    ],
+                    mkFileShareAttachList: [
+                        {required: true, message: "请选择上传附件", trigger: "change"},
+                    ],
+                    sensitiveScope: [
+                        {validator: validateSensitiveScope, trigger: 'blur'}
+                    ],
+                },
+                temprulers: {
+                    sensitiveScope: [
+                        {required: true, message: "请输入涉敏信息范围", trigger: "blur"},
+                    ],
+                }
+            };
+        },
+        props: {
+            list: {
+                type: Object,
+                default: () => {
+                },
+            },
+            disabled: {
+                type: Boolean,
+                default: () => {
+                },
+            },
+        },
+        mounted() {
+            if (this.list.mkFileShareAttachList) {
+                this.$refs.upload.attList = this.list.mkFileShareAttachList;
+                this.list.mkFileShareAttachList.map((item) => {
+                    item.name = item.fileName;
+                });
+            }
+        },
+        created() {
+            this.getRequirementTypeList();
+            this.getExportTypeList();
+            this.form = this.list;
+            this.isList = this.list;
+            if (!this.disabled) {
+                 this.rule = this.copyRule;
+            }
+            this.fileInfo.fileList = this.list.mkFileShareAttachList;
+        },
+        watch: {
+            "form.isSensitiveInformation": {
+                handler(newVal, oldVal) {
+                    if (!this.disabled) {
+                        if (newVal === "否") {
+                            this.isEditSensitiveScope = true;
+                            this.form.sensitiveScope = "";
+                        } else {
+                            this.isEditSensitiveScope = false;
+                        }
+                    }
+                },
+            },
+        },
+        methods: {
+            change(){
+                this.$forceUpdate();
+            },
+            getRequirementTypeList() {
+                this.$http({
+                    url: "/market/sysConfig/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {"type": "1"},
+                }).then((res) => {
+                    this.requirementTypeList = res.data;
+                });
+            },
+            getExportTypeList() {
+                this.$http({
+                    url: "/market/sysConfig/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {"type": "2"},
+                }).then((res) => {
+                    this.exportTypeList = res.data;
+                });
+            },
+            clickLLength(e) {
+                if (e !== 0) {
+                    this.Length = true;
+                } else {
+                    this.Length = false;
+                }
+            },
+            clickSelect(e) {
+            },
+
+            uploadBack(v) {
+                if (v && v.fileName) {
+                    v.name = v.fileName;
+                }
+                if (this.form.mkFileShareAttachList) {
+                    this.form.mkFileShareAttachList = [];
+                    this.form.mkFileShareAttachList = v;
+                } else {
+                    let mkFileShareAttachList = [];
+                    mkFileShareAttachList = v;
+                    this.$set(this.form, "mkFileShareAttachList", mkFileShareAttachList);
+                }
+            },
+            downloadBack(v) {
+            },
+            delloadBack(v) {
+                this.form.mkFileShareAttachList = v;
+                this.$http({
+                    url: "/market/waf/update",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: this.form,
+                }).then((res) => {
+                });
+            },
+            downloadOne(e) {
+                let list = {
+                    id: e.fileCode,
+                    fileName: e.fileName,
+                };
+
+                this.$http({
+                    url: "/market/waf/downFile",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: list,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: "application/vnd.ms-excel",
+                        });
+                        //window.navigator.msSaveOrOpenBlob(blob, this.form.needName);
+                        window.navigator.msSaveOrOpenBlob(
+                            blob,
+                            list.fileName
+                        );
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download =
+                            list.fileName;
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            },
+            download() {
+                if (this.form.mkFileShareAttachList.length > 1) {
+                    this.$http({
+                        url: "/market/CMKFile/downAllFile",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        responseType: "blob",
+                        data: {mkFileShareAttachList: this.form.mkFileShareAttachList},
+                    }).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().toString() + ".zip"
+                            );
+                        } else {
+                            /* 火狐谷歌的文件下载方式 */
+                            var blob = new Blob([response.data]);
+                            var downloadElement = document.createElement("a");
+                            var href = window.URL.createObjectURL(blob);
+                            downloadElement.href = href;
+                            downloadElement.download = this.form.needName + ".zip";
+                            document.body.appendChild(downloadElement);
+                            downloadElement.click();
+                            document.body.removeChild(downloadElement);
+                            window.URL.revokeObjectURL(href);
+                        }
+                        if (this.infolist.authType === "3") {
+                            this.dialogCli(10);
+                        }
+                    });
+                } else {
+                    let list = {
+                        id: this.form.mkFileShareAttachList[0].fileCode,
+                        fileName: this.form.mkFileShareAttachList[0].fileName,
+                    };
+                    this.$http({
+                        url: "/market/waf/downFile",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        responseType: "blob",
+                        data: list,
+                    }).then((response) => {
+                        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                            let blob = new Blob([response.data], {
+                                type: "application/vnd.ms-excel",
+                            });
+                            //window.navigator.msSaveOrOpenBlob(blob, this.form.needName);
+                            window.navigator.msSaveOrOpenBlob(
+                                blob,
+                                this.form.mkFileShareAttachList[0].fileName
+                            );
+                        } else {
+                            /* 火狐谷歌的文件下载方式 */
+                            var blob = new Blob([response.data]);
+                            var downloadElement = document.createElement("a");
+                            var href = window.URL.createObjectURL(blob);
+                            downloadElement.href = href;
+                            downloadElement.download =
+                                this.form.mkFileShareAttachList[0].fileName;
+                            document.body.appendChild(downloadElement);
+                            downloadElement.click();
+                            document.body.removeChild(downloadElement);
+                            window.URL.revokeObjectURL(href);
+                        }
+                    });
+                }
+            },
+            //上传文件钩子函数
+            clickUpload(file) {
+            },
+            //下载文件
+            downExcel() {
+                this.$http({
+                    url: "/market/scsjdcProProcess/downloadTemp",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: {},
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: "application/vnd.ms-excel",
+                        });
+                        window.navigator.msSaveOrOpenBlob(blob, "生产数据导出申请表.doc");
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = "生产数据导出申请表.doc";
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            },
+            changeSelect(e) {
+            },
+        },
+    };
+</script>
+
+<style lang="scss" scoped>
+    ::v-deep .el-upload-list {
+        width: 23rem;
+    }
+
+    .flex-title {
+        text-align: center;
+        font-size: 24px;
+        line-height: 60px;
+        border-bottom: 1px solid #e1e1e1;
+        font-weight: bold;
+    }
+
+    .flex-header {
+        margin-top: 20px;
+        display: flex;
+        //   justify-content: space-between;
+        border-bottom: 1px solid #e1e1e1;
+
+        ::v-deep .el-form-item {
+            width: 25%;
+            margin-right: 5%;
+        }
+    }
+
+    .flex-input-tare {
+        ::v-deep .el-form-item {
+            width: 100%;
+            margin-right: 5%;
+        }
+    }
+
+    .el-upload__tip {
+        color: red;
+    }
+
+    ::v-deep .el-input--suffix .el-input__inner {
+        width: 119% !important;
+    }
+
+    ::v-deep .el-input__inner {
+        color: black !important;
+    }
+
+    ::v-deep .el-textarea.is-disabled .el-textarea__inner {
+        color: black !important;
+    }
+</style>

File diff suppressed because it is too large
+ 1370 - 0
src/pages/main/productionDataExport/provinceHome.vue


File diff suppressed because it is too large
+ 1559 - 0
src/pages/main/provincialWorkOrder/provincialWorkOrder.vue


File diff suppressed because it is too large
+ 1328 - 0
src/pages/main/provincialWorkOrder/provincialWorkOrderArea.vue


+ 3 - 2
src/pages/main/terminals/components/adverts.vue

@@ -378,12 +378,13 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
-        data.data.map((item) => {
+        // console.log('测试返回data',data);
+        data.data.data.map((item) => {
           item.startTime = _this.$util.datetimeFormat(item.startTime);
           item.endTime = _this.$util.datetimeFormat(item.endTime);
         });
         console.log(data.data);
-        _this.rovaList = data.data;
+        _this.rovaList = data.data.data;
         // _this.lables.data = data.data;
         // data.data.map((item) => {
         //   item.startTime = _this.$util.datetimeFormat(item.startTime);

+ 69 - 4
src/router/index.js

@@ -2172,21 +2172,86 @@ const routes = [{
             name: 'processruns',
 
             component: resolve => require(['../pages/main/processruns/processruns.vue'], resolve),
-            meta: { title: '运行流程' }
-        }
-        ,{
+            meta: {title: '运行流程'}
+        },
+        {
+            meta: {name: '', keepAlive: false},
+            path: '/productionDataExportCityHome',
+            name: 'productionDataExportCityHome',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/productionDataExport/cityHome.vue'], resolve)
+        },
+        {
+            meta: {name: '', keepAlive: false},
+            path: '/productionDataExportProvinceHome',
+            name: 'productionDataExportProvinceHome',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/productionDataExport/provinceHome.vue'], resolve)
+        },
+        , {
             meta: { name: '风险防控管理', keepAlive: false },
             path: '/riskMaterials',
             name: 'riskMaterials',
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/leader/risk/riskMaterials.vue'], resolve)
-        },{
+        }, {
             meta: { name: '风险防控管理', keepAlive: false },
             path: '/riskManagement',
             name: 'riskManagement',
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/leader/risk/riskManagement.vue'], resolve)
         },
+        {
+            meta: { name: '新文件收集与审批', keepAlive: false },
+            path: '/documentCollectionApprovalHome',
+            name: 'documentCollectionApprovalHome',
+            redirect: 'documentCollectionApproval',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/documentCollection/home.vue'], resolve),
+            children: [
+                {
+                    meta: { name: '文件收集与审批我接收的', keepAlive: false },
+                    path: '/documentCollectionApproval',
+                    name: 'documentCollectionApproval',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApproval'], resolve)
+                },
+                {
+                    meta: { name: '收入信息收集', keepAlive: false },
+                    path: '/documentCollectionApprovalIssuedMoud',
+                    name: 'documentCollectionApprovalIssuedMoud',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalIssuedMoud'], resolve)
+                }, {
+                    meta: { name: '文件收集与审批我发起的', keepAlive: false },
+                    path: '/documentCollectionApprovalIssuedCollect',
+                    name: 'documentCollectionApprovalIssuedCollect',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalIssuedCollect'], resolve)
+                },
+
+            ]
+        },
+        {
+            meta: {
+                name: '模板详情',
+                keepAlive: false
+            },
+            path: '/documentCollectionApprovalExcel',
+            name: 'documentCollectionApprovalExcel',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalExcel'], resolve)
+        },
+        {
+            path: '/provincialWorkOrder',
+            name: 'provincialWorkOrder',
+            component: resolve => require(['../pages/main/provincialWorkOrder/provincialWorkOrder.vue'], resolve),
+            meta: { title: '省-通用工单' }
+        },
+        {
+            path: '/provincialWorkOrderArea',
+            name: 'provincialWorkOrderArea',
+            component: resolve => require(['../pages/main/provincialWorkOrder/provincialWorkOrderArea.vue'], resolve),
+            meta: { title: '地市-通用工单' }
+        }
+
+
     ]
 },
 {

+ 0 - 11
vue.config.js

@@ -130,11 +130,7 @@ module.exports = {
                 },
             },
             "/mkWangge": {
-<<<<<<< HEAD
-                target: "http://43.138.50.94:9600",
-=======
                 target: "http://192.168.2.124:9113",
->>>>>>> 994fc041f082ba5e33229f3e58f7c4b6c7b355c4
                 ws: false,
                 changeOrigin: true,
                 pathRewrite: {
@@ -158,17 +154,10 @@ module.exports = {
                 // target: 'http://192.168.1.9:9600/spfm',
                 // target: 'http://127.0.0.1:9600/',
                 // target: 'http://192.168.0.156:9600/',
-<<<<<<< HEAD
-                // target: 'http://192.168.2.170:9600/',
-                // target: 'http://192.168.2.169:9600/',
-                target: "http://192.168.2.124:9600/",
-                // target:'http://43.138.50.94:9600',
-=======
                 // target: 'http://192.168.2.44:9600/',
                 target: 'http://192.168.2.124:9600/',
                 // target: "http://124.223.66.248:9600",
                 // target: "http://43.138.50.94:9600",
->>>>>>> 994fc041f082ba5e33229f3e58f7c4b6c7b355c4
                 changeOrigin: true,
             },
         },