columns.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890
  1. import { isSpecialSymbol, hasSpace } from '@/utils/validate'
  2. // 是否定制
  3. const options1 = [
  4. { id: '0', name: '否' },
  5. { id: '1', name: '是' }
  6. ]
  7. // 专属类型
  8. const options2 = [
  9. { id: '0', name: '非泰康' },
  10. { id: '1', name: '泰康' }
  11. ]
  12. // 销售权限
  13. const options3 = [
  14. { id: '0', name: '无销售权限' },
  15. { id: '1', name: '有销售权限' }
  16. ]
  17. // 是否库存品
  18. const options4 = [
  19. { id: '0', name: '非库存品' },
  20. { id: '1', name: '库存品' }
  21. ]
  22. // 是否启用实时金价
  23. const options5 = [
  24. { id: '0', name: '否' },
  25. { id: '1', name: '是' }
  26. ]
  27. // 供货区域
  28. const options6 = [
  29. { id: '1', name: '全国' },
  30. { id: '2', name: '全国除偏远' }
  31. ]
  32. // 是否启用阶梯
  33. const options7 = [
  34. { id: '0', name: '否' },
  35. { id: '1', name: '是' }
  36. ]
  37. // 有无工差
  38. const options8 = [
  39. { id: '0', name: '无工差' },
  40. { id: '1', name: '有工差' }
  41. ]
  42. // 配置要求
  43. const options9 = ['证书', '包装盒', '绒布袋', '标签', '其他']
  44. const listCol = [
  45. { type: 'selection', fixed: 'left', _noset_: true },
  46. {
  47. prop: 'spuCode',
  48. label: '编号',
  49. width: '180px',
  50. _slot_: 'spuCode'
  51. },
  52. {
  53. prop: 'good_thumb_img',
  54. label: '图片',
  55. _slot_: 'good_thumb_img',
  56. width: '45px'
  57. },
  58. {
  59. prop: 'good_name',
  60. label: '名称',
  61. 'min-width': '160px'
  62. },
  63. {
  64. prop: 'cat_name',
  65. label: '分类'
  66. },
  67. {
  68. prop: 'brand_name',
  69. label: '品牌'
  70. },
  71. {
  72. prop: "create_source",
  73. label: "来源",
  74. _slot_: "create_source",
  75. width: '110px'
  76. },
  77. {
  78. prop: 'is_stock',
  79. label: '库存类型',
  80. _slot_: 'is_stock',
  81. width: '85px'
  82. },
  83. {
  84. prop: 'is_combind',
  85. label: '组合类型',
  86. width: '95px',
  87. _slot_: 'is_combind'
  88. },
  89. {
  90. prop: 'isonline',
  91. label: '是否上线',
  92. _slot_: 'isonline',
  93. width: '70px'
  94. },
  95. {
  96. prop: 'status',
  97. label: '状态',
  98. _slot_: 'status',
  99. width: '118px'
  100. },
  101. {
  102. prop: 'has_account',
  103. label: '供应商账号',
  104. _slot_: 'has_account',
  105. width: '85px'
  106. },
  107. {
  108. prop: 'supplierNo',
  109. label: '供应商编号',
  110. width: '110px'
  111. },
  112. {
  113. prop: 'supplierName',
  114. label: '供应商名称',
  115. width: '110px'
  116. },
  117. {
  118. prop: 'companyNo',
  119. label: '业务公司编号',
  120. width: '110px'
  121. },
  122. {
  123. prop: 'companyName',
  124. label: '业务公司名称',
  125. width: '110px'
  126. },
  127. // {
  128. // prop: 'charger_company_name',
  129. // label: '负责人部门',
  130. // minWidth: '150px'
  131. // },
  132. // {
  133. // prop: 'charger',
  134. // label: '负责人',
  135. // width: '70px'
  136. // },
  137. {
  138. prop: 'creater',
  139. label: '创建人',
  140. width: '70px'
  141. },
  142. {
  143. prop: 'addtime',
  144. label: '创建时间',
  145. width: '140px'
  146. },
  147. {
  148. prop: '',
  149. label: '操作',
  150. fixed: 'right',
  151. _noset_: true,
  152. width: '200px',
  153. _slot_: 'operation'
  154. }
  155. ]
  156. const validate_num = (rule, value, callback) => {
  157. const { required } = rule
  158. if (required && value === '') {
  159. callback(new Error('不能为空!'))
  160. } else {
  161. callback()
  162. }
  163. }
  164. const validate_num_0 = (rule, value, callback) => {
  165. const { required } = rule
  166. if (required && value === '') {
  167. callback(new Error('不能为空!'))
  168. } else if (
  169. required &&
  170. (value === '0' ||
  171. value === '0.' ||
  172. value === '0.0' ||
  173. value === '0.00' ||
  174. value === '0.000')
  175. ) {
  176. callback(new Error('不能为零!'))
  177. } else {
  178. callback()
  179. }
  180. }
  181. const validate_good_img = (rule, value, callback) => {
  182. const { required } = rule
  183. if (required && value.length == 0) {
  184. callback(new Error('请上传商品主图!'))
  185. } else if (required && (value.length < 3 || value.length > 10)) {
  186. callback(new Error('商品主图应为3~10张!'))
  187. } else {
  188. callback()
  189. }
  190. }
  191. const validate_desc = (rule, value, callback) => {
  192. const { required } = rule
  193. if (required && value.length == 0) {
  194. callback(new Error('不能为空!'))
  195. } else if (isSpecialSymbol(value)) {
  196. callback(new Error('不能使用英文特殊字符!'))
  197. } else {
  198. callback()
  199. }
  200. }
  201. const validate_good_name = (rule, value, callback) => {
  202. const { required } = rule
  203. if (required && value.length == 0) {
  204. callback(new Error('不能为空!'))
  205. } else if (hasSpace(value)) {
  206. callback(new Error('系统不允许输入转义字符,请检查后重新输入!'))
  207. } else if (isSpecialSymbol(value)) {
  208. callback(new Error('不能使用英文特殊字符!'))
  209. } else {
  210. callback()
  211. }
  212. }
  213. const rules = {
  214. is_combind: [
  215. {
  216. required: true,
  217. message: '请选择是否组合商品',
  218. trigger: 'change'
  219. }
  220. ],
  221. cat_id: [
  222. {
  223. type: 'array',
  224. required: true,
  225. message: '请选择商品分类',
  226. trigger: 'change'
  227. }
  228. ],
  229. brandid: [
  230. {
  231. type: 'array',
  232. required: true,
  233. message: '请选择商品品牌',
  234. trigger: 'change'
  235. }
  236. ],
  237. noble_weight: [
  238. {
  239. required: true,
  240. validator: validate_num_0,
  241. trigger: 'blur'
  242. }
  243. ],
  244. weight: [
  245. {
  246. required: true,
  247. validator: validate_num,
  248. trigger: 'blur'
  249. }
  250. ],
  251. good_type: [
  252. {
  253. required: true,
  254. message: '请选择是否定制',
  255. trigger: 'change'
  256. }
  257. ],
  258. is_stock: [
  259. {
  260. required: true,
  261. message: '请选择是否库存品',
  262. trigger: 'change'
  263. }
  264. ],
  265. company_id: [
  266. {
  267. required: true,
  268. message: '请选择业务公司',
  269. trigger: 'change'
  270. }
  271. ],
  272. supplierNo: [
  273. {
  274. type: 'array',
  275. required: true,
  276. message: '请选择供应商',
  277. trigger: 'change'
  278. }
  279. ],
  280. is_auth: [
  281. {
  282. required: true,
  283. message: '请选择是否有权限销售',
  284. trigger: 'change'
  285. }
  286. ],
  287. tax: [
  288. {
  289. required: true,
  290. message: '请选择税率',
  291. trigger: 'change'
  292. }
  293. ],
  294. good_name: [
  295. {
  296. required: true,
  297. validator: validate_good_name,
  298. trigger: 'blur'
  299. }
  300. ],
  301. unit: [
  302. {
  303. type: 'array',
  304. required: true,
  305. message: '请输入商品单位',
  306. trigger: 'blur'
  307. }
  308. ],
  309. is_exclusive: [
  310. {
  311. required: true,
  312. type: 'array',
  313. message: '请选择专属类型',
  314. trigger: 'change'
  315. }
  316. ],
  317. noble_metal: [
  318. {
  319. required: true,
  320. message: '请选择贵金属种类',
  321. trigger: 'change'
  322. }
  323. ],
  324. is_gold_price: [
  325. {
  326. required: true,
  327. message: '请选择是否启用实时金价',
  328. trigger: 'change'
  329. }
  330. ],
  331. moq: [
  332. {
  333. required: true,
  334. validator: validate_num,
  335. trigger: 'blur'
  336. }
  337. ],
  338. stock_moq: [
  339. {
  340. required: true,
  341. validator: validate_num_0,
  342. trigger: 'blur'
  343. }
  344. ],
  345. customized: [
  346. {
  347. required: true,
  348. validator: validate_num,
  349. trigger: 'blur'
  350. }
  351. ],
  352. after_sales: [
  353. {
  354. required: true,
  355. message: '售后说明不能为空',
  356. trigger: 'blur'
  357. },
  358. {
  359. required: true,
  360. validator: validate_desc,
  361. trigger: 'blur'
  362. }
  363. ],
  364. // isSpecialSymbol
  365. good_remark: [
  366. {
  367. required: true,
  368. message: '商品备注不能为空',
  369. trigger: 'blur'
  370. },
  371. {
  372. required: true,
  373. validator: validate_desc,
  374. trigger: 'blur'
  375. }
  376. ],
  377. // 包装/发货/图片
  378. packing_list: [
  379. {
  380. required: true,
  381. message: '请输入包装清单',
  382. trigger: 'blur'
  383. }
  384. ],
  385. packing_way: [
  386. {
  387. required: true,
  388. message: '请输入包装方式',
  389. trigger: 'blur'
  390. }
  391. ],
  392. packing_spec: [
  393. {
  394. required: true,
  395. message: '请输入装箱规格',
  396. trigger: 'blur'
  397. }
  398. ],
  399. packing_weight: [
  400. {
  401. required: true,
  402. message: '请输入装箱重量',
  403. trigger: 'blur'
  404. }
  405. ],
  406. packing_szie: [
  407. {
  408. required: true,
  409. message: '请输入装箱尺寸',
  410. trigger: 'blur'
  411. }
  412. ],
  413. supply_area: [
  414. {
  415. required: true,
  416. message: '请选择供货区域',
  417. trigger: 'change'
  418. }
  419. ],
  420. delivery_place: [
  421. {
  422. type: 'array',
  423. required: true,
  424. message: '请选择发货地',
  425. trigger: 'change'
  426. }
  427. ],
  428. origin_place: [
  429. {
  430. type: 'array',
  431. required: true,
  432. message: '请选择产地',
  433. trigger: 'change'
  434. }
  435. ],
  436. delivery_day: [
  437. {
  438. required: true,
  439. message: '请输入物流时间',
  440. trigger: 'blur'
  441. }
  442. ],
  443. lead_time: [
  444. {
  445. required: true,
  446. message: '请输入供货周期',
  447. trigger: 'blur'
  448. }
  449. ],
  450. sample_day: [
  451. {
  452. required: true,
  453. message: '请输入调样周期',
  454. trigger: 'blur'
  455. }
  456. ],
  457. packing_size: [
  458. {
  459. required: true,
  460. message: '请输入装箱尺寸',
  461. trigger: 'blur'
  462. }
  463. ],
  464. good_size: [
  465. {
  466. required: true,
  467. message: '请输入商品尺寸',
  468. trigger: 'blur'
  469. }
  470. ],
  471. good_thumb_img: [
  472. {
  473. required: true,
  474. message: '请上传商品缩略图',
  475. trigger: 'change'
  476. }
  477. ],
  478. good_img: [
  479. {
  480. type: 'array',
  481. required: true,
  482. validator: validate_good_img,
  483. trigger: 'change'
  484. }
  485. ],
  486. good_info_img: [
  487. {
  488. type: 'array',
  489. required: true,
  490. message: '至少上传一张商品详情介绍图',
  491. trigger: 'change'
  492. }
  493. ],
  494. demo_fee: [
  495. {
  496. required: true,
  497. validator: validate_num,
  498. trigger: 'blur'
  499. }
  500. ],
  501. is_diff: [
  502. {
  503. required: true,
  504. message: '请选择有无工差',
  505. trigger: 'change'
  506. }
  507. ],
  508. config: [
  509. {
  510. required: true,
  511. type: 'array',
  512. message: '请选择配置要求',
  513. trigger: 'change'
  514. }
  515. ],
  516. other_config: [
  517. {
  518. required: true,
  519. message: '其他要求不能为空',
  520. trigger: 'blur'
  521. }
  522. ],
  523. open_fee: [
  524. {
  525. required: true,
  526. validator: validate_num,
  527. trigger: 'blur'
  528. }
  529. ],
  530. sample_fee: [
  531. {
  532. required: true,
  533. validator: validate_num,
  534. trigger: 'blur'
  535. }
  536. ],
  537. market_price: [
  538. {
  539. required: true,
  540. validator: validate_num,
  541. trigger: 'blur'
  542. }
  543. ],
  544. cgd_gold_price: [
  545. {
  546. required: true,
  547. validator: validate_num,
  548. trigger: 'blur'
  549. }
  550. ],
  551. craft_desc: [
  552. {
  553. required: false,
  554. validator: validate_desc,
  555. trigger: 'blur'
  556. }
  557. ]
  558. }
  559. const basicColumns = [
  560. {
  561. prop: 'cat_info',
  562. label: '商品分类',
  563. span: 8,
  564. _slot_: 'cat_info'
  565. },
  566. {
  567. prop: 'good_img',
  568. label: '商品主图',
  569. _slot_: 'good_img',
  570. span: 8
  571. },
  572. {
  573. prop: 'good_info_img',
  574. _slot_: 'good_info_img',
  575. label: '详情图片',
  576. span: 8
  577. },
  578. {
  579. prop: 'good_name',
  580. label: '商品名称',
  581. _slot_: 'good_name',
  582. span: 24
  583. },
  584. {
  585. prop: 'companyName',
  586. label: '业务公司',
  587. span: 12
  588. },
  589. {
  590. prop: 'supplierName',
  591. label: '供应商',
  592. span: 12
  593. },
  594. {
  595. prop: 'brand_name',
  596. label: '商品品牌',
  597. span: 6
  598. },
  599. {
  600. prop: 'is_auth',
  601. label: '销售权限',
  602. _slot_: 'is_auth',
  603. span: 6
  604. },
  605. {
  606. prop: 'unit',
  607. label: '单位',
  608. span: 6
  609. },
  610. {
  611. prop: 'tax',
  612. label: '税点',
  613. _slot_: 'tax',
  614. span: 6
  615. },
  616. {
  617. prop: 'is_exclusive',
  618. label: '专属类型',
  619. _slot_: 'is_exclusive',
  620. span: 6
  621. },
  622. {
  623. prop: 'weight',
  624. label: '商品总重量',
  625. _slot_: 'weight',
  626. span: 6
  627. },
  628. {
  629. prop: 'is_stock',
  630. label: '是否库存品',
  631. _slot_: 'is_stock',
  632. span: 6
  633. },
  634. {
  635. prop: 'is_combind',
  636. label: '组合类型',
  637. _slot_: 'is_combind',
  638. span: 6
  639. },
  640. // {
  641. // prop: '定价模式',
  642. // label: '定价模式',
  643. // span: 6
  644. // },
  645. {
  646. prop: 'noble',
  647. _slot_: 'noble',
  648. label: '贵金属信息',
  649. span: 24
  650. },
  651. {
  652. prop: 'after_sales',
  653. label: '售后说明',
  654. span: 24
  655. },
  656. {
  657. prop: 'good_remark',
  658. label: '商品备注',
  659. span: 24
  660. },
  661. {
  662. prop: 'craft_desc',
  663. label: '工艺说明',
  664. span: 24
  665. },
  666. {
  667. prop: 'packing_way',
  668. label: '包装方式',
  669. span: 6
  670. },
  671. {
  672. prop: 'packing_spec',
  673. label: '装箱规格',
  674. span: 6
  675. },
  676. {
  677. prop: 'packing_weight',
  678. label: '装箱重量',
  679. _slot_: 'packing_weight',
  680. span: 6
  681. },
  682. {
  683. prop: 'packing_size',
  684. label: '装箱尺寸',
  685. span: 6
  686. },
  687. {
  688. prop: 'good_size',
  689. label: '装箱尺寸',
  690. span: 6
  691. },
  692. {
  693. prop: 'good_bar',
  694. label: '商品条形码',
  695. span: 6
  696. },
  697. {
  698. prop: 'packing_list',
  699. label: '商品清单',
  700. span: 12
  701. },
  702. {
  703. prop: 'packing_spec',
  704. label: '供货区域',
  705. span: 6,
  706. _slot_: 'packing_spec'
  707. },
  708. {
  709. prop: 'delivery_day',
  710. label: '物流天数',
  711. _slot_: 'delivery_day',
  712. span: 6
  713. },
  714. {
  715. prop: 'lead_time',
  716. label: '供货周期',
  717. _slot_: 'lead_time',
  718. span: 6
  719. },
  720. {
  721. prop: 'sample_day',
  722. label: '调样周期',
  723. _slot_: 'sample_day',
  724. span: 6
  725. },
  726. {
  727. prop: 'delivery_place',
  728. label: '发货地',
  729. span: 12,
  730. _slot_: 'delivery_place'
  731. },
  732. {
  733. prop: 'origin_place',
  734. label: '产地',
  735. span: 12,
  736. _slot_: 'origin_place'
  737. }
  738. ]
  739. const packingColumns = [
  740. {
  741. prop: 'packing_way',
  742. label: '包装方式',
  743. span: 6
  744. },
  745. {
  746. prop: 'packing_spec',
  747. label: '装箱规格',
  748. span: 6
  749. },
  750. {
  751. prop: 'packing_weight',
  752. label: '装箱重量',
  753. _slot_: 'packing_weight',
  754. span: 6
  755. },
  756. {
  757. prop: 'packing_size',
  758. label: '装箱尺寸',
  759. span: 6
  760. },
  761. {
  762. prop: 'good_size',
  763. label: '装箱尺寸',
  764. span: 6
  765. },
  766. {
  767. prop: 'good_bar',
  768. label: '商品条形码',
  769. span: 6
  770. },
  771. {
  772. prop: 'packing_list',
  773. label: '商品清单',
  774. span: 12
  775. }
  776. ]
  777. const sendColumns = [
  778. {
  779. prop: 'packing_spec',
  780. label: '供货区域',
  781. span: 6
  782. },
  783. {
  784. prop: 'delivery_day',
  785. label: '物流天数',
  786. _slot_: 'delivery_day',
  787. span: 6
  788. },
  789. {
  790. prop: 'lead_time',
  791. label: '供货周期',
  792. _slot_: 'lead_time',
  793. span: 6
  794. },
  795. {
  796. prop: 'sample_day',
  797. label: '调样周期',
  798. _slot_: 'sample_day',
  799. span: 6
  800. },
  801. {
  802. prop: 'delivery_place',
  803. label: '发货地',
  804. span: 12,
  805. _slot_: 'delivery_place'
  806. },
  807. {
  808. prop: 'origin_place',
  809. label: '产地',
  810. span: 12,
  811. _slot_: 'origin_place'
  812. }
  813. ]
  814. const imageColumns = [
  815. {
  816. prop: 'good_thumb_img',
  817. label: '图片缩略',
  818. _slot_: 'good_thumb_img',
  819. span: 6
  820. }
  821. ]
  822. const ladderColumns = [
  823. {
  824. prop: 'demo_fee',
  825. label: '打样费',
  826. _slot_: 'demo_fee',
  827. span: 5
  828. },
  829. {
  830. prop: 'open_fee',
  831. label: '开模费',
  832. _slot_: 'open_fee',
  833. span: 5
  834. },
  835. {
  836. prop: 'sample_fee',
  837. _slot_: 'sample_fee',
  838. label: '调样费',
  839. span: 5
  840. },
  841. {
  842. prop: 'market_price',
  843. _slot_: 'market_price',
  844. label: '市场价',
  845. span: 5
  846. },
  847. {
  848. prop: 'cgd_price',
  849. _slot_: 'cgd_price',
  850. label: '采购价',
  851. span: 4
  852. },
  853. {
  854. prop: 'data_table',
  855. label: '阶梯成本',
  856. _slot_: 'data_table',
  857. span: 24
  858. }
  859. ]
  860. export {
  861. options1,
  862. options2,
  863. options3,
  864. options4,
  865. options5,
  866. options6,
  867. options7,
  868. options8,
  869. options9,
  870. listCol,
  871. rules,
  872. sendColumns,
  873. imageColumns,
  874. basicColumns,
  875. ladderColumns,
  876. packingColumns
  877. }