product.vue 56 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840
  1. <template>
  2. <div class="user-content" >
  3. <div class="provider" id="provider-wrapper">
  4. <div class="search-content" style="border-bottom: 1px solid #f5f5f5;padding-bottom: 0.25rem">
  5. <input type="text" placeholder="请输入您要查找的品牌或型号" v-model="seekKeyword" @keyup.13="searchSeek">
  6. <span @click="searchSeek" >
  7. <i class="iconfont icon-sousuo"></i>
  8. </span>
  9. </div>
  10. <div v-bind:key="index" v-for="(item, index) in GetEnterpriseListData" class="providerList">
  11. <div v-if="providerType !== 'onLine'">
  12. <div class="top">
  13. <div class="icon" :class="item.standard ? 'standed' : 'istanded'"></div>
  14. <div class="text">
  15. {{item.pcmpcode}}
  16. </div>
  17. <img v-if="item.addProductPerson" class="person-flag" src="/images/mobile/product/mine_icon.png" alt="">
  18. </div>
  19. <div class="content">
  20. <div class="fl" :class="providerType === 'enterprise' ? 'fullWidth': ''">
  21. <div class="linetext">品牌:{{item.pbranden}}</div>
  22. <div class="linetext">物料名称(类目):
  23. <template v-if="!item.kind">
  24. {{item.kinden || '-'}}
  25. </template>
  26. <template v-else>
  27. {{item.kind || '-'}}
  28. </template>
  29. </div>
  30. <div class="linetext">规格:{{item.spec}}</div>
  31. <div class="linetext">单位:PCS</div>
  32. </div>
  33. <div class="fr" v-if="providerType !== 'enterprise'" :class="providerType == 'enterprise' && item.batchCount > 0 ? '' : 'addtop'" >
  34. <!--<div class="look" >查看产品</div>-->
  35. <!--<div class="add" >加入个人产品</div>-->
  36. <div class="delete" v-if="providerType == 'person'" @click="deleteProvider(item.id, index)">删除</div>
  37. </div>
  38. </div>
  39. <!--v-if="item.batchCount && providerType == 'enterprise'"-->
  40. <!--v-if="providerType == 'enterprise'"-->
  41. <div class="clearfix" v-if="providerType === 'enterprise'">
  42. <div class="pull-right add" v-if="providerType === 'enterprise'" @click="addProtoperson(item)" :class="{noadd: item.addProductPerson}">加入个人产品</div>
  43. <div class="pull-right look" @click="lookProductitem(item.id, item)" v-if="item.batchCount">查看产品</div>
  44. <div class="pull-right look" @click="toAddpro(item)" v-else>编辑上架</div>
  45. <div class="pull-right look" v-if="providerType === 'enterprise'" @click="updateMateriel(item)">编辑物料</div>
  46. </div>
  47. </div>
  48. <div v-else>
  49. <div class="top top2">
  50. <div class="icon" :class="item.standard ? 'standed' : 'istanded'"></div>
  51. <div class="text">
  52. {{item.code}}
  53. </div>
  54. <!-- <div class="pms">
  55. {{item.storeid === '33069557578d44e69bd91ad12d28a8d4' ? '寄售' : '自营'}}
  56. </div>-->
  57. <img class="store-type" v-if="item.storeid === '33069557578d44e69bd91ad12d28a8d4'" src="/images/mobile/product/consignment.png" alt="">
  58. <img class="store-type" src="/images/mobile/product/self.png" alt="" v-else >
  59. </div>
  60. <div class="middle">
  61. <div class="list" style="height: 0.46rem;">
  62. <div class="fl">
  63. <div class="name">品牌:</div>
  64. <div class="text">{{item.brandNameEn}}</div>
  65. </div>
  66. <div class="fr">
  67. <div class="button" @click="update(item)">编辑</div>
  68. <div class="button" @click="offProduct(item, index)">下架</div>
  69. </div>
  70. </div>
  71. <div class="list">
  72. <div class="fl">
  73. <div class="name">物料名称(类目):</div>
  74. <div class="text">{{item.kindNameCn || '-'}}</div>
  75. </div>
  76. <div class="fr">
  77. <div class="textinfo" v-if="item.breakUp">可拆卖</div>
  78. </div>
  79. </div>
  80. <div class="list">
  81. <div class="fl">
  82. <div class="name">规格:</div>
  83. <div class="text">{{item.spec || '-'}}</div>
  84. </div>
  85. <div class="fr">
  86. <div class="name">交期(天):</div>
  87. <div class="text" v-if="item.b2cMaxDelivery && (item.b2cMaxDelivery != item.b2cMinDelivery)" v-text="item.b2cMinDelivery + '-'+ item.b2cMaxDelivery"></div>
  88. <div class="text" v-if="item.b2cMaxDelivery && (item.b2cMaxDelivery == item.b2cMinDelivery)" v-text="item.b2cMinDelivery"></div>
  89. </div>
  90. </div>
  91. <div class="list">
  92. <div class="fl">
  93. <div class="name">最小包装数:</div>
  94. <div class="text">{{item.minPackQty}}</div>
  95. </div>
  96. <div class="fr">
  97. <div class="name">库存:</div>
  98. <div class="text">{{item.reserve}}</div>
  99. </div>
  100. </div>
  101. <div class="list">
  102. <div class="fl">
  103. <div class="name">包装方式:</div>
  104. <div class="text">{{item.packaging || '无包装信息'}}</div>
  105. </div>
  106. <div class="fr">
  107. <div class="name">最小起订量:</div>
  108. <div class="text" style="color: #f31919">{{item.minBuyQty}}</div>
  109. </div>
  110. </div>
  111. <div class="list">
  112. <div class="name">生产日期:</div>
  113. <div class="text" :title="item.produceDate">{{item.produceDate || '-'}}</div>
  114. </div>
  115. <div class="list">
  116. <div class="name left">价格梯度:</div>
  117. <div class="table left">
  118. <ul>
  119. <li class="title">
  120. <div>分段数量/PCS</div>
  121. <div>分段单价</div>
  122. </li>
  123. <li v-for="price in item.prices">
  124. <div>{{price.start}}+</div>
  125. <div v-if="item.currencyName == 'RMB'">¥{{price.rMBPrice}}</div>
  126. <div v-else>${{price.rMBPrice}}</div>
  127. </li>
  128. </ul>
  129. </div>
  130. </div>
  131. </div>
  132. <!--<div class="labelinfo">
  133. <div class="labelicon">标签</div>
  134. <div class="labeltext">{{item.tag}}</div>
  135. </div>-->
  136. <div class="label-text">{{item.tag || '暂无标签信息'}}</div>
  137. </div>
  138. </div>
  139. </div>
  140. <!-- 企业产品库 查看信息 -->
  141. <div class="deleteKuang" v-show="showMoreinfn" @touchmove="preventTouchMove($event)">
  142. <div class="Kuang">
  143. <div class="title">产品信息<i @click="closeMoreinfo()" class="icon-guanbi iconfont"></i></div>
  144. <div class="overflow-hidden" ref="mobileModalBox" style="max-height: 9.3rem">
  145. <div class="content">
  146. <div class="infob">
  147. <div class="info"><div class="name">品牌:</div><div>{{cnmpBand}}</div></div>
  148. <div class="info"><div class="name">物料名称(类目):</div><div>{{cnmpType || '-'}}</div></div>
  149. <div class="info"><div class="name">型号:</div><div>{{cnmpCode}}</div></div>
  150. </div>
  151. <div class="content_sq" v-bind:key="item.id" v-for="(item, index) in vendorlist" >
  152. <div class="labelBg">
  153. <div class="labelinfo" style="margin-left: -0.1rem">
  154. <div class="labelicon" style="vertical-align:top;margin-top: 0.09rem">标签</div>
  155. <div class="labeltext">{{item.tag}}</div>
  156. </div>
  157. <div class="middle">
  158. <div class="list" style="height: auto">
  159. <div class="fl">
  160. <div class="name">
  161. <div class="pms">
  162. {{item.storeid === '33069557578d44e69bd91ad12d28a8d4' ? '寄售' : '自营'}}
  163. </div>
  164. </div>
  165. </div>
  166. <div class="fr">
  167. <div class="textinfo" v-if="item.breakUp">可拆卖</div>
  168. </div>
  169. </div>
  170. <div class="list list-long" style="height: auto">
  171. <div class="fl">
  172. <div class="name">规格:</div>
  173. <div class="text">{{item.spec || '-'}}</div>
  174. </div>
  175. </div>
  176. <div class="list" style="height: auto">
  177. <div class="fl">
  178. <div class="name">最小包装数:</div>
  179. <div class="text">{{item.minPackQty}}</div>
  180. </div>
  181. <div class="fr">
  182. <div class="name">交期(天):</div>
  183. <div class="text" v-if="item.b2cMaxDelivery && (item.b2cMaxDelivery != item.b2cMinDelivery)" v-text="item.b2cMinDelivery + '-'+ item.b2cMaxDelivery"></div>
  184. <div class="text" v-if="item.b2cMaxDelivery && (item.b2cMaxDelivery == item.b2cMinDelivery)" v-text="item.b2cMinDelivery"></div>
  185. </div>
  186. </div>
  187. <div class="list" style="height: auto">
  188. <div class="fl">
  189. <div class="name">包装方式:</div>
  190. <div class="text">{{item.packaging || '无包装信息'}}</div>
  191. </div>
  192. <div class="fr">
  193. <div class="name">库存:</div>
  194. <div class="text">{{item.reserve}}</div>
  195. </div>
  196. </div>
  197. <div class="list" style="height: auto">
  198. <div class="fl">
  199. <div class="name">生产日期:</div>
  200. <div class="text" :title="item.produceDate">{{item.produceDate || '-'}}</div>
  201. </div>
  202. <div class="fr">
  203. <div class="name">最小起订量:</div>
  204. <div class="text" style="color: #f31919">{{item.minBuyQty}}</div>
  205. </div>
  206. </div>
  207. <div class="list" style="height: auto">
  208. <div class="name left">价格梯度:</div>
  209. <div class="table left">
  210. <ul>
  211. <li class="title">
  212. <div>分段数量/PCS</div>
  213. <div>分段单价</div>
  214. </li>
  215. <li v-for="price in item.prices">
  216. <div>{{price.start}}+</div>
  217. <div v-if="item.currencyName == 'RMB'">¥{{price.rMBPrice}}</div>
  218. <div v-else>${{price.rMBPrice}}</div>
  219. </li>
  220. </ul>
  221. </div>
  222. </div>
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. </div>
  228. </div>
  229. </div>
  230. <div class="deleteKuang" v-show="showDelete">
  231. <div class="kuangContent">
  232. <div class="title">删除信息</div>
  233. <div class="titleinfo">是否删除该产品</div>
  234. <!--<div class="info" v-show="isUploadpro">*存在已上架信息</div>-->
  235. <div class="K_btn">
  236. <div class="cancelBtn" @click="cancelFn()">取消</div>
  237. <div class="answerBtn" @click="deleteFn()">确定</div>
  238. </div>
  239. </div>
  240. </div>
  241. <div class="deleteKuang" v-show="showoffshelf">
  242. <div class="kuangContent">
  243. <div class="title">系统信息</div>
  244. <div class="titleinfo">是否下架该产品?</div>
  245. <!--<div class="info" v-show="isUploadpro">*存在已上架信息</div>-->
  246. <div class="K_btn">
  247. <div class="cancelBtn" @click="cancelFn()">取消</div>
  248. <div class="answerBtn" @click="offshelfFn()">确定</div>
  249. </div>
  250. </div>
  251. </div>
  252. <div class="none-state" v-show="StateNone">
  253. <img src="/images/mobile/@2x/search-empty.png">
  254. <p>暂无数据</p>
  255. <nuxt-link to="/">返回首页</nuxt-link>
  256. </div>
  257. <remind-box :title="collectResult" :timeoutCount="timeoutCount"></remind-box>
  258. <pull-up :fixId="'provider-wrapper'" :searchMore="isSearchSearchingMore" :allPage="EnterprisePage" :page="seekPage" @pullUpAction="getMoreSearch"></pull-up>
  259. <!-- 在售产品编辑框 -->
  260. <!-- 编辑物料 -->
  261. <div class="update-materiel" v-if="showMateriel">
  262. <div class="mobile-nav">
  263. <div class="mobile-header mobile-center-header">
  264. <a @click="showMateriel = false"><i class="iconfont icon-fanhui"></i></a>
  265. <p>编辑物料</p>
  266. <p class="en-name">
  267. <img :src="`/images/mobile/center/${user.data.enterprise && user.data.enterprise.uu ? 'en' : 'self'}.png`" alt="">{{currentEnName}}
  268. </p>
  269. </div>
  270. </div>
  271. <div class="update-materiel-wrapper" @click="clearInfo()">
  272. <!--<div class="clearfix">-->
  273. <!--<div class="update-materiel-wrapper-image pull-left">-->
  274. <!--<img :src="cmpImg || '/images/mobile/openStore/upload.png'" style='width: 1.1rem; height: 1.1rem;display:block;margin: 0.2rem auto'/>-->
  275. <!--<input type="file" class="com-input" @change="update" accept="image/jpeg,image/jpg,image/gif,image/bmp,image/png,.pdf" />-->
  276. <!--<span style="position: relative">点击上传</span>-->
  277. <!--</div>-->
  278. <!--<div class="uploadImgBtn pull-left">上传图片<input type="file" class="com-input" @change="update" accept="image/jpeg,image/jpg,image/gif,image/bmp,image/png,.pdf" /></div>-->
  279. <!--<span class="uploadImgInfo pull-left">图片上传须知</span>-->
  280. <!--</div>-->
  281. <template v-if="MaterielItem.standard === 1">
  282. <img class="imgUrl" src="/images/mobile/@2x/productDetail/Strand.png" />
  283. </template>
  284. <template v-else>
  285. <img class="imgUrl" src="/images/mobile/@2x/productDetail/isStrand.png" />
  286. </template>
  287. <div class="update-materiel-wrapper-list clearfix" :class="{'overHidden': MaterielItem.standard === 1}">
  288. <div class="name pull-left"><a class="red">*</a>品牌:</div>
  289. <template v-if="MaterielItem.standard === 1">
  290. {{MaterielItem.brand}}
  291. </template>
  292. <template v-else>
  293. <div class="input pull-left clearfix" :class="{'overHidden': MaterielItem.standard === 1}">
  294. <input type="text" v-model="MaterielItem.brand" placeholder="请勿填中文符号" @blur.stop="checkBrand" @input.stop="onBrandChange"/>
  295. <ul class="similar brand-similar-list" v-show="showSimilarBrandList && MaterielItem.brand">
  296. <li v-for="sBrand in similarBrand" @click.stop="setBrand(sBrand.nameEn)">{{sBrand.nameEn}}</li>
  297. </ul>
  298. <i class="iconfont icon-guanbi1" @click.stop="MaterielItem.brand = ''"></i>
  299. </div>
  300. </template>
  301. </div>
  302. <div class="update-materiel-wrapper-list clearfix" :class="{'overHidden': MaterielItem.standard === 1}">
  303. <div class="name pull-left"><a class="red">*</a>物料名称(类目):</div>
  304. <template v-if="MaterielItem.standard === 1">
  305. {{MaterielItem.kind}}
  306. </template>
  307. <template v-else>
  308. <div class="input pull-left clearfix" style="width: 4.09rem">
  309. <!--<input type="text" v-model="MaterielItem.kind" @blur="checkCode" @input="onCodeChange" placeholder="请勿填中文符号">-->
  310. <input type="text" placeholder="请输入物料名称(类目)" v-model="MaterielItem.kind"/>
  311. <i class="iconfont icon-guanbi1" @click.stop="MaterielItem.kind = ''"></i>
  312. </div>
  313. </template>
  314. </div>
  315. <div class="update-materiel-wrapper-list clearfix">
  316. <div class="name pull-left"><a class="red">*</a>型号:</div>
  317. <template v-if="MaterielItem.standard === 1">
  318. {{MaterielItem.cmpCode}}
  319. </template>
  320. <template v-else>
  321. <div class="input pull-left clearfix">
  322. <input type="text" v-model="MaterielItem.cmpCode" @blur.stop="checkCode" @input.stop="onCodeChange" placeholder="请勿填中文符号">
  323. <ul class="similar" v-show="showSimilarCodeList && MaterielItem.cmpCode">
  324. <li v-for="sCode in similarCode" @click.stop="setCode(sCode.code)">{{sCode.code}}</li>
  325. </ul>
  326. <!--<input type="text" placeholder="请输入型号" v-model="MaterielItem.cmpCode"/>-->
  327. <i class="iconfont icon-guanbi1" @click.stop="MaterielItem.cmpCode = ''"></i>
  328. </div>
  329. </template>
  330. </div>
  331. <div class="update-materiel-wrapper-list clearfix">
  332. <div class="name pull-left"><a class="red" style="opacity: 0">*</a>规格:</div>
  333. <div class="input pull-left clearfix">
  334. <input type="text" placeholder="请输入规格" v-model="MaterielItem.spec" @blur="checkSpec" @input="onSpecInput"/>
  335. <i class="iconfont icon-guanbi1" @click.stop="MaterielItem.spec = ''"></i>
  336. </div>
  337. </div>
  338. <div class="update-materiel-wrapper-controll clearfix">
  339. <div class="pull-left" @click.stop="saveMateriel()">保存</div>
  340. <div class="pull-right" @click.stop="saveMateriel('a')">取消</div>
  341. </div>
  342. </div>
  343. </div>
  344. </div>
  345. </template>
  346. <script>
  347. import { RemindBox, PullUp } from '~components/mobile/common'
  348. import Upload from '~components/common/upload/upload.vue'
  349. export default {
  350. layout: 'mobile',
  351. middleware: 'authenticated',
  352. name: 'mobileProduct',
  353. data() {
  354. return {
  355. GetEnterpriseListData: [],
  356. seekPage: 1,
  357. providerType: this.$route.query.providerType,
  358. showMoreinfn: false,
  359. showDelete: false,
  360. isSearchSearchingMore: false,
  361. seekKeyword: '',
  362. collectResult: '',
  363. timeoutCount: 0,
  364. EnterprisePage: 1,
  365. chooseItem: {},
  366. vendorlist: [], // 查看更多信息
  367. showoffshelf: false,
  368. showMateriel: false,
  369. imgStyle: 'width: 1.1rem;height:1.1rem',
  370. MaterielItem: {},
  371. showSimilarCodeList: false,
  372. showSimilarBrandList: false,
  373. similarCode: [],
  374. similarBrand: [],
  375. cmpImg: ''
  376. }
  377. },
  378. methods: {
  379. clearInfo() {
  380. this.showSimilarCodeList = false
  381. this.showSimilarBrandList = false
  382. },
  383. toAddpro(list) {
  384. let item = {
  385. brandNameEn: list.pbranden,
  386. kindNameCn: list.kinden || list.kind,
  387. code: list.pcmpcode,
  388. spec: list.spec,
  389. prices: [{
  390. end: '',
  391. rMBNTPrice: '',
  392. rMBPrice: '',
  393. start: '1'
  394. }],
  395. minBuyQty: 1,
  396. minPackQty: 1,
  397. productid: list.id,
  398. prodNum: list.prodNum,
  399. currencyName: this.$store.state.option.storeStatus.data.enType === 'MAINLAND' ? 'RMB' : 'USD',
  400. breakUp: false
  401. }
  402. this.$store.commit('product/brand/GET_ONSALE_DETAILS_SUCCESS', item)
  403. localStorage.setItem('ProductListItem', JSON.stringify(item))
  404. this.$router.push(`/mobile/center/vendor/productdetails?formurl=productlist&return=goBack`)
  405. },
  406. update(item) {
  407. this.$store.commit('product/brand/GET_ONSALE_DETAILS_SUCCESS', item)
  408. this.$router.push('/mobile/center/vendor/productdetails')
  409. localStorage.setItem('ProductListItem', JSON.stringify(item))
  410. },
  411. offProduct(item) {
  412. this.showoffshelf = true
  413. this.shelfItem = item
  414. },
  415. offshelfFn() {
  416. let item = this.shelfItem
  417. this.$http.put(`/trade/goods/provider/off/shelf?batchCodes=${item.batchCode}`).then(res => {
  418. if (res.data.success) {
  419. this.timeoutCount++
  420. this.collectResult = '下架成功'
  421. this.showoffshelf = false
  422. this.seekPage = 1
  423. this.GetEnterpriseListData.splice(0, this.GetEnterpriseListData.length)
  424. this.GetEnterpriseListData = null
  425. this.GetEnterpriseListData = []
  426. this.reloadData()
  427. } else {
  428. this.timeoutCount++
  429. this.collectResult = res.data.message
  430. }
  431. }, err => {
  432. this.timeoutCount++
  433. this.collectResult = err.response.data
  434. })
  435. },
  436. // scroll: function () {
  437. // let scrolled = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop
  438. // if (Math.ceil(scrolled + window.screen.availHeight) >= document.body.scrollHeight && !this.isSearchSearchingMore && this.seekPage < this.EnterprisePage) {
  439. // this.getMoreSearch()
  440. // }
  441. // },
  442. searchSeek: function () {
  443. this.GetEnterpriseListData.splice(0, this.GetEnterpriseListData.length)
  444. this.GetEnterpriseListData = null
  445. this.GetEnterpriseListData = []
  446. this.seekPage = 1
  447. this.reloadData()
  448. },
  449. reloadData: function () {
  450. this.getResourceProvidor()
  451. },
  452. // blur: function() {
  453. // setTimeout(() => {
  454. // this.$store.dispatch('mobile/SetInputGetFocus', false)
  455. // }, 300)
  456. // },
  457. // inputGetFocus: function() {
  458. // setTimeout(() => {
  459. // this.$store.dispatch('mobile/SetInputGetFocus', true)
  460. // }, 300)
  461. // },
  462. getMoreSearch: function () {
  463. this.seekPage++
  464. this.isSearchSearchingMore = true
  465. this.reloadData()
  466. },
  467. // 获取当前企业产品库
  468. GetEnterpriseList: function() {
  469. let params = {
  470. _status: 'all',
  471. count: 20,
  472. isStandard: true,
  473. keyword: this.seekKeyword || '',
  474. page: this.seekPage,
  475. sorting: { id: 'DESC' },
  476. type: 'all'
  477. }
  478. return this.$http.get('/trade/products', { params })
  479. },
  480. // 获取当前个人产品库
  481. GetPersonList: function(cb) {
  482. let params = {
  483. _status: 'all',
  484. count: 20,
  485. isStandard: true,
  486. keyword: this.seekKeyword || '',
  487. page: this.seekPage,
  488. sorting: { id: 'DESC' },
  489. type: 'all'
  490. }
  491. return this.$http.get('/trade/products/person', { params })
  492. },
  493. // 获取当前在售产品
  494. GetOnlineList: function() {
  495. let params = {
  496. count: 10,
  497. keyword: this.seekKeyword || '',
  498. page: this.seekPage,
  499. sorting: { 'createdDate': 'DESC' },
  500. status: '601-602'
  501. }
  502. return this.$http.get('/trade/goods/store/status', { params })
  503. },
  504. // 产品管理切换
  505. switchprovide: function(type) {
  506. this.providerType = type
  507. this.seekPage = 1
  508. this.GetEnterpriseListData.splice(0, this.GetEnterpriseListData.length)
  509. this.GetEnterpriseListData = null
  510. this.GetEnterpriseListData = []
  511. this.getResourceProvidor()
  512. },
  513. // 删除个人产品库
  514. deleteProvider: function(id, index) {
  515. this.showDelete = true
  516. this.deleteId = id
  517. // this.deleteItemIndex = index
  518. // this.$http.get(`/trade/goods/${id}/deleteMessage`).then(response => {
  519. // this.isUploadpro = response.data.code
  520. // })
  521. },
  522. deleteFn: function() {
  523. this.$http.delete(`/trade/products/${this.deleteId}?isPerson=1`).then(response => {
  524. this.showDelete = false
  525. this.collectResult = '删除成功'
  526. this.timeoutCount++
  527. this.seekPage = 1
  528. this.GetEnterpriseListData.splice(0, this.GetEnterpriseListData.length)
  529. this.isChange2 = true
  530. this.reloadData()
  531. // this.GetEnterpriseListData.splice(this.deleteItemIndex, 1)
  532. }, () => {
  533. this.showDelete = false
  534. this.collectResult = '删除失败'
  535. this.timeoutCount++
  536. })
  537. },
  538. cancelFn: function() {
  539. this.showDelete = false
  540. this.showoffshelf = false
  541. },
  542. // 获取相对应的信息
  543. getResourceProvidor: function() {
  544. if (this.providerType === 'enterprise') {
  545. this.GetEnterpriseList().then(res => {
  546. this.GetEnterpriseListData = this.GetEnterpriseListData.concat(res.data.content)
  547. this.EnterprisePage = res.data.totalPages
  548. this.isSearchSearchingMore = false
  549. })
  550. } else if (this.providerType === 'person') {
  551. this.GetPersonList().then(res => {
  552. this.GetEnterpriseListData = this.GetEnterpriseListData.concat(res.data.content)
  553. this.EnterprisePage = res.data.totalPages
  554. this.isSearchSearchingMore = false
  555. })
  556. } else if (this.providerType === 'onLine') {
  557. this.GetOnlineList().then(res => {
  558. this.GetEnterpriseListData = this.GetEnterpriseListData.concat(res.data.content)
  559. this.EnterprisePage = res.data.totalPages
  560. this.isSearchSearchingMore = false
  561. })
  562. }
  563. },
  564. // 查看企业产品库更多信息
  565. lookProductitem: function(id, item) {
  566. this.chooseItem = item
  567. this.$store.commit('product/component/REQUEST_NOWPRODUCTINFO_SUCCESS', item)
  568. localStorage.setItem('productInfoItem', JSON.stringify(item))
  569. this.$router.push(`/mobile/center/vendor/productList?uuid=${id}`)
  570. // this.$http.get(`/trade/products/goods/productid/${id}`).then(res => {
  571. // this._initscroll()
  572. // this.showMoreinfn = true
  573. // this.vendorlist = res.data
  574. // })
  575. },
  576. closeMoreinfo: function() {
  577. this.showMoreinfn = false
  578. },
  579. // 编辑物料
  580. updateMateriel(item) {
  581. this.MaterielItem = item
  582. this.$item = this.baseUtils.deepCopy(item)
  583. this.cmpImg = item.cmpImg || ''
  584. // this.MaterielItem.cmpImg = item.cmpImg || ''
  585. this.showMateriel = true
  586. },
  587. addProtoperson: function(item) {
  588. if (item.addProductPerson) {
  589. this.collectResult = '已在个人产品库'
  590. this.timeoutCount++
  591. return false
  592. }
  593. this.$http.post('/trade/products/person', [item.id])
  594. .then(response => {
  595. this.collectResult = '绑定成功'
  596. this.timeoutCount++
  597. this.seekPage = 1
  598. this.GetEnterpriseListData.splice(0, this.GetEnterpriseListData.length)
  599. this.GetEnterpriseListData = null
  600. this.GetEnterpriseListData = []
  601. this.reloadData()
  602. }, () => {
  603. this.collectResult = '绑定失败'
  604. this.timeoutCount++
  605. })
  606. },
  607. checkBrand: function () {
  608. // this.MaterielItem.brand = this.MaterielItem.brand && this.MaterielItem.brand !== ''
  609. if (!this.MaterielItem.brand || this.MaterielItem.brand === '') {
  610. this.setRemindText('品牌不能为空')
  611. }
  612. return this.MaterielItem.brand
  613. },
  614. checkCode: function () {
  615. if (!this.MaterielItem.cmpCode || this.MaterielItem.cmpCode === '') {
  616. this.setRemindText('型号不能为空')
  617. }
  618. return this.MaterielItem.cmpCode
  619. },
  620. onCodeChange: function () {
  621. this.MaterielItem.cmpCode = this.MaterielItem.cmpCode.trim()
  622. if ((/[^\x00-\xff]/g).test(this.MaterielItem.cmpCode)) {
  623. let chineseIndex = -1
  624. for (let i = 0; i < this.MaterielItem.cmpCode.length; i++) {
  625. if ((/[^\x00-\xff]/g).test(this.MaterielItem.cmpCode.charAt(i))) {
  626. chineseIndex = i
  627. break
  628. }
  629. }
  630. this.MaterielItem.cmpCode = this.baseUtils.cutOutString(this.MaterielItem.cmpCode, chineseIndex)
  631. } else if (this.MaterielItem.cmpCode && this.baseUtils.getRealLen(this.MaterielItem.cmpCode) > 100) {
  632. this.MaterielItem.cmpCode = this.baseUtils.cutOutString(this.MaterielItem.cmpCode, 100)
  633. } else {
  634. this.getSimilarCode()
  635. }
  636. },
  637. onBrandChange: function () {
  638. this.MaterielItem.brand = this.MaterielItem.brand.trim()
  639. if ((/[^\x00-\xff]/g).test(this.MaterielItem.brand)) {
  640. let chineseIndex = -1
  641. for (let i = 0; i < this.MaterielItem.brand.length; i++) {
  642. if ((/[^\x00-\xff]/g).test(this.MaterielItem.brand.charAt(i)) && !(/[\u4e00-\u9fa5]/).test(this.MaterielItem.brand.charAt(i))) {
  643. chineseIndex = i
  644. break
  645. }
  646. }
  647. if (chineseIndex > -1) {
  648. this.MaterielItem.brand = this.MaterielItem.brand.substring(0, chineseIndex)
  649. }
  650. } else if (this.MaterielItem.brand && this.baseUtils.getRealLen(this.MaterielItem.brand) > 50) {
  651. this.MaterielItem.brand = this.baseUtils.cutOutString(this.MaterielItem.brand, 50)
  652. } else {
  653. this.getSimilarBrand()
  654. }
  655. },
  656. getSimilarBrand: function () {
  657. if (this.MaterielItem.brand) {
  658. this.$http.get('/search/similarBrands', {params: {keyword: this.MaterielItem.brand}})
  659. .then(response => {
  660. this.similarBrand = response.data
  661. this.showSimilarBrandList = response.data.length > 0
  662. })
  663. } else {
  664. this.showSimilarBrandList = false
  665. }
  666. },
  667. getSimilarCode: function () {
  668. if (this.MaterielItem.cmpCode) {
  669. this.$http.get('/search/similarComponents', {params: {keyword: this.MaterielItem.cmpCode}})
  670. .then(response => {
  671. this.similarCode = response.data
  672. this.showSimilarCodeList = response.data.length > 0
  673. })
  674. } else {
  675. this.showSimilarCodeList = false
  676. }
  677. },
  678. setCode: function (code) {
  679. this.MaterielItem.cmpCode = code
  680. this.showSimilarCodeList = false
  681. },
  682. setBrand: function (brand) {
  683. this.MaterielItem.brand = brand
  684. this.showSimilarBrandList = false
  685. },
  686. setRemindText: function (str) {
  687. this.collectResult = str
  688. this.timeoutCount++
  689. },
  690. checkSpec: function () {
  691. // let nullStrFlag =
  692. // this.MaterielItem.spec = nullStrFlag
  693. if (!this.baseUtils.checkNullStr(this.MaterielItem.spec)) {
  694. this.setRemindText('规格输入不合法')
  695. }
  696. return this.MaterielItem.spec
  697. },
  698. onSpecInput: function () {
  699. if (this.MaterielItem.spec && this.baseUtils.getRealLen(this.MaterielItem.spec) > 100) {
  700. this.MaterielItem.spec = this.baseUtils.cutOutString(this.MaterielItem.spec, 100)
  701. }
  702. },
  703. saveMateriel(str) {
  704. if (str) {
  705. let _key1 = Object.keys(this.$item)
  706. let _key2 = Object.keys(this.MaterielItem)
  707. for (let i = 0; i < _key1.length; i++) {
  708. this.MaterielItem[_key2[i]] = this.$item[_key1[i]]
  709. }
  710. this.showMateriel = false
  711. return
  712. }
  713. if (this.MaterielItem.brand === '') {
  714. this.setRemindText('品牌不能为空')
  715. return
  716. } else if (this.MaterielItem.kind === '') {
  717. this.setRemindText('类目不能为空')
  718. return
  719. } else if (this.MaterielItem.cmpCode === '') {
  720. this.setRemindText('型号不能为空')
  721. return
  722. }
  723. this.MaterielItem.pcmpcode = this.MaterielItem.cmpCode
  724. this.MaterielItem.pbranden = this.MaterielItem.brand
  725. this.MaterielItem.pbranden = this.MaterielItem.brand
  726. this.$http.post('/trade/products/update/product', this.MaterielItem).then(res => {
  727. this.setRemindText('修改成功')
  728. this.showMateriel = false
  729. this.page = 1
  730. this.getResourceProvidor()
  731. })
  732. },
  733. update (e) {
  734. let file = e.target.files[0]
  735. if (file.size > 3 * 1024 * 1024) {
  736. this.setRemindText(`上传文件不得超过3M`)
  737. }
  738. let param = new FormData()
  739. param.append('file', file, file.name)
  740. param.append('chunk', '0')
  741. if (file.type === 'application/pdf') {
  742. this.setRemindText(`请选择有效图片进行上传`)
  743. return
  744. }
  745. let config = {
  746. headers: {'Content-Type': 'multipart/form-data'}
  747. }
  748. this.$http.post('/api/images', param, config)
  749. .then(response => {
  750. this.MaterielItem.img = response.data[0].path
  751. this.cmpImg = response.data[0].path
  752. })
  753. }
  754. },
  755. computed: {
  756. // 是否展示空数据
  757. StateNone() {
  758. return this.GetEnterpriseListData.length === 0 && this.EnterprisePage === 0
  759. },
  760. cnmpCode() { // 型号
  761. if (this.chooseItem.pcmpcode) {
  762. return this.chooseItem.pcmpcode
  763. }
  764. return '-'
  765. },
  766. cnmpType() { // 物料名称
  767. return this.chooseItem.kind || this.chooseItem.kinden || '-'
  768. },
  769. cnmpBand() { // 品牌
  770. if (this.chooseItem.pbranden) {
  771. return this.chooseItem.pbranden
  772. }
  773. return '-'
  774. },
  775. cnmpSpec() { // 规格
  776. if (this.chooseItem.spec) {
  777. return this.chooseItem.spec
  778. }
  779. return '-'
  780. },
  781. shopuuid() {
  782. return this.$store.state.option.storeStatus.data
  783. }
  784. },
  785. mounted: function () {
  786. this.$nextTick(() => {
  787. // window.addEventListener('scroll', this.scroll, false)
  788. this._initscroll()
  789. })
  790. },
  791. created() {
  792. this.getResourceProvidor()
  793. },
  794. components: {
  795. RemindBox,
  796. PullUp,
  797. Upload
  798. }
  799. }
  800. </script>
  801. <style scoped lang="scss">
  802. @mixin overFlowHidden {
  803. overflow: hidden;
  804. text-overflow: ellipsis;
  805. white-space: nowrap;
  806. }
  807. @mixin lineHeight($value) {
  808. height: $value;
  809. line-height: $value;
  810. }
  811. .overHidden {
  812. @include overFlowHidden()
  813. }
  814. .user-content{
  815. position: absolute;
  816. width: 100%;
  817. height: 100%;
  818. .provider {
  819. margin: 1.26rem 0 0.98rem 0;
  820. height: calc(100vh - 1.26rem - 0.98rem);
  821. overflow-y: auto;
  822. }
  823. .sa-pub {
  824. display: inline-block;
  825. width: 1.41rem;
  826. height: .47rem;
  827. line-height: .47rem;
  828. text-align: center;
  829. color: #fff;
  830. background: #3f84f6;
  831. border-radius: .14rem;
  832. }
  833. .none-state{
  834. text-align: center;
  835. padding:1.5rem 0;
  836. background: #fff;
  837. margin-top:.1rem;
  838. width:100%;
  839. img{
  840. margin:0 auto;
  841. width: 4.08rem;
  842. height: 2.62rem;
  843. }
  844. p {
  845. font-size: .32rem;
  846. color: #999;
  847. margin: 1.19rem 0 0 0;
  848. }
  849. a {
  850. display: block;
  851. font-size: .28rem;
  852. color: #fff;
  853. width: 1.88rem;
  854. height: .54rem;
  855. line-height: .54rem;
  856. background: #418bf6;
  857. margin: .7rem auto 0;
  858. border-radius: .05rem;
  859. }
  860. }
  861. .user-name{
  862. height: 1.8rem;
  863. padding: .28rem 0 .28rem .34rem;
  864. background: #fff;
  865. width: 100%;
  866. position: relative;
  867. img{
  868. display: inline-block;
  869. width: 1.25rem;
  870. height: 1.25rem;
  871. border: 1px solid #c5dbfc;
  872. border-radius: .05rem;
  873. vertical-align: middle;
  874. }
  875. .user-info {
  876. margin-left:.25rem;
  877. display: inline-block;
  878. vertical-align: middle;
  879. position: relative;
  880. p{
  881. font-size:.3rem;
  882. margin:0;
  883. display: block;
  884. overflow: hidden;
  885. text-overflow: ellipsis;
  886. white-space: nowrap;
  887. max-width: 3.92rem;
  888. &:nth-child(2) {
  889. position: relative;
  890. margin-top: .2rem;
  891. padding-right: .7rem;
  892. overflow: unset;
  893. max-width: unset;
  894. .en-name {
  895. overflow: hidden;
  896. text-overflow: ellipsis;
  897. white-space: nowrap;
  898. max-width: 3.22rem;
  899. display: inline-block;
  900. }
  901. a {
  902. position: absolute;
  903. right: 0;
  904. }
  905. .exit {
  906. right: -.8rem;
  907. }
  908. .vir {
  909. position: absolute;
  910. right: -.14rem;
  911. }
  912. }
  913. }
  914. .en-list {
  915. position: absolute;
  916. max-width: 5rem;
  917. max-height: 3rem;
  918. overflow-y: auto;
  919. border-radius: .05rem;
  920. background: rgba(0, 0, 0, .6);
  921. z-index: 10;
  922. .menu-item {
  923. height: .6rem;
  924. line-height: .6rem;
  925. font-size: .3rem;
  926. padding: 0 .2rem;
  927. overflow: hidden;
  928. white-space: nowrap;
  929. text-overflow: ellipsis;
  930. &:active, &:focus, &:hover {
  931. background: #7d7d7d;
  932. }
  933. a {
  934. color: #fff;
  935. }
  936. }
  937. }
  938. }
  939. > a {
  940. font-size: .24rem;
  941. position: absolute;
  942. top: .45rem;
  943. right: .1rem;
  944. color: #3f84f6;
  945. border: 1px solid #3f84f6;
  946. border-radius: .2rem;
  947. padding: .06rem .12rem;
  948. }
  949. }
  950. .shop-list {
  951. background:#fff;
  952. border-bottom: .1rem solid #dfe2e4;
  953. padding: .14rem 0 .14rem 0;
  954. h3{
  955. font-size: .32rem;
  956. line-height: .4rem;
  957. margin: 0 0 0 .27rem;
  958. overflow: hidden;
  959. text-overflow: ellipsis;
  960. white-space: nowrap;
  961. padding-top: .1rem;
  962. position: relative;
  963. top: .1rem;
  964. }
  965. .list-item{
  966. width:6.77rem;
  967. margin-left:.39rem;
  968. .item-img{
  969. width:2.4rem;
  970. vertical-align: middle;
  971. display: inline-block;
  972. img{
  973. &:nth-child(2) {
  974. width:2.4rem;
  975. height:1.69rem;
  976. border: 1px solid #eee;
  977. }
  978. &:nth-child(1) {
  979. position:absolute;
  980. width:.65rem;
  981. height:.33rem;
  982. }
  983. }
  984. }
  985. .list-item-phone{
  986. width:3.95rem;
  987. padding:.18rem 0;
  988. position:relative;
  989. display: inline-block;
  990. vertical-align: middle;
  991. margin-left: .26rem;
  992. p{
  993. font-size:.28rem;
  994. line-height: .67rem;
  995. margin:0;
  996. overflow: hidden;
  997. text-overflow: ellipsis;
  998. white-space: nowrap;
  999. width: 3.2rem;
  1000. }
  1001. i{
  1002. display:block;
  1003. position:absolute;
  1004. top: -.06rem;
  1005. right: -.18rem;
  1006. font-size:.5rem;
  1007. color:#ff7800;
  1008. width: .6rem;
  1009. height: .6rem;
  1010. text-align: center;
  1011. line-height: .6rem;
  1012. }
  1013. }
  1014. }
  1015. &:active {
  1016. background: #e1e1e1;
  1017. }
  1018. }
  1019. .detail-brand{
  1020. background: #fff;
  1021. width:100%;
  1022. min-height:1.5rem;
  1023. padding:.2rem 0;
  1024. border-bottom: .1rem solid #dfe2e4;
  1025. &:nth-child(1) {
  1026. margin-top:.1rem;
  1027. }
  1028. .brand-item{
  1029. width:7rem;
  1030. margin:0 auto;
  1031. border-radius:.1rem;
  1032. background: #fff;
  1033. padding:.2rem;
  1034. position:relative;
  1035. &:active{
  1036. background: #e1e1e1;
  1037. }
  1038. p{
  1039. font-size:.28rem;
  1040. line-height:.4rem;
  1041. color:#333;
  1042. margin:0;
  1043. }
  1044. i{
  1045. display:block;
  1046. position:absolute;
  1047. top:.2rem;
  1048. right:.4rem;
  1049. font-size:.5rem;
  1050. color:#ff7800;
  1051. width: .6rem;
  1052. height: .6rem;
  1053. line-height: .6rem;
  1054. text-align: center;
  1055. }
  1056. .sa-pub {
  1057. position: absolute;
  1058. right: 0;
  1059. bottom: .2rem;
  1060. }
  1061. }
  1062. div.active{
  1063. background: #d4d;
  1064. }
  1065. }
  1066. .collect-list-type {
  1067. background: #fff;
  1068. border-bottom: 1px solid #acacac;
  1069. p {
  1070. font-size: .32rem;
  1071. margin: 0 0 0 .13rem;
  1072. width: .92rem;
  1073. text-align: center;
  1074. line-height: .5rem;
  1075. border-bottom: .06rem solid #418bf6;
  1076. }
  1077. }
  1078. ul.switch-list {
  1079. .noshop {
  1080. width: 50%;
  1081. }
  1082. li {
  1083. display: inline-block;
  1084. width: 2.5rem;
  1085. height: .63rem;
  1086. line-height: .63rem;
  1087. text-align: center;
  1088. font-size: .28rem;
  1089. color: #666;
  1090. background: #fff;
  1091. border: 1px solid #b4b4b4;
  1092. border-right: none;
  1093. &.active {
  1094. background: #0067e7;
  1095. border: 1px solid #0067e7;
  1096. color: #fff;
  1097. }
  1098. &:first-child {
  1099. border-left: none;
  1100. }
  1101. &:last-child {
  1102. border-right: none;
  1103. }
  1104. }
  1105. &.vendor-switch {
  1106. li {
  1107. width: 50%;
  1108. }
  1109. }
  1110. }
  1111. .seek {
  1112. .seek-type {
  1113. margin-top: .15rem;
  1114. li {
  1115. font-size: .28rem;
  1116. color: #666;
  1117. display: inline-block;
  1118. width: 50%;
  1119. text-align: center;
  1120. div {
  1121. border-bottom: 1px solid #c1c4c9;
  1122. margin: 0 auto;
  1123. height: .46rem;
  1124. line-height: .46rem;
  1125. }
  1126. &.active {
  1127. color: #3f84f6;
  1128. div {
  1129. border-color: #3f84f6;
  1130. }
  1131. }
  1132. }
  1133. }
  1134. }
  1135. .search-content {
  1136. text-align: center;
  1137. padding: .25rem 0 0 0;
  1138. input {
  1139. border: 1px solid #376ff3;
  1140. }
  1141. span {
  1142. height: .46rem;
  1143. line-height: .46rem;
  1144. }
  1145. }
  1146. .seek-area {
  1147. height: 1.26rem;
  1148. line-height: 1.26rem;
  1149. border-top: .19rem solid #f6f5f5;
  1150. border-bottom: .19rem solid #f6f5f5;
  1151. overflow: hidden;
  1152. /*padding: .32rem 0;*/
  1153. img {
  1154. height: .78rem;
  1155. margin-right: .2rem;
  1156. vertical-align: top;
  1157. margin-top: .1rem;
  1158. }
  1159. .sa-title {
  1160. font-size: .38rem;
  1161. color: #3f84f6;
  1162. line-height: .32rem;
  1163. vertical-align: top;
  1164. margin-top: .1rem;
  1165. span {
  1166. color: #494949;
  1167. }
  1168. .sa-text {
  1169. font-size: .26rem;
  1170. color: #999;
  1171. }
  1172. }
  1173. .sa-pub {
  1174. margin-left: .86rem;
  1175. vertical-align: top;
  1176. margin-top: .23rem;
  1177. }
  1178. }
  1179. }
  1180. .providerList {
  1181. border-top: .31rem solid #f1f3f7;
  1182. .top {
  1183. position: relative;
  1184. &.top2 {
  1185. .text {
  1186. width: 5.4rem;
  1187. }
  1188. .pms {
  1189. color: #f57710;
  1190. border: 1px solid #f57710;
  1191. border-radius: 0.4rem;
  1192. background: #fff;
  1193. font-size: 0.24rem;
  1194. height: 0.4rem;
  1195. line-height: 0.4rem;
  1196. width: 0.8rem;
  1197. text-align: center;
  1198. float: right;
  1199. margin-top: 0.25rem;
  1200. }
  1201. .store-type {
  1202. width: .77rem;
  1203. height: .77rem;
  1204. position: absolute;
  1205. right: 0;
  1206. top: 0;
  1207. }
  1208. }
  1209. .icon {
  1210. width: 0.6rem;
  1211. height: 0.36rem;
  1212. line-height: 0.36rem;
  1213. margin-top: 0.27rem;
  1214. float: left;
  1215. background-size: 100%;
  1216. background-repeat: no-repeat;
  1217. margin-right: 0.12rem;
  1218. text-align: center;
  1219. &.istanded{
  1220. background-image: url('/images/mobile/@2x/istanded.png')
  1221. }
  1222. &.standed{
  1223. background-image: url('/images/mobile/@2x/standed.png')
  1224. }
  1225. }
  1226. .person-flag {
  1227. width: .75rem;
  1228. position: absolute;
  1229. right: 0;
  1230. }
  1231. .text {
  1232. float: left;
  1233. width: 6.3rem;
  1234. overflow: hidden;
  1235. text-overflow: ellipsis;
  1236. white-space: nowrap;
  1237. }
  1238. padding: 0 0.24rem;
  1239. /*background: #f5f9fd;*/
  1240. border-bottom: 1px solid #d3d3d3;
  1241. height: 0.9rem;
  1242. line-height: 0.9rem;
  1243. color: #0067e7;
  1244. font-size: 0.3rem;
  1245. &::after{
  1246. clear: both;
  1247. display: block;
  1248. content: ' ';
  1249. visibility: hidden;
  1250. zoom: 1;
  1251. }
  1252. }
  1253. .content {
  1254. padding: 0.24rem 0.24rem;
  1255. background: #fff;
  1256. .linetext {
  1257. margin-bottom: 0.24rem;
  1258. overflow: hidden;
  1259. text-overflow: ellipsis;
  1260. white-space: nowrap;
  1261. &:nth-last-of-type(1){
  1262. margin-bottom: 0rem;
  1263. }
  1264. }
  1265. .fl {
  1266. float: left;
  1267. border-right: 1px dashed #e0e0e4;
  1268. width: 4.68rem;
  1269. &.fullWidth {
  1270. width: 100%;
  1271. border: 0;
  1272. float: left
  1273. }
  1274. }
  1275. .fr {
  1276. float: right;
  1277. margin: 0.18rem 0.24rem;
  1278. margin-right: 0rem;
  1279. font-size: 0.3rem;
  1280. &.addtop {
  1281. margin-top: 0.6rem;
  1282. .add {
  1283. background: #0067e7;
  1284. color: #fff;
  1285. &.noadd{
  1286. background: #cccbcb;
  1287. color: #fff;
  1288. border:1px solid #cccbcb;
  1289. }
  1290. }
  1291. }
  1292. div {
  1293. width: 2.1rem;
  1294. height: 0.6rem;
  1295. text-align: center;
  1296. line-height: 0.6rem;
  1297. border-radius: 3px;
  1298. &.delete{
  1299. background: #fff;
  1300. color: #f70415;
  1301. border: 1px solid #f70415;
  1302. }
  1303. }
  1304. div:nth-child(1){
  1305. margin-bottom: 0.26rem
  1306. }
  1307. }
  1308. &::after{
  1309. clear: both;
  1310. display: block;
  1311. content: ' ';
  1312. visibility: hidden;
  1313. zoom: 1;
  1314. }
  1315. }
  1316. div.clearfix {
  1317. padding: 0.2rem 0;
  1318. margin: 0 0.2rem;
  1319. border-top: 1px solid #d3d3d3;
  1320. div {
  1321. width: 2.1rem;
  1322. height: 0.6rem;
  1323. text-align: center;
  1324. line-height: 0.6rem;
  1325. border-radius: 3px;
  1326. margin-right: 0.2rem;
  1327. &.look {
  1328. color: #008bf7;
  1329. border: 1px solid #008bf7;
  1330. }
  1331. &.add {
  1332. background: #fff;
  1333. color: #f57710;
  1334. border: 1px solid #f57710;
  1335. }
  1336. &.noadd{
  1337. background: #cccbcb;
  1338. color: #fff;
  1339. border:1px solid #cccbcb;
  1340. }
  1341. }
  1342. }
  1343. }
  1344. .middle {
  1345. padding: 0.24rem 0.24rem 0px;
  1346. background: #fff;
  1347. .pms {
  1348. color: #f57710;
  1349. border: 1px solid #f57710;
  1350. border-radius: 0.4rem;
  1351. background: #fff;
  1352. font-size: 0.24rem;
  1353. height: 0.4rem;
  1354. line-height: 0.4rem;
  1355. width: 0.8rem;
  1356. text-align: center;
  1357. }
  1358. .list {
  1359. /*height: 0.46rem;*/
  1360. .left {
  1361. float: left;
  1362. overflow: hidden;
  1363. text-overflow: ellipsis;
  1364. white-space: nowrap;
  1365. }
  1366. .textinfo {
  1367. color: #0067e7;
  1368. font-size: 0.3rem;
  1369. }
  1370. .button {
  1371. font-size: 0.26rem;
  1372. color: #fff;
  1373. width: 0.92rem;
  1374. text-align: center;
  1375. border-radius: 5px;
  1376. /*border:1px solid #1a58dd;*/
  1377. background: #1a58dd;
  1378. display: inline-block;
  1379. margin-right: 0.2rem;
  1380. line-height: 0.33rem;
  1381. height: 0.37rem;
  1382. }
  1383. margin-bottom: 0.18rem;
  1384. &::after{
  1385. clear: both;
  1386. display: block;
  1387. content: ' ';
  1388. visibility: hidden;
  1389. zoom: 1;
  1390. }
  1391. .fl {
  1392. width: 4.3rem;
  1393. float: left;
  1394. overflow: hidden;
  1395. text-overflow: ellipsis;
  1396. white-space: nowrap;
  1397. }
  1398. .fr {
  1399. text-align: left;
  1400. width: 2.6rem;
  1401. overflow: hidden;
  1402. text-overflow: ellipsis;
  1403. white-space: nowrap;
  1404. }
  1405. &.list-long {
  1406. .fl {
  1407. width: 100% !important;
  1408. }
  1409. }
  1410. .name {
  1411. color: #666;
  1412. font-size: 0.3rem;
  1413. display: inline-block;
  1414. }
  1415. .text {
  1416. display: inline-block;
  1417. color: #333;
  1418. font-size: 0.3rem
  1419. }
  1420. .table {
  1421. width: 5.5rem;
  1422. margin-bottom: 0;
  1423. margin-top: 0;
  1424. li {
  1425. height: 0.43rem;
  1426. line-height: 0.43rem;
  1427. border-left: .01rem solid #c5c5c5;
  1428. font-size: .28rem;
  1429. &::after {
  1430. clear: both;
  1431. display: block;
  1432. content: ' ';
  1433. visibility: hidden;
  1434. zoom: 1;
  1435. }
  1436. div {
  1437. text-align: center;
  1438. width: 50%;
  1439. float: left;
  1440. border-right: .01rem solid #c5c5c5;
  1441. border-bottom: .01rem solid #c5c5c5;
  1442. }
  1443. &:nth-child(odd) {
  1444. background: #ddd;
  1445. color: #666;
  1446. font-size: 0.28rem;
  1447. }
  1448. &:nth-child(even) {
  1449. background: #fcfcfc;
  1450. color: #666;
  1451. font-size: 0.28rem;
  1452. }
  1453. &:nth-last-of-type(1){
  1454. color: #f31919;
  1455. }
  1456. &.title {
  1457. font-size: 0.28rem;
  1458. color: #333;
  1459. }
  1460. }
  1461. }
  1462. }
  1463. }
  1464. .labelinfo {
  1465. padding: 0 .24rem;
  1466. background: #e6e6e6;
  1467. height: 0.6rem;
  1468. line-height: 0.6rem;
  1469. width: 100%;
  1470. color: #666;
  1471. font-size: 0.26rem;
  1472. overflow: hidden;
  1473. text-overflow: ellipsis;
  1474. white-space: nowrap;
  1475. .labelicon {
  1476. background-image: url('/images/mobile/@2x/label_icon.png');
  1477. background-repeat: no-repeat;
  1478. width: 0.61rem;
  1479. height: 0.38rem;
  1480. line-height: 0.38rem;
  1481. background-size: 100%;
  1482. color: #fff;
  1483. margin-right: 0.1rem;
  1484. display: inline-block;
  1485. font-size: 0.22rem;
  1486. text-align: center;
  1487. /*vertical-align: middle;*/
  1488. }
  1489. .labeltext{
  1490. display: inline-block;
  1491. /*vertical-align: middle;*/
  1492. }
  1493. }
  1494. .label-text {
  1495. padding: .09rem .21rem;
  1496. border-radius: .22rem;
  1497. background: #ddd;
  1498. font-size: .26rem;
  1499. color: #666;
  1500. display: inline-block;
  1501. margin-left: .22rem;
  1502. margin-bottom: .25rem;
  1503. }
  1504. .deleteKuang {
  1505. position: fixed;
  1506. background: rgba(0, 0, 0, 0.5);
  1507. top: 0;
  1508. left: 0;
  1509. right: 0;
  1510. bottom: 0;
  1511. z-index: 9999;
  1512. .kuangContent {
  1513. border-radius: 5px;
  1514. background: #fff;
  1515. width: 5rem;
  1516. position: absolute;
  1517. left: 50%;
  1518. top: 50%;
  1519. transform: translate3d(-50%, -50%, 0);
  1520. overflow: hidden;
  1521. .titleinfo {
  1522. font-size: .3rem;
  1523. color: #666;
  1524. text-align: center;
  1525. margin-top: 0.5rem;
  1526. margin-bottom: 0.1rem;
  1527. }
  1528. .title {
  1529. background: #5078cb;
  1530. height: .7rem;
  1531. line-height: .7rem;
  1532. font-size: .3rem;
  1533. color: #fff;
  1534. text-align: center;
  1535. }
  1536. .info {
  1537. color: #f00;
  1538. text-align: center;
  1539. }
  1540. .K_btn {
  1541. margin-top: 0.4rem;
  1542. line-height: 0.7rem;
  1543. height: 0.7rem;
  1544. &::after {
  1545. clear: both;
  1546. display: block;
  1547. content: ' ';
  1548. visibility: hidden;
  1549. zoom: 1;
  1550. }
  1551. div {
  1552. float: left;
  1553. width: 50%;
  1554. font-size: 0.3rem;
  1555. text-align: center;
  1556. &.cancelBtn {
  1557. background: #b4b5b9;
  1558. color: #333;
  1559. }
  1560. &.answerBtn {
  1561. background: #5078cb;
  1562. color: #fff;
  1563. }
  1564. }
  1565. }
  1566. }
  1567. i {
  1568. font-size: .6rem;
  1569. position: absolute;
  1570. right: -0.3rem;
  1571. top: -0.35rem;
  1572. color: #fff;
  1573. &::after {
  1574. position: absolute;
  1575. top: -0.1rem;
  1576. left: -0.1rem;
  1577. right: -0.1rem;
  1578. bottom: -0.1rem;
  1579. content: ' '
  1580. }
  1581. }
  1582. .title {
  1583. background: #3f84f6;
  1584. height: 0.7rem;
  1585. line-height: 0.7rem;
  1586. color: #fff;
  1587. text-align: center;
  1588. font-size: 0.3rem;
  1589. position: relative;
  1590. }
  1591. .Kuang {
  1592. max-height: 10rem;
  1593. width: 6.7rem;
  1594. position: absolute;
  1595. left: 50%;
  1596. top: 50%;
  1597. transform: translate3d(-50%, -50%, 0);
  1598. background: #ececec;
  1599. border-radius: 5px;
  1600. }
  1601. .content {
  1602. .infob {
  1603. background: #e3edfd;
  1604. padding: 0.2rem;
  1605. .info {
  1606. color: #333;
  1607. font-size: 0.3rem;
  1608. overflow: hidden;
  1609. text-overflow: ellipsis;
  1610. white-space: nowrap;
  1611. margin-bottom: 0.18rem;
  1612. .name {
  1613. color: #666;
  1614. }
  1615. div {
  1616. display: inline-block;
  1617. }
  1618. }
  1619. }
  1620. .content_sq {
  1621. width: 6.4rem;
  1622. margin: 0.1rem auto;
  1623. background: #fff;
  1624. padding: 0.2rem 0;
  1625. .list {
  1626. margin-bottom: 0.18rem;
  1627. }
  1628. .fl {
  1629. width: 3.2rem;
  1630. }
  1631. .table {
  1632. width: 4.2rem;
  1633. margin-top: -0.1rem;
  1634. }
  1635. .labelinfo {
  1636. background-image: url('/images/mobile/@2x/labelTop.png');
  1637. background-repeat: no-repeat;
  1638. width: 6.29rem;
  1639. height: 0.64rem;
  1640. line-height: 0.64rem;
  1641. background-size: 100%;
  1642. margin-top: 0rem;
  1643. margin-right: 0rem;
  1644. background-color: rgba(0, 0, 0, 0);
  1645. color: #666;
  1646. }
  1647. }
  1648. }
  1649. }
  1650. .update-materiel {
  1651. position: fixed;
  1652. z-index: 99;
  1653. background: #f1f3f6;
  1654. top: 0;
  1655. left: 0;
  1656. bottom: 0;
  1657. right: 0;
  1658. .mobile-header{
  1659. position: fixed;
  1660. top: 0;
  1661. z-index: 10;
  1662. width:100%;
  1663. height: 1.26rem;
  1664. line-height: 1.26rem;
  1665. /*border-bottom:.01rem solid #ccc;*/
  1666. background: #3e82f5;
  1667. padding:0 .2rem 0 .1rem;
  1668. color:#fff;
  1669. }
  1670. .mobile-header p{
  1671. overflow: hidden;
  1672. text-overflow: ellipsis;
  1673. white-space: nowrap;
  1674. font-size:.36rem;
  1675. text-align: center;
  1676. width: 6rem;
  1677. padding-left: 1rem;
  1678. }
  1679. .mobile-center-header p.en-name {
  1680. font-size: .3rem;
  1681. }
  1682. .mobile-header a{
  1683. font-size:.28rem;
  1684. color:#fff;
  1685. position: absolute;
  1686. }
  1687. .mobile-header a i{
  1688. font-size: .48rem;
  1689. margin-right: -.1rem;
  1690. }
  1691. .update-materiel-wrapper {
  1692. border: 1px solid #dcdcdc;
  1693. border-radius: 0.07rem;
  1694. background: #fff;
  1695. margin: 1.46rem 0.2rem 0;
  1696. position: relative;
  1697. padding-bottom: 0.4rem;
  1698. padding-top: 1rem;
  1699. position: relative;
  1700. .imgUrl{
  1701. position: absolute;
  1702. width: 0.94rem;
  1703. height: 0.94rem;
  1704. right: 0;
  1705. top: 0;
  1706. }
  1707. .update-materiel-wrapper-image {
  1708. width: 2.28rem;
  1709. height: 2.28rem;
  1710. border: 1px solid #dcdcdc;
  1711. border-radius: 0.07rem;
  1712. position: relative;
  1713. margin: 0.27rem 0 0 0.55rem;
  1714. text-align: center;
  1715. position: relative;
  1716. span {
  1717. color: #b2b2b2;
  1718. font-size: 0.28rem;
  1719. }
  1720. .com-input {
  1721. width: 100%;
  1722. height: 100%;
  1723. text-align: center;
  1724. position: absolute;
  1725. bottom: 0;
  1726. left: 0;
  1727. opacity: 0;
  1728. display: inline-block !important;
  1729. }
  1730. }
  1731. .uploadImgBtn {
  1732. color: #fff;
  1733. font-size: .28rem;
  1734. width: 1.51rem;
  1735. @include lineHeight(0.47rem);
  1736. border-radius: 0.07rem;
  1737. background: #f9b209;
  1738. text-align: center;
  1739. margin:2rem 0.1rem 0;
  1740. position: relative;
  1741. .com-input {
  1742. width: 100%;
  1743. height: 100%;
  1744. text-align: center;
  1745. position: absolute;
  1746. bottom: 0;
  1747. left: 0;
  1748. opacity: 0;
  1749. display: inline-block !important;
  1750. }
  1751. }
  1752. .uploadImgInfo {
  1753. color: #3f84f6;
  1754. font-size: 0.24rem;
  1755. margin-top: 2.15rem;
  1756. }
  1757. .update-materiel-wrapper-list {
  1758. margin-left:0.28rem;
  1759. margin-top: 0.3rem;
  1760. line-height: 0.7rem;
  1761. .red {color: #ea0f42}
  1762. .name {color: #666;}
  1763. .input {
  1764. position: relative;
  1765. width:5.4rem;
  1766. line-height: 0.7rem;
  1767. height: 0.7rem;
  1768. border: 1px solid #dcdcdc;
  1769. input {
  1770. text-indent: 5px;
  1771. border: 0;
  1772. border-radius: 0.07rem;
  1773. line-height: 0.64rem;
  1774. height: 0.64rem;
  1775. width: 90%;
  1776. font-size:0.28rem;
  1777. float: left;
  1778. color: #333;
  1779. }
  1780. i {
  1781. font-size: 0.16rem;
  1782. vertical-align: top;
  1783. color: #666;
  1784. float: right;
  1785. margin-right: 0.05rem
  1786. }
  1787. .similar {
  1788. position: absolute;
  1789. width:100%;
  1790. max-height: 2.5rem;
  1791. overflow-y: auto;
  1792. z-index: 12;
  1793. border: 1px solid #7e7e7e;
  1794. border-radius: .05rem;
  1795. top: .5rem;
  1796. background: #fff;
  1797. li {
  1798. height: .5rem;
  1799. line-height: .5rem;
  1800. font-size: .26rem;
  1801. color: #999;
  1802. padding-left: .19rem;
  1803. &:focus, &:active, &:hover {
  1804. background: #999;
  1805. color: #fff;
  1806. }
  1807. }
  1808. }
  1809. }
  1810. }
  1811. .update-materiel-wrapper-controll {
  1812. margin: 0.4rem 0.2rem 0;
  1813. div {
  1814. width: 48%;
  1815. background: #b5b5b5;
  1816. font-size: 0.3rem;
  1817. color: #fafbfc;
  1818. text-align: center;
  1819. @include lineHeight(0.62rem);
  1820. border-radius: 0.07rem;
  1821. &:first-child {
  1822. background: #3f84f6;
  1823. }
  1824. }
  1825. }
  1826. }
  1827. }
  1828. </style>