index.vue 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. <template>
  2. <div class="page-container column-container">
  3. <!-- 搜索区 -->
  4. <el-form
  5. class="list-search-container"
  6. :model="queryParams"
  7. ref="queryRef"
  8. :inline="true"
  9. >
  10. <el-form-item label="单据号:" prop="formCode">
  11. <el-input
  12. v-model="queryParams.formCode"
  13. placeholder="请输入单据号"
  14. style="width: 144px"
  15. clearable
  16. @keyup.enter="handleQuery"
  17. />
  18. </el-form-item>
  19. <el-form-item label="表单日期:" prop="formDate">
  20. <el-date-picker
  21. v-model="queryParams.formDate"
  22. type="date"
  23. style="width: 144px"
  24. clearable
  25. value-format="YYYY-MM-DD"
  26. placeholder="请选择表单日期"
  27. >
  28. </el-date-picker>
  29. </el-form-item>
  30. <el-form-item label="外协商名称:" prop="supplierName">
  31. <el-input
  32. v-model="queryParams.supplierName"
  33. placeholder="请输入关键字"
  34. style="width: 144px"
  35. clearable
  36. @keyup.enter="handleQuery"
  37. />
  38. </el-form-item>
  39. <el-form-item label="送货方式:" prop="deliveryMethod">
  40. <el-select
  41. v-model="queryParams.deliveryMethod"
  42. style="width: 144px"
  43. clearable
  44. placeholder="请选择"
  45. >
  46. <el-option
  47. v-for="dict in delivery_method"
  48. :key="dict.value"
  49. :label="dict.label"
  50. :value="dict.value"
  51. />
  52. </el-select>
  53. </el-form-item>
  54. <el-form-item label="带箱方式:" prop="packagingMethod">
  55. <el-select
  56. v-model="queryParams.packagingMethod"
  57. style="width: 144px"
  58. clearable
  59. placeholder="请选择"
  60. >
  61. <el-option
  62. v-for="dict in packaging_method"
  63. :key="dict.value"
  64. :label="dict.label"
  65. :value="dict.value"
  66. />
  67. </el-select>
  68. </el-form-item>
  69. <el-form-item>
  70. <el-button type="primary" icon="Search" @click="handleQuery"
  71. >搜索</el-button
  72. >
  73. <el-button icon="Refresh" @click="resetQuery">重置</el-button>
  74. </el-form-item>
  75. </el-form>
  76. <!-- 功能按钮区 -->
  77. <div class="list-btns-container">
  78. <el-button
  79. type="primary"
  80. icon="Plus"
  81. @click="handleAdd"
  82. v-hasPermi="['business:outsource:add']"
  83. >
  84. 新增
  85. </el-button>
  86. <el-button
  87. type="danger"
  88. icon="Delete"
  89. :disabled="multiple"
  90. @click="handleDelete"
  91. v-hasPermi="['business:outsource:remove']"
  92. >
  93. 删除
  94. </el-button>
  95. <!--
  96. <el-button type="warning" icon="Download" @click="handleExport" v-hasPermi="['business:outsource:export']">
  97. 导出
  98. </el-button>
  99. <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
  100. -->
  101. </div>
  102. <!-- 渲染数据区 -->
  103. <div class="el-table-container">
  104. <div class="el-table-inner-container">
  105. <el-table
  106. v-loading="loading"
  107. :data="orderList"
  108. size="small"
  109. border
  110. height="100%"
  111. @selection-change="handleSelectionChange"
  112. >
  113. <el-table-column type="selection" width="48" align="center" />
  114. <el-table-column
  115. label="外协单号"
  116. align="center"
  117. prop="formCode"
  118. width="120"
  119. />
  120. <el-table-column
  121. label="外协日期"
  122. align="center"
  123. prop="formDate"
  124. width="120"
  125. >
  126. <template #default="scope">
  127. {{ parseTime(scope.row.formDate, "{y}-{m}-{d}") }}
  128. </template>
  129. </el-table-column>
  130. <el-table-column
  131. label="外协商名称"
  132. align="center"
  133. prop="supplierName"
  134. width="320"
  135. />
  136. <el-table-column
  137. label="结算方式"
  138. align="center"
  139. prop="settlementType"
  140. width="120"
  141. >
  142. <template #default="scope">
  143. <dict-tag
  144. :options="settlement_type"
  145. :value="scope.row.settlementType"
  146. />
  147. </template>
  148. </el-table-column>
  149. <el-table-column
  150. label="送货方式"
  151. align="center"
  152. prop="deliveryMethod"
  153. width="120"
  154. >
  155. <template #default="scope">
  156. <dict-tag
  157. :options="delivery_method"
  158. :value="scope.row.deliveryMethod"
  159. />
  160. </template>
  161. </el-table-column>
  162. <el-table-column
  163. label="带箱方式"
  164. align="center"
  165. prop="packagingMethod"
  166. width="120"
  167. >
  168. <template #default="scope">
  169. <dict-tag
  170. :options="packaging_method"
  171. :value="scope.row.packagingMethod"
  172. />
  173. </template>
  174. </el-table-column>
  175. <el-table-column label="备注" align="center" prop="remark" />
  176. <el-table-column
  177. label="操作"
  178. align="center"
  179. class-name="small-padding fixed-width"
  180. width="144"
  181. >
  182. <template #default="scope">
  183. <el-button
  184. v-if="scope.row.isSubmit == 0"
  185. link
  186. type="warning"
  187. icon="Edit"
  188. @click="handleUpdate(scope.row)"
  189. v-hasPermi="['business:outsource:save']"
  190. >
  191. 编辑
  192. </el-button>
  193. <el-button
  194. v-if="scope.row.isSubmit == 1"
  195. link
  196. type="primary"
  197. icon="View"
  198. @click="handleUpdate(scope.row)"
  199. v-hasPermi="['business:outsource:save']"
  200. >
  201. 查看
  202. </el-button>
  203. <el-button
  204. v-if="scope.row.isSubmit == 0"
  205. link
  206. type="danger"
  207. icon="Delete"
  208. @click="handleDelete(scope.row)"
  209. v-hasPermi="['business:outsource:remove']"
  210. >
  211. 删除
  212. </el-button>
  213. </template>
  214. </el-table-column>
  215. </el-table>
  216. </div>
  217. </div>
  218. <!-- 分页 -->
  219. <pagination
  220. v-show="total > 0"
  221. :total="total"
  222. v-model:page="queryParams.pageNum"
  223. v-model:limit="queryParams.pageSize"
  224. @pagination="getList"
  225. />
  226. <!-- 表单 -->
  227. <order-form
  228. ref="orderRef"
  229. :get-list="getList"
  230. :delivery-method="delivery_method"
  231. :settlement-type="settlement_type"
  232. :packaging-method="packaging_method"
  233. />
  234. </div>
  235. </template>
  236. <script setup name="Order">
  237. import { listOrder, delOrder } from "@/api/business/outsourcedOrder";
  238. import orderForm from "./form";
  239. const { proxy } = getCurrentInstance();
  240. /** 字典数组区 */
  241. const { delivery_method } = proxy.useDict("delivery_method");
  242. const { settlement_type } = proxy.useDict("settlement_type");
  243. const { packaging_method } = proxy.useDict("packaging_method");
  244. const orderList = ref([]);
  245. const loading = ref(true);
  246. const del = ref(true); //选中数据是否可以删除
  247. const ids = ref([]);
  248. const single = ref(true);
  249. const multiple = ref(true);
  250. const total = ref(0);
  251. /** 查询对象 */
  252. const queryParams = ref({
  253. pageNum: 1,
  254. pageSize: 10,
  255. formCode: null,
  256. formDate: null,
  257. supplierName: null,
  258. deliveryMethod: null,
  259. packagingMethod: null,
  260. freightPrice: null,
  261. freightAmount: null,
  262. });
  263. /*********************** 方法区 ****************************/
  264. /** 查询外协单主
  265. 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子列表 */
  266. function getList() {
  267. loading.value = true;
  268. listOrder(queryParams.value).then((response) => {
  269. orderList.value = response.rows;
  270. total.value = response.total;
  271. loading.value = false;
  272. });
  273. }
  274. /** 搜索按钮操作 */
  275. function handleQuery() {
  276. queryParams.value.pageNum = 1;
  277. getList();
  278. }
  279. /** 重置按钮操作 */
  280. function resetQuery() {
  281. proxy.resetForm("queryRef");
  282. handleQuery();
  283. }
  284. // 多选框选中数据
  285. function handleSelectionChange(selection) {
  286. ids.value = selection.map((item) => item.id);
  287. del.value = !selection.some((item) => item.isSubmit == 1);
  288. single.value = selection.length != 1;
  289. multiple.value = !selection.length;
  290. }
  291. /** 新增按钮操作 */
  292. function handleAdd() {
  293. proxy.$refs.orderRef.open();
  294. }
  295. /** 修改按钮操作 */
  296. function handleUpdate(row) {
  297. const id = row.id || ids.value;
  298. proxy.$refs.orderRef.open(id);
  299. }
  300. /** 删除按钮操作 */
  301. function handleDelete(row) {
  302. const _ids = row.id || ids.value;
  303. if (del.value) {
  304. proxy.$modal
  305. .confirm("是否确认删除选中的数据项?")
  306. .then(function () {
  307. return delOrder(_ids);
  308. })
  309. .then(() => {
  310. getList();
  311. proxy.$modal.msgSuccess("删除成功!");
  312. })
  313. .catch(() => {});
  314. } else {
  315. proxy.$modal.msgError("已提交单据,不能删除!");
  316. }
  317. }
  318. /** 导出按钮操作 */
  319. function handleExport() {
  320. proxy.download(
  321. "business/order/export",
  322. {
  323. ...queryParams.value,
  324. },
  325. `order_${new Date().getTime()}.xlsx`
  326. );
  327. }
  328. getList();
  329. </script>