index.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798
  1. <template>
  2. <div class="app-container">
  3. <!-- 搜索工作栏 -->
  4. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  5. <!-- <el-form-item label="客户联系方式" prop="clientelePhone">-->
  6. <!-- <el-input v-model="queryParams.clientelePhone" placeholder="请输入客户联系方式" clearable-->
  7. <!-- @keyup.enter.native="handleQuery"-->
  8. <!-- />-->
  9. <!-- </el-form-item>-->
  10. <!-- <el-form-item label="客户类型" prop="clienteleType">-->
  11. <!-- <el-select v-model="queryParams.clienteleType" placeholder="请选择客户类型" clearable size="small">-->
  12. <!-- <el-option label="请选择字典生成" value=""/>-->
  13. <!-- </el-select>-->
  14. <!-- </el-form-item>-->
  15. <!-- <el-form-item label="收货地址" prop="cneeAddress">-->
  16. <!-- <el-input v-model="queryParams.cneeAddress" placeholder="请输入收货地址" clearable @keyup.enter.native="handleQuery"/>-->
  17. <!-- </el-form-item>-->
  18. <!-- <el-form-item label="售后状态" prop="afterSale">-->
  19. <!-- <el-input v-model="queryParams.afterSale" placeholder="请输入售后状态" clearable @keyup.enter.native="handleQuery"/>-->
  20. <!-- </el-form-item>-->
  21. <el-form-item label="订单编号" prop="orderNo">
  22. <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery"/>
  23. </el-form-item>
  24. <el-form-item label="客户名称" prop="clienteleName">
  25. <el-input v-model="queryParams.clienteleName" placeholder="请输入客户名称" clearable
  26. @keyup.enter.native="handleQuery"
  27. />
  28. </el-form-item>
  29. <el-form-item label="订单状态" prop="orderStatus">
  30. <el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="small">
  31. <el-option label="请选择字典生成" value=""/>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item>
  35. <el-popover
  36. placement="bottom"
  37. width="400"
  38. trigger="click"
  39. >
  40. <el-form-item label="订单编号" prop="orderNo">
  41. <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery"/>
  42. </el-form-item>
  43. <el-form-item label="订单类型" prop="orderType">
  44. <el-select v-model="queryParams.orderType" placeholder="请选择订单类型">
  45. <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SALE_ORDER_TYPE)"
  46. :key="dict.value" :label="dict.label" :value="dict.value"
  47. />
  48. </el-select>
  49. </el-form-item>
  50. <el-form-item label="订单状态" prop="orderStatus">
  51. <el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="small">
  52. <el-option label="请选择字典生成" value=""/>
  53. </el-select>
  54. </el-form-item>
  55. <el-form-item label="客户名称" prop="clienteleName">
  56. <el-input v-model="queryParams.clienteleName" placeholder="请输入客户名称" clearable
  57. @keyup.enter.native="handleQuery"
  58. />
  59. </el-form-item>
  60. <el-form-item label="客户类型" prop="clienteleType">
  61. <el-select v-model="form.clienteleType" placeholder="请选择客户类型">
  62. <el-option label="请选择字典生成" value=""/>
  63. </el-select>
  64. </el-form-item>
  65. <el-button slot="reference">复合查询</el-button>
  66. <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
  67. </el-popover>
  68. </el-form-item>
  69. <el-form-item>
  70. <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
  71. <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
  72. </el-form-item>
  73. </el-form>
  74. <!-- 操作工具栏 -->
  75. <el-row :gutter="10" class="mb8">
  76. <el-col :span="1.5">
  77. <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
  78. v-hasPermi="['supplier:sale-order:create']"
  79. >新增
  80. </el-button>
  81. </el-col>
  82. <el-col :span="1.5">
  83. <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
  84. :loading="exportLoading"
  85. v-hasPermi="['supplier:sale-order:export']"
  86. >导出
  87. </el-button>
  88. </el-col>
  89. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  90. </el-row>
  91. <!-- 列表 -->
  92. <el-table v-loading="loading" :data="list" border
  93. @expand-change="toggleExpand"
  94. >
  95. <!-- <el-table-column label="主键id" align="center" prop="id" />-->
  96. <el-table-column type="expand">
  97. <template slot-scope="props">
  98. <el-table :data="props.row.goodslist" border style="margin-left: 50px">
  99. <el-table-column label="商品信息" align="center" width="300">
  100. <template slot-scope="scope">
  101. <el-descriptions :column="1" :contentStyle="{width:'40%'}">
  102. <el-descriptions-item>
  103. <template slot="label">
  104. 商品编号
  105. </template>
  106. {{ scope.row.goodsInfo.code }}
  107. </el-descriptions-item>
  108. <el-descriptions-item>
  109. <template slot="label">
  110. 商品名称
  111. </template>
  112. {{ scope.row.goodsInfo.name }}
  113. </el-descriptions-item>
  114. <el-descriptions-item>
  115. <template slot="label">
  116. 商品品牌
  117. </template>
  118. {{ scope.row.goodsInfo.brand }}
  119. </el-descriptions-item>
  120. <el-descriptions-item>
  121. <template slot="label">
  122. 商品型号
  123. </template>
  124. {{ scope.row.goodsInfo.category }}
  125. </el-descriptions-item>
  126. <el-descriptions-item>
  127. <template slot="label">
  128. 商品单价
  129. </template>
  130. {{ scope.row.goodsInfo.price }}
  131. </el-descriptions-item>
  132. <el-descriptions-item>
  133. <template slot="label">
  134. 商品单位
  135. </template>
  136. {{ scope.row.goodsInfo.unit }}
  137. </el-descriptions-item>
  138. </el-descriptions>
  139. </template>
  140. </el-table-column>
  141. <!-- 商品数量 -->
  142. <el-table-column label="商品数量" width="100"></el-table-column>
  143. <!-- 成交单价 -->
  144. <el-table-column label="成交单价" width="120"></el-table-column>
  145. <!-- 成交价格 -->
  146. <el-table-column label="成交价格" width="120"></el-table-column>
  147. <!-- 收款方式 -->
  148. <el-table-column label="收款方式" width="150"></el-table-column>
  149. <!-- 收款状态 -->
  150. <el-table-column label="收款状态" width="100"></el-table-column>
  151. <!-- 发货状态 -->
  152. <el-table-column label="发货状态" width="100"></el-table-column>
  153. <!-- 发货地址 -->
  154. <el-table-column label="发货地址" width="200"></el-table-column>
  155. <!-- 发货时间 -->
  156. <el-table-column label="发货时间" width="180"></el-table-column>
  157. <!-- 发货人 -->
  158. <el-table-column label="发货人" width="100"></el-table-column>
  159. </el-table>
  160. </template>
  161. </el-table-column>
  162. <el-table-column label="序号" align="center" width="50">
  163. <template v-slot="scope">
  164. <span>{{ scope.$index + 1 }}</span>
  165. </template>
  166. </el-table-column>
  167. <el-table-column label="订单信息" align="center">
  168. <template v-slot="scope">
  169. <el-descriptions :column="1" :contentStyle="{width:'40%'}">
  170. <el-descriptions-item>
  171. <template slot="label">
  172. 订单编号
  173. </template>
  174. {{ scope.row.orderNo }}
  175. </el-descriptions-item>
  176. <el-descriptions-item>
  177. <template slot="label">
  178. 订单类型
  179. </template>
  180. <dict-tag :type="DICT_TYPE.SALE_ORDER_TYPE" :value="scope.row.orderType"/>
  181. </el-descriptions-item>
  182. <el-descriptions-item>
  183. <template slot="label">
  184. 订单状态
  185. </template>
  186. <dict-tag :type="DICT_TYPE.SALE_ORDER_STATUS" :value="scope.row.orderStatus"/>
  187. </el-descriptions-item>
  188. <el-descriptions-item>
  189. <template slot="label">
  190. 订单总金额
  191. </template>
  192. {{ scope.row.orderNo }}
  193. </el-descriptions-item>
  194. </el-descriptions>
  195. </template>
  196. </el-table-column>
  197. <!-- <el-table-column label="客户ID" align="center" prop="clienteleId" />-->
  198. <el-table-column label="客户信息" align="center">
  199. <template v-slot="scope">
  200. <el-descriptions :column="1" :contentStyle="{width:'40%'}">
  201. <el-descriptions-item>
  202. <template slot="label">
  203. <i class="el-icon-user"></i>
  204. 客户名称
  205. </template>
  206. {{ scope.row.clienteleName }}
  207. </el-descriptions-item>
  208. <el-descriptions-item>
  209. <template slot="label">
  210. <i class="el-icon-mobile-phone"></i>
  211. 客户联系方式
  212. </template>
  213. {{ scope.row.clientelePhone }}
  214. </el-descriptions-item>
  215. <el-descriptions-item>
  216. <template slot="label">
  217. <i class="el-icon-share"></i>
  218. 客户类型
  219. </template>
  220. {{ scope.row.clienteleType }}
  221. </el-descriptions-item>
  222. </el-descriptions>
  223. </template>
  224. </el-table-column>
  225. <el-table-column label="收货地址" align="center" prop="cneeAddress"/>
  226. <!-- <el-table-column label="订单状态" align="center" prop="orderStatus"></el-table-column>-->
  227. <el-table-column label="预计发货时间" align="center" prop="predictShipmentsTime">
  228. <template v-slot="scope">
  229. {{ parseTime(scope.row.predictShipmentsTime, '{y}-{m}-{d}') }}
  230. </template>
  231. </el-table-column>
  232. <el-table-column label="售后状态" align="center" prop="afterSale"/>
  233. <el-table-column label="订单生成时间" align="center" prop="createTime">
  234. <template v-slot="scope">
  235. {{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}
  236. </template>
  237. </el-table-column>
  238. <!-- <el-table-column label="商品ID" align="center" prop="goodsId" />-->
  239. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
  240. <template v-slot="scope">
  241. <div>
  242. <el-button size="mini" type="text"
  243. >操作记录
  244. </el-button>
  245. </div>
  246. <div>
  247. <el-button size="mini" type="text" @click="afterSaleTreatment(scope.row)"
  248. >售后处理
  249. </el-button>
  250. </div>
  251. <div>
  252. <el-button size="mini" type="text"
  253. >评论处理
  254. </el-button>
  255. </div>
  256. <div>
  257. <el-button size="mini" type="text" @click="consignment(scope.row)"
  258. >发货
  259. </el-button>
  260. </div>
  261. <div>
  262. <el-button size="mini" type="text" icon="el-icon-tickets"
  263. v-hasPermi="['supplier:sale-order:update']"
  264. @click="handleUpdate(scope.row)"
  265. >详情
  266. </el-button>
  267. </div>
  268. <!-- <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"-->
  269. <!-- v-hasPermi="['supplier:sale-order:delete']">删除</el-button>-->
  270. </template>
  271. </el-table-column>
  272. </el-table>
  273. <!-- 分页组件 -->
  274. <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
  275. @pagination="getList"
  276. />
  277. <!-- 对话框(添加 / 修改) -->
  278. <el-dialog :title="title" :visible.sync="open" width="650px" v-dialogDrag append-to-body>
  279. <div>
  280. <div style="font-size: 20px;color: #454545;margin-bottom: 10px;font-weight: bold">
  281. 订单信息
  282. </div>
  283. <el-form ref="form" :model="form" :rules="rules" label-width="100px">
  284. <el-row :gutter="10">
  285. <el-col :span="12">
  286. <el-form-item label="订单编号" prop="orderNo">
  287. <el-input v-model="form.orderNo" placeholder="请输入订单编号"/>
  288. </el-form-item>
  289. </el-col>
  290. <el-col :span="12">
  291. <el-form-item label="订单类型" prop="orderType">
  292. <el-select v-model="form.orderType +''" placeholder="请选择订单类型">
  293. <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SALE_ORDER_TYPE)"
  294. :key="dict.value" :label="dict.label" :value="dict.value"
  295. />
  296. </el-select>
  297. </el-form-item>
  298. </el-col>
  299. </el-row>
  300. <el-row :gutter="10">
  301. <el-col :span="12">
  302. <el-form-item label="客户名称" prop="clienteleName">
  303. <el-input v-model="form.clienteleName" placeholder="请输入客户名称"/>
  304. </el-form-item>
  305. </el-col>
  306. <el-col :span="12">
  307. <el-form-item label="客户联系方式" prop="clientelePhone">
  308. <el-input v-model="form.clientelePhone" placeholder="请输入客户联系方式"/>
  309. </el-form-item>
  310. </el-col>
  311. </el-row>
  312. <el-row :gutter="10">
  313. <el-col :span="12">
  314. <el-form-item label="客户类型" prop="clienteleType">
  315. <el-select v-model="form.clienteleType" placeholder="请选择客户类型">
  316. <el-option label="请选择字典生成" value=""/>
  317. </el-select>
  318. </el-form-item>
  319. </el-col>
  320. <el-col :span="12">
  321. <el-form-item label="订单状态" prop="orderStatus">
  322. <el-radio-group v-model="form.orderStatus">
  323. <el-radio label="1">请选择字典生成</el-radio>
  324. </el-radio-group>
  325. </el-form-item>
  326. </el-col>
  327. </el-row>
  328. <el-form-item label="收货地址" prop="cneeAddress">
  329. <el-input v-model="form.cneeAddress" placeholder="请输入收货地址" type="textarea" :rows="3"/>
  330. </el-form-item>
  331. <!-- <el-form-item label="客户ID" prop="clienteleId">-->
  332. <!-- <el-input v-model="form.clienteleId" placeholder="请输入客户ID" />-->
  333. <!-- </el-form-item>-->
  334. <el-row :gutter="10">
  335. <el-col :span="12">
  336. <el-form-item label="预计发货时间" prop="predictShipmentsTime">
  337. <el-date-picker clearable v-model="form.predictShipmentsTime" type="date" value-format="timestamp"
  338. placeholder="选择预计发货时间"
  339. />
  340. </el-form-item>
  341. </el-col>
  342. <el-col :span="12">
  343. <el-form-item label="售后状态" prop="afterSale">
  344. <el-select v-model="form.afterSale +''" placeholder="请选择售后状态">
  345. <el-option label="请选择字典生成" value=""/>
  346. </el-select>
  347. </el-form-item>
  348. </el-col>
  349. </el-row>
  350. <!-- <el-form-item label="商品ID" prop="goodsId">-->
  351. <!-- <el-input v-model="form.goodsId" placeholder="请输入商品ID" />-->
  352. <!-- </el-form-item>-->
  353. </el-form>
  354. </div>
  355. <div>
  356. <div style="font-size: 20px;color: #454545;margin-bottom: 10px;font-weight: bold">
  357. 物流信息
  358. </div>
  359. <div>
  360. <el-form label-width="100px">
  361. <el-row :gutter="10">
  362. <el-col :span="12">
  363. <el-form-item label="运输单位">
  364. <el-input placeholder="请输入运输单位"/>
  365. </el-form-item>
  366. </el-col>
  367. <el-col :span="12">
  368. <el-form-item label="物流编号">
  369. <el-input placeholder="请输入物流编号"/>
  370. </el-form-item>
  371. </el-col>
  372. </el-row>
  373. <el-row :gutter="10">
  374. <el-col :span="12">
  375. <el-form-item label="物流状态">
  376. <el-select placeholder="请选择物流状态">
  377. <el-option label="请选择字典生成" value=""/>
  378. </el-select>
  379. </el-form-item>
  380. </el-col>
  381. <el-col :span="12">
  382. </el-col>
  383. </el-row>
  384. <el-form-item label="物流信息">
  385. <div style="background: #e0f2ff;padding: 10px;border-radius: 10px">
  386. <el-steps direction="vertical" :active="1" :space="50">
  387. <el-step title="2024-03-04 10:00:00 承运单位揽件"></el-step>
  388. <el-step title="XXXXXX"></el-step>
  389. <el-step title="派件"></el-step>
  390. </el-steps>
  391. </div>
  392. </el-form-item>
  393. </el-form>
  394. </div>
  395. </div>
  396. <!-- <div>-->
  397. <!-- <div style="font-size: 20px;color: #454545;margin-bottom: 10px;font-weight: bold">-->
  398. <!-- 售后信息-->
  399. <!-- </div>-->
  400. <!-- </div>-->
  401. <div slot="footer" class="dialog-footer">
  402. <el-button type="primary" @click="submitForm">确 定</el-button>
  403. <el-button @click="cancel">取 消</el-button>
  404. </div>
  405. </el-dialog>
  406. <!-- 对话框(售后工单) -->
  407. <el-dialog title="售后工单" :visible.sync="isOpenAfterSale" width="700px" v-dialogDrag append-to-body>
  408. <el-row :gutter="10">
  409. <el-form ref="form" :model="formDetail" label-width="105px">
  410. <el-col :span="11">
  411. <el-form-item label="订单编号" prop="orderNo">
  412. <el-input v-model="formDetail.orderNo" disabled/>
  413. </el-form-item>
  414. </el-col>
  415. <el-col :span="1">
  416. <el-button size="mini" type="text" icon="el-icon-copy-document"></el-button>
  417. </el-col>
  418. <el-col :span="12">
  419. <el-form-item label="客户名称" prop="orderCode">
  420. <el-input v-model="formDetail.clienteleName" disabled/>
  421. </el-form-item>
  422. </el-col>
  423. <el-col :span="12">
  424. <el-form-item label="售后类型" prop="category">
  425. <el-select v-model="formDetail.category" disabled>
  426. <el-option v-for="dict in this.getDictDatas(DICT_TYPE.AFTERSALE_CATEGORY)" :key="parseInt(dict.value)"
  427. :label="dict.label" :value="parseInt(dict.value)"
  428. />
  429. </el-select>
  430. </el-form-item>
  431. </el-col>
  432. <el-col :span="12">
  433. <el-form-item label="期望处理方式" prop="state">
  434. <el-select v-model="formDetail.state" disabled>
  435. <el-option v-for="dict in this.getDictDatas(DICT_TYPE.AFTERSALE_STATE)" :key="parseInt(dict.value)"
  436. :label="dict.label" :value="parseInt(dict.value)"
  437. />
  438. </el-select>
  439. </el-form-item>
  440. </el-col>
  441. <el-col :span="24">
  442. <el-form-item label="问题描述" prop="questionDescriptive">
  443. <el-input type="textarea" v-model="formDetail.questionDescriptive" disabled/>
  444. </el-form-item>
  445. </el-col>
  446. <el-col :span="24">
  447. <el-form-item label="问题照片" prop="questionPicture">
  448. <el-input v-model="formDetail.questionPicture" disabled/>
  449. </el-form-item>
  450. </el-col>
  451. <el-col :span="24">
  452. <el-form-item label="处理建议" prop="processRecommendation">
  453. <el-input type="textarea" v-model="formDetail.processRecommendation"/>
  454. </el-form-item>
  455. </el-col>
  456. </el-form>
  457. </el-row>
  458. <div slot="footer" class="dialog-footer">
  459. <el-button type="primary" @click="submitForm">确 定</el-button>
  460. <el-button @click="cancel">取 消</el-button>
  461. </div>
  462. </el-dialog>
  463. <!-- 对话框(发货) -->
  464. <el-dialog title="发货提交" :visible.sync="isOpenShipments" width="850px" v-dialogDrag append-to-body>
  465. <el-form ref="form" :model="formDetail2" :rules="rules" label-width="120px">
  466. <el-row>
  467. <!-- 发货单号 -->
  468. <el-col :span="12">
  469. <el-form-item label="发货单号" prop="shipmentsNo">
  470. <el-input v-model="formDetail2.shipmentsNo" placeholder="请输入发货单号"/>
  471. </el-form-item>
  472. </el-col>
  473. <!-- 订单编号 -->
  474. <el-col :span="12">
  475. <el-form-item label="订单编号" prop="orderNo">
  476. <el-input v-model="formDetail2.orderNo" placeholder="请输入订单编号" disabled/>
  477. </el-form-item>
  478. </el-col>
  479. <el-col :span="12">
  480. <el-form-item label="客户名称" prop="clienteleName">
  481. <el-input v-model="formDetail2.clienteleName" disabled/>
  482. </el-form-item>
  483. </el-col>
  484. <el-col :span="12">
  485. <el-form-item label="客户联系方式" prop="clientelePhone">
  486. <el-input v-model="formDetail2.clientelePhone" disabled/>
  487. </el-form-item>
  488. </el-col>
  489. <el-col :span="12">
  490. <el-form-item label="承运单位" prop="sellerInfo">
  491. <el-input v-model="formDetail2.sellerInfo" placeholder="请输入卖家信息"/>
  492. </el-form-item>
  493. </el-col>
  494. <!-- 物流订单号 -->
  495. <el-col :span="12">
  496. <el-form-item label="运单编号" prop="logisticsOrderNo">
  497. <el-input v-model="formDetail2.logisticsOrderNo" placeholder="请输入物流订单号"/>
  498. </el-form-item>
  499. </el-col>
  500. <!-- 发货状态 -->
  501. <el-col :span="12">
  502. <el-form-item label="发货状态" prop="shipmentsStatus">
  503. <el-select v-model="formDetail2.shipmentsStatus" placeholder="请选择发货状态">
  504. <el-option
  505. v-for="dict in this.getDictDatas(DICT_TYPE.SHIPMENTS_STATUS)"
  506. :key="dict.value"
  507. :label="dict.label"
  508. :value="dict.value"
  509. />
  510. </el-select>
  511. </el-form-item>
  512. </el-col>
  513. <!-- 发货地址 -->
  514. <el-col :span="24">
  515. <el-form-item label="发货地址" prop="cneeAddress">
  516. <el-input v-model="formDetail2.shipmentsStore" placeholder="请输入收货地址" type="textarea"/>
  517. </el-form-item>
  518. </el-col>
  519. <!-- 客户地址 -->
  520. <el-col :span="24">
  521. <el-form-item label="客户地址" prop="cneeAddress">
  522. <el-input v-model="formDetail2.cneeAddress" placeholder="请输入客户地址" type="textarea"/>
  523. </el-form-item>
  524. </el-col>
  525. </el-row>
  526. <div style="margin-bottom: 20px;margin-left: 50px">
  527. <el-table v-loading="loading" :data="list">
  528. <el-table-column label="商品编号" align="center" prop="code"/>
  529. <el-table-column label="商品名称" align="center" prop="name"/>
  530. <el-table-column label="商品品牌" align="center" prop="brand"/>
  531. <el-table-column label="商品型号" align="center" prop="model"/>
  532. <el-table-column label="单位" align="center" prop="unit"/>
  533. <el-table-column label="成交单价" align="center" prop="marketPrice"/>
  534. <el-table-column label="应发数量" align="center" prop="num"/>
  535. <el-table-column label="实发数量" align="center" prop="num"/>
  536. <el-table-column label="操作" align="center">
  537. <template v-slot="scope">
  538. <el-button size="mini" type="text"
  539. >删除
  540. </el-button>
  541. </template>
  542. </el-table-column>
  543. </el-table>
  544. </div>
  545. <el-form-item label="备注" prop="remark">
  546. <el-input v-model="formDetail2.remark" placeholder="请输入备注" type="textarea"/>
  547. </el-form-item>
  548. </el-form>
  549. <div slot="footer" class="dialog-footer">
  550. <el-button type="primary" @click="submitForm">确 定</el-button>
  551. <el-button @click="cancel">取 消</el-button>
  552. </div>
  553. </el-dialog>
  554. </div>
  555. </template>
  556. <script>
  557. import {
  558. getGoods
  559. } from '@/api/supplier/goods'
  560. import {
  561. createSaleOrder,
  562. updateSaleOrder,
  563. deleteSaleOrder,
  564. getSaleOrder,
  565. getSaleOrderPage,
  566. exportSaleOrderExcel
  567. } from '@/api/supplier/saleOrder'
  568. // import PortalSlideshowConfig from '@/views/supplier/portalSlideshowConfig'
  569. export default {
  570. name: 'SaleOrder',
  571. components: {},
  572. data() {
  573. return {
  574. // 遮罩层
  575. loading: true,
  576. // 导出遮罩层
  577. exportLoading: false,
  578. // 显示搜索条件
  579. showSearch: true,
  580. // 总条数
  581. total: 0,
  582. // 已售订单列表
  583. list: [],
  584. goodsMap: new Map(),
  585. // 弹出层标题
  586. title: '',
  587. // 是否显示弹出层
  588. open: false,
  589. isOpenAfterSale: false,
  590. isOpenShipments: false,
  591. // 查询参数
  592. queryParams: {
  593. pageNo: 1,
  594. pageSize: 10,
  595. createTime: [],
  596. orderNo: null,
  597. orderType: null,
  598. clienteleId: null,
  599. clienteleName: null,
  600. clientelePhone: null,
  601. clienteleType: null,
  602. cneeAddress: null,
  603. orderStatus: null,
  604. predictShipmentsTime: [],
  605. afterSale: null,
  606. goodsId: null
  607. },
  608. // 表单参数
  609. form: {},
  610. formDetail: {},
  611. formDetail2: {},
  612. // 表单校验
  613. rules: {}
  614. }
  615. },
  616. watch: {
  617. // 'list': {
  618. // handler: function(newValue) {
  619. // console.log(newValue)
  620. // },
  621. // deep: true
  622. // }
  623. },
  624. created() {
  625. this.getList()
  626. },
  627. methods: {
  628. toggleExpand(row, expandedRows) {
  629. getGoods(row.goodsId).then(res => {
  630. row.goodslist.splice(0, 1, {
  631. goodsInfo: res.data,
  632. id: 'update'
  633. })
  634. })
  635. },
  636. afterSaleTreatment(row) {
  637. this.isOpenAfterSale = true
  638. this.formDetail = row
  639. },
  640. //发货
  641. consignment(row) {
  642. this.isOpenShipments = true
  643. this.formDetail2 = row
  644. },
  645. /** 查询列表 */
  646. getList() {
  647. this.loading = true
  648. // 执行查询
  649. getSaleOrderPage(this.queryParams).then(response => {
  650. response.data.list.forEach(item => {
  651. item.goodslist = []
  652. item.goodslist.push({})
  653. })
  654. this.list = response.data.list
  655. this.total = response.data.total
  656. this.loading = false
  657. })
  658. },
  659. /** 取消按钮 */
  660. cancel() {
  661. this.open = false
  662. this.isOpenShipments = false
  663. this.isOpenAfterSale = false
  664. this.reset()
  665. },
  666. /** 表单重置 */
  667. reset() {
  668. this.form = {
  669. id: undefined,
  670. orderNo: undefined,
  671. orderType: undefined,
  672. clienteleId: undefined,
  673. clienteleName: undefined,
  674. clientelePhone: undefined,
  675. clienteleType: undefined,
  676. cneeAddress: undefined,
  677. orderStatus: undefined,
  678. predictShipmentsTime: undefined,
  679. afterSale: undefined,
  680. goodsId: undefined
  681. }
  682. this.formDetail = {}
  683. this.formDetail2 = {}
  684. this.resetForm('form')
  685. },
  686. /** 搜索按钮操作 */
  687. handleQuery() {
  688. this.queryParams.pageNo = 1
  689. this.getList()
  690. },
  691. /** 重置按钮操作 */
  692. resetQuery() {
  693. this.resetForm('queryForm')
  694. this.handleQuery()
  695. },
  696. /** 新增按钮操作 */
  697. handleAdd() {
  698. this.reset()
  699. this.open = true
  700. this.title = '添加已售订单'
  701. },
  702. /** 修改按钮操作 */
  703. handleUpdate(row) {
  704. this.reset()
  705. const id = row.id
  706. getSaleOrder(id).then(response => {
  707. this.form = response.data
  708. this.open = true
  709. this.title = '修改已售订单'
  710. })
  711. },
  712. /** 提交按钮 */
  713. submitForm() {
  714. this.$refs['form'].validate(valid => {
  715. if (!valid) {
  716. return
  717. }
  718. // 修改的提交
  719. if (this.form.id != null) {
  720. updateSaleOrder(this.form).then(response => {
  721. this.$modal.msgSuccess('修改成功')
  722. this.open = false
  723. this.getList()
  724. })
  725. return
  726. }
  727. // 添加的提交
  728. createSaleOrder(this.form).then(response => {
  729. this.$modal.msgSuccess('新增成功')
  730. this.open = false
  731. this.getList()
  732. })
  733. })
  734. },
  735. /** 删除按钮操作 */
  736. handleDelete(row) {
  737. const id = row.id
  738. this.$modal.confirm('是否确认删除已售订单编号为"' + id + '"的数据项?').then(function() {
  739. return deleteSaleOrder(id)
  740. }).then(() => {
  741. this.getList()
  742. this.$modal.msgSuccess('删除成功')
  743. }).catch(() => {
  744. })
  745. },
  746. /** 导出按钮操作 */
  747. handleExport() {
  748. // 处理查询参数
  749. let params = { ...this.queryParams }
  750. params.pageNo = undefined
  751. params.pageSize = undefined
  752. this.$modal.confirm('是否确认导出所有已售订单数据项?').then(() => {
  753. this.exportLoading = true
  754. return exportSaleOrderExcel(params)
  755. }).then(response => {
  756. this.$download.excel(response, '已售订单.xls')
  757. this.exportLoading = false
  758. }).catch(() => {
  759. })
  760. }
  761. }
  762. }
  763. </script>