فهرست منبع

修复站点中心设置登录方式

zhangqiOMG 2 سال پیش
والد
کامیت
facfbf700b

+ 259 - 0
public/index copy.html

@@ -0,0 +1,259 @@
+
+    <!DOCTYPE html>
+    <html>
+    
+    <head>
+      <meta charset="utf-8">
+      <meta name="viewport" content="width=device-width,initial-scale=1.0">
+      <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+      <title>nx-admin</title>
+      <style>
+        html,
+        body,
+        #app {
+          height: 100%;
+          margin: 0px;
+          padding: 0px;
+        }
+        .chromeframe {
+          margin: 0.2em 0;
+          background: #ccc;
+          color: #000;
+          padding: 0.2em 0;
+        }
+    
+        #loader-wrapper {
+          position: fixed;
+          top: 0;
+          left: 0;
+          width: 100%;
+          height: 100%;
+          z-index: 999999;
+        }
+    
+        #loader {
+          display: block;
+          position: relative;
+          left: 50%;
+          top: 50%;
+          width: 150px;
+          height: 150px;
+          margin: -75px 0 0 -75px;
+          border-radius: 50%;
+          border: 3px solid transparent;
+          /* COLOR 1 */
+          border-top-color: #FFF;
+          -webkit-animation: spin 2s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -ms-animation: spin 2s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -moz-animation: spin 2s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -o-animation: spin 2s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          animation: spin 2s linear infinite;
+          /* Chrome, Firefox 16+, IE 10+, Opera */
+          z-index: 1001;
+        }
+    
+        #loader:before {
+          content: "";
+          position: absolute;
+          top: 5px;
+          left: 5px;
+          right: 5px;
+          bottom: 5px;
+          border-radius: 50%;
+          border: 3px solid transparent;
+          /* COLOR 2 */
+          border-top-color: #FFF;
+          -webkit-animation: spin 3s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -moz-animation: spin 3s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -o-animation: spin 3s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -ms-animation: spin 3s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          animation: spin 3s linear infinite;
+          /* Chrome, Firefox 16+, IE 10+, Opera */
+        }
+    
+        #loader:after {
+          content: "";
+          position: absolute;
+          top: 15px;
+          left: 15px;
+          right: 15px;
+          bottom: 15px;
+          border-radius: 50%;
+          border: 3px solid transparent;
+          border-top-color: #FFF;
+          /* COLOR 3 */
+          -moz-animation: spin 1.5s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -o-animation: spin 1.5s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -ms-animation: spin 1.5s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          -webkit-animation: spin 1.5s linear infinite;
+          /* Chrome, Opera 15+, Safari 5+ */
+          animation: spin 1.5s linear infinite;
+          /* Chrome, Firefox 16+, IE 10+, Opera */
+        }
+    
+    
+        @-webkit-keyframes spin {
+          0% {
+            -webkit-transform: rotate(0deg);
+            /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: rotate(0deg);
+            /* IE 9 */
+            transform: rotate(0deg);
+            /* Firefox 16+, IE 10+, Opera */
+          }
+          100% {
+            -webkit-transform: rotate(360deg);
+            /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: rotate(360deg);
+            /* IE 9 */
+            transform: rotate(360deg);
+            /* Firefox 16+, IE 10+, Opera */
+          }
+        }
+    
+        @keyframes spin {
+          0% {
+            -webkit-transform: rotate(0deg);
+            /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: rotate(0deg);
+            /* IE 9 */
+            transform: rotate(0deg);
+            /* Firefox 16+, IE 10+, Opera */
+          }
+          100% {
+            -webkit-transform: rotate(360deg);
+            /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: rotate(360deg);
+            /* IE 9 */
+            transform: rotate(360deg);
+            /* Firefox 16+, IE 10+, Opera */
+          }
+        }
+    
+    
+        #loader-wrapper .loader-section {
+          position: fixed;
+          top: 0;
+          width: 51%;
+          height: 100%;
+          background: #7171C6;
+          /* Old browsers */
+          z-index: 1000;
+          -webkit-transform: translateX(0);
+          /* Chrome, Opera 15+, Safari 3.1+ */
+          -ms-transform: translateX(0);
+          /* IE 9 */
+          transform: translateX(0);
+          /* Firefox 16+, IE 10+, Opera */
+        }
+    
+        #loader-wrapper .loader-section.section-left {
+          left: 0;
+        }
+    
+        #loader-wrapper .loader-section.section-right {
+          right: 0;
+        }
+    
+        /* Loaded */
+    
+        .loaded #loader-wrapper .loader-section.section-left {
+          -webkit-transform: translateX(-100%);
+          /* Chrome, Opera 15+, Safari 3.1+ */
+          -ms-transform: translateX(-100%);
+          /* IE 9 */
+          transform: translateX(-100%);
+          /* Firefox 16+, IE 10+, Opera */
+          -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+          transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+        }
+    
+        .loaded #loader-wrapper .loader-section.section-right {
+          -webkit-transform: translateX(100%);
+          /* Chrome, Opera 15+, Safari 3.1+ */
+          -ms-transform: translateX(100%);
+          /* IE 9 */
+          transform: translateX(100%);
+          /* Firefox 16+, IE 10+, Opera */
+          -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+          transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+        }
+    
+        .loaded #loader {
+          opacity: 0;
+          -webkit-transition: all 0.3s ease-out;
+          transition: all 0.3s ease-out;
+        }
+    
+        .loaded #loader-wrapper {
+          visibility: hidden;
+          -webkit-transform: translateY(-100%);
+          /* Chrome, Opera 15+, Safari 3.1+ */
+          -ms-transform: translateY(-100%);
+          /* IE 9 */
+          transform: translateY(-100%);
+          /* Firefox 16+, IE 10+, Opera */
+          -webkit-transition: all 0.3s 1s ease-out;
+          transition: all 0.3s 1s ease-out;
+        }
+    
+        /* JavaScript Turned Off */
+    
+        .no-js #loader-wrapper {
+          display: none;
+        }
+    
+        .no-js h1 {
+          color: #222222;
+        }
+    
+        #loader-wrapper .load_title {
+          font-family: 'Open Sans';
+          color: #FFF;
+          font-size: 19px;
+          width: 100%;
+          text-align: center;
+          z-index: 9999999999999;
+          position: absolute;
+          top: 60%;
+          opacity: 1;
+          line-height: 30px;
+        }
+    
+        #loader-wrapper .load_title span {
+          font-weight: normal;
+          font-style: italic;
+          font-size: 13px;
+          color: #FFF;
+          opacity: 0.5;
+        }
+      </style>
+    </head>
+    
+    <body>
+      <!-- built files will be auto injected -->
+      <div id="app">
+        <div id="loader-wrapper">
+          <div id="loader"></div>
+          <div class="loader-section section-left"></div>
+          <div class="loader-section section-right"></div>
+          <div class="load_title">正在加载 nx-admin,请耐心等待
+            <br>
+            <span>V1.3</span>
+          </div>
+        </div>
+      </div>
+    </body>
+    
+    </html>

+ 197 - 0
src/HManagement/marketing/area/modules/import_area.vue

@@ -0,0 +1,197 @@
+<template>
+  <div>
+    <!-- 按钮类型 -->
+    <el-button size="small" @click="dialogUploadVisible = true" icon="el-icon-upload2">导 入</el-button>
+    <el-dialog title="文件上传" class="import-panel" :visible.sync="dialogUploadVisible" width="500px" append-to-body :close-on-click-modal="false" :show-close="false" :before-close="clearFiles">
+      <div slot="title"></div>
+      <div style="background:#f1f2f3" class="my-tabs" >
+        <el-tabs v-model="activeName" type="card">
+          <el-tab-pane label="导入经销商" name="first"></el-tab-pane>
+          <el-tab-pane label="导入员工" name="second"></el-tab-pane>
+        </el-tabs>
+      </div>
+      <div style="padding:20px">
+        <el-upload
+          style="width:100%"
+          ref="my-upload"
+          class="upload-demo normal-margin"
+          :accept="accept"
+          action="#"
+          :auto-upload="false"
+          :show-file-list="false"
+          :on-change="handleChange"
+          drag
+          multiple>
+          <i class="el-icon-upload"></i>
+          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        </el-upload>
+        <div class="progress_panel" v-for="file in filelist" :key="file.uid">
+          <img v-if="file.type === 'DOC' || file.type === 'DOCX'" width="30" src="../../../../assets/file_icons/word.png"
+            alt="">
+          <img v-else-if="file.type === 'PDF'" width="30" src="../../../../assets/file_icons/PDF.png" alt="">
+          <img v-else-if="file.type === 'MP4' || file.type === 'AVI'" width="30" src="../../../../assets/file_icons/video.png"
+            alt="">
+          <img v-else-if="file.type === 'XLS' || file.type === 'XLSX'" width="30" src="../../../../assets/file_icons/excel.png"
+            alt="">
+          <img v-else-if="file.type === 'PNG' || file.type === 'JPG'|| file.type === 'JPEG'" width="30"
+            src="../../../../assets/file_icons/image.png" alt="">
+          <img v-else-if="file.type === 'PPT' || file.type === 'PPTX'" width="30" src="../../../../assets/file_icons/PPT.png"
+            alt="">
+          <img v-else width="30" src="../../../../assets/file_icons/unknow.png" alt="">
+          <div>
+            <p v-if="file.progress === 100" style="float:right"><span style="color:#67C23A">●</span>上传成功</p>
+            <p>{{file.raw?file.raw.name:'暂无上传文件'}}</p>
+            <el-progress :percentage="file.progress" :show-text="false"></el-progress>
+          </div>
+        </div>
+        <slot name="errorFile"></slot>
+        <p class="tips">• 为保证数据导入顺利,推荐您下载并使用<a :href="modelurl">《Excel标准模板》</a></p>
+        <p class="tips">• 文件中数据不能超过5000行</p>
+        <div class="dialog-footer">
+          <el-button size="small" @click="dialogUploadVisible = false" class="normal-btn-width">取 消</el-button>
+          <el-button size="small" type="warning" @click="dialogUploadVisible = false" class="normal-btn-width btn-warning">确 定</el-button>
+        </div>
+      </div>
+      
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+
+export default {
+  /*
+    folderid:文件夹id; 必填
+    btntype:展示上传按钮的类型;
+    accept:限制上传文件类型;
+    bindData:附件上传成功后对应需要绑定的数据信息
+  */
+  props:['folderid','btntype','accept','bindData'],
+  data () {
+    return {
+      dialogUploadVisible: false,
+      params: {
+        "classname": "system.attachment.huawei.OBS",
+        "method": "getFileName",
+        "content": {
+          "filename": '',
+          "filetype": '',
+          "parentid": ""//归属文件夹ID
+        }
+      },
+      file: {},
+      filelist: [],
+      activeName:'first',
+      modelurl:''
+    }
+  },
+  mounted () {
+    this.getModelUrl()
+  },
+  methods: {
+    handleChange (file, filelist) {
+      this.filelist = filelist
+      var index = file.raw.name.lastIndexOf(".");
+      var ext = file.name.substr(index + 1);
+      this.params.content.filename = file.raw.name
+      this.params.content.filetype = ext
+      this.getUploadUrl(file, ext)
+    },
+    // 获取导入模板
+    async getModelUrl () {
+      const res = await this.$api.requested({
+        "classname":"webmanage.saletool.orderclue.orderclue",
+        "method": "downloadOrderclueuploadbillExcel",
+        "content": { 
+        }
+      })
+      this.modelurl = res.msg
+    },
+    // 获取华为云上传地址
+    async getUploadUrl (file, ext) {
+      this.params.content.parentid = this.folderid
+      const res = await this.$api.requested(this.params)
+      let url = res.data.uploadurl
+      let obsfilename = res.data.serialfilename
+
+      this.upoladFileToServer(url, file, ext, obsfilename)
+    },
+    // 上传到华为云
+    async upoladFileToServer (url, file, ext, obsfilename) {      
+      let THIS = this
+      let config = {
+        headers: ext === 'pdf' ? { 'Content-Type': 'application/pdf' } : { 'Content-Type': 'application/octet-stream' },
+        onUploadProgress: function (progressEvent) {
+          let percent = progressEvent.loaded / progressEvent.total * 100
+          THIS.filelist.forEach(e => {
+            if (e.uid === file.uid) {
+              THIS.$set(e, 'type', ext.toUpperCase());
+              THIS.$set(e, 'progress', percent);
+            }
+          })
+        },
+      }
+      const res = await this.$upload.hw_upload(url, file.raw, config)
+      this.createFileRecord(obsfilename)
+    },
+
+    // 上传成功以后生成附件记录
+    async createFileRecord (obsfilename) {
+      let obj = {
+         "serialfilename": obsfilename
+      }
+      obj = Object.assign({},obj,this.bindData)
+      let param = {
+        "classname": "system.attachment.huawei.OBS",
+        "method": "uploadSuccess",
+        "content":obj
+      }
+      
+      const res = await this.$api.requested(param)
+      this.$emit('onSuccess',res,this.activeName === 'first'?'经销商':'业务员')
+    },
+
+    clearFiles () {
+      this.$refs['my-upload'].clearFiles()
+      this.filelist = []
+      this.dialogUploadVisible = false
+    }
+  }
+}
+
+</script>
+<style>
+.import-panel .el-dialog__header,.import-panel .el-dialog__body{
+  padding: 0 !important;
+}
+.upload-demo > div {
+  width: 100% !important;
+}
+.upload-demo .el-upload-dragger {
+  width: 100% !important;
+}
+</style>
+<style scoped>
+.progress_panel {
+  display: flex;
+  align-items: center;
+  padding: 10px;
+  margin: 10px 0;
+  border-radius: 5px;
+  transition: linear 0.2s all;
+}
+.progress_panel:hover {
+  box-shadow: 0px 0px 5px #ccc;
+}
+.progress_panel > div {
+  flex: 1;
+  padding: 0 10px;
+}
+.progress_panel > div > p {
+  line-height: 30px;
+}
+.tips{
+  line-height: 30px;
+}
+</style>
+

+ 3 - 1
src/HManagement/marketing/index.vue

@@ -15,6 +15,7 @@
         <delArea  v-if="tool.checkAuth($route.name,'delete')" class="inline-16" :data="areaInfo" @onSuccess="onSuccess"></delArea>
         <!-- 停用启用区域 -->
         <startArea v-if="tool.checkAuth($route.name,'update')" class="inline-16" :data="areaInfo" @onStartArea="onStartArea"></startArea>
+        <!-- <importData class="inline-16"></importData> -->
       </div>
       <!-- 滚动区域 -->
       <div>
@@ -71,7 +72,7 @@ import editArea from './area/modules/edit_area.vue'
 import startArea from './area/modules/start_area.vue'
 import delArea from './area/modules/del_area.vue'
 import areaInfo from './area/modules/area_info.vue'
-
+import importData from './area/modules/import_area.vue'
 import saler from './saler/list.vue'
 import delSaler from './saler/modules/del_saler.vue'
 
@@ -87,6 +88,7 @@ export default {
     editArea,
     delArea,
     startArea,
+    importData,
     saler,
     delSaler,
     agent,

+ 1 - 1
src/HManagement/siteManage/securityConfig/modules/loginSelect.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-button size="small" style="width:120px" type="primary" @click="updateSite_Parameter">设 置</el-button>
+    <el-button size="small" style="width:120px" type="primary" @click="querySite_Parameter">设 置</el-button>
     <el-dialog title="设置" :visible.sync="dialogEditVisible" width="600px">
       <el-row :gutter="16">
         <el-col>

+ 1 - 1
src/HManagement/submit/list/modules/submit_edit.vue

@@ -8,7 +8,7 @@
       <el-row :gutter="16">
         <el-col :span="13">
           <div class="container normal-panel normal-margin">
-            <p class="normal-title normal-margin">通告设置</p>
+            <p class="normal-title normal-margin">提报设置</p>
             <el-row :gutter="16">
               <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="left" size="small">
                 <el-col :span="24">

+ 1 - 1
src/router/SManagement.js

@@ -1,6 +1,6 @@
 const SManagement = [{
   path: '/notice_list',
-  name: 'noticemag',
+  name: 'notice',
   meta: {
     title: '通告',
     ast_nav: true

BIN
yos/归档.zip