zhangqiOMG 2 years ago
parent
commit
9688117d13

+ 28 - 6
src/HDrpManagement/logisticcom/index.vue

@@ -8,17 +8,25 @@
       }"
       tableName="logisticcomTable" 
       idName="sa_logiscompid" 
-      :apiId="{query:20221121135804,del:20221121140004}"
-      :detailPath="{
-        path:'/account_details'
-      }">
+      :apiId="{query:20221121135804,del:20221121140004}">
       <div slot="custom"></div>
       <template v-slot:tbList="scope">
         <div>
-          {{scope.data.column.data[[scope.data.column.columnname]]}}
+          <div v-if="scope.data.column.columnname === 'isused'">
+            <el-switch
+              v-model="scope.data.column.data.isused"
+              :active-value="1"
+              :inactive-value="0"
+              @change="onChange(scope.data.column.data.sa_logiscompid)">
+            </el-switch>
+          </div>
+          <p v-else>
+            {{scope.data.column.data[[scope.data.column.columnname]]}}
+          </p>
         </div>
       </template>
       <template v-slot:tbOpreation="scope">
+        <edit :data="scope.data.data"></edit>
       </template>
     </basicLayout>
   </div>
@@ -33,14 +41,28 @@
  * @param {object} apiId:{query:查询的接口id,del:删除的接口id} 
  * @param {Array} options:{label:描述,value:值} 
  */
+import edit from './modules/edit.vue'
 export default {
+  components:{
+    edit
+  },
   data () {
     return {
       options:[]
-      
     }
   },
   methods:{
+    async onChange (id) {
+      const res = await this.$api.requested({
+        "id": "20221121135904",
+        "content": {
+            "sa_logiscompid":id
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.$refs['basicLayout'].listData()
+      })
+    }
   }
 }
 

+ 85 - 3
src/HDrpManagement/logisticcom/modules/add.vue

@@ -1,18 +1,100 @@
 <template>
   <div>
-    <el-button size="small" type="primary">新建</el-button>
+    <el-button size="small" type="primary" @click="visible = true">新建</el-button>
     <el-drawer
+      append-to-body
       title="新建"
-      :visible.sync="table"
+      :visible.sync="visible"
       direction="rtl"
-      size="50%">
+      size="500px"
+      @close="cancelDrawer">
+      <div class="drawer__panel">
+         <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="85px" label-position="right" size="mini">
+            <el-col :span="24">
+              <el-form-item label="企业名称:" prop="enterprisename">
+                <!-- <el-input v-model="form.enterprisename" placeholder="输入企业名称"></el-input> -->
+                <enterprise ref="ent" @rowClick="rowClick"></enterprise>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="快递100ID:" prop="kd100id">
+                <el-input v-model="form.kd100id" placeholder="输入快递100ID"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="visible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
     </el-drawer>
   </div>
 </template>
 
 <script>
+import enterprise from '@/template/enterprise/index.vue'
 export default {
+  components:{
+    enterprise
+  },
+  data () {
+    return {
+      visible:false,
+      popover:false,
+      form:{
+        "sa_logiscompid":0,//传0时新增
+        "sys_enterpriseid": 0,//传0时新增
+        "kd100id": "",
+        "province":"",
+        "city":"",
+        "county":"",
+        "address":"",
+        "enterprisename":"",
+        "abbreviation":"",
+        "taxno":"",
+        "grade":1,
+        "industry":"",
+        "contact":"",
+        "phonenumber":""
+      },
+      rules:{
+        enterprisename: [
+          { required: true, message: '输入企业名称', trigger: 'blur' },
+        ]
+      }
+    }
+  },
+  methods:{
+    onFocus () {
+    },
+    cascaderChange (val) {
+      if (val.length === 1) 
+        return this.form = Object.assign({},this.form,{province:val[0],city:'',county:''})
 
+      this.form = Object.assign({},this.form,{province:val[0],city:val[1],county:val[2]})
+      
+    },
+    rowClick (row) {
+      this.form = Object.assign({},this.form,row)
+    },
+    cancelDrawer () {
+      this.form = {}
+      this.$refs['ent'].form = {}
+    },
+    async onSubmit () {
+      const res = await this.$api.requested({
+        "id": "20221121135704",
+        "content": this.form
+      })
+      this.tool.showMessage(res,()=>{
+        this.visible = false
+        this.$emit('onSuccess')
+      })
+    }
+   
+  }
 }
 
 </script>

+ 103 - 0
src/HDrpManagement/logisticcom/modules/edit.vue

@@ -0,0 +1,103 @@
+<template>
+  <div>
+    <el-button size="small" type="text" @click="onShow(visible = true)">编 辑</el-button>
+    <el-drawer
+      append-to-body
+      title="新建"
+      :visible.sync="visible"
+      direction="rtl"
+      size="500px"
+      @close="cancelDrawer">
+      <div class="drawer__panel">
+         <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="85px" label-position="right" size="mini">
+            <el-col :span="24">
+              <el-form-item label="企业名称:" prop="enterprisename">
+                <el-input v-model="form.abbreviation" readonly placeholder="输入企业名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="快递100ID:" prop="kd100id">
+                <el-input v-model="form.kd100id" placeholder="输入快递100ID"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="visible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import enterprise from '@/template/enterprise/index.vue'
+export default {
+  props:['data'],
+  components:{
+    enterprise
+  },
+  data () {
+    return {
+      visible:false,
+      popover:false,
+      form:{
+        "sa_logiscompid":0,//传0时新增
+        "sys_enterpriseid": 0,//传0时新增
+        "kd100id": "",
+        "province":"",
+        "city":"",
+        "county":"",
+        "address":"",
+        "enterprisename":"",
+        "abbreviation":"",
+        "taxno":"",
+        "grade":1,
+        "industry":"",
+        "contact":"",
+        "phonenumber":""
+      },
+      rules:{
+        enterprisename: [
+          { required: true, message: '输入企业名称', trigger: 'blur' },
+        ]
+      }
+    }
+  },
+  methods:{
+    onShow () {
+      this.form = Object.assign({},this.form,this.data)
+    },
+    cascaderChange (val) {
+      if (val.length === 1) 
+        return this.form = Object.assign({},this.form,{province:val[0],city:'',county:''})
+
+      this.form = Object.assign({},this.form,{province:val[0],city:val[1],county:val[2]})
+      
+    },
+    rowClick (row) {
+      this.form = Object.assign({},this.form,row)
+    },
+    cancelDrawer () {
+      this.form = {}
+      this.$refs['ent'].form = {}
+    },
+    async onSubmit () {
+      const res = await this.$api.requested({
+        "id": "20221121135704",
+        "content": this.form
+      })
+      this.tool.showMessage(res,()=>{
+        this.visible = false
+        this.$emit('onSuccess')
+      })
+    }
+   
+  }
+}
+
+</script>
+<style>
+</style>

+ 7 - 1
src/SDrpManagement/QuotedPrice/index.vue

@@ -9,6 +9,9 @@
         :options="options"
         :detail-path="{path:'/quotedPriceDetail'}"
       >
+      <div slot="titleRight">
+        <importExcel style="margin-left:10px" @onSuccess="onSuccess"></importExcel>
+      </div>
       <template #custom >
         <div class="mt-10">
           <label  class="search__label" >范围:</label>
@@ -94,9 +97,12 @@
 </template>
 
 <script>
-
+import importExcel from './modules/importQuotedPrice.vue'
 export default {
   name: "index",
+  components:{
+    importExcel
+  },
   data(){
     return {
       issaler:false,

+ 206 - 0
src/SDrpManagement/QuotedPrice/modules/importQuotedPrice.vue

@@ -0,0 +1,206 @@
+<template>
+  <div>
+    <!-- 按钮类型 -->
+    <el-button type="success" size="small" @click="dialogUploadVisible = true" icon="el-icon-upload">导 入</el-button>
+    <el-dialog class="import-panel" :visible.sync="dialogUploadVisible" width="500px" append-to-body :close-on-click-modal="false" :show-close="false" :before-close="clearFiles">
+      <div style="padding:20px">
+        <el-upload
+          style="width:100%"
+          ref="my-upload"
+          class="upload-demo normal-margin"
+          accept=".xls,.xlsx"
+          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:[],
+  data () {
+    return {
+      folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
+      dialogUploadVisible: false,
+      params: {
+        "classname": "system.attachment.huawei.OBS",
+        "method": "getFileName",
+        "content": {
+          "filename": '',
+          "filetype": '',
+          "parentid": ""//归属文件夹ID
+        }
+      },
+      file: {},
+      filelist: [],
+      CampaignList:[],
+      activeName:'first',
+      modelurl:'',
+      campaignid:''
+
+    }
+  },
+  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)
+    },
+    handleClick () {
+      this.getModelUrl()
+    },
+    // 获取导入模板
+    async getModelUrl () {
+      const res = await this.$api.requested({
+        "id": "20221024141403",
+        "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)
+      let param = {
+        "classname": "system.attachment.huawei.OBS",
+        "method": "uploadSuccess",
+        "content":obj
+      }
+      const res = await this.$api.requested(param)
+      this.importData(res.data.attachmentids[0])
+    },
+    async importData (id) {
+      const res = await this.$api.requested({
+        "id": "20221024141503",
+        "content": {
+          "sa_projectid":"1",
+          "discountrate":"100",
+          "attachmentid": id
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.$emit('onSuccess')
+        this.clearFiles()
+      })
+    },
+    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>
+

+ 8 - 2
src/template/enterprise/index.vue

@@ -5,11 +5,13 @@
       width="100%"
       v-model="visible">
       <div>
-        <div class="inline-16" style="margin-bottom:10px">
-          <el-input suffix-icon="el-icon-search" size="small" v-model="params.content.where.condition" placeholder="产品名称,编号" @keyup.enter.native="queryEnterpriseArchives(params.content.pageNumber = 1)" @clear="queryEnterpriseArchives(params.content.pageNumber = 1)" clearable></el-input> 
+        <div class="flex-align-center flex-between" style="margin-bottom:10px">
+          <el-input style="width:200px" suffix-icon="el-icon-search" size="small" v-model="params.content.where.condition" placeholder="输入企业信息" @keyup.enter.native="queryEnterpriseArchives(params.content.pageNumber = 1)" @clear="queryEnterpriseArchives(params.content.pageNumber = 1)" clearable></el-input>
+          <addTemp @onSuccess="queryEnterpriseArchives"></addTemp>
         </div>
         <el-table
           :data="ENlist"
+          size="small"
           stripe
           style="width: 100%"
           height="300"
@@ -53,7 +55,11 @@
 </template>
 
 <script>
+import addTemp from '@/Form/EnterpriseArchives/add.vue'
 export default {
+  components:{
+    addTemp
+  },
   data () {
     return {
       ENlist:[],