index.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493
  1. <style>
  2. .demo-table-expand {
  3. font-size: 0;
  4. }
  5. .demo-table-expand label {
  6. width: 90px;
  7. color: #99a9bf;
  8. }
  9. .demo-table-expand .el-form-item {
  10. margin-right: 0;
  11. margin-bottom: 0;
  12. width: 100%;
  13. }
  14. </style>
  15. <template>
  16. <div class="app-container">
  17. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  18. <el-form-item label="销售单号" prop="receiptNo">
  19. <el-input
  20. v-model="queryParams.receiptNo"
  21. placeholder="请输入销售单号"
  22. clearable
  23. size="small"
  24. @keyup.enter.native="handleQuery"
  25. />
  26. </el-form-item>
  27. <el-form-item label="料件号" prop="ematouCode">
  28. <el-input
  29. v-model="queryParams.ematouCode"
  30. placeholder="请输入料件号"
  31. clearable
  32. size="small"
  33. @keyup.enter.native="handleQuery"
  34. />
  35. </el-form-item>
  36. <el-form-item label="商品主条码" prop="barcode">
  37. <el-input
  38. v-model="queryParams.barcode"
  39. placeholder="请输入商品主条码"
  40. clearable
  41. size="small"
  42. @keyup.enter.native="handleQuery"
  43. />
  44. </el-form-item>
  45. <el-form-item>
  46. <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  47. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  48. </el-form-item>
  49. </el-form>
  50. <el-row :gutter="10" class="mb8">
  51. <el-col :span="1.5">
  52. <el-button
  53. type="primary"
  54. icon="el-icon-plus"
  55. size="mini"
  56. @click="handleAdd"
  57. v-hasPermi="['biz:salesdetail:add']"
  58. >新增</el-button>
  59. </el-col>
  60. <el-col :span="1.5">
  61. <el-button
  62. type="success"
  63. icon="el-icon-edit"
  64. size="mini"
  65. :disabled="single"
  66. @click="handleUpdate"
  67. v-hasPermi="['biz:salesdetail:edit']"
  68. >修改</el-button>
  69. </el-col>
  70. <el-col :span="1.5">
  71. <el-button
  72. type="danger"
  73. icon="el-icon-delete"
  74. size="mini"
  75. :disabled="multiple"
  76. @click="handleDelete"
  77. v-hasPermi="['biz:salesdetail:remove']"
  78. >删除</el-button>
  79. </el-col>
  80. <el-col :span="1.5">
  81. <el-button
  82. type="warning"
  83. icon="el-icon-download"
  84. size="mini"
  85. @click="handleExport"
  86. v-hasPermi="['biz:salesdetail:export']"
  87. >导出</el-button>
  88. </el-col>
  89. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  90. </el-row>
  91. <el-table v-loading="loading" :data="salesdetailList" @selection-change="handleSelectionChange" height="700">
  92. <el-table-column type="selection" width="55" align="center" />
  93. <el-table-column label="商户编号" align="center" prop="merchSn" />
  94. <el-table-column label="商户名称" align="center" prop="merchSnName" />
  95. <el-table-column label="第三方商户编号" align="center" prop="thirdMerchSn" />
  96. <el-table-column label="第三方商户名称" align="center" prop="thirdMerchSnName" />
  97. <el-table-column label="销售单号" align="center" prop="receiptNo" />
  98. <el-table-column label="门店名称" align="center" prop="storeName" />
  99. <el-table-column label="门店编号" align="center" prop="storeNameSn" />
  100. <el-table-column label="收银台" align="center" prop="cashRegisterNo" />
  101. <el-table-column label="销售时间" align="center" prop="timeStamp" width="200">
  102. <template slot-scope="scope">
  103. <span>{{ parseTime(scope.row.timeStamp, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
  104. </template>
  105. </el-table-column>
  106. <el-table-column label="收银员id" align="center" prop="staffId" />
  107. <el-table-column label="收银员姓名" align="center" prop="staffName" />
  108. <el-table-column label="支付方式" align="center" prop="payFlag" />
  109. <el-table-column label="支付状态" align="center" prop="orderStatus" />
  110. <el-table-column label="微信流水号" align="center" prop="orderSnWx" />
  111. <el-table-column label="支付宝流水号" align="center" prop="orderSnAli" />
  112. <el-table-column label="海关商品编码" align="center" prop="hsCode" />
  113. <el-table-column label="品类名称" align="center" prop="hsCodeName" />
  114. <el-table-column label="料件号" align="center" prop="ematouCode" />
  115. <el-table-column label="PLU" align="center" prop="plu" />
  116. <el-table-column label="MychemID" align="center" prop="mychemId" />
  117. <el-table-column label="商品名称(英文)" align="center" prop="productNameEn" />
  118. <el-table-column label="商品名称(中文)" align="center" prop="productNameCn" />
  119. <el-table-column label="商品主条码" align="center" prop="barcode" />
  120. <el-table-column label="规格" align="center" prop="packSize" />
  121. <el-table-column label="单位" align="center" prop="productSpec" />
  122. <el-table-column label="品牌" align="center" prop="brand" />
  123. <el-table-column label="日常价" align="center" prop="edlp" />
  124. <el-table-column label="实际销售价" align="center" prop="currentPrice" />
  125. <el-table-column label="进货价" align="center" prop="costPrice" />
  126. <el-table-column label="税费" align="center" prop="taxPrice" />
  127. <el-table-column label="综合税率" align="center" prop="taxRate" />
  128. <el-table-column label="商品类型" align="center" prop="productCategory" />
  129. <el-table-column label="主供应商名称" align="center" prop="supplierName" />
  130. <el-table-column label="销售类型" align="center" prop="transactionType" />
  131. <el-table-column label="退货类型" align="center" prop="saleReturnType" />
  132. <el-table-column label="备注" align="center" prop="remark" />
  133. <el-table-column label="创建人编号" align="center" prop="createrSn" />
  134. <el-table-column label="创建时间" align="center" prop="createTime" width="180">
  135. <template slot-scope="scope">
  136. <span>{{ parseTime(scope.row.timeStamp, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
  137. </template>
  138. </el-table-column>
  139. <el-table-column label="修改人编号" align="center" prop="moderSn" />
  140. <el-table-column label="修改时间" align="center" prop="modTime" width="180">
  141. <template slot-scope="scope">
  142. <span>{{ parseTime(scope.row.timeStamp, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
  143. </template>
  144. </el-table-column>
  145. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  146. <template slot-scope="scope">
  147. <el-button
  148. size="mini"
  149. type="text"
  150. icon="el-icon-edit"
  151. @click="handleUpdate(scope.row)"
  152. v-hasPermi="['biz:salesdetail:edit']"
  153. >修改</el-button>
  154. <el-button
  155. size="mini"
  156. type="text"
  157. icon="el-icon-delete"
  158. @click="handleDelete(scope.row)"
  159. v-hasPermi="['biz:salesdetail:remove']"
  160. >删除</el-button>
  161. </template>
  162. </el-table-column>
  163. </el-table>
  164. <pagination
  165. v-show="total>0"
  166. :total="total"
  167. :page.sync="queryParams.pageNum"
  168. :limit.sync="queryParams.pageSize"
  169. @pagination="getList"
  170. />
  171. <!-- 添加或修改kmall销售数据对话框 -->
  172. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  173. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  174. <el-form-item label="商户编号" prop="merchSn">
  175. <el-input v-model="form.merchSn" placeholder="请输入商户编号" />
  176. </el-form-item>
  177. <el-form-item label="商户名称" prop="merchSnName">
  178. <el-input v-model="form.merchSnName" placeholder="请输入商户名称" />
  179. </el-form-item>
  180. <el-form-item label="第三方商户编号" prop="thirdMerchSn">
  181. <el-input v-model="form.thirdMerchSn" placeholder="请输入第三方商户编号" />
  182. </el-form-item>
  183. <el-form-item label="第三方商户名称" prop="thirdMerchSnName">
  184. <el-input v-model="form.thirdMerchSnName" placeholder="请输入第三方商户名称" />
  185. </el-form-item>
  186. <el-form-item label="销售单号" prop="receiptNo">
  187. <el-input v-model="form.receiptNo" placeholder="请输入销售单号" />
  188. </el-form-item>
  189. <el-form-item label="门店名称" prop="storeName">
  190. <el-input v-model="form.storeName" placeholder="请输入门店名称" />
  191. </el-form-item>
  192. <el-form-item label="门店编号" prop="storeNameSn">
  193. <el-input v-model="form.storeNameSn" placeholder="请输入门店编号" />
  194. </el-form-item>
  195. <el-form-item label="收银台" prop="cashRegisterNo">
  196. <el-input v-model="form.cashRegisterNo" placeholder="请输入收银台" />
  197. </el-form-item>
  198. <el-form-item label="销售时间" prop="timeStamp">
  199. <el-date-picker clearable size="small"
  200. v-model="form.timeStamp"
  201. type="date"
  202. value-format="yyyy-MM-dd"
  203. placeholder="选择销售时间">
  204. </el-date-picker>
  205. </el-form-item>
  206. <el-form-item label="收银员id" prop="staffId">
  207. <el-input v-model="form.staffId" placeholder="请输入收银员id" />
  208. </el-form-item>
  209. <el-form-item label="收银员姓名" prop="staffName">
  210. <el-input v-model="form.staffName" placeholder="请输入收银员姓名" />
  211. </el-form-item>
  212. <el-form-item label="支付方式" prop="payFlag">
  213. <el-input v-model="form.payFlag" placeholder="请输入支付方式" />
  214. </el-form-item>
  215. <el-form-item label="支付状态">
  216. <el-radio-group v-model="form.orderStatus">
  217. <el-radio label="1">请选择字典生成</el-radio>
  218. </el-radio-group>
  219. </el-form-item>
  220. <el-form-item label="微信流水号" prop="orderSnWx">
  221. <el-input v-model="form.orderSnWx" placeholder="请输入微信流水号" />
  222. </el-form-item>
  223. <el-form-item label="支付宝流水号" prop="orderSnAli">
  224. <el-input v-model="form.orderSnAli" placeholder="请输入支付宝流水号" />
  225. </el-form-item>
  226. <el-form-item label="海关商品编码" prop="hsCode">
  227. <el-input v-model="form.hsCode" placeholder="请输入海关商品编码" />
  228. </el-form-item>
  229. <el-form-item label="品类名称" prop="hsCodeName">
  230. <el-input v-model="form.hsCodeName" placeholder="请输入品类名称" />
  231. </el-form-item>
  232. <el-form-item label="料件号" prop="ematouCode">
  233. <el-input v-model="form.ematouCode" placeholder="请输入料件号" />
  234. </el-form-item>
  235. <el-form-item label="PLU" prop="plu">
  236. <el-input v-model="form.plu" placeholder="请输入PLU" />
  237. </el-form-item>
  238. <el-form-item label="MychemID" prop="mychemId">
  239. <el-input v-model="form.mychemId" placeholder="请输入MychemID" />
  240. </el-form-item>
  241. <el-form-item label="商品名称(英文)" prop="productNameEn">
  242. <el-input v-model="form.productNameEn" placeholder="请输入商品名称(英文)" />
  243. </el-form-item>
  244. <el-form-item label="商品名称(中文)" prop="productNameCn">
  245. <el-input v-model="form.productNameCn" placeholder="请输入商品名称(中文)" />
  246. </el-form-item>
  247. <el-form-item label="商品主条码" prop="barcode">
  248. <el-input v-model="form.barcode" placeholder="请输入商品主条码" />
  249. </el-form-item>
  250. <el-form-item label="规格" prop="packSize">
  251. <el-input v-model="form.packSize" placeholder="请输入规格" />
  252. </el-form-item>
  253. <el-form-item label="单位" prop="productSpec">
  254. <el-input v-model="form.productSpec" placeholder="请输入单位" />
  255. </el-form-item>
  256. <el-form-item label="品牌" prop="brand">
  257. <el-input v-model="form.brand" placeholder="请输入品牌" />
  258. </el-form-item>
  259. <el-form-item label="日常价" prop="edlp">
  260. <el-input v-model="form.edlp" placeholder="请输入日常价" />
  261. </el-form-item>
  262. <el-form-item label="实际销售价" prop="currentPrice">
  263. <el-input v-model="form.currentPrice" placeholder="请输入实际销售价" />
  264. </el-form-item>
  265. <el-form-item label="进货价" prop="costPrice">
  266. <el-input v-model="form.costPrice" placeholder="请输入进货价" />
  267. </el-form-item>
  268. <el-form-item label="税费" prop="taxPrice">
  269. <el-input v-model="form.taxPrice" placeholder="请输入税费" />
  270. </el-form-item>
  271. <el-form-item label="综合税率" prop="taxRate">
  272. <el-input v-model="form.taxRate" placeholder="请输入综合税率" />
  273. </el-form-item>
  274. <el-form-item label="商品类型" prop="productCategory">
  275. <el-input v-model="form.productCategory" placeholder="请输入商品类型" />
  276. </el-form-item>
  277. <el-form-item label="主供应商名称" prop="supplierName">
  278. <el-input v-model="form.supplierName" placeholder="请输入主供应商名称" />
  279. </el-form-item>
  280. <el-form-item label="销售类型" prop="transactionType">
  281. <el-input v-model="form.transactionType" placeholder="请输入销售类型" />
  282. </el-form-item>
  283. <el-form-item label="退货类型" prop="saleReturnType">
  284. <el-input v-model="form.saleReturnType" placeholder="请输入退货类型" />
  285. </el-form-item>
  286. <el-form-item label="备注" prop="remark">
  287. <el-input v-model="form.remark" placeholder="请输入备注" />
  288. </el-form-item>
  289. </el-form>
  290. <div slot="footer" class="dialog-footer">
  291. <el-button type="primary" @click="submitForm">确 定</el-button>
  292. <el-button @click="cancel">取 消</el-button>
  293. </div>
  294. </el-dialog>
  295. </div>
  296. </template>
  297. <script>
  298. import { listSalesdetail, getSalesdetail, delSalesdetail, addSalesdetail, updateSalesdetail, exportSalesdetail } from "@/api/mall/salesdetail";
  299. export default {
  300. name: "Salesdetail",
  301. components: {
  302. },
  303. data() {
  304. return {
  305. // 遮罩层
  306. loading: true,
  307. // 选中数组
  308. ids: [],
  309. // 非单个禁用
  310. single: true,
  311. // 非多个禁用
  312. multiple: true,
  313. // 显示搜索条件
  314. showSearch: true,
  315. // 总条数
  316. total: 0,
  317. // kmall销售数据表格数据
  318. salesdetailList: [],
  319. // 弹出层标题
  320. title: "",
  321. // 是否显示弹出层
  322. open: false,
  323. // 查询参数
  324. queryParams: {
  325. pageNum: 1,
  326. pageSize: 10,
  327. receiptNo: null,
  328. ematouCode: null,
  329. barcode: null,
  330. },
  331. // 表单参数
  332. form: {},
  333. // 表单校验
  334. rules: {
  335. }
  336. };
  337. },
  338. created() {
  339. this.getList();
  340. },
  341. methods: {
  342. /** 查询kmall销售数据列表 */
  343. getList() {
  344. this.loading = true;
  345. listSalesdetail(this.queryParams).then(response => {
  346. this.salesdetailList = response.rows;
  347. this.total = response.total;
  348. this.loading = false;
  349. });
  350. },
  351. // 取消按钮
  352. cancel() {
  353. this.open = false;
  354. this.reset();
  355. },
  356. // 表单重置
  357. reset() {
  358. this.form = {
  359. id: null,
  360. merchSn: null,
  361. merchSnName: null,
  362. thirdMerchSn: null,
  363. thirdMerchSnName: null,
  364. receiptNo: null,
  365. storeName: null,
  366. storeNameSn: null,
  367. cashRegisterNo: null,
  368. timeStamp: null,
  369. staffId: null,
  370. staffName: null,
  371. payFlag: null,
  372. orderStatus: 0,
  373. orderSnWx: null,
  374. orderSnAli: null,
  375. hsCode: null,
  376. hsCodeName: null,
  377. ematouCode: null,
  378. plu: null,
  379. mychemId: null,
  380. productNameEn: null,
  381. productNameCn: null,
  382. barcode: null,
  383. packSize: null,
  384. productSpec: null,
  385. brand: null,
  386. edlp: null,
  387. currentPrice: null,
  388. costPrice: null,
  389. taxPrice: null,
  390. taxRate: null,
  391. productCategory: null,
  392. supplierName: null,
  393. transactionType: null,
  394. saleReturnType: null,
  395. remark: null,
  396. createrSn: null,
  397. createTime: null,
  398. moderSn: null,
  399. modTime: null,
  400. tstm: null
  401. };
  402. this.resetForm("form");
  403. },
  404. /** 搜索按钮操作 */
  405. handleQuery() {
  406. this.queryParams.pageNum = 1;
  407. this.getList();
  408. },
  409. /** 重置按钮操作 */
  410. resetQuery() {
  411. this.resetForm("queryForm");
  412. this.handleQuery();
  413. },
  414. // 多选框选中数据
  415. handleSelectionChange(selection) {
  416. this.ids = selection.map(item => item.id)
  417. this.single = selection.length!==1
  418. this.multiple = !selection.length
  419. },
  420. /** 新增按钮操作 */
  421. handleAdd() {
  422. this.reset();
  423. this.open = true;
  424. this.title = "添加kmall销售数据";
  425. },
  426. /** 修改按钮操作 */
  427. handleUpdate(row) {
  428. this.reset();
  429. const id = row.id || this.ids
  430. getSalesdetail(id).then(response => {
  431. this.form = response.data;
  432. this.open = true;
  433. this.title = "修改kmall销售数据";
  434. });
  435. },
  436. /** 提交按钮 */
  437. submitForm() {
  438. this.$refs["form"].validate(valid => {
  439. if (valid) {
  440. if (this.form.id != null) {
  441. updateSalesdetail(this.form).then(response => {
  442. this.msgSuccess("修改成功");
  443. this.open = false;
  444. this.getList();
  445. });
  446. } else {
  447. addSalesdetail(this.form).then(response => {
  448. this.msgSuccess("新增成功");
  449. this.open = false;
  450. this.getList();
  451. });
  452. }
  453. }
  454. });
  455. },
  456. /** 删除按钮操作 */
  457. handleDelete(row) {
  458. const ids = row.id || this.ids;
  459. this.$confirm('是否确认删除kmall销售数据编号为"' + ids + '"的数据项?', "警告", {
  460. confirmButtonText: "确定",
  461. cancelButtonText: "取消",
  462. type: "warning"
  463. }).then(function() {
  464. return delSalesdetail(ids);
  465. }).then(() => {
  466. this.getList();
  467. this.msgSuccess("删除成功");
  468. })
  469. },
  470. /** 导出按钮操作 */
  471. handleExport() {
  472. const queryParams = this.queryParams;
  473. this.$confirm('是否确认导出所有kmall销售数据数据项?', "警告", {
  474. confirmButtonText: "确定",
  475. cancelButtonText: "取消",
  476. type: "warning"
  477. }).then(function() {
  478. return exportSalesdetail(queryParams);
  479. }).then(response => {
  480. this.download(response.msg);
  481. })
  482. }
  483. }
  484. };
  485. </script>