文件 & 图片 上传 及少许正则校验  
< template> < div  style = " padding :  20px" > < Row> < Col  span = " 24" > < div> < CFlex  type = " flex"   justify = " space-between"   align = " midlle" > < div  class = " page_title" >  供应商详情</ div> < CButton  type = " primary"   @click.native = " editshow" > < Icon  type = " ios-create-outline"   />  编辑供应商</ CButton> </ CFlex> < div  class = " box_big" > < div  style = " background :  #fafafa;  padding :  10px" > < p  class = " fize" >  基本信息</ p> < div  class = " project_info_content_data" > < FlexLinePI  title = " 供应商名称:" >  {{ projectData.supplierName }}</ FlexLinePI> < FlexLinePI  title = " 服务分类:" >  {{ projectData.serviceClassify }}</ FlexLinePI> < FlexLinePI  title = " 服务范围:" >  {{ projectData.serviceScope }}</ FlexLinePI> < FlexLinePI  title = " 联系人:" >  {{ projectData.linkMan }}</ FlexLinePI> < FlexLinePI  title = " 联系电话:" >  {{ projectData.phoneNo }}</ FlexLinePI> < FlexLinePI  title = " 邮箱:" >  {{ projectData.email }}</ FlexLinePI> < FlexLinePI  title = " 省市:" >  {{ city }}</ FlexLinePI> < FlexLinePI  title = " 详细地址:" >  {{ projectData.address }}</ FlexLinePI> < FlexLinePI  title = " 员工人数:" >  {{ projectData.employeeNum }}</ FlexLinePI> < FlexLinePI  title = " 注册资本(万):" >  {{ projectData.registeredAssets }}</ FlexLinePI> < FlexLinePI  title = " 成立年限:" >  {{ projectData.establishYear }}</ FlexLinePI> < FlexLinePI  title = " " >   </ FlexLinePI> </ div> </ div> < div  style = " background :  #fafafa;  padding :  10px;  margin-top :  20px" > < p  class = " fize" >   附件展示:</ p> < ul  style = " padding :  10px" > < liv-for = " (item, index) in SupplierFileDataList" class = " licolor"   style = " background :  #fafafa; " > < spanstyle = " cursor :  pointer" @click = " openfile(item.filePath)" > < span> < img  src = " ../../assets/附件.svg"   alt = " "   style = " vertical-align :  middle; " /> </ span>   {{ item.originalFileName }}</ span> </ li> </ ul> </ div> < div  style = " background :  #fafafa;  padding :  10px;  margin-top :  20px" > < div  class = " box_small" > < div  class = " box_img_top"   style = " float :  left" >  营业执照证明:</ div> < divclass = " box_img_bottom" v-for = " (urls, index) in Businesslicense" :key = " index" style = " float :  left" > < img:src = " urls.filePath" alt = " " @click = " opentupian(urls.filePath)" /> </ div> </ div> < div  class = " box_small" > < div  class = " box_img_top" >  纳税人类型证明:</ div> < divclass = " box_img_bottom" v-for = " (urls, index) in Taxpayercertificate" :key = " index" > < img:src = " urls.filePath" alt = " " @click = " opentupian(urls.filePath)" /> </ div> </ div> < div  class = " box_small" > < div  class = " box_img_top" >  其它:</ div> < divclass = " box_img_bottom" v-for = " (urls, index) in otherpicture" :key = " index" > < img:src = " urls.filePath" alt = " " @click = " opentupian(urls.filePath)" /> </ div> </ div> </ div> < divstyle = " background :  #fafafa; padding :  10px; margin-top :  20px; border-radius :  0.8rem; " > < p  class = " fize" >  供应商评级< span  class = " details"   @click = " opengragrade" >  去评级</ span> </ p> < div  class = " project_info_content_data" > < FlexLinePI  title = " 得分:" > < span  style = " color :  #156cee" >  {{ gradelist.supplierScore }}</ span> </ FlexLinePI> </ div> < div  class = " project_info_content_data" > < FlexLinePI  title = " 风险级别:" > < span  style = " color :  #156cee" >  {{ gradelist.supplierRate }}</ span> </ FlexLinePI> </ div> < div  class = " project_info_content_data" > < FlexLinePI  title = " 评级时间:" > < span  style = " color :  #156cee" >  {{ gradelist.updateTime }}</ span> </ FlexLinePI> </ div> < div  class = " project_info_content_data" > < p  class = " paddingleft" > < span>  注:A级:90-100分</ span> < span>  B级:70-89分</ span> < span>  C级:60-69分</ span> < span>  不合格:60分以下</ span> </ p> </ div> </ div> < divstyle = " background :  #fafafa;  padding :  10px;  margin-top :  20px" v-if = " isshow" > < p  class = " fize" >  项目服务评分</ p> < div  class = " project_info_content_data"   style = " margin-top :  20px" > < Table  class = " table"   :columns = " columns1"   :data = " tableList" > < template  slot-scope = " { row, index }"   slot = " servicescore" > < Rate  v-model = " row.rateLevel"   /> </ template> </ Table> </ div> < div  class = " project_info_content_data" > < p  class = " paddingleft" > < span>  注:5星:95分以上(包含95分)</ span> < span>  4星:90-94分(包含90分)</ span> < span>  3星:85-89分(包含85分)</ span> < span>  2星:80-84分(包含80分)</ span> < span>  1星:75-79分(包含75分)</ span> </ p> </ div> </ div> </ div> </ div> </ Col> </ Row> < CModal  :show.sync = " createProjectShow" > < div  slot = " top"   class = " project_create_title" >  编辑供应商信息</ div> < divclass = " project_create_content" :style = " ' height:'  + contentHeight + ' px' " > < div  style = " height :  20px;  width :  100px" > </ div> < Form:model = " formData" :label-width = " 150" label-position = " right" inline ref = " formValidate" :rules = " formValidate" > < FormItem  label = " 供应商名称:"   prop = " supplierName"   required > < Inputclass = " form_item" v-model = " formData.supplierName" placeholder = " 请输入供应商名称" maxlength = " 50" /> </ FormItem> < FormItem  label = " 服务分类:"   prop = " servicetype"   required > < Selectclass = " search_item" placeholder = " 请选择服务分类" v-model = " formData.servicetype" clearable filterable style = " width :  200px" > < Option  v-for = " item in Classfiylist"   :value = " item"   :key = " item" >  {{item}}</ Option> </ Select> </ FormItem> < FormItem  label = " 省市:"   prop = " provincescities"   required > < Cascaderclass = " form_item" :data = " addressData" v-model = " formData.provincescities" filterable placeholder = " 请选择省市" transfer > </ Cascader> </ FormItem> < FormItem  label = " 详细地址:"   prop = " address"   required > < Inputclass = " form_item" v-model = " formData.address" placeholder = " 请输入详细地址" maxlength = " 30" /> </ FormItem> < FormItem  label = " 联系人:"   prop = " contactsone"   required > < Inputclass = " form_item" v-model = " formData.contactsone" placeholder = " 请输入联系人" @on-keyup = " formData.contactsone = formData.contactsone.replace(/[^\u4e00-\u9fa5]/g,' ' )" maxlength = " 5" type = " text" /> </ FormItem> < FormItem  label = " 联系电话:"   prop = " contactstwo"   required > < Inputclass = " form_item" v-model = " formData.contactstwo" placeholder = " 请输入联系电话" maxlength = " 20" /> </ FormItem> < FormItem  label = " 邮箱:" > < Inputclass = " form_item" v-model = " formData.mailbox" placeholder = " 请输入邮箱" /> </ FormItem> < FormItem  label = " 员工人数:" > < Inputclass = " form_item" v-model = " formData.employeesnum" placeholder = " 请输入员工人数" @on-keyup = " formData.employeesnum = formData.employeesnum.replace(/^(0+)|[^\d]+/g,' ' )" maxlength = " 20" type = " number" /> </ FormItem> < FormItem  label = " 成立年限:" > < Inputclass = " form_item" v-model = " formData.establishyear" placeholder = " 请输入成立年限" maxlength = " 15" /> </ FormItem> < FormItem  label = " 注册资本(万):" > < Inputclass = " form_item" v-model = " formData.registeredcapital" placeholder = " 请输入注册资本(万)" maxlength = " 20" /> </ FormItem> < FormItem  label = " 服务范围:" > < Inputclass = " form_item" v-model = " formData.services" placeholder = " 请输入服务范围" maxlength = " 150" show-word-limit style = " width :  560px" /> </ FormItem> </ Form> < div  style = " margin-left :  4vw;  padding :  0 40px 5px 0px" > < span  style = " float :  left; line-height : 35px; font-size :  16px; " >  上传附件:</ span> < span> < Uploadtype = " select" :on-success = " openlist" :show-upload-list = " false" :action = " ' /isip/admin/api/v1/upload/file?supplierId='  +this.projectId +' &fieldName='  +this.enclosure" > < Button  icon = " ios-cloud-upload-outline" >  上传附件</ Button> </ Upload> </ span> </ div> < div  style = " margin-left :  4vw;  padding :  0 40px 5px 0px" > < ul> < li  v-for = " (item, index) in SupplierFileDataList"   class = " licolor"   style = " height :  40px; " > < div  style = " padding-top :  10px; " > < span> < img  src = " ../../assets/附件.svg"   alt = " "   style = " vertical-align :  middle; padding-left : 10px" /> </ span>   < span  >  {{ item.originalFileName }}</ span> </ div> < div  @click = " deleteImg(item.fileId)"   class = " icon" >  X</ div> </ li> </ ul> </ div> < div  class = " box_img" > < div  class = " box_img_top" >  营业执照:</ div> < div  class = " box_img_bottom" > < divv-for = " (urls, index) in Businesslicense" :key = " index" class = " boximg" > < div  class = " boximg_delete"   @click = " deleteImg(urls.fileId)" > </ div> < img  :src = " urls.filePath"   width = " 200px"   height = " 170px"   /> </ div> < divclass = " input" @click = " imgClick()" v-if = " Businesslicense.length > 0 ? false : true" > < span  class = " span" >  点击上传</ span> </ div> < inputstyle = " float :  left;  display :  none" type = " file" id = " uploadFile" accept = " image/*" @change = " readLocalFile(projectId, ' Businesslicense' )" /> </ div> </ div> < div  class = " box_img" > < div  class = " box_img_top" >  纳税人类型证明:</ div> < div  class = " box_img_bottom" > < divv-for = " (urls, index) in Taxpayercertificate" :key = " index" class = " boximg" > < div  class = " boximg_delete"   @click = " deleteImg(urls.fileId)" > </ div> < img  :src = " urls.filePath"   width = " 200px"   height = " 170px"   /> </ div> < divclass = " input" @click = " imgClickone()" v-if = " Taxpayercertificate.length > 0 ? false : true" > < span  class = " span" >  点击上传</ span> </ div> < inputstyle = " float :  left;  display :  none" type = " file" id = " uploadFileone" accept = " image/*" @change = " readLocalFile(projectId, ' Taxpayercertificate' )" /> </ div> </ div> < div  class = " box_img_otherpicture" > < div  class = " box_img_top" >  其它:</ div> < div  class = " box_img_bottom"   style = " float :  left" > < divv-for = " (urls, index) in otherpicture" :key = " index" style = " " class = " box_img_bottom_b" > < div  class = " boximg_delete"   @click = " deleteImg(urls.fileId)" > </ div> < img  :src = " urls.filePath"   width = " 200px"   height = " 170px"   /> </ div> < divstyle = " width :  200px; height :  170px; border :  1px dashed #ccc; float :  left; position :  relative; cursor :  pointer; " @click = " imgClicktwo()" > < spanstyle = " position :  absolute; top :  50%; left :  50%; transform :  translate ( -50%,  -50%) ; " >  点击上传</ span> </ div> < inputstyle = " float :  left;  display :  none" type = " file" id = " uploadFiletwo" accept = " image/*" @change = " readLocalFile(projectId, ' otherpicture' )" /> </ div> </ div> </ div> < CButtonslot = " bottom" long type = " primary" @click.native = " submit(' formValidate' )" >  保存</ CButton> </ CModal> < CModal  :show.sync = " imgshow" > < div  class = " imgopenshow" > < img  :src = " imgshowopen"   alt = " "   /> </ div> </ CModal> </ div>  
</ template> < script> 
import  Supplier from  "@/api/isip/Suppliermanagement" ; 
import  ChinaAddressV4Data from  "@/datas/china_address_other" ; 
import  ProjectCreate from  "../../views/basicdata//components/project-create" ;  
const  FlexLinePI =  { props:  [ "title" ] , template:  ` <div class="flex_line_pi"><div class="flex_line_pi_l">{{title}}</div><div class="flex_line_pi_r"><slot></slot></div></div> ` , 
} ; 
export  default  { name:  "projectSupplierdetails" , props:  { } , components:  { FlexLinePI, ProjectCreate, } , data ( )  { return  { enclosure:  "enclosure" , SupplierFileDataList:  [ ] ,  city:  "" , isshow:  false , projectId: this . $route. query. projectId ||  sessionStorage. getItem ( "supplierid" ) , addressData:  ChinaAddressV4Data,  Classfiylist:  [ "信息技术" , "广告媒体" , "印刷包装" , "酒店餐饮" , "网络通信" , "商务咨询" , "人力资源" , "律师事务" , "物流运输" , "其它" , ] , page:  1 , pageSize:  3 , count:  0 ,  projectData:  { } ,  gradelist:  { } , tableList:  [ ] , columns1:  [ { title:  "序号" , type:  "index" , width:  65 , align:  "center" , } , { title:  "服务项目时间" , key:  "createTime" , align:  "center" , } , { title:  "项目名称" , key:  "projectName" , align:  "center" , } , { title:  "服务项目评分" , key:  "projectScore" , align:  "center" , } , { title:  "供应商服务星级" , key:  "rateLevel" , slot:  "servicescore" , align:  "center" , } , { title:  "服务评分时间" , key:  "updateTime" , align:  "center" , } , { title:  "操作" , key:  "address" , align:  "center" , render :  ( h,  params )  =>  { return  this . btnTranslate ( h,  params) ; } , } , ] , createProjectShow:  false , formData:  { supplierName:  "" , servicetype:  "" , provincescities:  [ ] , address:  "" , contactsone:  "" , contactstwo:  "" , mailbox:  "" , employeesnum:  "" , establishyear:  "" , registeredcapital:  "" , services:  "" , } , formValidate:  { supplierName:  [ { validator :  ( rule,  value,  callback )  =>  { if  ( ! value)  { callback ( new  Error ( "请输入项目名称" ) ) ; }  else  { callback ( ) ; } } , } , ] , servicetype:  [ { validator :  ( rule,  value,  callback )  =>  { if  ( ! value ||  value. length ==  0 )  { callback ( new  Error ( "请选择服务类型" ) ) ; }  else  { callback ( ) ; } } , trigger:  "change" , } , ] , provincescities:  [ { validator :  ( rule,  value,  callback )  =>  { if  ( ! value ||  value. length ==  0 )  { callback ( new  Error ( "请选择省市" ) ) ; }  else  { callback ( ) ; } } , trigger:  "change" , } , ] , address:  [ { validator :  ( rule,  value,  callback )  =>  { if  ( ! value)  { callback ( new  Error ( "请输入详细地址" ) ) ; }  else  { callback ( ) ; } } , } , ] , contactsone:  [ { validator :  ( rule,  value,  callback )  =>  { if  ( ! value)  { callback ( new  Error ( "请输入联系人" ) ) ; }  else  { callback ( ) ; } } , } , ] , contactstwo:  [ { validator :  ( rule,  value,  callback )  =>  { if  ( ! value)  { callback ( new  Error ( "请输入联系电话" ) ) ; }  else  { callback ( ) ; } } , } , ] , } , Businesslicense:  [ ] , Taxpayercertificate:  [ ] , otherpicture:  [ ] , imgshow:  false , imgshowopen:  "" , } ; } , mounted ( )  { this . queryProjectList ( ) ; } , methods:  { queryProjectList ( )  { new  Promise ( ( resolve,  reject )  =>  { Supplier. supplierselectone ( this . projectId) . then ( ( response )  =>  { if  ( response. result[ 0 ] . SupplierProjectConfigResp !=  null )  { this . tableList =  response. result[ 0 ] . SupplierProjectConfigResp; } if  ( response. result[ 0 ] . FastSupplierInfo !=  null )  { this . projectData =  response. result[ 0 ] . FastSupplierInfo; let  city1 =  response. result[ 0 ] . FastSupplierInfo. provinceCode; let  city2 =  response. result[ 0 ] . FastSupplierInfo. cityCode; this . formData. supplierName = response. result[ 0 ] . FastSupplierInfo. supplierName; this . formData. servicetype = response. result[ 0 ] . FastSupplierInfo. serviceClassify; this . formData. provincescities. push ( response. result[ 0 ] . FastSupplierInfo. provinceCode) ; this . formData. provincescities. push ( response. result[ 0 ] . FastSupplierInfo. cityCode) ; this . formData. address = response. result[ 0 ] . FastSupplierInfo. address; this . formData. contactsone = response. result[ 0 ] . FastSupplierInfo. linkMan; this . formData. contactstwo = response. result[ 0 ] . FastSupplierInfo. phoneNo; this . formData. mailbox =  response. result[ 0 ] . FastSupplierInfo. email; this . formData. employeesnum = response. result[ 0 ] . FastSupplierInfo. employeeNum; this . formData. establishyear = response. result[ 0 ] . FastSupplierInfo. establishYear; this . formData. registeredcapital = response. result[ 0 ] . FastSupplierInfo. registeredAssets; this . formData. services = response. result[ 0 ] . FastSupplierInfo. serviceScope; let  provinceName; let  cityName; for  ( const  address of  this . addressData)  { if  ( address. value ==  city1)  { provinceName =  address. label; for  ( const  cityItem of  address. children)  { if  ( cityItem. value ==  city2)  { cityName =  cityItem. label; } } } } this . city =  provinceName +  "-"  +  cityName; } if  ( response. result[ 0 ] . FastSupplierRateInfo !=  null )  { this . gradelist =  response. result[ 0 ] . FastSupplierRateInfo; } if  ( response. result[ 0 ] . SupplierInfo. fastSupplierFileDataList !=  null )  { let  arr = response. result[ 0 ] . SupplierInfo. fastSupplierFileDataList; ( this . Businesslicense =  [ ] ) , ( this . Taxpayercertificate =  [ ] ) , ( this . otherpicture =  [ ] ) , ( this . SupplierFileDataList =  [ ] ) , arr. forEach ( ( item )  =>  { if  ( item. fieldName ==  "Businesslicense" )  { this . Businesslicense. push ( item) ;  } if  ( item. fieldName ==  "Taxpayercertificate" )  { this . Taxpayercertificate. push ( item) ;  } if  ( item. fieldName ==  "otherpicture" )  { this . otherpicture. push ( item) ;  } if  ( item. fieldName ==  "enclosure" )  { this . SupplierFileDataList. push ( item) ;  } } ) ; } } ) . catch ( ( error )  =>  { reject ( error) ; } ) ; } ) ; } , editshow ( )  { this . createProjectShow =  true ; } , opengragrade ( )  { this . $router. push ( { path:  "/supplierrating" , query:  { projectId:  this . projectId, } , } ) ; } , submit ( name )  { this . $refs[ name] . validate ( ( valid )  =>  { if  ( valid)  { let  data =  { id:  this . projectId, supplierName:  this . formData. supplierName,  serviceClassify:  this . formData. servicetype,  provinceCode:  this . formData. provincescities[ 0 ] ,  cityCode:  this . formData. provincescities[ 1 ] ,  address:  this . formData. address,  linkMan:  this . formData. contactsone,  phoneNo:  this . formData. contactstwo,  email:  this . formData. mailbox,  employeeNum:  this . formData. employeesnum,  establishYear:  this . formData. establishyear,  registeredAssets:  this . formData. registeredcapital,  serviceScope:  this . formData. services,  status:  "N" , isDelete:  "N" , } ; setTimeout ( ( )  =>  { this . $Spin. hide ( ) ; } ,  2000 ) ; new  Promise ( ( resolve,  reject )  =>  { Supplier. supplierupdatelist ( data) . then ( ( response )  =>  { this . $Message. success ( "供应商信息编辑成功!" ) ; this . createProjectShow =  false ; this . queryProjectList ( ) ; } ) . catch ( ( error )  =>  { reject ( error) ; } ) ; } ) ; }  else  { this . $Message. error ( "请输入相关信息!" ) ; } } ) ; } , deleteImg ( id )  { new  Promise ( ( resolve,  reject )  =>  { Supplier. supplierpicdelete ( id) . then ( ( response )  =>  { this . queryProjectList ( ) ; this . $Message. success ( "删除成功!" ) ; } ) . catch ( ( error )  =>  { reject ( error) ; } ) ; } ) ; } , imgClick ( )  { document. getElementById ( "uploadFile" ) . click ( ) ; } , imgClickone ( )  { document. getElementById ( "uploadFileone" ) . click ( ) ; } , imgClicktwo ( )  { document. getElementById ( "uploadFiletwo" ) . click ( ) ; } , readLocalFile ( supplierId,  fieldName )  { var  param =  new  FormData ( ) ; let  files =  event. target. files[ 0 ] ; param. append ( "uploadFile" ,  files,  files. name) ; try  { new  Promise ( ( resolve,  reject )  =>  { Supplier. queryProjectIcon ( param,  supplierId,  fieldName) . then ( ( response )  =>  { if  ( response. result. fieldName ==  "Businesslicense" )  { this . Businesslicense. push ( response. result) ;  } if  ( response. result. fieldName ==  "Taxpayercertificate" )  { this . Taxpayercertificate. push ( response. result) ;  } if  ( response. result. fieldName ==  "otherpicture" )  { this . otherpicture. push ( response. result) ;  } } ) . catch ( ( error )  =>  { reject ( error) ; } ) ; document. getElementById ( "uploadFile" ) . value =  null ; document. getElementById ( "uploadFileone" ) . value =  null ; document. getElementById ( "uploadFiletwo" ) . value =  null ; } ) ; event. target. value =  " " ; }  catch  ( error)  { } } , opentupian ( url )  { this . imgshow =  true ; this . imgshowopen =  url; } , btnTranslate ( h,  params )  { let  btnArr; if  ( params. row. projectScore ==  "" )  { btnArr =  [ h ( "span" , { style:  { paddingLeft:  "7px" , color:  "#156CEE" , cursor:  "pointer" , } , on:  { click :  ( )  =>  { this . $router. push ( { path:  "/projectseriverating" , query:  { projectId:  params. row. projectId, Id:  params. row. id, } , } ) ; } , } , } , "去评分" ) , ] ; }  else  { btnArr =  [ h ( "span" , { style:  { paddingLeft:  "7px" , color:  "#156CEE" , cursor:  "pointer" , } , on:  { click :  ( )  =>  { this . $router. push ( { path:  "/projectseriverating" , query:  { projectId:  params. row. projectId, Id:  params. row. id, } , } ) ; } , } , } , "详情" ) , ] ; } return  h ( "div" ,  btnArr) ; } , openfile ( url )  { window. location. href =  url; } , openlist ( )  { this . queryProjectList ( ) ; } , } , 
} ; 
 </ script> < style  scoped  lang = ' less' > 
@import  "./components/projectcreate" ;  
.box_big  { width :  100%; height :  78vh; background :  #ffffff; border-radius :  16px; margin-top :  15px; padding :  15px; border :  1px solid rgba ( 245,  245,  245,  0.8) ; box-shadow :  1px 1px 5px 0px #cccc; overflow-y :  scroll; 
} 
.page_title  { font-size :  32px; color :  #333333; font-weight :  500; 
} 
.fize  { font-size :  18px; font-weight :  bold; margin-top :  20px; margin-left :  10px; 
} 
.project_info_content_data  { display :  flex; flex-wrap :  wrap; justify-content :  space-between;> div  { min-width :  300px; width :  33%; } 
} 
.flex_line_pi  { font-size :  16px; display :  flex; // align-items :  center; padding :  7px 0; width :  33%;/deep/ .flex_line_pi_l  { color :  #666666; white-space :  nowrap; width :  120px; padding-left :  10px; // line-height :  35px; } .flex_line_pi_r  { color :  #333333; width :  66%; } 
} 
.details  { float :  right; cursor :  pointer; padding :  8px 20px; background :  #156cee; border-radius :  8px; color :  #ffffff; font-size :  15px; margin-right :  20px; 
} 
.paddingleft  { // margin-top : 20px; margin :  20px 0 0 13px; display :  flex; align-items :  center;span  { color :  #999999; padding-right :  60px; } 
} 
.table  { border-radius :  8px; box-shadow :  0px 5px 20px 0px rgba ( 0,  0,  0,  0.1) ; width :  98% !important ; margin :  0 auto; 
} 
.ivu-table-cell  { padding-left :  0px !important ; 
} 
.table /deep/ .ivu-table  { width :  100% !important ; 
} /deep/ .ivu-card-body  { padding :  0px;.div_img  { width :  200px; height :  200px;img  { width :  100%; border-radius :  15px; } } 
} 
 </ style>  
< style  lang = " less"   scoped > 
.data_list  { display :  flex; flex-wrap :  wrap; overflow :  hidden; height :  80%; position :  relative; padding-right :  14px; 
} 
.data_item  { display :  flex; align-items :  center; padding :  10px;.data_item_name  { border :  1px solid #ccc; border-radius :  10px; width :  240px; height :  170px; overflow :  hidden;img  { width :  100%; height :  100%; } } 
} 
.boximg  { float :  left; position :  relative;.boximg_delete  { width :  24px; height :  24px; position :  absolute; background :  url ( "../../assets/删除.svg" ) ; right :  -11px; top :  -10px; cursor :  pointer; line-height :  20px; border-radius :  20px; } 
} 
.input  { width :  200px; height :  170px; border :  1px dashed #ccc; float :  left; margin-right :  10px; position :  absolute; left :  0; cursor :  pointer;.span  { position :  absolute; top :  50%; left :  50%; transform :  translate ( -50%,  -50%) ; } 
} 
 </ style>  
< style  lang = " less"   scoped > 
.box_small  { width :  100%; overflow :  hidden; margin-top :  10px;.box_img_top  { float :  left; width :  120px; text-align :  right; } .box_img_bottom  { float :  left; width :  240px; height :  170px; cursor :  pointer; margin-right :  10px;img  { width :  100%; height :  100%; } } 
} 
.imgopenshow  { img  { width :  100%; height :  100%; } 
} 
li  { list-style :  none; 
} 
.licolor  { width :  100%; margin :  10px 0px; background :  #f5f5f5; display :  flex; justify-content :  space-between;.deletex  { color :  red; padding :  0px 10px; cursor :  pointer; } 
} 
.icon  { margin-top :  8px; margin-right :  10px; width :  25px; height :  25px; background :  rgb ( 167,  166,  166) ; border-radius :  20px; text-align :  center; line-height :  25px; color :  #ffffff; font-size :  18px; cursor :  pointer; 
} 
 </ style>