index.vue 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525
  1. <template>
  2. <div class="login-wrapper">
  3. <div>
  4. <indexHeaders/>
  5. </div>
  6. <div class="boxs">
  7. <el-dialog v-model="tcFlag" :show-close="true" align-center title="提示">
  8. <div class="success">
  9. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/success-icon.png">
  10. </div>
  11. <div class="tetemp_idsxts">{{texts}}</div>
  12. </el-dialog>
  13. </div>
  14. <el-dialog v-model="schemeNameFlag" :show-close="true" align-center title="方案命名" style="width: 708px">
  15. <div class="input-s" style="display: flex;padding: 0 100px;line-height: 30px">
  16. <div style="margin-right: 20px">请命名本次方案</div>
  17. <el-input v-model="schemeName"></el-input>
  18. </div>
  19. <div class="buttons">
  20. <div @click="schemeNameFlag=false">取消</div>
  21. <div @click="submits" style="color: #fff;border: none;background-color: #4171B3">保存</div>
  22. </div>
  23. </el-dialog>
  24. <el-dialog v-model="examinFlag" :show-close="true" @close="Clears" align-center title="查看方案" style="width: 708px">
  25. <div class="scheme">
  26. <div class="scheme-tops">
  27. <div class="scheme-name">方案商品</div>
  28. <div @click="checkGoodsTap">
  29. <div class="scheme-name" @click="disFlag=false" v-if="!checkGoodsFlag" style="color: #4171B3">编辑</div>
  30. <div style="display: flex">
  31. <div class="scheme-name" @click.stop="checkGoodsFlag=false;disFlag=true" v-if="checkGoodsFlag" style="color: #4171B3;margin-right: 20px">完成</div>
  32. <div class="scheme-name" @click.stop="deletes()" v-if="checkGoodsFlag" style="color: #4171B3">删除</div>
  33. </div>
  34. </div>
  35. </div>
  36. <div class="examin-content">
  37. <div class="examin-list" v-for="(item,index) in goods.arr" @click="checksSel(item)" :key="index">
  38. <div class="check" v-if="checkGoodsFlag">
  39. <div class="check-icon" v-if="item.flag">
  40. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/check.png">
  41. </div>
  42. <div v-else>
  43. <div class="boxs"></div>
  44. </div>
  45. </div>
  46. <div class="examin-goods">
  47. <img :src="item.logo[0]">
  48. </div>
  49. <div class="examin-list-right">
  50. <div class="examin-name">{{ item.name }}</div>
  51. <div class="examin-rule">{{ item.sku }}</div>
  52. <!-- <div class="examin-money" style="display: flex">-->
  53. <!-- {{item.num}}/¥{{ item.amount }}/¥{{item.amount_total}}-->
  54. <!-- </div>-->
  55. <div style="margin-top: 20px">
  56. <div class="input_s" >
  57. <div>采购单价</div>
  58. <div class="" style="color:#EA2813;margin-left: 10px">¥{{ item.amount }}</div>
  59. <div style="margin-left: 20px">采购数量</div>
  60. <div style="display: flex;margin:1px 0 0 20px;">
  61. <div class="add-icons" @click.stop="!disFlag?addNum(item):''" style="color: #333!important;" >+</div>
  62. <el-input :disabled="disFlag" v-model="item.num" ></el-input>
  63. <div class="del-icons" @click.stop="!disFlag?delNum(item):''" style="color: #333;margin-left: 20px" >-</div>
  64. </div>
  65. </div>
  66. <div class="input_s" >
  67. <div>安装单价</div>
  68. <div class="" style="color:#EA2813;margin-left: 10px">¥{{ item.amount_install }}</div>
  69. <div style="margin-left: 20px">安装数量</div>
  70. <div style="display: flex;margin:0 0 0 20px;">
  71. <div class="add-icons" @click.stop="!disFlag?addInstallNum(item):''" style="color: #333!important;" >+</div>
  72. <el-input :disabled="disFlag" v-model="item.num_install" ></el-input>
  73. <div class="del-icons" @click.stop="!disFlag?delInstallNum(item):''" style="color: #333;margin-left: 20px" >-</div>
  74. </div>
  75. </div>
  76. </div>
  77. <div style="color: #EA2813">总计:¥{{item.amount_total}}</div>
  78. </div>
  79. </div>
  80. <div class="pages">
  81. <el-pagination
  82. background
  83. layout="prev, pager, next"
  84. :total="totalNumber1"
  85. class="mt-4"
  86. :page-size="limit1"
  87. @current-change="handleCurrentChange1"
  88. />
  89. </div>
  90. </div>
  91. </div>
  92. </el-dialog>
  93. <el-dialog v-model="schemeFlag" :show-close="true" align-center title="我的方案" style="width: 708px">
  94. <div class="scheme">
  95. <div class="scheme-tops">
  96. <div class="scheme-name" style="flex: 0 0 150px;text-align: center">方案名称</div>
  97. <div class="scheme-time" style="margin-left: 50px">
  98. <div>创建时间</div>
  99. <div class="sort-icon">
  100. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/sort-icon.png">
  101. </div>
  102. </div>
  103. <div class="scheme-name">操作</div>
  104. <div class="scheme-name" style=" text-align: right; flex: 0 0 50px;">分享</div>
  105. </div>
  106. <div class="scheme-content">
  107. <div class="scheme-list" v-for="(item,index) in schemeLists.arr" :key="index">
  108. <div class="scheme-text overflow1" style="flex: 0 0 150px;text-align: center">{{ item.name }}</div>
  109. <div class="scheme-time" style="flex: 1;margin-left: 30px">{{ item.createtime }}</div>
  110. <div class="scheme-time scheme-flex" style="margin-right: 30px">
  111. <div @click.stop="routeTaps('/evaluateDetail',item.id)">查看方案</div>
  112. <div class="line"></div>
  113. <div @click="schemeShop(item)">使用方案</div>
  114. <div class="line"></div>
  115. <div @click="deletesTaps(item.id)">删除</div>
  116. </div>
  117. <div class="scheme-time" @click="shares(item.id,item.name)">
  118. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/evaluate-share.png">
  119. </div>
  120. </div>
  121. <div class="pages">
  122. <el-pagination
  123. background
  124. layout="prev, pager, next"
  125. :total="totalNumber"
  126. class="mt-4"
  127. :page-size="limit"
  128. @current-change="handleCurrentChange"
  129. />
  130. </div>
  131. </div>
  132. </div>
  133. </el-dialog>
  134. <div class="evaluate">
  135. <div class="evaluate-goods">
  136. <div class="evaluate-list" v-show="categoryGoods.arr" v-for="(item,index) in categoryGoods.arr" :key="index">
  137. <div class="evaluate-rule" v-if="item.goods!=''" @click="changeFatherClick(index,item)">
  138. <div>{{item.name}}</div>
  139. <div>{{item.flag?'-':'+'}}</div>
  140. </div>
  141. <div class="evaluate-gds" v-if="item.flag && item.goods!=''">
  142. <div class="evaluate-img">
  143. <img :src="showImg.arr.logo[0]">
  144. </div>
  145. <div class="evaluate-contents">
  146. <div class="evaluate-lists" v-for="(items,indexs) in item.goods" :key="indexs">
  147. <div class="evaluate-rules" @click.stop="changeClick(indexs,items,item)">
  148. <div class="overflow1">{{items.name}}</div>
  149. <div>{{items.flag?'-':'+'}}</div>
  150. </div>
  151. <div class="evaluate-goods-rules">
  152. <div class="flex-views" v-for="(size,sizeIndex) in items.size" v-if="items.sku!='' && items.flag" :key="sizeIndex">
  153. <div style="flex: 0 0 40px;margin-right: 10px;">{{ size.type }}</div>
  154. <div class="goods-rule" v-for="(sizes,sizeIndexs) in size.names" @click.stop="checkRule(size,sizes,sizeIndexs,sizeIndex,items)" :key="sizeIndexs">
  155. <div class="goods-rule-name overflow1" :class="sizes.check==true?'classIndex':''">
  156. {{ sizes.name }}
  157. </div>
  158. </div>
  159. </div>
  160. <div
  161. class="evaluate-goods-rules"
  162. v-if="items.flag"
  163. style="margin:0;border-bottom: none; justify-content: space-between;display: flex;padding: 10px 0">
  164. <div>
  165. <div>采购单价:¥{{eval_adds.arr.amount}}/台</div>
  166. </div>
  167. <div class="sum" style="margin-left: 10px">
  168. <div>采购数量</div>
  169. <div style="display: flex;margin:10px 0 0 10px;">
  170. <div class="add-icons" @click.stop="addSum(eval_adds.arr)">+</div>
  171. <el-input @blur="blurs" v-model="eval_adds.arr.num"></el-input>
  172. <div class="del-icons" @click.stop="delSum(eval_adds.arr)">-</div>
  173. </div>
  174. </div>
  175. <div v-if="eval_adds.arr.is_ni==1">
  176. <div>安装单价:¥{{eval_adds.arr.amount_install}}/台</div>
  177. </div>
  178. <div class="sum" style="margin-left: 10px" v-if="eval_adds.arr.is_ni==1">
  179. <div>安装数量</div>
  180. <div style="display: flex;margin:10px 0 0 10px;">
  181. <div class="add-icons" @click.stop="addSumInstall(eval_adds.arr)">+</div>
  182. <el-input @blur="blurs" v-model="eval_adds.arr.num_install"></el-input>
  183. <div class="del-icons" @click.stop="delSumInstall(eval_adds.arr)">-</div>
  184. </div>
  185. </div>
  186. </div>
  187. <div class="confirms" @click.stop="shopSub(eval_adds.arr)" v-if="items.flag && addSub==true">添加</div>
  188. <div class="confirms colorStyles" v-if="items.flag && addSub==false">暂无库存</div>
  189. </div>
  190. </div>
  191. </div>
  192. </div>
  193. </div>
  194. </div>
  195. <div class="evaluate-right" v-show="categoryGoods.arr!=''">
  196. <div class="evaluate-text" @click="schemeFlag=true">
  197. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/evaluate-text1.png">
  198. </div>
  199. <div class="evaluate-text1">
  200. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/evaluate-text2.png">
  201. <div class="kf" @click="serviceTap">
  202. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/kf-icon.png">
  203. </div>
  204. <div class="evaluate-right-money">
  205. <div class="money">¥<span style="font-size: 34px">{{ cartGoods.arr.total?Math.floor(cartGoods.arr.total* 100)/ 100:0 }}</span></div>
  206. </div>
  207. </div>
  208. <div class="evaluate-bottom">
  209. <div class="evaluate-titles">
  210. <div class="shopping">
  211. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/evaluate-shop.png">
  212. </div>
  213. <div class="shopping-text">已选产品</div>
  214. <div class="manage" style="margin-right: 20px" v-if="checkFlag==false" @click="checkFlag=true">完成</div>
  215. <div class="manage" @click="checkFlag=!checkFlag">管理</div>
  216. </div>
  217. <div class="shopping-content">
  218. <div v-for="(item,index) in cartGoods.arr.goods" :key="index">
  219. <div class="shopping-list" v-if="item.num!=0 && item.install_num!==0">
  220. <div class="check" v-if="!checkFlag" @click.stop="shopChecks(item)">
  221. <div class="check-icon" v-if="item.checks">
  222. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/check.png">
  223. </div>
  224. <div v-else>
  225. <div class="boxs"></div>
  226. </div>
  227. </div>
  228. <div class="check" v-else style="width: 20px">
  229. </div>
  230. <div class="shopping-left" v-if="item.logo">
  231. <img :src="item.logo[0]">
  232. </div>
  233. <div class="shopping-right">
  234. <div class="goods-name overflow2">{{item.name}}</div>
  235. <div class="goods-rule">{{item.sku}}</div>
  236. <div class="shopping-spec">
  237. <div class="money">采购单价:{{item.amount}}</div>
  238. </div>
  239. <div class="shopping-spec">
  240. <div class="sum">购买数量:{{item.num}}</div>
  241. <div class="sum" style="display: flex;margin-left: 15px">
  242. <div @click.stop="addSums(item,index)" class="add-icons">+</div>
  243. <el-input @keyup="keys(item)" @blur="updateBlur(item)" v-model="item.num" ></el-input>
  244. <div @click.stop="delSums(item,index)" class="del-icons">-</div>
  245. </div>
  246. </div>
  247. <div class="shopping-spec" v-if="item.is_ni==1">
  248. <div class="money">安装单价:{{item.amount_install_single}}</div>
  249. </div>
  250. <div class="shopping-spec" v-if="item.is_ni==1">
  251. <div class="sum">安装数量:{{item.num_install}}</div>
  252. <div class="sum" style="display: flex;margin-left: 15px">
  253. <div @click.stop="addSumInstalls(item,index)" class="add-icons">+</div>
  254. <el-input @blur="updateBlur(item)" v-model="item.num_install"></el-input>
  255. <div @click.stop="delSumInstalls(item,index)" class="del-icons">-</div>
  256. </div>
  257. </div>
  258. <div class="money-all">
  259. 共计:<span>¥{{ item.amount_total }}</span>
  260. </div>
  261. </div>
  262. </div>
  263. </div>
  264. </div>
  265. <div class="shopping-buttons" v-if="checkFlag">
  266. <div class="shopping-button flex-s " @click="share">
  267. <div class="share ">
  268. <img src="http://screen-test.zhousi.hdlkeji.com/aksdbn/img/goods/evaluate-share.png">
  269. </div>
  270. <div>分享</div>
  271. </div>
  272. <div class="shopping-button" @click="schemeNameFlag=true">保存方案</div>
  273. <div class="shopping-button pay" @click="pay">立即支付</div>
  274. </div>
  275. <div class="shopping-buttons" v-else style="margin: 20px 0 0 70px">
  276. <div class="shopping-button" @click.stop="checkAll">全选</div>
  277. <div class="shopping-button pay" @click.stop="delete_goods" style="margin-left: 30px">删除</div>
  278. </div>
  279. </div>
  280. </div>
  281. </div>
  282. </div>
  283. <div>
  284. <RightSliderBar :navIndexs="0"/>
  285. </div>
  286. <Footer/>
  287. </template>
  288. <script setup>
  289. // 记录访问次数
  290. import { provide, reactive, ref, onUnmounted, onMounted } from 'vue'
  291. import indexHeaders from '@/components/Index/indexHeaders.vue'
  292. import LeftSliderBar from '@/components/Index/LeftSliderBar.vue'
  293. import RightSliderBar from '@/components/Index/RightSliderBar.vue'
  294. import CountDate from '@/components/Index/CountDate.vue'
  295. import Footer from '@/components/Tool/Footer.vue'
  296. import { getUrlParams2, isLogin, rouseService } from '@/utils'
  297. import {
  298. amount_s,
  299. calculate,
  300. category,
  301. deleteGoods,
  302. programme_del,
  303. programme_detail, programme_detail1,
  304. programme_list,
  305. submit_calulate, updateProGramme, user_lsp
  306. } from '@/api/menu1'
  307. import { ElMessage, ElMessageBox } from 'element-plus'
  308. import { router } from '@/router'
  309. import {useRouter} from "vue-router";
  310. let disFlag=ref(true)
  311. const Clears=()=>{
  312. disFlag.value=true
  313. checkGoodsFlag.value=false
  314. }
  315. // 根据sku计算商品
  316. const getGoodsAmount = (...item) => {
  317. const data = {
  318. sku: item[0],
  319. num: item[1],
  320. num_install: item[2]
  321. }
  322. amount_s(data).then((res) => {
  323. console.error(eval_adds.arr)
  324. eval_adds.arr.amount = res.data.amount
  325. eval_adds.arr.amountKill = res.data.amount
  326. eval_adds.arr.amount_install = res.data.amount_install
  327. })
  328. }
  329. const addNum=(item)=>{
  330. item.num++
  331. goodsAmounts(item)
  332. }
  333. if (localStorage.getItem('USER__INFO__')) {
  334. user_lsp().then((res) => {
  335. })
  336. }
  337. // 根据商品计算方案的价格
  338. const goodsAmounts = (item) => {
  339. console.error(item)
  340. const data = {
  341. skuid: item.sku_id,
  342. num: item.num,
  343. num_install: item.num_install,
  344. pid:item.programme_id
  345. }
  346. updateProGramme(data).then((res) => {
  347. console.error(res)
  348. })
  349. }
  350. const share = () => {
  351. if (cartGoods.arr == '') {
  352. ElMessage.error('请选择产品')
  353. return
  354. }
  355. const list = schemeLists.arr
  356. setTimeout(() => {
  357. shares(list[0].id, list[0].name)
  358. }, 50)
  359. }
  360. const shares = (id, name) => {
  361. console.error(id,name)
  362. const windows = window.location
  363. const url = windows.protocol + '//' + windows.host +'/evaluateDetail'
  364. console.error(url)
  365. // 创建input标签
  366. const input = document.createElement('input')
  367. // 将input的值设置为需要复制的内容
  368. input.value = '【屏酷】打开链接查看方案,方案名称'+ ' ' + name + ' ' + url + '?id=' + id+'&share=1'
  369. // 添加input标签
  370. document.body.appendChild(input)
  371. // 选中input标签
  372. input.select()
  373. // 执行复制
  374. document.execCommand('copy')
  375. // 移除input标签
  376. document.body.removeChild(input)
  377. ElMessage.success('复制分享链接成功')
  378. }
  379. const page = ref(1)
  380. const limit = ref(10)
  381. const totalNumber = ref(null)
  382. const handleCurrentChange = (size) => {
  383. page.value = size
  384. programme_lists()
  385. }
  386. const page1 = ref(1)
  387. const limit1 = ref(10)
  388. const totalNumber1 = ref(null)
  389. const handleCurrentChange1 = (size) => {
  390. page.value = size
  391. selScheme()
  392. }
  393. const schemeNameFlag = ref(false)
  394. const checkGoodsFlag = ref(false)
  395. const schemeFlag = ref(false)
  396. const examinFlag = ref(false)
  397. const tcFlag = ref(false)
  398. const schemeName = ref('')
  399. const texts = ref('保存成功~')
  400. const checkFlag = ref(true)
  401. const checksFlag = ref(false)
  402. const schemeShop = (item) => {
  403. console.error(item)
  404. const data = {
  405. frm: 1,
  406. form: {},
  407. flag: false
  408. }
  409. for (let i = 0; i < item.goods.length; i++) {
  410. if (item.goods[i].num > 0) {
  411. data.form[item.goods[i].sku_id] = {
  412. num: item.goods[i].num,
  413. num_install: item.goods[i].num_install ?
  414. item.goods[i].num_install : 0
  415. }
  416. data.flag = true
  417. }
  418. }
  419. if (data.flag == true) {
  420. localStorage.setItem('order', JSON.stringify(data))
  421. router.push('/user/order/submit')
  422. }
  423. }
  424. const routeTaps=(url,id)=>{
  425. const $router=useRouter()
  426. router.push({path:url,query:{id:id}})
  427. }
  428. const serviceTap = () => {
  429. rouseService()
  430. }
  431. const datas = {
  432. frm: 1,
  433. form: {}
  434. }
  435. const pay = () => {
  436. const data = {
  437. frm: 1,
  438. form: {}
  439. }
  440. data.form = arr.sku
  441. for (const i in data.form) {
  442. if (data.form.hasOwnProperty(i)) {
  443. if (data.form[i].num == 0) {
  444. Reflect.deleteProperty(data.form, i)
  445. }
  446. }
  447. }
  448. if (JSON.stringify(data.form) == '{}') {
  449. ElMessage.error('请选择商品')
  450. return
  451. }
  452. localStorage.setItem('order', JSON.stringify(data))
  453. router.push('/user/order/submit')
  454. }
  455. onMounted(() => {
  456. const url = getUrlParams2(window.location.href)
  457. if (localStorage.getItem('USER__INFO__')) {
  458. programme_lists()
  459. getCateList()
  460. }
  461. if (url.id) {
  462. // 如果用户没登录的时候记录地址
  463. if (localStorage.getItem('USER__INFO__')) {
  464. programme_details1(url.id)
  465. programme_lists()
  466. } else {
  467. programme_details1(url.id)
  468. const urls = window.location.href
  469. localStorage.setItem('redirectUrl', JSON.stringify(urls))
  470. }
  471. }
  472. })
  473. const shareUpdateData = (data) => {
  474. if (data) {
  475. for (let i = 0; i < data.length; i++) {
  476. arr.sku[data[i].sku_id] = { num: data[i].num, num_install: data[i].num_install ? data[i].num_install : 0 }
  477. }
  478. }
  479. const formData = new FormData()
  480. formData.append('sku', JSON.stringify(arr.sku))
  481. skusSub.value = arr.sku
  482. calculate(formData).then((res) => {
  483. if (res.code == 1) {
  484. for (let i = 0; i < res.data.goods.length; i++) {
  485. res.data.goods[i].checks = false
  486. }
  487. cartGoods.arr = res.data
  488. } else {
  489. ElMessage.error(res.msg)
  490. }
  491. })
  492. }
  493. const programme_details1 = (id) => {
  494. const data = {
  495. id: id
  496. }
  497. programme_detail1(data).then((res) => {
  498. if (res.code == 1) {
  499. shareUpdateData(res.data.data)
  500. } else {
  501. ElMessage.error(res.msg)
  502. }
  503. })
  504. }
  505. const updateBlur=(item)=>{
  506. console.error("333")
  507. updateInput(item)
  508. }
  509. const deletes = () => {
  510. const Goods = goods.arr
  511. const data = {
  512. id: schemeId.value
  513. }
  514. const arr = []
  515. for (let i = 0; i < Goods.length; i++) {
  516. if (Goods[i].flag == true) {
  517. arr.push(Goods[i].goods_id)
  518. }
  519. }
  520. const textss = arr.join(',')
  521. if (textss == '') {
  522. ElMessage.error('请选择要删除的商品')
  523. } else {
  524. ElMessageBox({
  525. title: '提示',
  526. message: '是否删除该商品?',
  527. showCancelButton: true,
  528. confirmButtonText: '确定',
  529. cancelButtonText: '取消',
  530. callback: (action) => {
  531. data.goods_ids = textss
  532. deleteGoods(data).then((res) => {
  533. if (res.code == 1) {
  534. selScheme(schemeId.value)
  535. texts.value = '删除成功~'
  536. tcFlag.value = true
  537. setTimeout(() => {
  538. tcFlag.value = false
  539. }, 1000)
  540. } else {
  541. ElMessage.error(res.msg)
  542. }
  543. })
  544. }
  545. })
  546. // data.goods_ids=texts
  547. // deleteGoods(data).then((res)=>{
  548. // if(res.code==1){
  549. // selScheme(schemeId.value)
  550. // }else{
  551. // ElMessage.error(res.msg)
  552. // }
  553. // })
  554. }
  555. }
  556. const checksSel = (item) => {
  557. item.flag = !item.flag
  558. }
  559. const eval_adds = reactive({
  560. arr: []
  561. })
  562. const goods_oper = () => {
  563. if (checkFlag.value == false) {
  564. checkFlag.value = true
  565. checksFlag.value = false
  566. } else if (checkFlag.value = true) {
  567. checkFlag.value = false
  568. checksFlag.value = true
  569. }
  570. console.error(checkFlag)
  571. }
  572. const shopChecks = (item) => {
  573. item.checks = !item.checks
  574. }
  575. const schemeLists = reactive({
  576. arr: []
  577. })
  578. const categoryGoods = reactive({
  579. arr: []
  580. })
  581. const cartGoods = reactive({
  582. arr: []
  583. })
  584. const goods = reactive({
  585. arr: []
  586. })
  587. const schemeId = ref('')
  588. const selScheme = (id) => {
  589. schemeId.value = id
  590. const data = {
  591. id: id,
  592. page: page1.value,
  593. limit: limit1.value
  594. }
  595. programme_detail(data).then((res) => {
  596. if (res.code == 1) {
  597. for (let i = 0; i < res.data.data.length; i++) {
  598. console.error(res.data.data)
  599. res.data.data[i].flag = false
  600. }
  601. goods.arr = res.data.data
  602. totalNumber1.value = res.data.total
  603. } else {
  604. ElMessage.error(res.msg)
  605. }
  606. })
  607. }
  608. const deletesTaps = (id) => {
  609. ElMessageBox({
  610. title: '提示',
  611. message: '是否删除该方案?',
  612. showCancelButton: true,
  613. confirmButtonText: '确定',
  614. cancelButtonText: '取消',
  615. callback: (action) => {
  616. programme_del({ id: id }).then((res) => {
  617. if (res.code == 1) {
  618. // ElMessage.success('删除方案成功')
  619. programme_lists()
  620. texts.value = '删除方案成功~'
  621. tcFlag.value = true
  622. setTimeout(() => {
  623. tcFlag.value = false
  624. }, 1000)
  625. } else {
  626. ElMessage.error(res.msg)
  627. }
  628. })
  629. }
  630. })
  631. }
  632. const skusSub = ref('')
  633. const submits = () => {
  634. if (cartGoods.arr != '') {
  635. if (schemeName.value == '') {
  636. ElMessage.error('请输入方案名称')
  637. return
  638. }
  639. const formData = new FormData()
  640. formData.append('sku', JSON.stringify(arr.sku))
  641. formData.append('name', schemeName.value)
  642. submit_calulate(formData).then((res) => {
  643. if (res.code == 1) {
  644. ElMessage.success('保存方案成功')
  645. schemeNameFlag.value = false
  646. programme_lists()
  647. } else {
  648. ElMessage.error(res.msg)
  649. }
  650. })
  651. } else {
  652. ElMessage.error('请选择产品')
  653. }
  654. }
  655. const delete_goods = () => {
  656. const data = {
  657. sku: {}
  658. }
  659. const skus = arr.sku// SKU
  660. let arrs=[];
  661. const goods_cate = cartGoods.arr.goods
  662. let nums=goods_cate.filter((num)=>{
  663. return num.checks==false
  664. })
  665. nums.forEach((item,index)=>{
  666. data.sku[item.sku_id] = { num: item.num, num_install: item.num_install}
  667. })
  668. const formData = new FormData()
  669. formData.append('sku', JSON.stringify(data.sku))
  670. arr.sku=data.sku
  671. console.error(data)
  672. // skusSub.value = data.sku
  673. calculate(formData).then((res) => {
  674. if (res.code == 1) {
  675. for (let i = 0; i < res.data.goods.length; i++) {
  676. res.data.goods[i].checks = false
  677. }
  678. cartGoods.arr = res.data
  679. } else {
  680. ElMessage.error(res.msg)
  681. }
  682. })
  683. }
  684. const checkAll = () => {
  685. const goods = cartGoods.arr.goods
  686. console.error(goods)
  687. for (let i = 0; i < goods.length; i++) {
  688. goods[i].checks = true
  689. }
  690. }
  691. const blurs = () => {
  692. updateCart()
  693. }
  694. const checkGoodsTap = () => {
  695. checkGoodsFlag.value = true
  696. }
  697. const arr = reactive({
  698. sku: {}
  699. })
  700. const shopArr = reactive({
  701. sku: {}
  702. })
  703. const temp_ids = reactive([], [], [])
  704. isLogin()
  705. const updateCart = (items) => {
  706. if (items) {
  707. if (items.num > 0) {
  708. arr.sku[items.id] = { num: items.num, num_install: items.num_install }
  709. }
  710. }
  711. const formData = new FormData()
  712. formData.append('sku', JSON.stringify(arr.sku))
  713. skusSub.value = arr.sku
  714. calculate(formData).then((res) => {
  715. if (res.code == 1) {
  716. for (let i = 0; i < res.data.goods.length; i++) {
  717. res.data.goods[i].checks = false
  718. }
  719. cartGoods.arr = res.data
  720. } else {
  721. ElMessage.error(res.msg)
  722. }
  723. })
  724. }
  725. const updateInput = (items) => {
  726. if (items.num > 0) {
  727. arr.sku[items.sku_id] = { num: items.num, num_install: items.num_install }
  728. }
  729. const formData = new FormData()
  730. formData.append('sku', JSON.stringify(arr.sku))
  731. skusSub.value = arr.sku
  732. console.error(arr.sku)
  733. calculate(formData).then((res) => {
  734. if (res.code == 1) {
  735. cartGoods.arr = res.data
  736. } else {
  737. ElMessage.error(res.msg)
  738. }
  739. })
  740. }
  741. // 更新选择的状态
  742. const updateRuleIndexChang = (index, item_name, item) => {
  743. const id = item.temp_id
  744. const items = item_name.names
  745. if (items) {
  746. for (let j = 0; j < items.length; j++) {
  747. items[j].check = false
  748. }
  749. }
  750. item.check = true
  751. }
  752. const ruleSelList = reactive({
  753. arr: []
  754. })
  755. //切换list
  756. const checkRule = (item, items, index, indexs, item_s) => {
  757. ruleSelList.arr[indexs] = items.temp_id
  758. let _selKey = ''
  759. ruleSelList.arr.forEach((item, index) => {
  760. if (index == 0) {
  761. _selKey += item
  762. } else {
  763. _selKey += ',' + item
  764. }
  765. })
  766. // console.error(items)
  767. let goods=goodsJson.value[ruleSelList.arr].split(',')
  768. console.error(eval_adds.arr)
  769. if(eval_adds.arr.is_ni==0){
  770. eval_adds.arr.num_install=0;
  771. }else{
  772. eval_adds.arr.num_install=1;
  773. }
  774. eval_adds.arr.num=1;
  775. // eval_adds.arr.num_install=1;
  776. eval_adds.arr.id=goods[2];
  777. eval_adds.arr.amountKill=goods[3];
  778. eval_adds.arr.amountNum=goods[4];
  779. getGoodsAmount(goods[2],1,1)
  780. if(goods[3]>0){
  781. addSub.value = goods[4]==0?false:true
  782. }else if(goods[3]==0){
  783. addSub.value = goods[1]==0?false:true
  784. } updateRuleIndexChang(indexs, item, items) // 更改状态
  785. }
  786. const addSums = (item, index) => {
  787. item.num++
  788. updateInput(item)
  789. }
  790. const delSums = (item, index) => {
  791. if (item.num > 0) {
  792. item.num--
  793. updateInput(item)
  794. }
  795. }
  796. const addSumInstalls = (item, index) => {
  797. item.num_install++
  798. updateInput(item)
  799. }
  800. const delSumInstalls = (item, index) => {
  801. if (item.num_install > 0) {
  802. item.num_install--
  803. updateInput(item)
  804. }
  805. }
  806. const addSum = (item, index) => {
  807. item.num++
  808. getGoodsAmount(item.id, item.num, item.num_install)
  809. }
  810. const shopSub = (item) => {
  811. updateCart(item)
  812. }
  813. const addSumInstall = (item) => {
  814. item.num_install++
  815. }
  816. const delSumInstall = (item) => {
  817. if (item.num_install > 0) {
  818. item.num_install--
  819. }
  820. }
  821. const delSum = (item) => {
  822. if (item.num > 0) {
  823. item.num--
  824. }
  825. }
  826. const updateLists = (index, item) => {
  827. const res = {
  828. data: ''
  829. }
  830. res.data = categoryGoods.arr
  831. for (let i = 0; i < res.data.length; i++) {
  832. res.data[i].flag = false
  833. for (let j = 0; j < res.data[i].goods.length; j++) {
  834. res.data[i].goods[j].flag = false
  835. }
  836. }
  837. item.flag = !item.flag
  838. }
  839. const goodsJson = ref({})
  840. // 根据接口获取值
  841. const getCateList = () => {
  842. const objNew = {}
  843. category().then((res) => {
  844. if (res.code == 1) {
  845. for (let i = 0; i < res.data.length; i++) {
  846. res.data[i].flag = false
  847. if (res.data[i].goods != '') {
  848. for (let j = 0; j < res.data[i].goods.length; j++) {
  849. res.data[i].goods[j].size.forEach((key) => {
  850. key.names[0].check = true
  851. })
  852. res.data[i].goods[j].sku.forEach((key) => {
  853. // console.error(key.amount)
  854. // 价格 库存 id 秒杀价
  855. key.num = 1
  856. key.num_install = 1
  857. objNew[key.temp_ids] = key.amount + ',' + key.num_stock + ',' + key.id + ',' + (key.amount_kill == null ? 0 : key.amount_kill) +','
  858. + (key.num_stock_kill)
  859. })
  860. }
  861. }
  862. }
  863. console.error(goodsJson)
  864. goodsJson.value = objNew
  865. categoryGoods.arr = res.data
  866. }
  867. })
  868. }
  869. const programme_lists = () => {
  870. const data = {
  871. page: page.value,
  872. limit: limit.value
  873. }
  874. programme_list(data).then((res) => {
  875. if (res.code == 1) {
  876. schemeLists.arr = res.data.data
  877. totalNumber.value = res.data.total
  878. } else {
  879. ElMessage.error(res.msg)
  880. }
  881. })
  882. }
  883. const addSub = ref(true)
  884. const changeClick = (index, item, items) => {
  885. showImg.arr=item
  886. if(item.flag==true){
  887. item.flag=false
  888. return;
  889. }
  890. const data = goodsJson.value
  891. ruleSelList.arr = []
  892. item.size.forEach((_item) => {
  893. ruleSelList.arr.push(_item.names[0].temp_id)
  894. })
  895. let _selKey = ''
  896. ruleSelList.arr.forEach((item, index) => {
  897. if (index == 0) {
  898. _selKey += item
  899. } else {
  900. _selKey += ',' + item
  901. }
  902. })
  903. // console.error(item.sku)
  904. // console.error(index)
  905. // console.error(item.sku[index])
  906. // console.error(item.sku)
  907. // console.error(eval_adds.arr)
  908. eval_adds.arr = item.sku[0]
  909. //如果是0的话 设置安装费不可选择
  910. if(item.is_ni==0){
  911. eval_adds.arr.is_ni=0
  912. eval_adds.arr.num_install=0
  913. }else{
  914. eval_adds.arr.is_ni=1
  915. }
  916. // console.error(eval_adds.arr)
  917. // console.error(item.sku[index=='undefined'])
  918. // console.error(item.sku[index].num_)
  919. // 点击分类的时候把第一项的第一个值设置为true
  920. //item.flag = !item.flag
  921. items.goods.forEach((_item,_index) => {
  922. if(_index == index){
  923. _item.flag = true;
  924. }else{
  925. _item.flag = false;
  926. }
  927. })
  928. const value = goodsJson.value[_selKey].split(',')
  929. if(value[3]>0){
  930. addSub.value = value[4]==0?false:true
  931. }else if(value[3]==0){
  932. addSub.value = value[1]==0?false:true
  933. }
  934. getGoodsAmount(value[2], 1, 1) // 更新阶梯价格
  935. item.size.forEach((_item,_index) => {
  936. _item.names.forEach((nameItem,nameIndex) => {
  937. if(nameIndex == 0){
  938. nameItem['check'] = true
  939. }else{
  940. nameItem['check'] = false
  941. }
  942. });
  943. });
  944. }
  945. let showImg=reactive({
  946. arr:[]
  947. })
  948. const changeFatherClick = (index, item) => {
  949. showImg.arr=item.goods[0]
  950. if(item.flag==true){
  951. item.flag=false
  952. return;
  953. }
  954. updateLists(index, item)
  955. }
  956. </script>
  957. <style lang="less" scoped >
  958. .tetemp_idsxts{
  959. color: #333;
  960. text-align: center;
  961. margin: 0 auto;
  962. padding: 30px 0;
  963. font-size: 20px;
  964. }
  965. .input_s{
  966. display: flex;
  967. line-height: 20px;
  968. margin-bottom: 10px
  969. }
  970. .colorStyles{
  971. color: #333!important;
  972. background-color: #F0F2F5!important;
  973. }
  974. .flex-views{
  975. display: flex;
  976. border-bottom: 1px solid #f4f4f4;
  977. position: relative;
  978. //padding-bottom: 10px;
  979. padding: 10px 0;
  980. flex-wrap: wrap;
  981. }
  982. .confirms{
  983. width: 100px;
  984. margin: 20px auto;
  985. height: 40px;
  986. background: #4171B3;
  987. border-radius: 2px;
  988. text-align: center;
  989. line-height: 40px;
  990. color:#fff;
  991. font-size: 16px;
  992. //position: absolute;
  993. //bottom: 20px;
  994. //left: 50%;
  995. // margin:20px auto;
  996. }
  997. .buttons{
  998. display: flex;
  999. justify-content: center;
  1000. align-items: center;
  1001. padding: 20px;
  1002. cursor: pointer;
  1003. div{
  1004. width: 100px;
  1005. height: 40px;
  1006. border-radius: 2px;
  1007. border: 1px solid #4171B3;
  1008. color: #4171B3;
  1009. text-align: center;
  1010. line-height: 40px;
  1011. margin-right: 20px;
  1012. }
  1013. }
  1014. /deep/ .input_s .el-input{
  1015. width: 30px;
  1016. height: 24px;
  1017. }
  1018. /deep/ .input_s .el-input .el-input__inner{
  1019. width: 50px!important;
  1020. height: 22px!important;;
  1021. padding-left: 0;
  1022. padding-right: 0;
  1023. text-align: center;
  1024. }
  1025. /deep/ .input-s .el-input{
  1026. padding: 0;
  1027. margin: 0;
  1028. width: 300px;
  1029. }
  1030. /deep/ .sum .el-input{
  1031. padding: 0;
  1032. margin: 0;
  1033. width: 40px;
  1034. }
  1035. /deep/ .sum .el-input .el-input__inner{
  1036. text-align: center;
  1037. width: 40px;
  1038. height: 22px;
  1039. line-height: 26px;
  1040. background: #F0F2F5;
  1041. border-radius: 2px;
  1042. border: 1px solid #D7DBE0;
  1043. padding: 0;
  1044. margin: 0;
  1045. }
  1046. .classIndex{
  1047. //background: #F0F2F5!important;
  1048. border: 1px solid #4171B3!important;
  1049. color: #4171B3!important;
  1050. }
  1051. .success{
  1052. text-align: center;
  1053. img{
  1054. width: 80px;
  1055. height: 80px;
  1056. }
  1057. }
  1058. .texts{
  1059. color: #999;
  1060. font-size: 18px;
  1061. text-align: center;
  1062. padding: 20px 0 40px 0;
  1063. }
  1064. /deep/ .boxs .el-dialog{
  1065. width: 550px!important;
  1066. }
  1067. /deep/ .el-dialog{
  1068. width: 750px!important;
  1069. }
  1070. /deep/ .el-dialog__body{
  1071. //padding: 0!important;
  1072. }
  1073. .scheme{
  1074. .examin-content{
  1075. height: 400px;
  1076. overflow-y: auto;
  1077. }
  1078. .examin-list{
  1079. border-bottom: 1px solid #EEEEEE;
  1080. padding: 10px 10px;
  1081. display: flex;
  1082. position: relative;
  1083. .check{
  1084. margin: 40px 10px 0 10px;
  1085. .boxs{
  1086. width: 14px;
  1087. height: 14px;
  1088. border: 1px solid #999999;
  1089. border-radius: 10px;
  1090. }
  1091. .check-icon{
  1092. img{
  1093. width: 20px;
  1094. height: 20px;
  1095. }
  1096. }
  1097. }
  1098. .examin-goods{
  1099. img{
  1100. width: 100px;
  1101. height: 100px
  1102. }
  1103. }
  1104. .examin-list-right{
  1105. margin-left: 10px;
  1106. .examin-name{
  1107. color: #333;
  1108. font-size: 14px;
  1109. margin: 10px 0 10px 0;
  1110. }
  1111. .examin-rule{
  1112. font-size: 12px;
  1113. color: #999999;
  1114. }
  1115. .examin-money{
  1116. color: #EA2813;
  1117. font-size: 14px;
  1118. margin-top: 10px;
  1119. }
  1120. }
  1121. }
  1122. .scheme-content{
  1123. height:400px;
  1124. overflow-y: auto;
  1125. .scheme-list{
  1126. .scheme-text{
  1127. width:180px;
  1128. }
  1129. height: 76px;
  1130. border-bottom: 1px solid #DDDDDD;
  1131. padding: 0 24px;
  1132. line-height: 76px;
  1133. display: flex;
  1134. justify-content: space-between;
  1135. .scheme-flex{
  1136. color: #4171B3;
  1137. font-size: 14px;
  1138. display: flex;
  1139. .line{
  1140. background: #EEEEEE;
  1141. width: 1px;
  1142. height: 14px;
  1143. margin: 30px 10px 0 10px;
  1144. }
  1145. }
  1146. .scheme-time{
  1147. img{
  1148. width: 24px;
  1149. height: 24px;
  1150. margin:25px 0 0 0;
  1151. }
  1152. }
  1153. }
  1154. }
  1155. .scheme-tops{
  1156. display: flex;
  1157. height: 54px;
  1158. background: #FAFAFA;
  1159. border-radius: 4px 4px 0px 0px;
  1160. padding: 0 25px;
  1161. justify-content: space-between;
  1162. line-height: 54px;
  1163. border-bottom: 1px solid #DDDDDD;
  1164. .scheme-name{
  1165. color: #666;
  1166. font-size: 14px;
  1167. flex: 1;
  1168. text-align: center;
  1169. }
  1170. .scheme-time{
  1171. display: flex;
  1172. .sort-icon{
  1173. img{
  1174. width: 24px;
  1175. height: 24px;
  1176. margin: 15px 0 0 3px;
  1177. }
  1178. }
  1179. }
  1180. }
  1181. }
  1182. /deep/ .el-dialog__header::before{
  1183. display: none;
  1184. }
  1185. /deep/ .el-dialog__header{
  1186. height: 76px;
  1187. line-height: 76px;
  1188. text-align: center;
  1189. border:none;
  1190. color: #333;
  1191. font-size: 20px;
  1192. }
  1193. .add-icons{
  1194. width: 20px;
  1195. height: 20px;
  1196. background: #F0F2F5;
  1197. border-radius: 2px;
  1198. border: 1px solid #D7DBE0;
  1199. line-height: 20px;
  1200. text-align: center;
  1201. }
  1202. .sum-icons{
  1203. width: 37px;
  1204. height: 20px;
  1205. background: #F0F2F5;
  1206. border-radius: 2px;
  1207. border: 1px solid #D7DBE0;
  1208. line-height: 20px;
  1209. text-align: center;
  1210. }
  1211. .del-icons{
  1212. width: 20px;
  1213. height: 20px;
  1214. background: #F0F2F5;
  1215. border-radius: 2px;
  1216. border: 1px solid #D7DBE0;
  1217. line-height: 20px;
  1218. text-align: center;
  1219. }
  1220. .login-wrapper{
  1221. background-color: #F7F8FA;
  1222. .evaluate{
  1223. .evaluate-right{
  1224. margin-left: 12px;
  1225. .evaluate-text1{
  1226. height: 150px;
  1227. margin:10px 0;
  1228. .evaluate-right-money{
  1229. position: relative;
  1230. text-align: center;
  1231. padding-top: 70px;
  1232. .money{
  1233. color: #EA2813;
  1234. font-size: 17px;
  1235. margin-bottom: 10px;
  1236. font-weight: bold;
  1237. }
  1238. .discounts{
  1239. color: #999;
  1240. font-size: 12px;
  1241. }
  1242. }
  1243. .kf{
  1244. position: relative;
  1245. z-index: 1;
  1246. cursor: pointer;
  1247. img{
  1248. width: 92px;
  1249. height: 30px;
  1250. position: absolute;
  1251. right: 20px;
  1252. top: 20px;
  1253. }
  1254. }
  1255. img{
  1256. width: 396px;
  1257. height: 160px;
  1258. position: absolute;
  1259. }
  1260. }
  1261. .evaluate-bottom{
  1262. margin-bottom: 30px;
  1263. padding-bottom: 30px;
  1264. .shopping-buttons{
  1265. .pay{
  1266. background-color: #4171B3!important;
  1267. border: none!important;
  1268. color: #fff!important;
  1269. }
  1270. display: flex;
  1271. padding: 0;
  1272. margin-top: 30px;
  1273. .flex-s{
  1274. display: flex;
  1275. margin-left: 25px;
  1276. }
  1277. .shopping-button{
  1278. .share{
  1279. img{
  1280. width: 30px;
  1281. height: 30px;
  1282. margin: 5px 5px 0 10px;
  1283. }
  1284. }
  1285. width: 100px;
  1286. height: 40px;
  1287. border-radius: 2px;
  1288. border: 1px solid #4171B3;
  1289. text-align: center;
  1290. line-height: 40px;
  1291. color: #4171B3;
  1292. font-size: 16px;
  1293. margin-right: 22px;
  1294. }
  1295. }
  1296. background-color: #fff;
  1297. //height: 300px;
  1298. margin-top: 20px;
  1299. .shopping-content{
  1300. .shopping-list{
  1301. margin-top: 10px;
  1302. display: flex;
  1303. padding: 0 0 10px 0;
  1304. .check{
  1305. margin: 40px 10px 0 10px;
  1306. .boxs{
  1307. width: 14px;
  1308. height: 14px;
  1309. border: 1px solid #999999;
  1310. border-radius: 10px;
  1311. }
  1312. .check-icon{
  1313. img{
  1314. width: 20px;
  1315. height: 20px;
  1316. }
  1317. }
  1318. }
  1319. .shopping-left{
  1320. img{
  1321. width: 100px;
  1322. height: 100px;
  1323. }
  1324. }
  1325. .shopping-right{
  1326. width: 240px;
  1327. .money-all{
  1328. color: #000;
  1329. font-size: 12px;
  1330. margin-top: 10px;
  1331. text-align: right;
  1332. span{
  1333. font-size: 14px;
  1334. color: #EA2813;
  1335. }
  1336. }
  1337. margin: 10px 10px;
  1338. .shopping-spec{
  1339. display: flex;
  1340. margin: 0 0 5px 0;
  1341. line-height: 25px;
  1342. .money{
  1343. color: #EA2813;
  1344. font-size: 12px;
  1345. }
  1346. .sum{
  1347. color: #999;
  1348. font-size: 12px;
  1349. }
  1350. .shoppings{
  1351. margin-left: 10px;
  1352. }
  1353. }
  1354. .goods-name{
  1355. color: #333;
  1356. font-size: 14px;
  1357. }
  1358. .goods-rule{
  1359. color: #999;
  1360. font-size: 12px;
  1361. margin-top: 10px;
  1362. margin-bottom: 10px;
  1363. }
  1364. }
  1365. }
  1366. }
  1367. .evaluate-titles{
  1368. .manage{
  1369. color: #4171B3;
  1370. font-size: 16px;
  1371. }
  1372. height: 70px;
  1373. border-bottom: 1px solid #f4f4f4;
  1374. line-height: 70px;
  1375. display: flex;
  1376. justify-content: space-between;
  1377. padding: 0 20px;
  1378. .shopping-text{
  1379. color: #333;
  1380. font-size: 18px;
  1381. margin-left: 10px;
  1382. flex: 1;
  1383. font-weight: 500;
  1384. }
  1385. .shopping{
  1386. margin-top: 6px;
  1387. img{
  1388. width: 30px;
  1389. height: 30px;
  1390. }
  1391. }
  1392. }
  1393. }
  1394. .evaluate-text{
  1395. cursor: pointer;
  1396. img{
  1397. width: 396px;
  1398. height: 60px;
  1399. }
  1400. }
  1401. }
  1402. display: flex;
  1403. padding: 10px 260px 0 260px;
  1404. .evaluate-goods{
  1405. background-color: #fff;
  1406. margin-bottom: 30px;
  1407. height: fit-content;
  1408. .evaluate-list:nth-child(1){
  1409. margin-top: 0;
  1410. }
  1411. .evaluate-list{
  1412. cursor: pointer;
  1413. width: 992px;
  1414. background: #F0F2F5;
  1415. border-radius: 2px;
  1416. margin-top: 10px;
  1417. .evaluate-gds{
  1418. display: flex;
  1419. background-color: #fff;
  1420. padding: 10px 20px;
  1421. .evaluate-contents{
  1422. margin-left: 20px;
  1423. .evaluate-lists{
  1424. .rule-style{
  1425. //position: absolute;
  1426. width:700px;
  1427. //left: 0;
  1428. }
  1429. .evaluate-goods-rules{
  1430. .sum{
  1431. flex: 1;
  1432. // margin-left: 80px;
  1433. display: flex;
  1434. }
  1435. //border-bottom: 1px solid #EDEDED;
  1436. line-height: 46px;
  1437. //display: flex;
  1438. margin: 0 10px;
  1439. .goods-rule{
  1440. margin-right: 20px;
  1441. //width: 10px!important;
  1442. //min-width: 100px;
  1443. //flex: 1;
  1444. .colors{
  1445. background-color: #F0F2F5;
  1446. border: 1px solid #4171B3;
  1447. }
  1448. .goods-rule-name{
  1449. background: #F0F2F5;
  1450. color: #333;
  1451. font-size: 14px;
  1452. padding: 0 14px;
  1453. height: 24px;
  1454. line-height: 24px;
  1455. margin-top: 10px;
  1456. //width: fit-content;
  1457. width: fit-content;
  1458. }
  1459. }
  1460. }
  1461. width: 812px;
  1462. border-radius: 2px;
  1463. margin-bottom: 10px;
  1464. justify-content: space-between;
  1465. .evaluate-rules{
  1466. display: flex;
  1467. justify-content: space-between;
  1468. height: 46px;
  1469. line-height: 46px;
  1470. background-color: #F0F2F5;
  1471. padding: 0 20px;
  1472. }
  1473. }
  1474. }
  1475. .evaluate-img{
  1476. img{
  1477. width: 120px;
  1478. height: 120px;
  1479. }
  1480. }
  1481. }
  1482. .evaluate-rule{
  1483. display: flex;
  1484. justify-content: space-between;
  1485. line-height: 46px;
  1486. padding: 0 20px;
  1487. height: 46px;
  1488. }
  1489. }
  1490. }
  1491. }
  1492. }
  1493. </style>