detailed.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903
  1. <template>
  2. <div style="overflow-y: scroll;padding-bottom: 6.6rem;">
  3. <div>
  4. <div class="home_header">完工</div>
  5. <div class="home_header_line"></div>
  6. <div class="home_con_body">
  7. <div class="send_work" v-for="(item, index) in list" :key="index">
  8. <div class="secd_flex">
  9. <div class="secd_title">
  10. <span>派工单号:</span><span>{{ item.dispatch_order_no }}</span>
  11. </div>
  12. <span class="secd_title_d">{{ item.product_title }}</span>
  13. <div style="height: 1px;background-color: #fff;opacity: 0.3;"></div>
  14. <div style="display: flex;flex-direction: column;gap: 1rem;margin-top: 1rem;">
  15. <div class="secd_input">
  16. <div class="secd_input_l">数量:</div>
  17. <div class="secd_input_r">
  18. <input type="text" v-model="item.finished_num" @blur="handleChangeNumber(index)"
  19. placeholder="请输入数量">
  20. </div>
  21. </div>
  22. <div class="secd_input">
  23. <div class="secd_input_l">班组:</div>
  24. <div class="secd_input_r">
  25. <b-form-select id="input-3" v-model="item.team_finish_id" :options="teamList" class="inp select_list"
  26. required placeholder="请选择站点" @change="(e) => handleChangeTeam(e, index)"></b-form-select>
  27. </div>
  28. </div>
  29. <div class="secd_input">
  30. <div class="secd_input_l">人员:</div>
  31. <div class="secd_input_r">
  32. <Select id="input-3" multiple v-model="item.employee_id"
  33. required @on-change="handleChangeEmployee($event, index)">
  34. <Option v-for="item in employeeList" :key="item.value" :label="item.text" :value="item.value"/>
  35. </Select>
  36. </div>
  37. </div>
  38. <div class="secd_input">
  39. <div class="secd_input_l">设备:</div>
  40. <div class="secd_input_r">
  41. <b-form-select id="input-3" v-model="item.equipment_id" :options="equipmentList" class="inp select_list"
  42. required placeholder="请选择站点" @change="(e) => handleChangeEquipment(e, index)"></b-form-select>
  43. </div>
  44. </div>
  45. </div>
  46. <div style="height: 1px;background-color: #fff;opacity: 0.3;margin-top: .8rem;margin-bottom: .8rem;"></div>
  47. <div v-for="(_item, _index) in item.break" :key="_index"
  48. style="display: flex;flex-direction: column;gap: 1rem;margin-top: .5rem;">
  49. <div class="defective_products">
  50. <div>不良品</div>
  51. <div style="display: flex;align-items: center;gap: .625rem;">
  52. <img style="width: 1.2rem;height: 1.2rem;" @click="handleBreakAdd(_index, item, index)" src="../../../assets/home/j.png" alt="">
  53. <img style="width: 1.2rem;height: 1.2rem;" @click="handleBreakCancel(_index, item, index)" src="../../../assets/home/z.png" alt="">
  54. </div>
  55. </div>
  56. <div class="secd_input">
  57. <div class="secd_input_l">不良品缺陷:</div>
  58. <div class="secd_input_r">
  59. <b-form-select id="input-3" v-model="_item.break_defect" :options="breakDefectList" class="inp select_list" required></b-form-select>
  60. </div>
  61. </div>
  62. <div class="secd_input">
  63. <div class="secd_input_l">不良品原因:</div>
  64. <div class="secd_input_r">
  65. <b-form-select id="input-3" v-model="_item.break_id" :options="breakList" class="inp select_list"
  66. required></b-form-select>
  67. </div>
  68. </div>
  69. <div class="secd_input">
  70. <div class="secd_input_l">不良品数量:</div>
  71. <div class="secd_input_r">
  72. <input type="text" placeholder="请输入数量" v-model="_item.break_num">
  73. </div>
  74. </div>
  75. <div class="secd_input">
  76. <div class="secd_input_l" style="width: 6rem;">花色1:</div>
  77. <div class="secd_input_r">
  78. <b-form-select id="input-3" v-model="_item.color_code" :options="item.colorList" class="inp select_list" @change="handleChangeColor($event,_index,index,item)" required></b-form-select>
  79. </div>
  80. </div>
  81. <div class="secd_input">
  82. <div class="secd_input_l" style="width: 6rem;">花色2:</div>
  83. <div class="secd_input_r">
  84. <b-form-select id="input-3" v-model="_item.color_code_two" :options="item.colorList" class="inp select_list" @change="handleChangeColor1($event,_index,index,item)" required></b-form-select>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. <div class="footer" style="display: flex;justify-content: space-between;position: fixed;bottom: 3rem;left: 50%;transform: translateX(-50%);">
  92. <div class="return_btn" @click="handleReturn">返回</div>
  93. <div class="confirm_btn" @click="handleSure">确认</div>
  94. </div>
  95. </div>
  96. </div>
  97. </template>
  98. <script>
  99. export default {
  100. data () {
  101. return {
  102. list: [],
  103. name: '',
  104. formData: {},
  105. teamList: [],
  106. employeeList: [],
  107. equipmentList: [],
  108. state: true,
  109. breakList: [],
  110. breakDefectList: []
  111. }
  112. },
  113. created () {
  114. // 获取不良品原因
  115. const data2 = {
  116. url: 'http://122.112.250.253:7774/jbl/api/module-data/defective_list/page',
  117. post: {
  118. "direction": "DESC",
  119. "property": "id",
  120. "fromClientType": "pc",
  121. "number": 0,
  122. "sorts": [],
  123. "rules": [],
  124. "size": 999,
  125. "specialConditions": [],
  126. "dynamicFormCode": "defective",
  127. "developmentSystemId": null,
  128. "debugFlag": true
  129. }
  130. }
  131. this.axios.post('/api/testdwy', { ...data2 }).then(res => {
  132. this.breakList = res.data.content.filter(v => v.status).filter(c => c.defective_type === "REASON")
  133. this.breakDefectList = res.data.content.filter(v => v.status).filter(c => c.defective_type === "DEFECT")
  134. this.breakDefectList.forEach(v => {
  135. v.value = v.defective_code
  136. v.text = v.title
  137. })
  138. this.breakList.forEach(v => {
  139. v.value = v.defective_code
  140. v.text = v.title
  141. })
  142. })
  143. // 获取设备
  144. const data1 = {
  145. url: 'http://122.112.250.253:7774/jbl/api/module-data/device_list/page',
  146. post: {
  147. "direction": "DESC",
  148. "property": "id",
  149. "fromClientType": "pc",
  150. "number": 0,
  151. "sorts": [],
  152. "rules": [],
  153. "size": 15,
  154. "specialConditions": [],
  155. "dynamicFormCode": "device",
  156. "developmentSystemId": null,
  157. "debugFlag": true
  158. }
  159. }
  160. this.axios.post('/api/testdwy', { ...data1 }).then(res => {
  161. this.equipmentList = res.data.content.filter(v => v.status)
  162. this.equipmentList.forEach(v => {
  163. v.value = v.device_code
  164. v.text = v.title
  165. })
  166. })
  167. // 获取班组
  168. const data = {
  169. url: 'http://122.112.250.253:7774/jbl/api/module-data/team_list/page',
  170. post: {
  171. "direction": "DESC",
  172. "property": "id",
  173. "fromClientType": "pc",
  174. "number": 0,
  175. "sorts": [],
  176. "rules": [],
  177. "size": 15,
  178. "specialConditions": [],
  179. "dynamicFormCode": "team",
  180. "developmentSystemId": null,
  181. "debugFlag": true
  182. }
  183. }
  184. this.axios.post('/api/testdwy', { ...data }).then(res => {
  185. this.teamList = res.data.content.filter(v => v.status)
  186. this.teamList.forEach(v => {
  187. v.value = v.team_code
  188. v.text = v.title
  189. })
  190. })
  191. // 获取人员
  192. const data3 = {
  193. url: 'http://122.112.250.253:7774/jbl/api/module-data/team_code_btn/page',
  194. post: {
  195. "direction": "DESC",
  196. "property": "id",
  197. "fromClientType": "pc",
  198. "number": 0,
  199. "sorts": [],
  200. "rules": [],
  201. "size": 15,
  202. "specialConditions": [],
  203. "workflowSearchBean": {},
  204. "dynamicFormCode": "person",
  205. "dynamicFormTable": null,
  206. "ignoreField": true,
  207. "developmentSystemId": null,
  208. "debugFlag": true
  209. }
  210. }
  211. this.axios.post('/api/testdwy', { ...data3 }).then(res => {
  212. this.employeeList = res.data.content
  213. this.employeeList.forEach(v => {
  214. v.value = v.no
  215. v.text = v.name
  216. })
  217. })
  218. },
  219. beforeRouteLeave (to, from, next) {
  220. localStorage.removeItem(this.$route.query.id + '')
  221. next()
  222. },
  223. beforeRouteEnter (to, from, next) {
  224. if (localStorage.getItem(to.query.id)) {
  225. next()
  226. } else {
  227. next(vm => {
  228. vm.$router.replace('/cms/finish/detail')
  229. // 跳到该路由页面后,再替换为from.path来源路径
  230. })
  231. }
  232. },
  233. mounted () {
  234. const id = this.$route.query.id
  235. this.initData(id)
  236. },
  237. methods: {
  238. handleChangeColor(e,_index,index,row){
  239. this.list[index].break[_index].color = row.colorList.find(v=>v.value==e).paper_decor;
  240. this.list[index].break[_index].color_code_show = row.colorList.find(v=>v.value==e).paper_decor;
  241. this.list[index].break[_index].paper_company_title = row.colorList.find(v=>v.value==e).paper_company_title;
  242. this.list[index].break[_index].paper_company_code = row.colorList.find(v=>v.value==e).paper_company_code;
  243. },
  244. handleChangeColor1(e,_index,index,row){
  245. this.list[index].break[_index].color_two = row.colorList.find(v=>v.value==e).paper_decor;
  246. this.list[index].break[_index].color_code_two_show = row.colorList.find(v=>v.value==e).paper_decor;
  247. this.list[index].break[_index].paper_company_title_two = row.colorList.find(v=>v.value==e).paper_company_title;
  248. this.list[index].break[_index].paper_company_code_two = row.colorList.find(v=>v.value==e).paper_company_code;
  249. },
  250. handleChangeNumber (index) {
  251. console.log(this.list)
  252. if(this.list[index].finished_num>this.list[index].not_finished_num){
  253. this.$Message.warning('不能超过未完工数量!')
  254. this.list[index].finished_num = this.list[index].not_finished_num
  255. }
  256. },
  257. handleChangeEmployee (e, index) {
  258. this.list[index].employee_id_show = this.employeeList.filter(v => e.indexOf(v.no) !== -1).map(v => v.name).toString().replace(/,/g, '/$/$/$').replace(/\//g, '')
  259. console.log(this.list[index])
  260. },
  261. handleChangeTeam (e, index) {
  262. this.list[index].team_id_show = this.teamList.find(v => v.team_code === e).title
  263. },
  264. handleChangeEquipment (e, index) {
  265. this.list[index].equipment_id_show = this.equipmentList.find(v => v.device_code === e).title
  266. },
  267. initData (id) {
  268. this.list = JSON.parse(localStorage.getItem(id + ''))
  269. this.list.forEach(v => {
  270. let values = []
  271. if (v.color_code) {
  272. values.push(v.color_code)
  273. }
  274. if (v.color_code_two) {
  275. values.push(v.color_code_two)
  276. }
  277. // 获取花色
  278. const data5 = {
  279. url: 'http://122.112.250.253:7774/jbl/api/module-data/purchase_receipt_product/page',
  280. post: {"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[{"field":"paper_model","option":"IN","values":values}],"size":999,"specialConditions":[],"workflowSearchBean":{},"dynamicFormCode":"purchase_receipt","dynamicFormTable":null,"ignoreField":true,"developmentSystemId":null,"debugFlag":true}
  281. }
  282. this.axios.post('/api/testdwy', { ...data5 }).then(res => {
  283. v.colorList = [];
  284. res.data.content.forEach(c=>{
  285. let arr = v.colorList.map(v=>v.paper_decor);
  286. if(arr.indexOf(c.paper_decor)==-1){
  287. v.colorList.push(c);
  288. }
  289. })
  290. v.colorList.forEach(v=>{
  291. v.value = v.paper_model
  292. v.text = v.paper_decor
  293. })
  294. })
  295. v.team_finish_id = v.dispatch_orders.team_id
  296. v.team_id_show = v.dispatch_orders.team_id_show
  297. v.equipment_id = v.dispatch_orders.equipment_id
  298. v.equipment_id_show = v.dispatch_orders.equipment_id_show
  299. v.not_finished_num = v.dispatch_num - v.finished_num
  300. v.finished_num = v.not_finished_num
  301. v.dispatch_order_no = v.dispatch_orders.dispatch_no
  302. v.dispatch_item_id = v.id
  303. v.dispatch_item_no = v.item_num
  304. v.site = null
  305. v.id = null
  306. v.employee_id = v.dispatch_orders.employee_id ? v.dispatch_orders.employee_id.split(',') : []
  307. v.employee_id_show = v.dispatch_orders.employee_id_show
  308. v.break = [
  309. {
  310. break_id: '',
  311. break_num: 0,
  312. break_defect:'',
  313. color:'',
  314. color_code:"",
  315. color_code_show:'',
  316. color_two:'',
  317. color_code_two:'',
  318. color_code_two_show:'',
  319. paper_company_code_two:'',
  320. paper_company_title_two:'',
  321. paper_company_code:'',
  322. paper_company_title:''
  323. }
  324. ]
  325. })
  326. },
  327. handleBreakAdd (_index, item, index) {
  328. item.break.splice(_index + 1, 0, {
  329. break_id: '',
  330. break_num: 0,
  331. break_defect:'',
  332. color:'',
  333. color_code:"",
  334. color_code_show:'',
  335. color_two:'',
  336. color_code_two:'',
  337. color_code_two_show:'',
  338. paper_company_code_two:'',
  339. paper_company_title_two:'',
  340. paper_company_code:'',
  341. paper_company_title:''
  342. })
  343. this.list.splice(index, 1, item)
  344. },
  345. handleBreakCancel (_index, item, index) {
  346. if (_index === 0) {
  347. item.break = [{
  348. break_id: '',
  349. break_num: 0,
  350. break_defect:'',
  351. color:'',
  352. color_code:"",
  353. color_code_show:'',
  354. color_two:'',
  355. color_code_two:'',
  356. color_code_two_show:'',
  357. paper_company_code_two:'',
  358. paper_company_title_two:'',
  359. paper_company_code:'',
  360. paper_company_title:''
  361. }]
  362. } else {
  363. item.break.splice(_index, 1)
  364. }
  365. this.list.splice(index, 1, item)
  366. },
  367. handleReturn () {
  368. localStorage.removeItem(this.$route.query.id + '')
  369. this.$router.go(-1)
  370. },
  371. // handleChooseTeam (e) {
  372. // if (e) {
  373. // this.formData.team_id = e
  374. // // 获取班组下的人员
  375. // const id = this.teamList.find(v => v.team_code === this.formData.team_id).dynamic_form_value_id
  376. // const data = {
  377. // url: `http://122.112.250.253:7774/jbl/api/module-data/team/team/472629516238663680/${id}`
  378. // }
  379. // this.axios.post('/api/testdwyget', { ...data }).then(res => {
  380. // this.employeeList = res.data.data.employee
  381. // this.employeeList.forEach(v => {
  382. // v.value = v.team_code
  383. // v.text = v.team_code_show
  384. // })
  385. // this.formData.employee_id = []
  386. // })
  387. // } else {
  388. // this.formData.employee_id = []
  389. // }
  390. // },
  391. handleSure () {
  392. let arr = this.list.map(v =>v.break)
  393. let arr1 = [];
  394. arr.forEach(v=>{
  395. arr1.push(...v);
  396. })
  397. arr1 = arr1.filter(vv => vv.break_id && vv.break_defect && vv.break_num)
  398. if(!arr1.every(c=>c.color_code)){
  399. return this.$Message.warning('不良品花色1必选!')
  400. }
  401. // console.log(this.list);
  402. // return
  403. if(this.state){
  404. this.state = false
  405. this.list.forEach((v, index) => {
  406. v.not_finished_num = v.not_finished_num - v.finished_num
  407. let data3 = {
  408. url: 'http://122.112.250.253:7774/jbl/api/module-data/completion_orders/completion_orders',
  409. post: {
  410. bizId: -1,
  411. bizTypeEk: 'LOWCODE',
  412. dynamicFormId: "474201923419320320",
  413. showModelId: "474382714828959744",
  414. data: {
  415. completion_orders: {
  416. completion_order_no: null,
  417. completion_time: new Date(),
  418. created_by: null,
  419. created_date: null,
  420. employee_id: v.employee_id.length === 0 ? null : v.employee_id.toString(),
  421. employee_id_show: v.employee_id_show,
  422. equipment_id: v.equipment_id,
  423. equipment_id_show: v.equipment_id_show,
  424. last_modified_by: null,
  425. last_modified_date: null,
  426. process_id: v.dispatch_orders.process_id,
  427. process_id_show: v.dispatch_orders.process_id_show,
  428. remark: null,
  429. site: null,
  430. team_id: v.team_finish_id,
  431. team_id_show: v.team_id_show,
  432. finished_num_total:v.finished_num
  433. },
  434. completion_orders_dtl: [v]
  435. }
  436. }
  437. }
  438. const data4Dtil = []
  439. v.break.forEach(vv => {
  440. if (vv.break_id && vv.break_defect && vv.break_num) {
  441. v.defective_num = vv.break_num
  442. v.defective_remark = vv.break_id
  443. v.defective_remark_show = vv.title
  444. v.defective_defect = vv.break_defect
  445. v.defective_defect_show = vv.title
  446. v.color = vv.color
  447. v.color_code = vv.color_code
  448. v.color_code_show = vv.color_code_show
  449. v.color_two = vv.color_two
  450. v.color_code_two = vv.color_code_two
  451. v.color_code_two_show = vv.color_code_two_show
  452. v.paper_company_code_two = vv.paper_company_code_two
  453. v.paper_company_title_two = vv.paper_company_title_two
  454. v.paper_company_code = vv.paper_company_code
  455. v.paper_company_title = vv.paper_company_title
  456. data4Dtil.push(JSON.parse(JSON.stringify(v)))
  457. }
  458. })
  459. this.axios.post('/api/testdwy', { ...data3 }).then(res => {
  460. if (res.code === 200) {
  461. if (data4Dtil.length > 0) {
  462. const data4 = {
  463. url: 'http://122.112.250.253:7774/jbl/api/module-data/defective_orders/defective_orders',
  464. post: {
  465. bizId: -1,
  466. bizTypeEk: 'LOWCODE',
  467. dynamicFormId: "474139280406949888",
  468. showModelId: "474140935059877888",
  469. data: {
  470. defective_orders: {
  471. defective_order_no: null,
  472. defection_time: new Date(),
  473. created_by: null,
  474. created_date: null,
  475. employee_id: v.employee_id.length === 0 ? null : v.employee_id.toString(),
  476. employee_id_show: v.employee_id_show,
  477. equipment_id: v.equipment_id,
  478. equipment_id_show: v.equipment_id_show,
  479. last_modified_by: null,
  480. last_modified_date: null,
  481. process_id: v.dispatch_orders.process_id,
  482. process_id_show: v.dispatch_orders.process_id_show,
  483. site: null,
  484. team_id: v.team_finish_id,
  485. team_id_show: v.team_id_show
  486. },
  487. defective_orders_dtl: data4Dtil
  488. }
  489. }
  490. }
  491. this.axios.post('/api/testdwy', { ...data4 }).then(req => {
  492. if (req.code == 200) {
  493. if (index == this.list.length - 1) {
  494. this.$Message.success(req.msg)
  495. this.$router.push('/cms/home')
  496. }
  497. }
  498. setTimeout(() => {
  499. this.state = true
  500. }, 5000)
  501. })
  502. } else {
  503. if (index == this.list.length - 1) {
  504. this.$Message.success(res.msg)
  505. this.$router.push('/cms/home')
  506. setTimeout(()=>{
  507. this.state = true
  508. },5000)
  509. }
  510. }
  511. }
  512. })
  513. })
  514. }
  515. }
  516. }
  517. }
  518. </script>
  519. <style lang="scss" scoped>
  520. ::v-deep.inp {
  521. background: #032a64 !important;
  522. // opacity: 0.4;
  523. border: none;
  524. color: #fff;
  525. }
  526. ::-webkit-input-placeholder {
  527. color: #ffffff84;
  528. /* 设置占位符文字的颜色 */
  529. }
  530. .defective_products {
  531. display: flex;
  532. justify-content: space-between;
  533. color: #fff;
  534. }
  535. .secd_input {
  536. display: flex;
  537. height: 2.06rem;
  538. font-size: 1rem;
  539. color: #FFFFFF;
  540. .secd_input_l {
  541. display: flex;
  542. align-items: center;
  543. justify-content: center;
  544. width: fit-content;
  545. height: 100%;
  546. }
  547. .secd_input_r {
  548. flex: 1;
  549. input {
  550. width: 100%;
  551. height: 100%;
  552. border-radius: 0.38rem;
  553. border: 0.03rem solid #76CFFF;
  554. background-color: #00000000;
  555. outline: none;
  556. padding: 0 .625rem;
  557. box-sizing: border-box;
  558. color: #fff;
  559. }
  560. }
  561. }
  562. .select_list {
  563. border-radius: 0.38rem;
  564. border: 0.03rem solid #76CFFF;
  565. background-color: #00000000;
  566. outline: none;
  567. padding: 0 .625rem;
  568. box-sizing: border-box;
  569. color: #fff;
  570. width: 100%;
  571. height: 100%;
  572. font-weight: 500;
  573. letter-spacing: 0.1rem;
  574. }
  575. .return_btn {
  576. background-image: url('../../../assets/home/return.png');
  577. background-size: 100% 100%;
  578. }
  579. .confirm_btn {
  580. background-image: url('../../../assets/home/confirm.png');
  581. background-size: 100% 100%;
  582. }
  583. .return_btn,
  584. .confirm_btn {
  585. width: 10.97rem;
  586. height: 3.93rem;
  587. display: flex;
  588. align-items: center;
  589. justify-content: center;
  590. color: #fff;
  591. font-size: 1.06rem;
  592. font-weight: 500;
  593. letter-spacing: 1px;
  594. }
  595. .secd_flex_s>span:nth-child(1) {
  596. font-size: 0.94rem;
  597. color: #ABDFFF;
  598. }
  599. .secd_flex_s>span:nth-child(2) {
  600. font-size: 0.94rem;
  601. color: #03FCD3;
  602. }
  603. .secd_g {
  604. font-size: 1rem;
  605. color: #ABDFFF
  606. }
  607. .secd_title_d {
  608. font-size: 1.13rem;
  609. color: #FFFFFF;
  610. text-shadow: 0px 0px 0px rgba(255, 255, 255, 0.5);
  611. white-space: nowrap;
  612. overflow: hidden;
  613. text-overflow: ellipsis;
  614. }
  615. .secd_flex_w {
  616. display: flex;
  617. justify-content: space-between;
  618. padding-right: 1.6rem;
  619. box-sizing: border-box;
  620. }
  621. .secd_flex {
  622. display: flex;
  623. flex-direction: column;
  624. gap: .375rem;
  625. .secd_title {
  626. font-size: 0.88rem;
  627. color: #ABDFFF;
  628. opacity: 0.5;
  629. }
  630. }
  631. .check_box_c {
  632. width: 1.19rem;
  633. height: 100%;
  634. background-image: url('../../../assets/home/check.png');
  635. background-size: 100% 100%;
  636. }
  637. .check_box_c_active {
  638. width: 1.3rem;
  639. height: 100%;
  640. background-image: url('../../../assets/home/checked.png');
  641. background-size: 100% 100%;
  642. }
  643. .send_work {
  644. background-image: url('../../../assets/home/packUpback.png');
  645. background-size: 100% 100%;
  646. margin-top: .83rem;
  647. padding: 0.44rem 0.4rem 1.34rem 1.22rem;
  648. box-sizing: border-box;
  649. .check_box {
  650. height: 1.19rem;
  651. display: flex;
  652. justify-content: right;
  653. }
  654. }
  655. .com_top {
  656. margin-top: 1.72rem !important;
  657. }
  658. .completion_con {
  659. height: 5.19rem;
  660. background-image: url('../../../assets/home/completion.png');
  661. background-size: 100% 100%;
  662. margin-top: 0.72rem;
  663. padding: 1rem 1.28rem;
  664. box-sizing: border-box;
  665. display: flex;
  666. align-items: center;
  667. justify-content: space-between;
  668. }
  669. .home_con_s {
  670. position: relative;
  671. .pack_up {
  672. position: absolute;
  673. top: 0;
  674. left: 50%;
  675. transform: translateX(-50%);
  676. width: 5.56rem;
  677. background-image: url('../../../assets/home/packUp.png');
  678. background-size: 100% 100%;
  679. height: 1.97rem;
  680. display: flex;
  681. align-items: center;
  682. justify-content: center;
  683. img {
  684. width: 2.59rem;
  685. height: 0.88rem;
  686. }
  687. }
  688. .pack_up_d {
  689. top: -1.1rem;
  690. }
  691. .pack_up_con {
  692. height: 14.09rem;
  693. background-image: url('../../../assets/home/packUpback.png');
  694. background-size: 100% 100%;
  695. padding: 1.78rem 2.03rem;
  696. box-sizing: border-box;
  697. .pack_up_name {
  698. height: 1.25rem;
  699. font-size: 1.25rem;
  700. color: #fff;
  701. font-weight: 600;
  702. }
  703. .pack_up_grid {
  704. display: grid;
  705. grid-template-columns: repeat(2, 1fr);
  706. row-gap: .625rem;
  707. &>div {
  708. display: flex;
  709. flex-direction: column;
  710. row-gap: .625rem;
  711. &>div {
  712. display: flex;
  713. gap: .125rem;
  714. span:nth-child(1) {
  715. font-size: 1.63rem;
  716. font-family: DIN-BoldItalic, DIN;
  717. font-weight: 600;
  718. color: #04FFD5;
  719. line-height: 1.31rem;
  720. transform: skewX(-10deg);
  721. text-shadow: 0px 0px 0px rgba(4, 255, 213, 0.23);
  722. }
  723. span:nth-child(2) {
  724. font-size: 1rem;
  725. font-family: PingFangSC-Regular, PingFang SC;
  726. font-weight: 400;
  727. color: #ABDFFF;
  728. }
  729. }
  730. &>p:nth-child(1) {
  731. font-size: 1rem;
  732. font-family: PingFangSC-Regular, PingFang SC;
  733. font-weight: 400;
  734. color: #ABDFFF;
  735. margin-bottom: 0px;
  736. }
  737. }
  738. }
  739. }
  740. }
  741. .home_con_body {
  742. width: 100%;
  743. padding: 0 1rem 1rem 1rem;
  744. padding-top: 0px;
  745. box-sizing: border-box;
  746. }
  747. .home_header {
  748. height: 2.125rem;
  749. display: flex;
  750. align-items: center;
  751. justify-content: center;
  752. color: #fff;
  753. font-size: 1.125rem;
  754. font-weight: 600;
  755. }
  756. .home_header_line {
  757. width: 100%;
  758. height: .0625rem;
  759. background-color: #fff;
  760. opacity: 0.2;
  761. }
  762. .content {
  763. height: calc(100% - 5rem);
  764. overflow: auto;
  765. .item {
  766. width: 94%;
  767. position: relative;
  768. left: 3%;
  769. margin: 1.5rem 0;
  770. border-radius: 1rem;
  771. background-color: #fff;
  772. box-shadow: 0.16rem 0.1rem 0.1rem 0.1rem #9d9b9b;
  773. font-size: 0.8rem;
  774. display: flex;
  775. flex-wrap: wrap;
  776. .add {
  777. position: absolute;
  778. width: 1.5rem;
  779. height: 1.5rem;
  780. bottom: -0.5rem;
  781. left: -0.5rem;
  782. display: flex;
  783. align-items: center;
  784. justify-content: center;
  785. font-size: 1.3rem;
  786. border-radius: 50%;
  787. box-shadow: 0.1rem 0.1rem 0.1rem 0rem #777676;
  788. background: #fff;
  789. }
  790. .delete {
  791. width: 1.5rem;
  792. height: 1.5rem;
  793. display: flex;
  794. align-items: center;
  795. justify-content: center;
  796. font-size: 1.3rem;
  797. position: absolute;
  798. top: -0.5rem;
  799. right: -0.5rem;
  800. border-radius: 50%;
  801. box-shadow: 0.1rem 0.1rem 0.1rem 0rem #777676;
  802. background: #fff;
  803. }
  804. .unit {
  805. width: 50%;
  806. padding: 0.5rem;
  807. display: flex;
  808. align-items: center;
  809. label {
  810. width: 30%;
  811. text-align: right;
  812. }
  813. }
  814. }
  815. }
  816. .footer_btn {
  817. display: flex;
  818. justify-content: space-between;
  819. align-items: center;
  820. }
  821. .footer {
  822. display: flex;
  823. justify-content: space-between;
  824. margin-top: 2rem;
  825. }
  826. .boo {
  827. font-size: 2rem;
  828. border-radius: 50%;
  829. width: 2rem;
  830. height: 2rem;
  831. display: flex;
  832. align-items: center;
  833. justify-content: center;
  834. margin: 0.5rem;
  835. border: 0.1rem solid;
  836. }
  837. ::v-deep.ivu-select-selection{
  838. background-color: transparent;
  839. }
  840. </style>