Ver código fonte

宣传上线

shengbingg 2 anos atrás
pai
commit
a0574d4082

+ 179 - 0
src/components/el-formfour.vue

@@ -0,0 +1,179 @@
+<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,  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 === "文件标题") {
+    //       return "color:#0682CD;";
+    //     }
+    //   }
+    // },
+    columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
+      if (column.type == "default") {
+        if (column.type == "default") {
+        // if (column.property === "need_name"||column.property === "needName"||column.property === "doc_title"||column.property === "document_title") {
+        //   return "color:#0682CD;";
+        // }
+        if(columnIndex == 0){
+               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>

+ 311 - 0
src/components/uploadfour.vue

@@ -0,0 +1,311 @@
+<template>
+  <div v-loading="loading">
+    <el-upload
+      class="upload-demo"
+      :drag="fileInfo.type !== 'btn'"
+      multiple
+      :limit="fileInfo.limit"
+      ref="upload"
+      action="string"
+      :on-remove="handleRemove"
+      :on-exceed="handleExceed"
+      :file-list="attList"
+      :auto-upload="true"
+      :show-file-list="fileInfo.type !== 'btn'"
+      :before-upload="deforeUp"
+      :http-request="signUpload"
+      :on-preview="defUp"
+      :disabled="disabled"
+
+    >
+      <div v-if="fileInfo.type !== 'btn'">
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">点击上传</div>
+      </div>
+      <div v-if="fileInfo.type === 'btn'">
+        <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"],
+  props: {
+    fileInfo: {
+      type: Object,
+      default: () => {}
+    },
+    fileList: {
+      type: Array,
+      default: () => []
+    },
+    type: {
+      type: Array,
+      default: () => []
+    },
+    disabled: {
+      type: Boolean,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      fileLists: [],
+      attList: [
+        // {
+        //   attchFileId: "",
+        //   fileCode: "202209271105276441",
+        //   name: "1231233333333333.xlsx",
+        //   id: "202209271105276441",
+        //   opName: "范岩",
+        //   opNo: "fanyan",
+        //   opTime: "2022-09-27 11:05:27",
+        //   type: 'success',
+        // },
+      ],
+      loading: false,
+      num: 0,
+      s: false,
+    };
+  },
+  // props:{
+  //    disabled: {
+  //     type: Boolean,
+  //     default: () => {},
+  //   },
+  // },
+  methods: {
+    signUpload() {},
+    //删除
+    handleRemove(file) {
+      // console.log(file);
+      // console.log(this.attList);
+      for (let i = 0; i < this.attList.length; i++) {
+        if (this.attList[i].name === file.name) {
+          this.attList.splice(i, 1);
+          
+           
+         
+          // this.$emit("clickDownload",this.attList);
+        }
+      }
+    //  console.log(this.attList)
+    this.$emit("uploadBack", this.attList);
+    },
+   
+    //数量限制
+    handleExceed(files, fileList) {
+      this.$message.warning(
+        `当前限制选择 ${this.fileInfo.limit} 个文件,本次选择了 ${
+          files.length
+        } 个文件,共选择了 ${files.length + fileList.length} 个文件`
+      );
+    },
+    defUp(file){
+        this.$emit("clickDownload",this.attList);
+    },
+    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);
+            
+            this.$emit("clickDownload",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({
+              id: res.data.body.id,
+              name: 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.$emit("clickDownload",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 = [];
+    // console.log(this.fileList);
+    if(this.fileList){
+      for (let i = 0; i < this.fileList.length; i++) {
+        this.attList.push({
+            id: this.fileList[i].id,
+            name: 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,
+        })
+    }
+    }
+    
+    // console.log(this.attList);
+  },
+  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,
+          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>

+ 794 - 0
src/components/workflowBasexcwls.vue

@@ -0,0 +1,794 @@
+<template>
+  <div>
+    <div class="flex-handle">
+      <div class="flex-left">
+        <div class="flex-left-header">
+          <div class="flex-path">
+            <div class="flex-left-header-text">
+              选择路径
+
+              <div class="flex-path-list">
+                <div
+                  v-if="manyReassignment"
+                  :class="actives"
+                  @click="clickManyTransfer(1)"
+                >
+                  转派
+                </div>
+                <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)"
+                >
+                  {{ item.properties.name }}
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="flex-commons">
+            <div class="flex-left-header-text">
+              常用意见
+              <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)"
+              >
+                {{ item.dataName }}
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="flex-opinion">
+          <div class="flex-left-header-text">意见内容</div>
+          <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 style="display: flex">
+            <div class="flex-header-text-tree">
+              候选人
+              <deptTree
+                ref="defTree"
+                class="flex-slide"
+                :treeList="treeList"
+                @changeTree="changeTree"
+              />
+            </div>
+            <div class="flex-header-text-tree">
+              已选人员
+              <!-- <div class="">{{ selectUser }}</div> -->
+              <div class="" v-for="(item, index) in backThree" :key="index">
+                {{ item.loginNameStr }}
+              </div>
+            </div>
+          </div>
+        </div>
+        <div v-if="CopyStatus" class="flex-left-header-text flex-right-text">
+          抄送人员
+          <div style="display: flex">
+            <div class="flex-header-text-tree">
+              抄送人
+              <deptTree
+                ref="defTrees"
+                class="flex-slide"
+                :treeList="treeCopyList"
+                @changeTree="changeTreeCopy"
+              />
+            </div>
+            <div class="flex-header-text-tree">
+              已选人员
+              <div class="">{{ copyUser }}</div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="flex-footer-botton">
+      <div class="flex-button">
+        <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"
+    >
+      <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
+          }}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
+        </div>
+        <div class="flex-common">
+          <i class="el-icon-circle-plus-outline" @click="addStatus()"></i>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import deptTree from "./workDeptThree.vue";
+export default {
+  components: {
+    deptTree,
+  },
+  name: "workflow",
+  data() {
+    return {
+      active: "",
+      manyPeopleStatus: false, //多人处理下发任务
+      editStatus: false, //常用意见控制
+      transferStatus: false, //转派按钮控制
+      TransferStatus: false, //是否点击转派状态
+      copyStatus: false, //抄送按钮控制
+      CopyStatus: false, //是否点击抄送状态
+      node: [], //路径列表
+      seleIndex: "1099", //点击路径下标
+      commonlyList: [], //常用意见数组
+      textarea: "未填写意见", //意见内容字段
+      copyUser: "", //抄送人员列表
+      selectUser: "", //已选人员列表
+      treeList: [], // 待选人员列表
+      propsList: [],
+      nodes: [],
+      initialList: [], //第一次进入是加载节点
+      clicknextName: "", //获取的流程节点
+      backThree: [],
+      treeCopyList: [],
+      demand: "",
+      nextDealManList: "",
+      isLastManStatus: false,
+      manyReassignment: false,
+      actives: "",
+    };
+  },
+  props: {
+    //  表格数据和表格部分属性的对象
+    // eslint-disable-next-line vue/require-default-prop
+    list: {
+      type: Object,
+    },
+    requestForm: {
+      type: Object,
+    },
+    adminResourceId: {
+      type: String,
+    },
+  },
+  created() {
+    console.log(this.list);
+    this.getNextPath(this.list.resourceId, 1);
+    this.getMetirialType();
+  },
+  methods: {
+    //多人转派
+    clickManyTransfer() {
+      (this.actives = this.actives != "" ? "" : "active"),
+        (this.seleIndex = "1099");
+      this.getNextPath(this.adminResourceId, 3);
+    },
+    async getLastManList(e) {
+      let _this = this;
+      let obj = {
+        url: _this.$url.formList.getComplateLastMan, //开始工作流接口
+        data: e,
+        // status: "form",
+        headers: {
+          "Content-Type": "application/json",
+        },
+      };
+
+      let res = await this.common.httpPost(obj, success);
+      function success(data) {}
+    },
+    async nextWorks(lists, list) {
+      let listss = {
+        userId: this.nextDealManList, //人员id
+        taskId: this.list.taskId, //表单标识
+        loginstr: JSON.parse(window.sessionStorage.userInfo).loginNoStr,
+        // taskName: this.clicknextName, //流程节点
+        content: this.textarea, //意见内容
+      };
+      if (this.manyReassignment == true) {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.getNewTransferTask + _this.list.taskId, //下一步工作流接口
+          data: listss,
+          status: "form",
+        };
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          _this.$emit("beforeClose", true);
+        }
+      } else {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.nextWork, //下一步工作流接口
+          data: lists,
+          status: "form",
+        };
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          console.log(data);
+          let updateList = {
+            taskId: data.taskid,
+            id: _this.list.id,
+            resourceId: _this.nodes.currentShape[0].resourceId,
+            tableName: _this.requestForm.processDefinitionKey1,
+          };
+          list.taskId = data.taskid;
+          _this.setUpdate(updateList);
+          _this.getLastManList(list);
+        }
+      }
+    },
+    submitWork() {
+      //多人会签处理环节
+      let list = {
+        userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
+        taskId: this.list.taskId, //表单标识
+        // procinstid: this.list.processId,
+        taskName: this.clicknextName, //流程节点
+        userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
+        content: this.textarea, //意见内容
+      };
+      let newlist = {
+        userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
+        taskId: this.list.taskId, //表单标识
+        // procinstid: this.list.processId,
+        taskName: this.clicknextName, //流程节点
+        userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
+        content: this.textarea, //意见内容
+      };
+      if (this.manyPeopleStatus == true) {
+        list.procinstid = this.list.processId;
+        // if (this.backThree.length <= 1) {
+        // this.$message.error("请选择多人");
+        // return;
+        // } else {
+        list.lastmanList = this.nextDealManList;
+        // }
+        if (this.nodes.currentShape) {
+          newlist.resolution = this.nodes.currentShape[0].condition.resolution;
+          newlist.approve = this.nodes.currentShape[0].condition.approve;
+        }
+        if (this.backThree.length > 0) {
+          newlist.nextDealMan = "admin";
+        }
+        this.nextWorks(newlist, list);
+      } else {
+        console.log(456);
+        //生成需求决策编号
+        if (this.clicknextName === "起草人发送") {
+          this.getDemand();
+        }
+        if (!this.list.taskId) {
+          this.$message.error("请先保存表单后处理");
+          return false;
+        }
+        if (this.TransferStatus === true) {
+          if (this.backThree.length > 0) {
+            this.nextWork();
+          } else {
+            this.$message.error("请选择候选人");
+            return false;
+          }
+        } else {
+          if (this.treeCopyList.length) {
+            //抄送
+            list.copyman = this.treeCopyList[0].loginNoStrCopy;
+          }
+          if (this.isLastManStatus == true) {
+            list.lastman = "yes";
+          }
+          if (this.nodes.currentShape) {
+            list.resolution = this.nodes.currentShape[0].condition.resolution;
+            list.approve = this.nodes.currentShape[0].condition.approve;
+          }
+          if (this.clicknextName === "") {
+            this.$message.error("请选择流程节点");
+            return false;
+          }
+          if (this.backThree.length > 0) {
+            if (this.manyPeopleStatus == true) {
+              list.nextDealManList = this.nextDealManList;
+            } else {
+              list.nextDealMan = this.backThree[0].loginNoStr;
+            }
+          } else {
+            if (this.clicknextName === "流程结束"||this.clicknextName === "提交至任务发起人") {
+            } else {
+              this.$message.error("请选择候选人");
+              return false;
+            }
+          }
+          this.nextWork(list);
+        }
+      }
+    },
+    //生成需求决策编号接口
+    getDemand() {
+      this.$http({
+        url: "/market/waf/getBusi",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        this.demand = res.data;
+      });
+    },
+    async nextWork(list) {
+  
+      //e:yes||no,list:传入数组,title:结束标签,res:驳回标签,id:工单更新id
+      let _this = this;
+      let obj = {
+        url: _this.$url.formList.nextWork, //下一步工作流接口
+        data: list,
+        status: "form",
+      };
+      if (_this.TransferStatus === true) {
+        let lists = {
+          userId: _this.backThree[0].loginNoStr,
+          taskId: _this.list.taskId,
+          content: _this.textarea,
+        };
+        obj.url = _this.$url.formList.transferTask + _this.list.taskId;
+        obj.data = lists;
+      }
+      await this.common.httpPost(obj, success);
+      function success(data) {
+     
+        if (data != null) {
+          if (_this.TransferStatus === true) {
+            let list = {
+              taskId: data.taskid,
+              // taskId: _this.list.taskId,
+              id: _this.list.id,
+              tableName: _this.requestForm.processDefinitionKey1,
+            };
+
+            _this.setUpdate(list);
+          } else {
+            let list = {
+              taskId: data.taskid,
+              // taskId:_this.list.taskId,
+              id: _this.list.id,
+              resourceId: _this.nodes.currentShape[0].resourceId,
+              taskName: _this.nodes.nextShapes[0].properties.name,
+              tableName: _this.requestForm.processDefinitionKey1,
+            };
+            if (data.copytaskid) {
+              list.copytaskid = data.copytaskid;
+              list.copyman = _this.treeCopyList[0].loginNoStrCopy;
+            }
+            if (_this.demand) {
+              list.needNo = _this.demand;
+            }
+            _this.setUpdate(list);
+          }
+        } else {
+          let list = {
+            taskName: "结束",
+            id: _this.list.id,
+            tableName: _this.requestForm.processDefinitionKey1,
+          };
+          _this.setUpdate(list);
+        }
+      }
+    },
+    setUpdate(e) {
+      this.$http({
+        url: "/market/waf/updateBase",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: e,
+      }).then((res) => {
+     
+        this.list.resourceId = res.data.body[0].resourceId;
+        this.$emit("updateForm", true);
+      });
+    },
+    //查询路径接口
+    getNextPath(e, status) {
+     
+      let { fresourceId, processDefinitionKey } = this.requestForm;
+      let list = {
+        fresourceId: fresourceId,
+        processId: processDefinitionKey,
+      };
+      e ? (list.resourceId = e) : list;
+      this.$http({
+        url: "/market/waf/queryPath",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: list,
+      }).then((res) => {
+       
+        if (status === 1) {
+          //第一次进入取路径
+          this.initialList = res.data.body;
+          if (res.data.body.nextShapes[0].multi !== null) {
+            if (res.data.body.nextShapes[0].multi.multi === "true") {
+              // this.getqueryMultiTaskId();
+              this.isLastManStatus = true;
+            } else {
+              this.isLastManStatus = false;
+            }
+          }
+          if (res.data.body.nextShapes[0].loop !== null) {
+            if (res.data.body.nextShapes[0].loop.loop === "true") {
+              this.transferStatus = true; //转派按钮生效
+            } else {
+              this.transferStatus = false;
+            }
+          } else {
+            this.transferStatus = false;
+          }
+          if (res.data.body.nextShapes[0].copy !== null) {
+            if (res.data.body.nextShapes[0].copy.copy === "true") {
+              // this.copyStatus = true; //抄送按钮生效
+              this.CopyStatus = true;
+            } else {
+              this.copyStatus = false;
+            }
+          } else {
+            this.copyStatus = false;
+          }
+          res.data.body.currentShape.map((item, index) => {
+            this.getNextPath(item.resourceId, 2);
+          });
+        }
+        if (status === 2) {
+          //  this.getNextPath(res.data.body.nextShapes[0].resourceId, 2);
+          if (res.data.body.nextShapes[0].condition !== null) {
+            this.node = res.data.body;
+          } else {
+          
+            this.getNextPath(res.data.body.nextShapes[0].resourceId, 2);
+          }
+        }
+        if (status === 3) {
+          this.nodes = res.data.body;
+          this.getTreeLists(res.data.body, 1);
+
+          if (res.data.body.nextShapes[0].multi !== null) {
+            if (res.data.body.nextShapes[0].multi.multi === "true") {
+              this.manyPeopleStatus = true; //转派按钮生效
+            } else {
+              this.manyPeopleStatus = false;
+            }
+          } else {
+            this.manyPeopleStatus = false;
+          }
+        }
+      });
+    },
+    //查询候选人接口
+    getTreeLists(e, status) {
+      let createdId = "createId";
+      let id =
+        e.nextShapes[0].properties.documentation === createdId
+          ? this.list.createId
+          : e.nextShapes[0].properties.documentation;
+     
+      this.$http({
+        url: "/market/api/user/info/queryNodePers?params=" + id,
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: "",
+      }).then((res) => {
+      
+        if (status === 2) {
+          this.treeCopyList = res.data; //抄送
+          //  this.$refs.defTrees.treeList = res.data;
+        } else {
+          this.treeList = res.data; //抄送
+          // this.$refs.defTree.treeList = res.data;
+          // console.log(this.treeList);
+        }
+      });
+    },
+    //转派按钮方法
+    clickTransfer(e) {
+      if (e == 1) {
+        this.TransferStatus = true;
+      } else if (e == 2) {
+        this.CopyStatus = true;
+      }
+      this.getTreeLists(this.initialList, e);
+    },
+    //点击节点获取下一步的处理人字段
+    clickGetTree(e, index) {
+      this.$refs.defTree.userList = [];
+      this.backThree = [];
+      this.CopyStatus = false;
+      this.TransferStatus = false;
+      //   this.clickTaskName = e.properties.name;
+      this.clicknextName = e.properties.name;
+      this.seleIndex = index;
+      this.getNextPath(e.resourceId, 3); //1 为点击后获取线
+    },
+    //点击常用意见方法
+    clickCommonly(e) {
+      this.textarea = e.currentTarget.innerHTML;
+    },
+    //点击修改
+    clickEdit() {
+      this.editStatus = true;
+    },
+    //选择树的回调
+    changeTree(e) {
+      if (this.manyPeopleStatus == true) {
+        this.backThree = e;
+
+        let arr = [];
+        this.backThree.map((item) => {
+          arr.push(item.loginNoStr);
+        });
+        this.nextDealManList = arr.toString();
+      } else {
+        if (e.length > 1) {
+          this.$message.error("只能选择一个人");
+          return;
+        } else {
+          this.backThree = e;
+          if (this.CopyStatus === true) {
+            this.getTreeLists(e[0].loginNoStr, 2);
+          }
+
+          if (e[0]) {
+            this.selectUser = e[0].loginNameStr;
+          } else {
+            this.selectUser = "暂无选择";
+          }
+        }
+      }
+    },
+    //获取字典表常用意见
+    getMetirialType(e) {
+      this.$http({
+        url: "/market/cfgDataDict/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          dictCodePks: "approval",
+        },
+      }).then((res) => {
+     
+        this.commonlyList = res.data;
+      });
+    },
+    //添加字典表常用意见
+    geaddctType(e) {
+      this.$http({
+        url: "/market/cfgDataDict/add",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: e,
+      }).then((res) => {
+        this.getMetirialType();
+      });
+    },
+    //关闭修改
+    editCloses() {
+      this.editStatus = false;
+    },
+    //常用意见添加
+    addStatus() {
+      let newData = Date.parse(new Date());
+      this.$prompt("请输入常用意见", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+      })
+        .then(({ value }) => {
+          let list = {
+            dictCode: "approval",
+            dataCode: newData,
+            dataName: value,
+            dictName: "审批意见",
+          };
+          this.geaddctType(list);
+          this.$message({
+            type: "success",
+            message: "常用意见添加成功",
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "取消输入",
+          });
+        });
+    },
+    //常用意见删除
+    deleStatus(e) {
+      this.$confirm("此操作将删除此常用意见, 是否继续?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          let list = {
+            dataCode: e.dataCode,
+            dictCode: "approval",
+          };
+          this.geDelectType(list);
+          this.$message({
+            type: "success",
+            message: "删除成功!",
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
+    //删除字典表常用意见
+    geDelectType(e) {
+      this.$http({
+        url: "/market/cfgDataDicts/del",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: e,
+      }).then((res) => {
+        this.getMetirialType();
+      });
+    },
+  },
+};
+</script>
+
+<style lang='scss' scoped>
+.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;
+      width: 68%;
+    }
+  }
+}
+
+.flex-common {
+  padding: 10px 5%;
+  font-size: 18px;
+}
+
+.flex-left-header-text {
+  height: 40px;
+  line-height: 40px;
+  color: black;
+  padding-left: 10px;
+  background-color: #cde4f6;
+  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;
+  }
+}
+</style>

+ 62 - 0
src/config/dev.js

@@ -0,0 +1,62 @@
+'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://192.168.2.188: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',//风险防控
+    materialApplicationfresourceId:'8f0e9c49-b348-11ed-be6b-00505687dcd3',//宣传物料省
+    materialApplicationdsfresourceId:'a7f127b7-b348-11ed-be6b-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',//风险防控
+    materialApplicationfresourceId:'b58e5e25-ce13-11ed-afb6-e00084564cce',//宣传物料省
+    materialApplicationdsfresourceId:'cd072057-ce13-11ed-afb6-e00084564cce',//宣传物料地市
+}
+export const getConfig  = () =>{
+    switch(process.env.VUE_APP_ENV){
+        case "development":
+            window.sessionStorage.setItem('getConfig',JSON.stringify(dev) )
+            return dev;
+        case 'test':
+            window.sessionStorage.setItem('getConfig',JSON.stringify(test))
+            return test;
+        case 'production':
+            window.sessionStorage.setItem('getConfig',JSON.stringify(prod))
+            return prod
+        case 'devs':
+            window.sessionStorage.setItem('getConfig',JSON.stringify(devs))
+            return devs; 
+    }
+}
+export default getConfig;
+
+// 根据环境引入不同配置 process.env.ENV_CONFIG  ex:dev.conf.js
+
+// module.exports = config

+ 189 - 171
src/pages/main/advertising/index.vue

@@ -1,199 +1,217 @@
 <template>
-    <fullscreen :fullscreen.sync="fullscreen" class="container">
-        <div class="container-box">
-			
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+
 			<!-- <h2>广告宣传费台账</h2>
-			<div class="adv-type">
-			    <div @click="jumpinfop('/publicityAccount',1,'宣传费台账')" v-if="lockFlag == 'updata'">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>创建模板</span>
-			    </div>
-				<div @click="jumpinfop('/publicityAccount',2,'宣传费台账')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>录入/更新</span>
-			    </div>
-				<div @click="jumpinfop('/publicityAccount',3,'宣传费台账')" v-if="lockFlag == 'updata'">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>查看/下载</span>
-			    </div>
-			</div> -->
+				<div class="adv-type">
+				    <div @click="jumpinfop('/publicityAccount',1,'宣传费台账')" v-if="lockFlag == 'updata'">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>创建模板</span>
+				    </div>
+					<div @click="jumpinfop('/publicityAccount',2,'宣传费台账')">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>录入/更新</span>
+				    </div>
+					<div @click="jumpinfop('/publicityAccount',3,'宣传费台账')" v-if="lockFlag == 'updata'">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>查看/下载</span>
+				    </div>
+				</div> -->
 			<h2 class="font-ui" style="margin-top: 20px;">宣传物料管理</h2>
 			<div class="adv-type">
-			    <div class="wfour" @click="jumpinfo('/materialApplication','宣传物料申请及审批')">
+				 <div class="wfour" @click="jumpinfo('/materialApplication','宣传物料申请及审批-省代地市下单')">
 			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>宣传物料申请及审批</span>
+			        <span>宣传物料申请及审批-省代地市下单</span>
 			    </div>
-				<!-- <div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
+				 <div class="wfour" @click="jumpinfo('/materialApplicationds','宣传物料申请及审批-地市下单')">
 			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>市级物料申请</span>
+			        <span>宣传物料申请及审批-地市下单</span>
 			    </div>
-				<div class="wfour" @click="jumpinfo('/materialApplicationExa','物料申请审核')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>省级物料审批</span>
-				</div>
-				<div class="wfour" @click="jumpinfo('/materialApplicationExac','物料申请审核')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>市级物料审批</span>
-				</div> -->
+				<!-- <div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>市级物料申请</span>
+				    </div>
+					<div class="wfour" @click="jumpinfo('/materialApplicationExa','物料申请审核')">
+					    <span><i class="el-icon-folder-opened"></i></span>
+					    <span>省级物料审批</span>
+					</div>
+					<div class="wfour" @click="jumpinfo('/materialApplicationExac','物料申请审核')">
+					    <span><i class="el-icon-folder-opened"></i></span>
+					    <span>市级物料审批</span>
+					</div> -->
 			</div>
 			<h2 class="font-ui" style="margin-top: 20px;">基础数据管理</h2>
 			<div class="adv-type">
-			    <!-- <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>一采物料类型建档</span>
-			    </div> -->
-				<div class="wfive" @click="jumpinfo('/materiel','二采物料类型建档')" v-if="province">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>二采物料类型建档</span>
-			    </div>
-				<div class="wfive" @click="jumpinfo('/contractCap','预算及合同上限')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>预算及合同上限</span>
-			    </div>
-				<div class="wfive" @click="jumpinfo('/supplier','供应商管理')" v-if="province">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>供应商管理</span>
+				<!-- <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>一采物料类型建档</span>
+				    </div> -->
+				<div class="wfive" @click="jumpinfo('/materiel', '宣传物料及印刷品类型建档')" v-if="province">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>宣传物料及印刷品类型建档</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/contractCap', '预算及合同上限')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>预算及合同上限</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/supplier', '供应商管理')" v-if="province">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>供应商管理</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/businessHall', '物料基础信息维护')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>物料基础信息维护</span>
 				</div>
-				<div class="wfive" @click="jumpinfo('/businessHall','物料基础信息维护')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>物料基础信息维护</span>
+				<div class="wfive" @click="jumpinfo('/materialApplistatic', '物料统计')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>物料统计</span>
 				</div>
-				<div class="wfive" @click="jumpinfo('/materialApplistatic','物料统计')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>物料统计</span>
+				<div class="wfive" @click="jumpinfo('/materialAppMessage', '宣传物料制作费用明细')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>宣传物料制作费用明细</span>
 				</div>
+				<div class="wfive" @click="jumpinfo('/materialAppNum', '验收打分单')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>验收打分单</span>
+				</div>
+
 			</div>
-			
-      </div>
 
-    </fullscreen>
+		</div>
 
+</fullscreen>
 </template>
 <script>
-    import mySearch from "../../../components/search.vue";
-    import myMessage from "../../../components/myMessage.vue"
-    import toolList from '../../../components/toolList'
-	import myUpload from '../../../components/upload'
+import mySearch from "../../../components/search.vue";
+import myMessage from "../../../components/myMessage.vue"
+import toolList from '../../../components/toolList'
+import myUpload from '../../../components/upload'
+
+export default {
+	components: {
+		mySearch,
+		myMessage,
+		toolList,
+		myUpload
+	},
+	data() {
 
-    export default {
-        components: {
-            mySearch,
-            myMessage,
-            toolList,
-			myUpload
-        },
-        data() {
-          
-            return {
-                fullscreen: false,
-				lockFlag:'see',
-				province:true
-            }
-        },
-        methods: {
-            jumpinfop(p,v,n){
-				this.$router.push({
-				    path: p,
-				    query:{
-				        type:v
-				    }
-				});
-				this.setabList(n, p+"?type="+v);
-			},
-			jumpinfo(p,n){
-				this.$router.push({
-				    path: p,
-				});
-				this.setabList(n, p);
-			},
-			setabList(n, p) {
-			    let params = {
-			        children: "",
-			        name: n,
-			        rountPath: p,
-			        target: "_self",
-			    };
-			    for (let i = 0; i < this.$store.state.tabList.length; i++) {
-			        if (this.$store.state.tabList[i].name === params.name) {
-			            this.$store.state.tabList[i] = params;
-			        }
-			    }
-			    let set = new Set([...this.$store.state.tabList, params]);
-			    set.add(params);
-			    this.$store.commit("setDefaultActive", params.rountPath);
-			    this.$store.commit("setTabList", Array.from(set));
-			},
-            getUser() {
-                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
-				let Menus = JSON.parse(window.sessionStorage.childrenMenus);
-				for (let i = 0; i < Menus.length; i++) {
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicityAccount'){
-						this.lockFlag = 'add';//省级
-					}
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicity'){
-						this.lockFlag = 'updata';//管理员
-						i = Menus.length;
-					}
+		return {
+			fullscreen: false,
+			lockFlag: 'see',
+			province: true
+		}
+	},
+	methods: {
+		jumpinfop(p, v, n) {
+			this.$router.push({
+				path: p,
+				query: {
+					type: v
+				}
+			});
+			this.setabList(n, p + "?type=" + v);
+		},
+		jumpinfo(p, n) {
+			this.$router.push({
+				path: p,
+			});
+			this.setabList(n, p);
+		},
+		setabList(n, p) {
+			let params = {
+				children: "",
+				name: n,
+				rountPath: p,
+				target: "_self",
+			};
+			for (let i = 0; i < this.$store.state.tabList.length; i++) {
+				if (this.$store.state.tabList[i].name === params.name) {
+					this.$store.state.tabList[i] = params;
 				}
-				for (let i = 0; i < Menus.length; i++) {
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/province'){
-						this.province = true;//省公司
-					}
+			}
+			let set = new Set([...this.$store.state.tabList, params]);
+			set.add(params);
+			this.$store.commit("setDefaultActive", params.rountPath);
+			this.$store.commit("setTabList", Array.from(set));
+		},
+		getUser() {
+			this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+			let Menus = JSON.parse(window.sessionStorage.childrenMenus);
+			for (let i = 0; i < Menus.length; i++) {
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicityAccount') {
+					this.lockFlag = 'add';//省级
 				}
-            }
-        },
-        mounted() {
-            this.getUser();
-        },
-        created() {
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicity') {
+					this.lockFlag = 'updata';//管理员
+					i = Menus.length;
+				}
+			}
+			for (let i = 0; i < Menus.length; i++) {
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/province') {
+					this.province = true;//省公司
+				}
+			}
+		}
+	},
+	mounted() {
+		this.getUser();
+	},
+	created() {
 
-        }
-    }
+	}
+}
 </script>
 <style scoped lang="scss">
-	.container-box{
-		height: calc(100vh - 200px);
-		overflow-y: scroll;
-		padding-bottom: 20px;
+.container-box {
+	height: calc(100vh - 200px);
+	overflow-y: scroll;
+	padding-bottom: 20px;
+}
+
+.adv-type {
+	margin-top: 20px;
+	display: flex;
+	// justify-content: space-between;
+	flex-wrap: wrap;
+	// border: 1px solid #ddd;
+	border-radius: 5px;
+	padding: 20px;
+	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+	div {
+		width: 33%;
+		text-align: center;
+		height: 80px;
+		overflow: hidden;
+		min-width: 100px;
+		cursor: pointer;
+		padding-top: 10px;
+		margin: 10px 0;
 	}
-	.adv-type{
-	    margin-top: 20px;
-	    display: flex;
-	    justify-content: space-between;
-	    flex-wrap: wrap;
-	    // border: 1px solid #ddd;
-	    border-radius: 5px;
-	    padding: 20px;
-	    box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
-	    div{
-	        width: 33%;
-	        text-align: center;
-	        height: 80px;
-	        overflow: hidden;
-	        min-width: 100px;
-	        cursor: pointer;
-	        padding-top: 10px;
-	        margin: 10px 0;
-	    }
-	    div:hover{
-	        background: #CFE8FC;
-	        border-radius: 5px;
-	    }
-	    span{
-	        width: 100%;
-	        display: inline-block;
-	        height: 40px;
-	        // line-height: 40px;
-	        i{
-	            color: #0074D9;
-	            font-size: 36px;
-	        }
-	    }
-		.wfour{
-			width: 25%;
-		}
-		.wfive{
-			width: 20%;
+
+	div:hover {
+		background: #CFE8FC;
+		border-radius: 5px;
+	}
+
+	span {
+		width: 100%;
+		display: inline-block;
+		height: 40px;
+
+		// line-height: 40px;
+		i {
+			color: #0074D9;
+			font-size: 36px;
 		}
 	}
-</style>
+
+	.wfour {
+		width: 25%;
+	}
+
+	.wfive {
+		width: 20%;
+	}
+}</style>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1706 - 176
src/pages/main/advertising/materialApplication.vue


Diferenças do arquivo suprimidas por serem muito extensas
+ 523 - 440
src/pages/main/advertising/materialApplicationadd.vue


Diferenças do arquivo suprimidas por serem muito extensas
+ 2207 - 0
src/pages/main/advertising/materialApplicationds.vue


+ 227 - 118
src/pages/main/advertising/materiel.vue

@@ -7,16 +7,21 @@
                     :searchList="searchList"
                     @searchInfo="searchInfo"
                 ></mySearch>
-                <el-button class="btn-check" size="medium" type="primary" @click="exportTempletelist">下载导入模板
+
+                <el-button 
+                class="btn-check" 
+                size="medium" type="primary" 
+                @click="exportTempletelist" v-if="userInfo.duty <= 9" >下载导入模板
                 </el-button>
                 <el-button
                     class="btn-check"
                     size="medium"
                     type="primary"
-                    @click="dialogCheck(3)" v-if="userInfo.loginNo=='jiangshuai'"
+                    @click="dialogCheck(3)" v-if="userInfo.loginNoStr == 'jiangshuai'"
                     >添加
                 </el-button>
-                <myUpload style="display:inline-block;" :fileInfo="fileInfot"
+                
+                <myUpload style="display:inline-block;" :fileInfo="fileInfot" v-if="userInfo.loginNoStr == 'jiangshuai'"
                           :fileList="fileInfot.fileList" @uploadBack='uploadBack'></myUpload>
             </div>
             <div class="tabbox">
@@ -35,13 +40,6 @@
                     </el-table-column>
                     <el-table-column prop="proviceFlagName" label="下单模式">
                     </el-table-column>
-                    <!-- <el-table-column prop="metirialType" label="细分类型">
-					</el-table-column> -->
-
-<!--                    <el-table-column prop="metirialType" label="类别">-->
-<!--                    </el-table-column>-->
-<!--                    <el-table-column prop="isAsic" label="基础数据">-->
-<!--                    </el-table-column>-->
                     <el-table-column
                         prop="metirialCode"
                         label="物料编码"
@@ -50,16 +48,7 @@
                     </el-table-column>
                     <el-table-column prop="metirialName" label="物料名称">
                     </el-table-column>
-<!--                    <el-table-column prop="supplierCode" label="供应商">-->
-<!--                    </el-table-column>-->
-<!--                    <el-table-column prop="size" label="规格尺寸">-->
-<!--                    </el-table-column>-->
-<!--                    <el-table-column prop="coefficient" label="勾选后系数">-->
-<!--                    </el-table-column>-->
-                    <!--<el-table-column prop="quality" label="材质" width="200" show-overflow-tooltip>
-					</el-table-column> -->
-                    <!-- <el-table-column prop="size" label="规格" show-overflow-tooltip>
-					</el-table-column> -->
+
                     <el-table-column prop="unit" label="物料单位">
                     </el-table-column>
                     <el-table-column prop="price" label="不含税单价(元)">
@@ -78,13 +67,15 @@
                             <el-button
                                 size="mini"
                                 type="primary"
-                                @click="dialogCheck(2, scope.row)" v-if="userInfo.loginNo=='jiangshuai'"
+                                @click="dialogCheck(2, scope.row)" v-if="userInfo.loginNoStr == 'jiangshuai'"
                                 >修改</el-button
                             >
+                            
+                             <!-- v-if="userInfo.loginNo=='jiangshuai'" -->
                             <el-button
                                 size="mini"
                                 type="danger"
-                                @click="delLine(scope.row)" v-if="userInfo.loginNo=='jiangshuai'"
+                                @click="delLine(scope.row)" v-if="userInfo.loginNoStr == 'jiangshuai'"
                                 >删除</el-button
                             >
                         </template>
@@ -118,9 +109,10 @@
                 >
                     <div class="info-line">
                         <el-form-item prop="sceneName">
+                            <!-- :disabled="disableStatus" -->
                             <span>使用场景</span>
                             <el-select
-                                :disabled="disableStatus"
+                                
                                 :popper-append-to-body="false"
                                 multiple
                                 v-model="infolist.sceneName"
@@ -136,19 +128,20 @@
                                 </el-option>
                             </el-select>
                         </el-form-item>
-                        <el-form-item prop="proviceFlag">
+                         <!-- :disabled="disableStatus" -->
+                        <el-form-item prop="proviceFlagName">
                             <span>下单模式</span>
                             <el-select
-                                :disabled="disableStatus"
+                               
                                 :popper-append-to-body="false"
-                                v-model="infolist.proviceFlag"
+                                v-model="infolist.proviceFlagName"
                                 placeholder="下单模式"
                             >
                                 <el-option
                                     v-for="item in proviceopt"
                                     :key="item.id"
                                     :label="item.name"
-                                    :value="item.id"
+                                    :value="item.name"
                                 >
                                 </el-option>
                             </el-select>
@@ -193,13 +186,13 @@
 							<el-input v-model="infolist.metirialType" placeholder="细分类型" :disabled="disableStatus">
 							</el-input>
 						</el-form-item> -->
-
+                        <!-- :disabled="metirialCodeDisableStatus" -->
                         <el-form-item prop="metirialCode">
                             <span>物料编码</span>
                             <el-input
                                 v-model="infolist.metirialCode"
                                 placeholder="物料编码"
-                                :disabled="metirialCodeDisableStatus"
+                                
                             >
                             </el-input>
                         </el-form-item>
@@ -211,10 +204,11 @@
 									:value="item.dataName">
 								</el-option>
 							</el-select> -->
+                            <!-- :disabled="disableStatus" -->
                             <el-input
                                 v-model="infolist.metirialName"
                                 placeholder="物料名称"
-                                :disabled="disableStatus"
+                                
                             >
                             </el-input>
                         </el-form-item>
@@ -261,11 +255,12 @@
 <!--                                </el-option>-->
 <!--                            </el-select>-->
 <!--                        </el-form-item>-->
+<!-- :disabled="disableStatus" -->
                         <el-form-item prop="unit">
                             <span>物料单位</span>
                             <!-- <el-input v-model="infolist.unit" placeholder="单位" :disabled="disableStatus"></el-input> -->
                             <el-select
-                                :disabled="disableStatus"
+                                
                                 :popper-append-to-body="false"
                                 v-model="infolist.unit"
                                 placeholder="物料单位"
@@ -279,13 +274,16 @@
                                 </el-option>
                             </el-select>
                         </el-form-item>
+                        <!-- :disabled="disableStatus" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" -->
                         <el-form-item prop="price">
                             <span>不含税单价(元)</span>
                             <el-input
+                                 
+                                oninput="value = value.replace(/^(-)(\d+).(\d\d).$/,’$1$2.$3’)"
                                 type="number"
                                 v-model="infolist.price"
                                 placeholder="不含税单价(元)"
-                                :disabled="disableStatus"
+                                
                             ></el-input>
                         </el-form-item>
                         <!-- <el-form-item>
@@ -305,11 +303,17 @@
                 </el-form>
 
                 <div slot="footer" class="dialog-footer myfooter">
-                    <el-button
+                    <!-- <el-button
                         type="primary"
                         @click="dialogCli(2)"
                         v-if="titname !== '查看'"
                         >确 定</el-button
+                    > -->
+                    <el-button
+                        type="primary"
+                        @click="xintianjia()"
+                        v-if="titname !== '查看'"
+                        >确 定</el-button
                     >
                     <el-button @click="dialogCli(1)" v-if="titname === '查看'"
                         >确 定</el-button
@@ -341,11 +345,30 @@ export default {
         myUpload
     },
     data() {
-        const sceneName = (rule, value, callback) => {
-            if (!this.infolist.sceneName) {
-                callback(new Error("不能为空"));
+        // const sceneName = (rule, value, callback) => {
+        //     if (!this.infolist.sceneName) {
+                
+        //             callback(new Error("使用场景不能为空"));
+                
+                
+        //     } else {
+        //         callback();
+        //     }
+        // };
+         let sceneName = (rule, value, callback) => {
+            if (!this.isFirstLoad) {
+                // console.log(value);
+                if(value == ''|| value == undefined){
+                    callback(new Error("使用场景不能为空"));
+                }else{
+                    callback();
+                }
+                    
+                
+                
             } else {
-                callback();
+                this.isFirstLoad = false;
+                
             }
         };
         const metirialName = (rule, value, callback) => {
@@ -422,10 +445,12 @@ export default {
 
         const price = (rule, value, callback) => {
             if (!this.infolist.price) {
-                callback(new Error("不能为空"));
+                callback(new Error("单价不能为空"));
             } else if (parseFloat(this.infolist.price) > 999999.99) {
                 callback(new Error("数量过大"));
-            } else {
+            } else if (parseFloat(this.infolist.price) <= 0){
+                callback(new Error("请输入正数"));
+            }else {
                 callback();
             }
         };
@@ -437,101 +462,109 @@ export default {
             }
         };
         return {
+            isFirstLoad : true,
             rules: {
-                sceneName: [
-                    {
-                        required: true,
-                        trigger: "change",
-                        validator: sceneName
-                    }
-                ],
+             
                 metirialName: [
                     {
                         required: true,
-                        trigger: "change",
-                        validator: metirialName
-                    }
-                ],
-                metirialType: [
-                    {
-                        required: true,
                         trigger: "blur",
-                        validator: metirialType
+                        message: "物料名称不能为空"
                     }
                 ],
-                isAsic: [
+                 sceneName: [
                     {
                         required: true,
-                        trigger: "blur",
-                        validator: isAsic
+                        trigger: "change",
+                        type: 'array',
+                        validator: sceneName
+                        // message: "使用场景不能为空"
                     }
                 ],
+                //  sceneName: [
+                //     {
+                //         required: true,
+                //         trigger: "change",
+                //         validator: function (rule, value, callback) {
+                //         if (value.length === 0) {
+                //             callback(new Error('请选择高风险问题1'))
+                //         } else {
+                //             callback()
+                //         }
+                //         },
+                //         // validator: sceneName
+                //         // message: "使用场景不能为空"
+                //     }
+                // ],
+                
+               
 
                 metirialCode: [
                     {
                         required: true,
                         trigger: "blur",
-                        validator: metirialCode
-                    }
-                ],
-                proviceFlag: [
-                    {
-                        required: true,
-                        trigger: "change",
-                        validator: proviceFlag
+                        message: "物料编码不能为空"
                     }
                 ],
                 proviceFlagName: [
                     {
                         required: true,
                         trigger: "change",
-                        validator: proviceFlagName
+                        message: "下单模式不能为空"
                     }
                 ],
+                // proviceFlagName: [
+                //     {
+                //         required: true,
+                //         trigger: "change",
+                //         validator: proviceFlagName
+                //     }
+                // ],
 
-                supplierCode: [
-                    {
-                        required: true,
-                        trigger: "change",
-                        validator: supplierCode
-                    }
-                ],
-                size: [
-                    {
-                        required: true,
-                        trigger: "blur",
-                        validator: size
-                    }
-                ],
-                coefficient: [
-                    {
-                        required: true,
-                        trigger: "blur",
-                        validator: coefficient
-                    }
-                ],
+                // supplierCode: [
+                //     {
+                //         required: true,
+                //         trigger: "change",
+                //         validator: supplierCode
+                //     }
+                // ],
+                // size: [
+                //     {
+                //         required: true,
+                //         trigger: "blur",
+                //         validator: size
+                //     }
+                // ],
+                // coefficient: [
+                //     {
+                //         required: true,
+                //         trigger: "blur",
+                //         validator: coefficient
+                //     }
+                // ],
 
                 unit: [
                     {
                         required: true,
-                        trigger: "blur",
-                        validator: unit
+                        trigger: "change",
+                        message: "物料单位不能为空"
                     }
                 ],
-                price: [
+                // price: [
+                //     {
+                //         required: true,
+                //         trigger: "blur",
+                //         message: "物料单价不能为空"
+                //     }
+                // ],
+                 price: [
                     {
                         required: true,
                         trigger: "change",
                         validator: price
                     }
                 ],
-                quality: [
-                    {
-                        required: true,
-                        trigger: "change",
-                        validator: quality
-                    }
-                ]
+           
             },
             searchList: [
                 {
@@ -607,15 +640,17 @@ export default {
                 fileList: [],
                 woNo: "",
             },
-            tooltit: "二采物料类型建档",
+            tooltit: "宣传物料及印刷品类型建档",
             fullscreen: false,
             total: 0,
             pageSize: 1,
             tableData: [],
             dialogStatus: false,
-            disableStatus: false,
+            disableStatus: false,//是否禁用弹窗
             titname: "",
-            infolist: {},
+            infolist: {
+                'infolist.sceneName':[]
+            },
             userInfo: {},
             params: {},
             centerDialogVisible: false,
@@ -637,7 +672,7 @@ export default {
                     id: "2",
                     name: "省+地市"
                 },{
-                    id: "",
+                    id: "3",
                     name: "省+市"
                 }
             ],
@@ -728,7 +763,7 @@ export default {
             suppOpt: [],
             usePlanceArr: [],
             metirialTypeopt: [],
-            metirialCodeDisableStatus: false,
+            metirialCodeDisableStatus: false,//物料编码是否禁用
             // scene:[]
         };
     },
@@ -743,7 +778,7 @@ export default {
         },
         exportTempletelist() {
             let data = this.params;
-            console.log(data);
+            // console.log(data);
             // return
             this.$http({
                 url: "/market/cadvSecbuyMetirial/excelExportTemplete",
@@ -814,7 +849,14 @@ export default {
         },
         uploadBack(v) {
             let that = this;
-            console.log(v);
+            // console.log(v);
+            // console.log(v.data.desc);
+            // if(v.data.desc != "导入成功"){
+            //     let timer = setTimeout(() => {
+            //        this.$message.error("物料编码已存在,请更改物料编码"); 
+            //     },800)
+                
+            // }
             if(v.data.result==0){
                 that.getList({}, 1);
                 that.getUser();
@@ -886,6 +928,8 @@ export default {
         //申请
         dialogCheck(v, n) {
             this.dialogStatus = true;
+            this.infolist.sceneName = [],
+            this.isFirstLoad = true;
             this.infolist = Object.assign({}, n);
             if (v === 1) {
                 this.titname = "查看";
@@ -906,6 +950,68 @@ export default {
             this.infolist.opNo = this.userInfo.loginNo;
             this.infolist.opName = this.userInfo.loginName;
         },
+        
+        // 添加1
+         xintianjia(e) {
+            this.$refs.infolist.validate((valid) => {
+         
+          if (valid) {
+            this.infolist.price = parseFloat(this.infolist.price).toFixed(2);
+            let scene = "";
+                    this.infolist.sceneName.forEach((item, index) => {
+                        scene += item;
+                        if (index != this.infolist.sceneName.length - 1) {
+                            scene += "/";
+                        }
+            });
+            this.infolist.sceneName = scene;
+            this.$http({
+                url: "/market/cadvSecbuyMetirial/add",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    
+                },
+               data: this.infolist,
+            }).then((res) => {
+        
+                // if(res.data.desc == "添加成功"){
+                //     this.infolist = {};
+                //      this.$message.success("成功");
+                //      this.dialogStatus = false;
+                //      this.getList({}, this.pageSize);
+                // }
+                if (res.data.result === 1) {
+                            this.infolist.sceneName = this.infolist.sceneName.split(
+                                "/"
+                            );
+                            this.$message({
+                                message: res.data.desc,
+                                type: "error"
+                            });
+                        } else if (res.data.result === -1) {
+                            this.infolist.sceneName = this.infolist.sceneName.split(
+                                "/"
+                            );
+                            this.$message({
+                                message: res.data.desc,
+                                type: "fail"
+                            });
+                        } else {
+                            this.$message({
+                                message: "成功",
+                                type: "success"
+                            });
+                            this.infolist = {};
+                            this.dialogStatus = false;
+                            this.getList({}, this.pageSize);
+                        }
+            });
+        
+         
+        }
+        })
+        },
         //添加
         dialogCli(v) {
             if (v === 1) {
@@ -1060,21 +1166,24 @@ export default {
         this.getList({}, 1);
         this.getUser();
 
-        this.$http({
-            url: "/sysmgr/cfgDataDicts/queryMap",
-            method: "post",
-            headers: {
-                "Content-Type": "application/json"
-            },
-            data: {
-                dictCodePks: "metirialType"
-            }
-        }).then(res => {
-            this.metirialTypeopt = res.data.body.metirialType;
-            // this.stypeList = res.data.body.materType;
-        });
+        // this.$http({
+        //     url: "/sysmgr/cfgDataDicts/queryMap",
+        //     method: "post",
+        //     headers: {
+        //         "Content-Type": "application/json"
+        //     },
+        //     data: {
+        //         dictCodePks: "metirialType"
+        //     }
+        // }).then(res => {
+        //     this.metirialTypeopt = res.data.body.metirialType;
+        //     // this.stypeList = res.data.body.materType;
+        // });
     },
-    created() {}
+    created() {
+        // if (this.multiples) this.infolist.sceneName = []
+        this.$set(this.infolist, 'this.infolist.sceneName', [])
+    }
 };
 </script>
 <style scoped lang="scss">

+ 146 - 7
src/router/index.js

@@ -208,12 +208,39 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/organizaStructure/roleManage.vue'], resolve)
         },
         {
+            meta: { name:  '收补预存款', keepAlive: false },
+            path: '/closeFill',
+            name: 'closeFill',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/closeFill/advanceDeposit.vue'], resolve)
+        },
+        {
+            meta: { name:  '工号配置', keepAlive: false },
+            path: '/workingCon',
+            name: 'workingCon',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/workingCon/configUration.vue'], resolve)
+        },
+        {
             meta: { name: '组织架构管理', keepAlive: false },
             path: '/organization',
             name: 'organization',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/organizaStructure/organization.vue'], resolve)
         },
         {
+            meta: { name: '验收打分单', keepAlive: false },
+            path: '/materialAppNum',
+            name: 'materialAppNum',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialAppNum.vue'], resolve)
+        },
+        {
+            meta: { name: '宣传物料制作费用明细', keepAlive: false },
+            path: '/materialAppMessage',
+            name: 'materialAppMessage',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialAppMessage.vue'], resolve)
+        },
+
+        {
             meta: { name: '人员信息', keepAlive: false },
             path: '/personinfo',
             name: 'personinfo',
@@ -600,6 +627,12 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialApplication.vue'], resolve)
         },
         {
+            meta: { name: '宣传物料管理地市', keepAlive: false },
+            path: '/materialApplicationds',
+            name: 'materialApplicationds',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialApplicationds.vue'], resolve)
+        },
+        {
             meta: { name: '宣传物料管理', keepAlive: false },//地市
             path: '/materialApplicationc',
             name: 'materialApplicationc',
@@ -2108,13 +2141,22 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcel/index'], resolve)
         },
         {
-            
             meta: {
-                name: '协同编辑',
+                name: '在线文档(市场)',
+                keepAlive: false
+            },
+            path: '/onlineShareExcelMarket',
+            name: 'onlineShareExcelMarket',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcelMarket/index'], resolve)
+        },
+        {
+
+            meta: {
+                name: '在线文档',
                 keepAlive: false
             },
-            path: '/editOnline',
-            name: 'editOnline',
+            path: '/onlineShareExcel',
+            name: 'onlineShareExcel',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcel/index'], resolve)
         },
         {
@@ -2125,6 +2167,24 @@ const routes = [{
             path: '/onlineShareExcelMarket',
             name: 'onlineShareExcelMarket',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcelMarket/index'], resolve)
+        },{
+
+            meta: {
+                name: '在线文档协同',
+                keepAlive: false
+            },
+            path: '/onlineShareExcels',
+            name: 'onlineShareExcel',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcels/index'], resolve)
+        },
+        {
+            meta: {
+                name: '在线文档(市场)协同',
+                keepAlive: false
+            },
+            path: '/onlineShareExcelMarkets',
+            name: 'onlineShareExcelMarket',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcelMarkets/index'], resolve)
         },
         {
             meta: {
@@ -2160,9 +2220,23 @@ 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',
@@ -2175,6 +2249,71 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/leader/risk/riskManagement.vue'], resolve)
         },
+        {
+            meta: { name: '资费管理', keepAlive: false },
+            path: '/postage',
+            name: 'postage',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/postage/index.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: '地市-通用工单' }
+        },
+        {
+            meta: { name: '备份数据恢复申请流程', keepAlive: false },
+            path: '/bfsjList',
+            name: 'bfsjList',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/bfsj/bfsjList.vue'], resolve)
+        }
+
+
     ]
 },
 {