add.vue 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810
  1. <template>
  2. <view>
  3. <view class="add_page">
  4. <u-navbar class="nav-bar" title="商品入库" :autoBack="true" :placeholder="true" v-hideNav>
  5. <view class="u-nav-slot" slot="right">
  6. <u-checkbox-group v-model="continuousWarehousing" placement="column">
  7. <u-checkbox label="连续入库" name="1"></u-checkbox>
  8. </u-checkbox-group>
  9. </view>
  10. </u-navbar>
  11. <view class="form_list">
  12. <u--form labelPosition="top" :model="formData" :rules="rules" ref="addForm" labelWidth="100%">
  13. <u-form-item borderBottom class="u-form-item-col">
  14. <u--textarea v-model="recognitionContent" placeholder='品牌:浪琴
  15. 来源:【麒麟】私信-杰3-3
  16. 实价:6500
  17. 型号:L2.257.5.89.7
  18. 编码:52356065
  19. 日期:2021-11-09
  20. 备注:全套
  21. 付款方式:微信/支付宝/银行卡/现金/数字货币/挂账' confirmType="done" height="170" :maxlength="-1">
  22. </u--textarea>
  23. <view class="btn_group_recognition">
  24. <u-button text="清除" @click="clearRecognitionContent()"></u-button>
  25. <u-button text="粘贴识别" type="primary"
  26. @click="handlePasteRecognition(recognitionContent)"></u-button>
  27. </view>
  28. </u-form-item>
  29. <u-form-item required label="商品图片" prop="goodPicFileList" borderBottom>
  30. <view class="imgs_scroll">
  31. <ImgsRowScroll v-if="formData.goodPicFileList.length > 0" :isShowDeleteIcon="true"
  32. @deleteImgInfo="getDeleteGoodPicInfo" imgMode="aspectFill" :totalWidth="400"
  33. :images="formData.goodPicFileList" :previewEnabled="true" :imageWidth="150"
  34. :imageHeight="150"></ImgsRowScroll>
  35. <u-upload @afterRead="afterReadGoodPic" name="3" multiple :maxCount="9"
  36. :previewFullImage="true"></u-upload>
  37. </view>
  38. </u-form-item>
  39. <u-form-item label="商品描述(详细的描述让用户更好的了解您的产品)" required prop="desc" borderBottom>
  40. <u--textarea v-model="formData.desc" clearable placeholder="95新 WHZ19219H
  41. CHANEL香奈儿链条单肩包
  42. 21开 牛皮 尺寸25 4 15
  43. 配件中溯卡" count autoHeight maxlength="250" height="100" confirmType="done"></u--textarea>
  44. </u-form-item>
  45. <u-form-item label="商品分类" required prop="type" borderBottom>
  46. <TabSelect :tabList="typeList" :isClear="typeIsClear" @tabChange="handleTabChangeType" labelKey="dictLabel" valueKey="dictValue"
  47. :colNum="4" mode="single" echoInfo="1">
  48. </TabSelect>
  49. </u-form-item>
  50. <u-form-item label="品牌" required prop="dictLabel" class="u-form-item-row" borderBottom
  51. @click="showBrandList">
  52. <Cell :val="formData.dictLabel"></Cell>
  53. <BrandList ref="brandListRef" @selectedBrand="handleSelectedBrand"></BrandList>
  54. </u-form-item>
  55. <u-form-item label="系列" class="u-form-item-row" borderBottom>
  56. <u--input v-model="formData.series" placeholder="请输入" clearable border="none"></u--input>
  57. </u-form-item>
  58. <u-form-item label="型号" class="u-form-item-row" borderBottom>
  59. <u--input v-model="formData.model" placeholder="请输入" clearable border="none"></u--input>
  60. </u-form-item>
  61. <u-form-item label="机芯类型" class="u-form-item-row" borderBottom>
  62. <u--input v-model="formData.dialType" placeholder="请输入" clearable border="none"></u--input>
  63. </u-form-item>
  64. <u-form-item label="表壳材质" class="u-form-item-row" borderBottom>
  65. <u--input v-model="formData.caseMaterial" placeholder="请输入" clearable border="none"></u--input>
  66. </u-form-item>
  67. <u-form-item label="表盘直径" class="u-form-item-row" borderBottom>
  68. <u--input v-model="formData.dialDiameter" placeholder="请输入" clearable border="none"></u--input>
  69. </u-form-item>
  70. <u-form-item label="材质" class="u-form-item-row" borderBottom>
  71. <u--input v-model="formData.material" placeholder="请输入" clearable border="none"></u--input>
  72. </u-form-item>
  73. <u-form-item label="尺寸" class="u-form-item-row" borderBottom>
  74. <u--input v-model="formData.size" placeholder="请输入" clearable border="none"></u--input>
  75. </u-form-item>
  76. <u-form-item label="尺码" class="u-form-item-row" borderBottom>
  77. <u--input v-model="formData.yardage" placeholder="请输入" clearable border="none"></u--input>
  78. </u-form-item>
  79. <u-form-item label="官方指导价" class="u-form-item-row" borderBottom>
  80. <u--input v-model="formData.price" placeholder="请输入" clearable border="none"></u--input>
  81. </u-form-item>
  82. <u-form-item label="商品成色" required prop="productCondition" borderBottom>
  83. <TabSelect :tabList="productConditionList" :isClear="productConditionIsClear"
  84. @tabChange="handleTabChangeProductCondition" :colNum="2" mode="single" echoInfo="1"></TabSelect>
  85. </u-form-item>
  86. <u-form-item label="细节图" borderBottom>
  87. <!-- <view class="detail_pic_container"> -->
  88. <!-- <view>
  89. <text class="tip">视频:</text>
  90. <ImgsRowScroll v-if="formData.detailVideoFileList.length > 0" :isShowDeleteIcon="true"
  91. @deleteVideoInfo="getDeleteDetailVideoInfo" imgMode="aspectFill" :totalWidth="400"
  92. :videos="formData.detailVideoFileList" :previewEnabled="true" :imageWidth="150"
  93. :imageHeight="150" accept="video"></ImgsRowScroll>
  94. <u-upload @afterRead="afterReadDeatilVideo" name="2" multiple :maxCount="10" accept="video"></u-upload>
  95. </view> -->
  96. <!-- <view> -->
  97. <!-- <text class="tip">图片:</text> -->
  98. <view class="imgs_scroll">
  99. <ImgsRowScroll v-if="formData.detailPicFileList.length > 0" :isShowDeleteIcon="true"
  100. @deleteImgInfo="getDeleteDetailPicInfo" imgMode="aspectFill" :totalWidth="400"
  101. :images="formData.detailPicFileList" :previewEnabled="true" :imageWidth="150"
  102. :imageHeight="150"></ImgsRowScroll>
  103. <u-upload @afterRead="afterReadDetailPic" name="1" multiple :maxCount="10"></u-upload>
  104. </view>
  105. <!-- </view> -->
  106. <!-- </view> -->
  107. </u-form-item>
  108. <u-form-item label="商品标题" borderBottom>
  109. <u--textarea v-model="formData.title" clearable :placeholder="titlePlaceholder" count autoHeight
  110. maxlength="50" height="100" confirmType="done"></u--textarea>
  111. </u-form-item>
  112. <u-form-item label="商品货号" class="u-form-item-row" borderBottom>
  113. <u--input v-model="formData.productNo" placeholder="请输入" clearable border="none"></u--input>
  114. </u-form-item>
  115. <u-form-item label="商品属性" required prop="productAttribute" borderBottom>
  116. <TabSelect :tabList="productAttributeList" :colNum="4" mode="single"
  117. :isClear="productAttributeIsClear" @tabChange="handleTabChangeProductAttribute" echoInfo="1">
  118. </TabSelect>
  119. </u-form-item>
  120. <u-form-item label="库存数量" required prop="stock" class="u-form-item-row" borderBottom>
  121. <u--input v-model="formData.stock" placeholder="请输入" clearable border="none" type="number"></u--input>
  122. </u-form-item>
  123. <u-form-item label="总成本价" class="u-form-item-row" borderBottom>
  124. <u--input v-model="formData.costPrice" placeholder="请输入" clearable border="none"></u--input>
  125. </u-form-item>
  126. <u-form-item label="同行价格" class="u-form-item-row" borderBottom>
  127. <u--input v-model="formData.peerPrice" placeholder="请输入" clearable border="none"></u--input>
  128. </u-form-item>
  129. <u-form-item label="代理价格" class="u-form-item-row" borderBottom>
  130. <u--input v-model="formData.agentPrice" placeholder="请输入" clearable border="none"></u--input>
  131. </u-form-item>
  132. <u-form-item label="销售价格" class="u-form-item-row" borderBottom>
  133. <u--input v-model="formData.salePrice" placeholder="请输入" clearable border="none"></u--input>
  134. </u-form-item>
  135. <u-form-item label="商品位置" class="u-form-item-row" borderBottom>
  136. <u--input v-model="formData.productPosition" placeholder="请输入" clearable
  137. border="none"></u--input>
  138. </u-form-item>
  139. <u-form-item label="手表年份" class="u-form-item-row" borderBottom>
  140. <u--input v-model="formData.watchYear" placeholder="请输入" clearable border="none"></u--input>
  141. </u-form-item>
  142. <u-form-item label="鉴定人员" class="u-form-item-row" borderBottom @click="identifyingPersonClick">
  143. <Cell :val="formData.identifyingPerson" :isDelete="true" @handleClear="clear('identifyingPerson')"></Cell>
  144. <PersonPicker ref="identifyingPersonPickerRef" title="请选择鉴定人员"
  145. @selectPerson="handleSelectIdentifyingPerson"></PersonPicker>
  146. </u-form-item>
  147. <u-form-item label="回收类型" borderBottom>
  148. <TabSelect :tabList="recycleTypeList" :colNum="4" mode="single"
  149. :isClear="recycleTypeIsClear" @tabChange="handleTabChangeRecycleType">
  150. </TabSelect>
  151. </u-form-item>
  152. <u-form-item label="标签" borderBottom>
  153. <TabSelect :tabList="labelList" :colNum="4" mode="single"
  154. :isClear="labelIsClear" @tabChange="handleTabChangeLabel">
  155. </TabSelect>
  156. </u-form-item>
  157. <u-form-item label="回收人员" class="u-form-item-row" borderBottom @click="recyclePersonClick">
  158. <!-- <u--input v-model="formData.recyclePerson" disabledColor="#fff" disabled clearable
  159. border="none"></u--input> -->
  160. <Cell :val="formData.recyclePerson" :isDelete="true" @handleClear="clear('recyclePerson')"></Cell>
  161. <PersonPicker ref="recyclePersonPickerRef" title="请选择回收人员"
  162. @selectPerson="handleSelectRecyclePerson"></PersonPicker>
  163. </u-form-item>
  164. <u-form-item label="回收留底图" borderBottom>
  165. <view class="recycle_bottom_desc">
  166. <u--textarea v-model="formData.recycleBottomDesc" clearable count autoHeight maxlength="250"
  167. height="100" confirmType="done"></u--textarea>
  168. <view class="imgs_scroll">
  169. <ImgsRowScroll v-if="formData.recycleBottomFileList.length > 0" :isShowDeleteIcon="true"
  170. @deleteImgInfo="getDeleteRecycleBottomPicInfo" imgMode="aspectFill"
  171. :totalWidth="400" :images="formData.recycleBottomFileList" :previewEnabled="true"
  172. :imageWidth="150" :imageHeight="150"></ImgsRowScroll>
  173. <u-upload @afterRead="afterReadRecycleBottom" name="1" multiple :maxCount="1"
  174. accept="image"></u-upload>
  175. </view>
  176. </view>
  177. </u-form-item>
  178. <u-form-item label="回收时间" required prop="recycleTime" class="u-form-item-row" borderBottom
  179. @click="clickRecycleTimeRow">
  180. <Cell :val="formData.recycleTime"></Cell>
  181. <u-datetime-picker @confirm="confirmRecycleTime" @close="closeRecycleTimePicker"
  182. @cancel="closeRecycleTimePicker" :show="recycleTimeShow" v-model="formData.recycleTime"
  183. mode="date"></u-datetime-picker>
  184. </u-form-item>
  185. <u-form-item label="独立编码" class="u-form-item-row" borderBottom>
  186. <u--input v-model="formData.indentifyCode" placeholder="请输入" clearable border="none"></u--input>
  187. </u-form-item>
  188. <u-form-item label="适用人群" class="u-form-item-row" borderBottom>
  189. <u-radio-group v-model="formData.targetAudience" placement="row">
  190. <u-radio activeColor="#3c9cff" name="general" label="通用"></u-radio>
  191. <u-radio activeColor="#3c9cff" name="man" label="男"></u-radio>
  192. <u-radio activeColor="#3c9cff" name="woman" label="女"></u-radio>
  193. </u-radio-group>
  194. </u-form-item>
  195. <u-form-item label="商品保卡" class="u-form-item-row" borderBottom>
  196. <u-radio-group v-model="formData.productCard" placement="row">
  197. <u-radio activeColor="#3c9cff" name="has" label="有保卡"></u-radio>
  198. <u-radio activeColor="#3c9cff" name="no" label="无保卡"></u-radio>
  199. </u-radio-group>
  200. </u-form-item>
  201. <u-form-item label="保卡年份" class="u-form-item-row" borderBottom
  202. v-if="formData.productCard === 'has'">
  203. <u--input v-model="formData.cardYear" placeholder="不填写默认空白保卡" clearable
  204. border="none"></u--input>
  205. </u-form-item>
  206. <u-form-item label="保卡图片或独立编码照片留底(仅内部人员可见)" borderBottom>
  207. <view class="imgs_scroll">
  208. <ImgsRowScroll v-if="formData.productCardPicFileList.length > 0" :isShowDeleteIcon="true"
  209. @deleteImgInfo="getDeleteProductCardPicInfo" imgMode="aspectFill" :totalWidth="400"
  210. :images="formData.productCardPicFileList" :previewEnabled="true" :imageWidth="150"
  211. :imageHeight="150"></ImgsRowScroll>
  212. <u-upload @afterRead="afterReadProductCardPic" name="3" multiple :maxCount="9"
  213. :previewFullImage="true"></u-upload>
  214. </view>
  215. </u-form-item>
  216. <u-form-item label="商品标签" class="u-form-item-row" borderBottom>
  217. <u--input v-model="formData.productTag" placeholder="请输入" clearable border="none"></u--input>
  218. </u-form-item>
  219. <u-form-item label="商品附件" class="u-form-item-row" borderBottom>
  220. <u--input v-model="formData.productAttachment" placeholder="请输入" clearable
  221. border="none"></u--input>
  222. </u-form-item>
  223. <u-form-item label="备注(仅内部人员可见)">
  224. <view class="recycle_bottom_desc">
  225. <u--textarea v-model="formData.productDesc" clearable count autoHeight maxlength="250"
  226. height="100" confirmType="done"></u--textarea>
  227. <view class="imgs_scroll">
  228. <ImgsRowScroll v-if="formData.productDescPicFileList.length > 0"
  229. :isShowDeleteIcon="true" @deleteImgInfo="getDeleteProductDescPicInfo"
  230. imgMode="aspectFill" :totalWidth="400" :images="formData.productDescPicFileList"
  231. :previewEnabled="true" :imageWidth="150" :imageHeight="150"></ImgsRowScroll>
  232. <u-upload @afterRead="afterReadProductDescPic" name="1" multiple :maxCount="1"
  233. accept="image"></u-upload>
  234. </view>
  235. </view>
  236. </u-form-item>
  237. <u-form-item label="付款方式" borderBottom>
  238. <TabSelect :tabList="paymentTabList" :echoInfo="payTypeEcho" :colNum="4" mode="single"
  239. :isClear="payTypeIsClear" @tabChange="handlePayTypeTabChange">
  240. </TabSelect>
  241. </u-form-item>
  242. </u--form>
  243. </view>
  244. </view>
  245. <view class="btn_group">
  246. <u-button plain type="primary" @click="submitForm('onlyIn')">仅入库</u-button>
  247. <u-button type="primary" @click="submitForm('inAndUp')">入库并上架</u-button>
  248. </view>
  249. </view>
  250. </template>
  251. <script>
  252. import TabSelect from '@/components/custom-tab-select/index.vue'
  253. import Cell from '@/components/custom-cell/index.vue'
  254. import BrandList from '@/components/brand-list/index.vue'
  255. import ImgsRowScroll from '@/components/imgs-row-scroll/index.vue'
  256. import PersonPicker from '@/components/person-picker/index.vue'
  257. export default {
  258. components: {
  259. TabSelect,
  260. Cell,
  261. BrandList,
  262. ImgsRowScroll,
  263. PersonPicker
  264. },
  265. data() {
  266. return {
  267. checkboxValue: [],
  268. recognitionContent: '',
  269. formData: {
  270. goodPicFileList: [],//商品图片
  271. desc: '',
  272. type: '1',
  273. dictLabel: '艾美',
  274. dictValue: '88',
  275. series: '',
  276. model: '',
  277. dialType: '',
  278. caseMaterial: '',
  279. dialDiameter: '',
  280. material: '',
  281. size: '',
  282. yardage: '',
  283. price: '',
  284. productCondition: '1',
  285. detailPicFileList: [],//细节图片
  286. // detailVideoFileList:[],
  287. productNo: '',
  288. productAttribute: '1',
  289. stock: 1,
  290. costPrice: '',
  291. samePrice: '',
  292. agentPrice: '',
  293. salePrice: '',
  294. productPosition: '',
  295. watchYear: '',
  296. identifyingPerson: '',
  297. identifyingPersonId: '',
  298. recycleType: '',
  299. recyclePerson: '',
  300. recyclePersonId: '',
  301. recycleBottomDesc: '',
  302. recycleBottomFileList: [],//回收留底图
  303. recycleTime: this.$dayjs().format('YYYY-MM-DD'),
  304. indentifyCode: '',
  305. targetAudience: '',
  306. productCard: '',
  307. cardYear: '',
  308. productCardPicFileList: [],//商品保卡图片或独立编码照片留底
  309. productTag: '',
  310. productAttachment: '',
  311. productDesc: '',
  312. productDescPicFileList: [],//商品备注图片
  313. payType: '',
  314. },
  315. continuousWarehousing: [],//是否连续入库 1:是 0:否
  316. rules: {
  317. goodPicFileList: [
  318. { required: true, message: '请上传商品图片', trigger: 'change' },
  319. ],
  320. desc: [
  321. { required: true, message: '请输入商品描述', trigger: 'blur' },
  322. ],
  323. type: [
  324. { required: true, message: '请选择商品分类', trigger: 'blur' },
  325. ],
  326. dictLabel: [
  327. { required: true, message: '请选择品牌', trigger: 'blur' },
  328. ],
  329. productCondition: [
  330. { required: true, message: '请选择商品成色', trigger: 'blur' },
  331. ],
  332. productAttribute: [
  333. { required: true, message: '请选择商品属性', trigger: 'blur' },
  334. ],
  335. stock: [
  336. { required: true, message: '请输入库存数量' },
  337. ],
  338. recycleTime: [
  339. { required: true, message: '请选择回收时间', trigger: 'blur' },
  340. ],
  341. },
  342. recycleTimeShow: false,
  343. titlePlaceholder: '如不填,自动截取商品描述前50字',
  344. typeList: [],
  345. productConditionList: [
  346. {
  347. name: '闲置未使用',
  348. value: '1',
  349. },
  350. {
  351. name: '二手',
  352. value: '2',
  353. },
  354. ],
  355. productAttributeList: [
  356. {
  357. name: '自有商品',
  358. value: '1',
  359. },
  360. {
  361. name: '寄卖商品',
  362. value: '2',
  363. },
  364. {
  365. name: '质押商品',
  366. value: '3',
  367. },
  368. {
  369. name: '其它',
  370. value: '4',
  371. },
  372. ],
  373. recycleTypeList: [
  374. {
  375. name: '线上',
  376. value: '1',
  377. },
  378. {
  379. name: '同行',
  380. value: '2',
  381. },
  382. {
  383. name: '门店',
  384. value: '3',
  385. },
  386. {
  387. name: '其它',
  388. value: '4',
  389. },
  390. ],
  391. labelList:[
  392. {
  393. name:'完美',
  394. value:'1',
  395. },
  396. {
  397. name:'普通',
  398. value:'2',
  399. },
  400. {
  401. name:'瑕疵',
  402. value:'3',
  403. },
  404. {
  405. name:'假货',
  406. value:'4',
  407. },
  408. {
  409. name:'亏损',
  410. value:'5',
  411. },
  412. ],
  413. paymentTabList: [
  414. {
  415. name: '微信',
  416. value: 1,
  417. },
  418. {
  419. name: '支付宝',
  420. value: 2,
  421. },
  422. {
  423. name: '银行卡',
  424. value: 3,
  425. },
  426. {
  427. name: '现金',
  428. value: 4,
  429. },
  430. {
  431. name: '数字货币',
  432. value: 5,
  433. },
  434. {
  435. name: '挂账',
  436. value: 6,
  437. },
  438. ],
  439. typeIsClear: false,//商品分类是否清空
  440. productConditionIsClear: false,//商品成色是否清空
  441. productAttributeIsClear: false,//商品属性是否清空
  442. recycleTypeIsClear: false,//回收类型是否清空
  443. labelIsClear: false,//商品标签是否清空
  444. payTypeIsClear: false,//付款方式是否清空
  445. payTypeEcho: ''//付款方式识别回显
  446. }
  447. },
  448. onLoad() {
  449. this.getTypeList();
  450. },
  451. methods: {
  452. getTypeList(){
  453. this.$getDicts("crm_form_category").then(res => {
  454. this.typeList = res
  455. })
  456. },
  457. // 提交表单
  458. submitForm(submitType) {
  459. console.log(this.formData);
  460. this.$refs.addForm.validate().then((valid) => {
  461. if (valid) {
  462. if (this.formData.title == '') {
  463. this.formData.title = this.formData.desc.substring(0, 50);
  464. }
  465. this.formData.recycleTime = this.$dayjs(this.formData.recycleTime).format('YYYY-MM-DD')
  466. const data = {
  467. ...this.formData,
  468. submitType: submitType, //提交类型 onlyIn:仅入库 inAndUp:入库并上架
  469. continuousWarehousing: this.continuousWarehousing[0] || '0',//是否连续入库 1:是 0:否
  470. }
  471. console.log(data);
  472. uni.$u.api.wareHouseAdd(data).then(res => {
  473. console.log(res);
  474. if (res.code === 200) {
  475. uni.$u.toast('新增成功');
  476. if (data.continuousWarehousing == '0') {
  477. setTimeout(() => {
  478. uni.navigateBack({
  479. delta: 1
  480. });
  481. }, 1000);
  482. } else {
  483. this.clearForm();
  484. }
  485. } else {
  486. uni.$u.toast(res.msg);
  487. }
  488. })
  489. } else {
  490. console.log('表单校验不通过');
  491. }
  492. });
  493. },
  494. clearForm() {
  495. this.formData = {
  496. goodPicFileList: [],//商品图片
  497. desc: '',
  498. type: '1',
  499. dictLabel: '艾美',
  500. dictValue: '88',
  501. series: '',
  502. model: '',
  503. dialType: '',
  504. caseMaterial: '',
  505. dialDiameter: '',
  506. material: '',
  507. size: '',
  508. yardage: '',
  509. price: '',
  510. productCondition: '1',
  511. detailPicFileList: [],//细节图片
  512. // detailVideoFileList:[],
  513. productNo: '',
  514. productAttribute: '1',
  515. stock: 1,
  516. costPrice: '',
  517. samePrice: '',
  518. agentPrice: '',
  519. salePrice: '',
  520. productPosition: '',
  521. watchYear: '',
  522. identifyingPerson: '',
  523. identifyingPersonId: '',
  524. recycleType: '',
  525. label: '',
  526. recyclePerson: '',
  527. recyclePersonId: '',
  528. recycleBottomDesc: '',
  529. recycleBottomFileList: [],//回收留底图
  530. recycleTime: this.$dayjs().format('YYYY-MM-DD'),
  531. indentifyCode: '',
  532. targetAudience: '',
  533. productCard: '',
  534. cardYear: '',
  535. productCardPicFileList: [],//商品保卡图片或独立编码照片留底
  536. productTag: '',
  537. productAttachment: '',
  538. productDesc: '',
  539. productDescPicFileList: [],//商品备注图片
  540. payType: '',
  541. }
  542. this.typeIsClear = true;
  543. this.productConditionIsClear = true;
  544. this.productAttributeIsClear = true;
  545. this.recycleTypeIsClear = true;
  546. this.payTypeIsClear = true;
  547. this.labelIsClear = true;
  548. this.continuousWarehousing = [];
  549. this.$refs.addForm.resetFields();
  550. },
  551. // 选择品牌
  552. handleSelectedBrand(info) {
  553. this.formData.dictLabel = info.dictLabel;
  554. this.formData.dictValue = info.dictValue;
  555. this.$refs.addForm.validateField('dictLabel');
  556. },
  557. // 显示品牌列表
  558. showBrandList() {
  559. this.$refs.brandListRef.showBrandList();
  560. },
  561. // 清空输入框
  562. clear(key) {
  563. // 品牌
  564. if (key == 'dictLabel') {
  565. this.formData.dictLabel = '';
  566. this.formData.dictValue = '';
  567. return;
  568. }
  569. // 鉴定人
  570. if (key == 'identifyingPerson') {
  571. this.formData.identifyingPerson = '';
  572. this.formData.identifyingPersonId = '';
  573. return;
  574. }
  575. // 回收人
  576. if (key == 'recyclePerson') {
  577. this.formData.recyclePerson = '';
  578. this.formData.recyclePersonId = '';
  579. return;
  580. }
  581. this.formData[key] = '';
  582. },
  583. // 商品分类
  584. handleTabChangeType(e) {
  585. this.formData.type = e;
  586. this.$refs.addForm.validateField('type')
  587. },
  588. // 商品成色
  589. handleTabChangeProductCondition(e) {
  590. this.formData.productCondition = e;
  591. this.$refs.addForm.validateField('productCondition')
  592. },
  593. // 商品属性
  594. handleTabChangeProductAttribute(e) {
  595. this.formData.productAttribute = e;
  596. this.$refs.addForm.validateField('productAttribute')
  597. },
  598. // 回收类型
  599. handleTabChangeRecycleType(e) {
  600. this.formData.recycleType = e;
  601. },
  602. // 商品标签
  603. handleTabChangeLabel(e) {
  604. this.formData.label = e;
  605. },
  606. // 付款方式
  607. handlePayTypeTabChange(e) {
  608. this.formData.payType = e;
  609. },
  610. // 打开回收时间选择器
  611. clickRecycleTimeRow() {
  612. this.recycleTimeShow = true;
  613. },
  614. // 确认回收时间
  615. confirmRecycleTime(val) {
  616. this.$nextTick(() => {
  617. this.formData.recycleTime = this.$dayjs(val.value).format('YYYY-MM-DD');
  618. this.recycleTimeShow = false;
  619. })
  620. },
  621. // 关闭回收时间选择器
  622. closeRecycleTimePicker(val) {
  623. this.recycleTimeShow = false;
  624. },
  625. // 打开鉴定人选择器
  626. identifyingPersonClick() {
  627. this.$refs.identifyingPersonPickerRef.open();
  628. },
  629. // 选择鉴定人
  630. handleSelectIdentifyingPerson(info) {
  631. this.formData.identifyingPerson = info.label;
  632. this.formData.identifyingPersonId = info.id;
  633. },
  634. // 打开回收人选择器
  635. recyclePersonClick() {
  636. this.$refs.recyclePersonPickerRef.open();
  637. },
  638. // 选择回收人
  639. handleSelectRecyclePerson(info) {
  640. this.formData.recyclePerson = info.label;
  641. this.formData.recyclePersonId = info.id;
  642. },
  643. // 新增商品图片
  644. async afterReadGoodPic(event) {
  645. event.file.forEach(item => {
  646. uni.$u.api.uploadFile(item.url).then((res) => {
  647. this.formData.goodPicFileList.push(res.data.url);
  648. uni.$u.toast("文件上传成功");
  649. }).catch(() => {
  650. uni.$u.toast("上传文件失败");
  651. })
  652. })
  653. },
  654. // 获取删除商品图片信息
  655. getDeleteGoodPicInfo(info) {
  656. this.formData.goodPicFileList = info.newImages
  657. },
  658. // 获取删除细节图片信息
  659. getDeleteDetailPicInfo(info) {
  660. this.formData.detailPicFileList = info.newImages
  661. },
  662. // 新增细节图片
  663. async afterReadDetailPic(event) {
  664. event.file.forEach(item => {
  665. uni.$u.api.uploadFile(item.url).then((res) => {
  666. this.formData.detailPicFileList.push(res.data.url);
  667. uni.$u.toast("文件上传成功");
  668. }).catch(() => {
  669. uni.$u.toast("上传文件失败");
  670. })
  671. })
  672. },
  673. // 获取删除回收留底图信息
  674. getDeleteRecycleBottomPicInfo(info) {
  675. this.formData.recycleBottomFileList = info.newImages
  676. },
  677. // 新增回收留底图
  678. async afterReadRecycleBottom(event) {
  679. event.file.forEach(item => {
  680. uni.$u.api.uploadFile(item.url).then((res) => {
  681. this.formData.recycleBottomFileList.push(res.data.url);
  682. uni.$u.toast("文件上传成功");
  683. }).catch(() => {
  684. uni.$u.toast("上传文件失败");
  685. })
  686. })
  687. },
  688. // 删除商品保卡图片或独立编码照片留底
  689. getDeleteProductCardPicInfo(info) {
  690. this.formData.productCardPicFileList = info.newImages
  691. },
  692. // 新增商品保卡图片或独立编码照片留底
  693. async afterReadProductCardPic(event) {
  694. event.file.forEach(item => {
  695. uni.$u.api.uploadFile(item.url).then((res) => {
  696. this.formData.productCardPicFileList.push(res.data.url);
  697. uni.$u.toast("文件上传成功");
  698. }).catch(() => {
  699. uni.$u.toast("上传文件失败");
  700. })
  701. })
  702. },
  703. // 获取删除商品备注图片信息
  704. getDeleteProductDescPicInfo(info) {
  705. this.formData.productDescPicFileList = info.newImages
  706. },
  707. // 新增商品备注图片
  708. async afterReadProductDescPic(event) {
  709. event.file.forEach(item => {
  710. uni.$u.api.uploadFile(item.url).then((res) => {
  711. this.formData.productDescPicFileList.push(res.data.url);
  712. uni.$u.toast("文件上传成功");
  713. }).catch(() => {
  714. uni.$u.toast("上传文件失败");
  715. })
  716. })
  717. },
  718. async handlePasteRecognition(text) {
  719. // 品牌:浪琴
  720. // 来源:【麒麟】私信-杰3-3
  721. // 实价:6500
  722. // 型号:L2.257.5.89.7
  723. // 编码:52356065
  724. // 日期:2021-11-09
  725. // 备注:全套
  726. // 付款方式:微信
  727. if (!text) {
  728. return;
  729. }
  730. try {
  731. if (!text) return {};
  732. const result = {};
  733. // 支持中文冒号和英文冒号
  734. const lines = text.split(/[\n\r]+/);
  735. lines.forEach(line => {
  736. const lineStr = line.trim();
  737. if (!lineStr) return;
  738. // 尝试中文冒号
  739. let separatorIndex = lineStr.indexOf(':');
  740. // 如果没有中文冒号,尝试英文冒号
  741. if (separatorIndex === -1) {
  742. separatorIndex = lineStr.indexOf(':');
  743. }
  744. if (separatorIndex > 0) {
  745. const key = lineStr.substring(0, separatorIndex).trim();
  746. const value = lineStr.substring(separatorIndex + 1).trim();
  747. result[key] = value;
  748. }
  749. });
  750. if (result['品牌']) {
  751. this.formData.dictLabel = result['品牌'];
  752. }
  753. if (result['来源']) {
  754. this.formData.desc = result['来源'];
  755. }
  756. if (result['实价']) {
  757. this.formData.costPrice = result['实价'];
  758. }
  759. if (result['型号']) {
  760. this.formData.model = result['型号'];
  761. }
  762. if (result['编码']) {
  763. this.formData.indentifyCode = result['编码'];
  764. }
  765. if (result['日期']) {
  766. this.formData.recycleTime = result['日期'];
  767. }
  768. if (result['备注']) {
  769. this.formData.productDesc = result['备注'];
  770. }
  771. if (result['付款方式']) {
  772. this.getPaymentType(result['付款方式'])
  773. this.formData.payType = result['付款方式'];
  774. }
  775. // return result;
  776. } catch (e) {
  777. uni.$u.toast("文本识别异常");
  778. }
  779. },
  780. // 清空识别内容
  781. clearRecognitionContent() {
  782. this.recognitionContent = '';
  783. },
  784. // 识别内容 回显付款方式
  785. getPaymentType(val) {
  786. let arr = []
  787. this.paymentTabList.filter(item => {
  788. if (item.name == val) arr.push(item.value)
  789. })
  790. if (arr.length > 0) {
  791. this.payTypeEcho = arr[0]
  792. }
  793. }
  794. }
  795. }
  796. </script>
  797. <style lang="scss" scoped>
  798. @import '../styles/add.scss';
  799. </style>