Pārlūkot izejas kodu

营销物料分页bug

zhangqiOMG 2 gadi atpakaļ
vecāks
revīzija
78a2af43f8

+ 10 - 1
src/HManagement/clueManage/clue_import/detailPage/modules/switchData.vue

@@ -33,6 +33,7 @@ export default {
       this.switchOrderclueuploadbillMain(this.rowindex)
     },
     next () {
+      
       this.rowindex = Number(this.$route.query.rowindex) + 1
       this.switchOrderclueuploadbillMain(this.rowindex)
     },
@@ -48,7 +49,15 @@ export default {
           "rowindex": rowindex
         }
       })
-      this.$router.replace({path:'/importClueDetail',query:{id:res.data.sat_orderclueuploadbillid,rowindex:rowindex}})
+      if (res.code === 1) {
+        this.$router.replace({path:'/importClueDetail',query:{id:res.data.sat_orderclueuploadbillid,rowindex:rowindex}})
+      } else {
+        this.rowindex = Number(this.$route.query.rowindex)
+        this.$message({
+          message:'没有了!',
+          type:'error'
+        })
+      }
     },
   }
 }

+ 22 - 9
src/HManagement/clueManage/clue_import/modules/importClue.vue

@@ -20,15 +20,28 @@ export default {
     }
   },
   methods:{
-    async uploadOrderclueuploadbillByExcel (data,type) {
-      const res = await this.$api.requested({
-        "classname": "webmanage.saletool.orderclue.orderclue",
-        "method": "uploadOrderclueuploadbillByExcel",
-        "content": {
-            "cluetype":type,
-            "attachmentid":data.data.attachmentids[0]
-        }
-      })
+    async uploadOrderclueuploadbillByExcel (data,type,moduleType) {
+      let res
+      if(moduleType == 'module1') {
+        res = await this.$api.requested({
+          "classname": "webmanage.saletool.orderclue.orderclue",
+          "method": "uploadOrderclueuploadbillByExcel",
+          "content": {
+              "cluetype":type,
+              "attachmentid":data.data.attachmentids[0]
+          }
+        })
+      } else {
+        res = await this.$api.requested({
+          "classname": "webmanage.saletool.orderclue.orderclue",
+          "method": "uploadOrderclueuploadbillByExcelAndPlatform",
+          "content": {
+              "cluetype":type,
+              "attachmentid":data.data.attachmentids[0]
+          }
+        })
+      }
+      
       if (res.msg !== '成功') {
         this.errorurl = res.msg
       } else {

+ 1 - 1
src/HManagement/clueManage/clue_import/modules/list.vue

@@ -23,7 +23,7 @@
         </el-select>
       </el-form-item>
     </el-form>
-    <tableLayout :layout="tablecols" :data="list" :custom="true" :height="tableHieght">
+    <tableLayout :layout="tablecols" :data="list" :custom="true" :height="tableHieght" fixedName="operation">
       <template v-slot:customcol="scope">
         <div v-if="scope.column.columnname === 'status'">
           <span :style="scope.column.data.status === '待审核'?'color:#3874F6':''">{{scope.column.data.status}}</span>

+ 2 - 12
src/HManagement/clueManage/clue_public/index.vue

@@ -2,10 +2,9 @@
   <div>
     <div class="container normal-panel normal-margin flex">
       <distribution v-if="tool.checkAuth($route.name,'distribution')" @onSuccess="onSuccess"></distribution>
-      <exportBtn :params="params" :exportData="exportData" v-if="tool.checkAuth($route.name,'export')"></exportBtn>
+      <exportBtn :params="params" v-if="tool.checkAuth($route.name,'export')"></exportBtn>
     </div>
-    
-    <list ref="list" @seleteParams="seleteParams" @exportDataUpdata="exportDataUpdata">
+    <list ref="list">
       <template v-slot:detail="scope">
         <el-button class="inline-16" size="small" type="text" @click="$router.push({path:'/clueDetail',query:{id:scope.data.data.sat_orderclueid}})">详 情</el-button>
       </template>
@@ -35,7 +34,6 @@ import { log } from '@antv/g2plot/lib/utils'
 export default {
   data() {
     return {
-      exportData: '',
       params:''
     }
   },
@@ -50,14 +48,6 @@ export default {
   methods:{
     onSuccess () {
       this.$refs['list'].listData()
-    },
-    seleteParams(params) {
-      let temp = JSON.parse(JSON.stringify(params))
-      temp.content.isExport = true   
-      this.params = temp
-    },
-    exportDataUpdata(data) {
-      this.exportData = data
     }
   }
 }

+ 14 - 23
src/HManagement/clueManage/clue_public/modules/exportBtn.vue

@@ -2,7 +2,7 @@
   <div>
     <el-button type="success" size="small" icon="el-icon-download" style="margin-left:10px" @click="submit">导 出</el-button>
     <el-dialog title="导出汇总" :visible.sync="dialogFormVisible" width="1200px">
-      <tableLayout :layout="tablecols" :data="exportData" :custom="true" :height="tableHieght">
+      <tableLayout :layout="tablecols" :data="exportData || []" :custom="true" :height="tableHieght">
         <template v-slot:customcol="scope">
           <div v-if="scope.column.columnname === 'status'">
             <span v-if="scope.column.data.status === '待分配'" style="color:#3874F6">{{scope.column.data.status}}</span>
@@ -34,38 +34,29 @@ export default {
   data() {
     return {
       dialogFormVisible:false,
+      exportData:'',
+      params:''
     };
   },
-  props:['exportData','params'],
+  props:[],
   computed:{
   },
   watch:{
   },
   methods: {
-    submit() {
+    async submit() {
+      this.params = JSON.parse(JSON.stringify(this.$parent.$refs.list.params))
+      this.params.content.pageNumber = 1
+      this.params.content.pageSize = 9999999
+      let res = await this.$api.requested(this.params)
+      this.exportData = res.data
       this.dialogFormVisible = true
     },
     async exportDataFun() {
-      let res
-      if(!this.params) {
-        res = await this.$api.requested({
-          "classname": "webmanage.saletool.orderclue.publicclue.PublicClue",
-          "method": "selectList",
-          "content": {
-              "isExport": true,
-              "pageNumber": 1,
-              "pageSize": 20,
-              "where": {
-                  "condition": "",
-                  "status": "",
-                  "startdate": "",
-                  "enddate": ""
-              }
-            }
-        })
-      } else {
-        res = await this.$api.requested(this.params)
-      }
+      if(this.exportData.length == 0) return
+      this.params.content.isExport = true
+      let res = await this.$api.requested(this.params)
+      this.params.content.isExport = false
       window.open(res.data[0].url,'_self')
     }
   },

+ 11 - 23
src/HManagement/clueManage/clue_public/modules/list.vue

@@ -18,7 +18,7 @@
         <TimeSelect @timeChange="timeChange" @clearSelect="clearSelect" />
       </el-form-item>
     </el-form>
-    <tableLayout :layout="tablecols" :data="list" :custom="true" :height="tableHieght">
+    <tableLayout :layout="tablecols" :data="list" :custom="true" :height="tableHieght" fixedName="operation">
       <template v-slot:customcol="scope">
         <div v-if="scope.column.columnname === 'status'">
           <span v-if="scope.column.data.status === '待分配'" style="color:#3874F6">{{scope.column.data.status}}</span>
@@ -48,7 +48,7 @@
         small
         @size-change="handleSizeChange"
         @current-change="handleCurrentChange"
-        :current-page="currentPage"
+        :current-page="params.content.pageNumber"
         :page-size="params.content.pageSize"
         layout="total, prev, pager, next, jumper"
         :total="total">
@@ -84,7 +84,6 @@ export default {
       tablecols:[],
       list:[],
       total:0,
-      currentPage:0
     }
   },
   components:{TimeSelect},
@@ -94,25 +93,14 @@ export default {
     })
   },
   watch: {
-    params: {
-      handler(val) {
-        this.$emit('seleteParams',val)
-      },
-      deep:true
-    }
   },
   methods:{
-    async listData () {
+    async listData (callback) {
       const res = await this.$api.requested(this.params)
-      this.params.content.pageSize = 999999999
-      const res2 = await this.$api.requested(this.params)
-      this.params.content.pageSize = 20
       this.list = res.data
       this.total = res.total
-      this.currentPage = res.pageNumber
       console.log(this.list);
       
-      this.$emit('exportDataUpdata',res2.data)
       this.$store.dispatch('optiontypeselect','cluepublic')
     },
     handleSizeChange(val) {
@@ -128,20 +116,20 @@ export default {
     clearSelect() {
       this.params.content.where.startdate = ''
       this.params.content.where.enddate = ''
-      this.listData()
+      this.params.content.pageNumber = 1
+      this.listData('callback')
     },
     timeChange(data) {
-      
       this.params.content.where.startdate = data[0] + ' 01:00:00'
       this.params.content.where.enddate = data[1] + ' 23:59:59'
-      console.log(this.params.content.where);
-      this.listData()
+      this.params.content.pageNumber = 1
+      this.listData('callback')
     }
   },
   mounted (){
-    this.listData()
   },
   created () {
+    this.listData()
     //获取表结构
     this.tablecols = this.tool.tabelCol(this.$route.name)['cluePublicTable'].tablecols
   }
@@ -150,7 +138,7 @@ export default {
 </script>
 
 <style>
-.el-form-item {
-  margin-bottom: 16px !important;
-}
+  .el-form-item {
+    margin-bottom: 16px !important;
+  }
 </style>

+ 12 - 5
src/HManagement/marketing/agent/modules/add_agent_btn.vue

@@ -10,7 +10,7 @@
         <el-form-item label="省市县" prop="result">
           <el-cascader
             :options="arealist"
-            :props="{ checkStrictly: true }"
+            :props="{ multiple: true }"
             clearable
             size="small"
             class="width-100"
@@ -59,17 +59,24 @@ export default {
   },
   methods: {
     createArea() {
+      
       this.$refs.ruleFrom.validate(async val => {
         if(val) {
+          let area = this.form.result.map(item => {
+            return {
+              "sa_agents_salescopeid":0,
+              "province":item[0],
+              "city":item[1] || '',
+              "county":item[2] || ''
+            }
+          })
           let res = await this.$api.requested({
             "classname": "webmanage.sale.agentscope.agentscope",
             "method": "insertormodify_areascope",
             "content": {
-                "sa_agents_salescopeid":0,
                 "sa_agentsid":this.$route.query.id,
-                "province":this.form.result[0],
-                "city":this.form.result[1] || '',
-                "county":this.form.result[2] || ''
+                "area": area
+                
             }
           })
           this.tool.showMessage(res,() => {

+ 4 - 1
src/HManagement/marketing/agent/modules/edit_agent.vue

@@ -101,7 +101,10 @@
           <!-- <Search /> -->
           <add-agent-btn :arealist="arealist" @areaAddSuccess="areaAddSuccess"></add-agent-btn>
         </div>
-        <tableLayout :layout="tablecols2" :data="agentAreaList" :custom="false" height="300px">
+        <tableLayout :layout="tablecols2" :data="agentAreaList" :custom="true" height="300px">
+          <template v-slot:customcol="scope">
+              <span>{{scope.column.data[scope.column.columnname] && scope.column.columnname != 'operation'?scope.column.data[scope.column.columnname]:'--'}}</span>
+          </template>
           <template v-slot:opreation="scope">
             <div class="handle">
               <delAgentArea :data="scope.data" type="text" @onAgentSuccess="onAgentSuccess" v-if="tool.checkAuth($route.name,'agent_area_delete')" />

+ 1 - 1
src/HManagement/roleManage/index.vue

@@ -9,7 +9,7 @@
           </div>
         </template>
         <template v-slot:edit="scope">
-          <el-button v-if="tool.checkAuth($route.name,'update')" type="text" size="small" @click="$router.push({path:'/roleEdit',query:{id:scope.data.roleid}})">编 辑</el-button>
+          <el-button v-if="tool.checkAuth($route.name,'update')" type="text" size="small" @click="$router.push({path:'/roleEdit',query:{id:scope.data.roleid,usertype:scope.data.usertype}})">编 辑</el-button>
         </template>   
       </list>
     </div>

+ 3 - 1
src/HManagement/roleManage/modules/auth_list.vue

@@ -131,7 +131,8 @@ export default {
               "systemname":"",
               "systemagentname":"",
               "systemmodulename":"",
-              "systemappname":""
+              "systemappname":"",
+              "usertype": ""
             }
         }
       },
@@ -153,6 +154,7 @@ export default {
         type:'error'
       })
       this.dialogTableVisible = true
+      this.param.content.where.usertype = this.$route.query.usertype
       this.query_all_auth()
     },
     handleClick(val) {

+ 1 - 1
src/HManagement/roleManage/modules/edit_role.vue

@@ -169,7 +169,7 @@ export default {
           "content": this.form
         }).then(res=>{
           this.tool.showMessage(res,()=>{
-            this.$router.replace({path:'/roleEdit',query:{id:res.data.roleid}})
+            this.$router.replace({path:'/roleEdit',query:{id:res.data.roleid,usertype:res.data.usertype}})
           })
         })
       })

+ 1 - 1
src/SManagement/orderclue/components/list.vue

@@ -21,7 +21,7 @@
         </div>
       </div>
       <table1 :layout="tablecols" :custom="true" :checkbox="true" :data="list" :height="tableHieght"
-        @checkboxCallBack="checkboxCallBack" v-if="tool.checkAuth($route.name,'read')">
+        @checkboxCallBack="checkboxCallBack" v-if="tool.checkAuth($route.name,'read')" fixedName="operation">
         <template v-slot:customcol="scope">
           <div v-if="scope.column.columnname == 'rowindex'" style="display:flex;align-items: center;">
             <p>{{ scope.column.data[scope.column.columnname] }}</p>

+ 4 - 3
src/components/dynamic-table/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-table :row-class-name="tableClassName" v-loading="loading" highlight-current-row :data="data" :header-cell-style="{background:'#EEEEEE',color:'#333'}" size="mini" :height="height" @row-click="rowClick" style="width:100%"  border>
-      <el-table-column v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="col.width">
+      <el-table-column v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="col.width" :fixed="col.columnname === fixedName?'right':false">
         <template slot-scope="scope">
           <!-- 自定义表格显示内容 -->
           <slot v-if="custom" name="customcol" :column="{data:scope.row,columnname:col.columnname}"></slot>
@@ -24,7 +24,7 @@ export default {
     custom:是否启用自定义结构;
     opwidth:操作列宽度
   */
-  props:['layout','data','custom','height'],
+  props:['layout','data','custom','height','fixedName'],
   data () {
     return {
       list:[],
@@ -49,5 +49,6 @@ export default {
 }
 
 </script>
-<style>
+<style scoped>
+
 </style>

+ 116 - 59
src/components/import/importFile.vue

@@ -2,57 +2,89 @@
   <div>
     <!-- 按钮类型 -->
     <el-button type="success" size="small" @click="dialogUploadVisible = true" icon="el-icon-upload">导 入</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">
+    <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" >
+      <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="Excel标准模板" name="first">
+            <div style="padding:20px;background:#ffffff">
+              <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-tab-pane>
+          <el-tab-pane label="Excel专用模板" name="last">
+          <!--专用模板-->
+            <div style="padding:20px;background:#ffffff">
+              <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="handleChange2" 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="modelurl2">《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-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>
@@ -66,7 +98,7 @@ export default {
     accept:限制上传文件类型;
     bindData:附件上传成功后对应需要绑定的数据信息
   */
-  props:['folderid','btntype','accept','bindData'],
+  props: ['folderid', 'btntype', 'accept', 'bindData'],
   data () {
     return {
       dialogUploadVisible: false,
@@ -81,14 +113,18 @@ export default {
       },
       file: {},
       filelist: [],
-      activeName:'first',
-      modelurl:''
+      activeName: 'first',
+      modelurl: '',
+      modelurl2: '',/* 快手与抖音模板 */
+      /* 上传模板类型 */
+      type:''
     }
   },
   mounted () {
     this.getModelUrl()
   },
   methods: {
+    /* 模板1 */
     handleChange (file, filelist) {
       this.filelist = filelist
       var index = file.raw.name.lastIndexOf(".");
@@ -96,16 +132,36 @@ export default {
       this.params.content.filename = file.raw.name
       this.params.content.filetype = ext
       this.getUploadUrl(file, ext)
+      this.type = 'module1'
+    },
+    /* 模板2 */
+    handleChange2 (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)
+      this.type = 'module2'
     },
     // 获取导入模板
     async getModelUrl () {
       const res = await this.$api.requested({
-        "classname":"webmanage.saletool.orderclue.orderclue",
+        "classname": "webmanage.saletool.orderclue.orderclue",
         "method": "downloadOrderclueuploadbillExcel",
-        "content": { 
+        "content": {
+        }
+      })
+      const res2 = await this.$api.requested({
+        "classname": "webmanage.saletool.orderclue.orderclue",
+        "method": "downloadOrderclueuploadbillExcelByPlatform",
+        "content": {
         }
       })
       this.modelurl = res.msg
+      this.modelurl2 = res2.msg
+      console.log(this.modelurl, this.modelurl2);
+
     },
     // 获取华为云上传地址
     async getUploadUrl (file, ext) {
@@ -117,7 +173,7 @@ export default {
       this.upoladFileToServer(url, file, ext, obsfilename)
     },
     // 上传到华为云
-    async 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' },
@@ -138,17 +194,17 @@ export default {
     // 上传成功以后生成附件记录
     async createFileRecord (obsfilename) {
       let obj = {
-         "serialfilename": obsfilename
+        "serialfilename": obsfilename
       }
-      obj = Object.assign({},obj,this.bindData)
+      obj = Object.assign({}, obj, this.bindData)
       let param = {
         "classname": "system.attachment.huawei.OBS",
         "method": "uploadSuccess",
-        "content":obj
+        "content": obj
       }
-      
+
       const res = await this.$api.requested(param)
-      this.$emit('onSuccess',res,this.activeName === 'first'?'经销商':'业务员')
+      this.$emit('onSuccess', res, this.activeName === 'first' ? '经销商' : '业务员',this.type)
     },
 
     clearFiles () {
@@ -161,7 +217,8 @@ export default {
 
 </script>
 <style>
-.import-panel .el-dialog__header,.import-panel .el-dialog__body{
+.import-panel .el-dialog__header,
+.import-panel .el-dialog__body {
   padding: 0 !important;
 }
 .upload-demo > div {
@@ -190,7 +247,7 @@ export default {
 .progress_panel > div > p {
   line-height: 30px;
 }
-.tips{
+.tips {
   line-height: 30px;
 }
 </style>

+ 3 - 0
src/components/layout/index.vue

@@ -226,4 +226,7 @@ export default {
   border-bottom: 1px solid #f1f2f3;
   background: #fff;
 }
+.nav-top-item::-webkit-scrollbar{
+  display:none !important;
+}
 </style>

+ 2 - 2
src/components/table/index.vue

@@ -5,7 +5,7 @@
         type="selection"
         width="55" @handleSelectionChange="handleSelectionChange" v-if="checkbox" :selectable="isCheck">
       </el-table-column>
-      <el-table-column :show-overflow-tooltip="col.title == '来源' || col.title == '地址' || col.title == '备注'" v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="col.width">
+      <el-table-column :show-overflow-tooltip="col.title == '来源' || col.title == '地址' || col.title == '备注'" v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="col.width" :fixed="col.columnname === fixedName?'right':false">
         <template slot-scope="scope">
           <!-- 自定义表格显示内容 -->
           <slot v-if="custom" name="customcol" :column="{data:scope.row,columnname:col.columnname}"></slot>
@@ -28,7 +28,7 @@ export default {
     custom:是否启用自定义结构;
     opwidth:操作列宽度
   */
-  props:['layout','data','custom','height','checkbox'],
+  props:['layout','data','custom','height','checkbox','fixedName'],
   data () {
     return {
       list:[],

+ 0 - 3
src/style/style.css

@@ -17,9 +17,6 @@ input[type=number]::-webkit-outer-spin-button {
   -webkit-appearance: none;
   margin: 0;
 }
-::-webkit-scrollbar{
-  width: 0px;
-}
 ul{
   list-style:none;
 }

+ 76 - 84
src/views/login/login.vue

@@ -8,54 +8,48 @@
         </div>
         <div class="login-form">
           <h4 class="title">登录</h4>
-          <el-tabs v-model="activeName">
-            <el-tab-pane label="短信登录" name="first">
-              <el-form :rules="rules" ref="loginForm"  :model="loginForm">
-                <el-form-item prop="phonenumber">
-                  <el-input v-model="loginForm.phonenumber" placeholder="账号"></el-input>
-                </el-form-item> 
-                <el-form-item prop="password">
-                  <el-input v-model="loginForm.password" placeholder="验证码">
-                    <template slot="append">
-                      <span v-if="count > 0">{{count === 0?'获取验证码':count+ 's'}}</span>
-                      <el-button v-else @click="countDown" type="primary">{{count === 0?'获取验证码':count+ 's'}}</el-button>
-                    </template>
-                  </el-input>
-                </el-form-item>
-                <el-form-item>
-                  <div class="flex-between">
-                    <el-checkbox v-model="checked">记住账号</el-checkbox>
-                    <!-- <el-button type="text">忘记密码</el-button> -->
-                  </div>
-                </el-form-item>
-                <el-form-item>
-                  <el-button type="primary" style="width:100%" @click="login">登 录</el-button>
-                </el-form-item>
-              </el-form>
-            </el-tab-pane>
-            <el-tab-pane label="账号登录" name="second">
-              <el-form :rules="rules2" ref="loginForm"  :model="loginForm">
-                <el-form-item prop="phonenumber">
-                  <el-input v-model="loginForm.phonenumber" placeholder="账号"></el-input>
-                </el-form-item> 
-                <el-form-item prop="password">
-                  <el-input v-model="loginForm.password" type="password" placeholder="密码">
-                  </el-input>
-                </el-form-item>
-                <el-form-item>
-                  <div class="flex-between">
-                    <el-checkbox v-model="checked">记住账号</el-checkbox>
-                  </div>
-                </el-form-item>
-                <el-form-item>
-                  <el-button type="primary" style="width:100%" @click="loginbyaccount">登 录</el-button>
-                </el-form-item>
-              </el-form>
-            </el-tab-pane>
-          </el-tabs>
+          <el-form :rules="rules" ref="loginForm" :model="loginForm" v-if="typeof $route.query.admin != 'object'">
+            <el-form-item prop="phonenumber">
+              <el-input v-model="loginForm.phonenumber" placeholder="手机号"></el-input>
+            </el-form-item>
+            <el-form-item prop="password">
+              <el-input v-model="loginForm.password" placeholder="验证码">
+                <template slot="append">
+                  <span v-if="count > 0">{{count === 0?'获取验证码':count+ 's'}}</span>
+                  <el-button v-else @click="countDown" type="primary">{{count === 0?'获取验证码':count+ 's'}}</el-button>
+                </template>
+              </el-input>
+            </el-form-item>
+            <el-form-item>
+              <div class="flex-between">
+                <el-checkbox v-model="checked">记住账号</el-checkbox>
+                <!-- <el-button type="text">忘记密码</el-button> -->
+              </div>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" style="width:100%" @click="login">登 录</el-button>
+            </el-form-item>
+          </el-form>
+          <el-form :rules="rules2" ref="loginForm" :model="loginForm" v-else>
+            <el-form-item prop="phonenumber">
+              <el-input v-model="loginForm.phonenumber" placeholder="账号"></el-input>
+            </el-form-item>
+            <el-form-item prop="password">
+              <el-input v-model="loginForm.password" type="password" placeholder="密码">
+              </el-input>
+            </el-form-item>
+            <el-form-item>
+              <div class="flex-between">
+                <el-checkbox v-model="checked">记住账号</el-checkbox>
+              </div>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" style="width:100%" @click="loginbyaccount">登 录</el-button>
+            </el-form-item>
+          </el-form>
         </div>
       </div>
-      
+
     </div>
   </div>
 </template>
@@ -68,13 +62,13 @@ export default {
     return {
       rules: {
         phonenumber: [
-          { required: true, message: '请输入号', trigger: 'blur' },
+          { required: true, message: '请输入手机号', trigger: 'blur' },
         ],
         password: [
           { required: true, message: '请输入验证码', trigger: 'blur' }
         ],
       },
-      rules2:{
+      rules2: {
         phonenumber: [
           { required: true, message: '请输入账号', trigger: 'blur' },
         ],
@@ -82,12 +76,12 @@ export default {
           { required: true, message: '请输入密码', trigger: 'blur' }
         ],
       },
-      loginForm:{
-        phonenumber:''
+      loginForm: {
+        phonenumber: ''
       },
-      activeName:'first',
-      checked:false,
-      count:0
+      activeName: 'first',
+      checked: false,
+      count: 0,
     }
   },
   mounted () {
@@ -97,19 +91,19 @@ export default {
     }
     console.log(this.HTTP_DEFALUT_ERROR)
   },
-  methods:{
+  methods: {
     //验证码请求
     loginCode () {
       this.$api.loginCode({
-        "phonenumber":this.loginForm.phonenumber,
+        "phonenumber": this.loginForm.phonenumber,
         "systemclient": "web"
       }).then(res => {
         console.log(res)
         const h = this.$createElement;
-        res.code === 1?this.$notify({
+        res.code === 1 ? this.$notify({
           title: '获取验证码成功!',
-          message: h('i', { style: 'color: teal'}, res.msg)
-        }):this.$notify({
+          message: h('i', { style: 'color: teal' }, res.msg)
+        }) : this.$notify({
           title: '失败',
           message: res.msg,
           type: 'error'
@@ -120,27 +114,27 @@ export default {
     async countDown () {
       await this.loginCode()
       this.count = 5
-      var down = setInterval(()=>{
-        this.count --
-        this.count === 0? clearInterval(down):''
-      },1000)
+      var down = setInterval(() => {
+        this.count--
+        this.count === 0 ? clearInterval(down) : ''
+      }, 1000)
     },
     // 登录请求
     async login () {
       const res = await this.$api.login({
-        "phonenumber":this.loginForm.phonenumber,
-        "password":md5(this.loginForm.password),  
+        "phonenumber": this.loginForm.phonenumber,
+        "password": md5(this.loginForm.password),
         "systemclient": "web"
       })
       let that = this
       if (res.code === 1) {
-        this.checked?localStorage.setItem('phonenumber',this.loginForm.phonenumber):localStorage.clear('phonenumber')
+        this.checked ? localStorage.setItem('phonenumber', this.loginForm.phonenumber) : localStorage.clear('phonenumber')
         this.$router.push('/accounts')
-        sessionStorage.setItem('account_list',JSON.stringify(res.account_list))
+        sessionStorage.setItem('account_list', JSON.stringify(res.account_list))
       } else {
         this.$notify({
           title: '失败',
-          message:res.msg,
+          message: res.msg,
           type: 'error'
         })
       }
@@ -150,12 +144,12 @@ export default {
       const res = await this.$api.loginbyaccount({
         "accountno": this.loginForm.phonenumber,
         "password": md5(this.loginForm.password),
-        "systemclient":"web"
+        "systemclient": "web"
       })
       if (res.code === 1) {
-        this.checked?localStorage.setItem('phonenumber',this.loginForm.phonenumber):localStorage.clear('phonenumber')
+        this.checked ? localStorage.setItem('phonenumber', this.loginForm.phonenumber) : localStorage.clear('phonenumber')
         this.$router.push('/accounts')
-        sessionStorage.setItem('account_list',JSON.stringify(res.account_list))
+        sessionStorage.setItem('account_list', JSON.stringify(res.account_list))
       } else {
         this.$notify({
           title: '失败',
@@ -169,23 +163,21 @@ export default {
 
 </script>
 <style>
-
 </style>
 <style scoped>
-.logo{
+.logo {
   text-align: center;
   margin-bottom: 30px;
 }
-.logo span{
+.logo span {
   display: block;
   font-size: 24px;
   line-height: 15px;
-
 }
-.logo small{
-  color:#999
+.logo small {
+  color: #999;
 }
-.title{
+.title {
   display: flex;
   align-items: center;
   justify-content: space-between;
@@ -195,7 +187,7 @@ export default {
   font-size: 24px;
   font-weight: 600;
 }
-.login-wrap{
+.login-wrap {
   display: flex;
   align-items: center;
   justify-content: space-around;
@@ -205,24 +197,24 @@ export default {
   background: #f1f2f3;
   background-size: 2560px 1490px;
 }
-.login-form{
+.login-form {
   /* min-height: 500px; */
   width: 400px;
   padding: 30px;
   background: #fff;
   border-radius: 10px;
 }
-.form-input-group{
-  margin-bottom: 16px
+.form-input-group {
+  margin-bottom: 16px;
 }
-.input-wrap{
+.input-wrap {
   width: 100%;
 }
-.d-input{
+.d-input {
   height: 40px;
   width: 100%;
 }
-.flex-between{
+.flex-between {
   display: flex;
   align-items: center;
   justify-content: space-between;

+ 5 - 1
yos/index.html

@@ -1 +1,5 @@
-<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"><link rel="icon" href="favicon.ico"><title>美大营销管理平台</title><script defer="defer" type="module" src="js/chunk-vendors.8e4fd6d5.js"></script><script defer="defer" type="module" src="js/app.90a202b8.js"></script><link href="css/app.83be7ebe.css" rel="stylesheet"><script defer="defer" src="js/chunk-vendors-legacy.25c4112b.js" nomodule></script><script defer="defer" src="js/app-legacy.7e7e4609.js" nomodule></script></head><body><noscript><strong>We're sorry but 美大营销管理平台 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
+<<<<<<< HEAD
+<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"><link rel="icon" href="favicon.ico"><title>美大营销管理平台</title><script defer="defer" type="module" src="js/chunk-vendors.8e4fd6d5.js"></script><script defer="defer" type="module" src="js/app.90a202b8.js"></script><link href="css/app.83be7ebe.css" rel="stylesheet"><script defer="defer" src="js/chunk-vendors-legacy.25c4112b.js" nomodule></script><script defer="defer" src="js/app-legacy.7e7e4609.js" nomodule></script></head><body><noscript><strong>We're sorry but 美大营销管理平台 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
+=======
+<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"><link rel="icon" href="favicon.ico"><title>美大营销管理平台</title><script defer="defer" type="module" src="js/chunk-vendors.8e4fd6d5.js"></script><script defer="defer" type="module" src="js/app.af5fb13a.js"></script><link href="css/app.272a52a9.css" rel="stylesheet"><script defer="defer" src="js/chunk-vendors-legacy.25c4112b.js" nomodule></script><script defer="defer" src="js/app-legacy.f1727b3b.js" nomodule></script></head><body><noscript><strong>We're sorry but 美大营销管理平台 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
+>>>>>>> 04eebfcdeb020b03aba18be61ecf05cf315ee3c5