inventory-search.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. <!-- 搜索表单 -->
  2. <template>
  3. <el-form
  4. label-width="80px"
  5. class="ele-form-search"
  6. @keyup.enter.native="search"
  7. @submit.native.prevent
  8. >
  9. <!-- <el-row :gutter="15">
  10. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  11. <el-form-item label="单号:">
  12. <el-input clearable v-model="where.code" placeholder="请输入" />
  13. </el-form-item>
  14. </el-col>
  15. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  16. <el-form-item label="申请人:">
  17. <el-input clearable v-model="where.name" placeholder="请输入" />
  18. </el-form-item>
  19. </el-col>
  20. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  21. <el-form-item label="调拨类型:" label-width="100px">
  22. <el-input clearable v-model="where.dep" placeholder="请输入" />
  23. </el-form-item>
  24. </el-col>
  25. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  26. <el-form-item label="状态:">
  27. <el-input clearable v-model="where.texture" placeholder="请输入" />
  28. </el-form-item>
  29. <div class="ele-form-actions">
  30. <el-button
  31. type="primary"
  32. icon="el-icon-search"
  33. class="ele-btn-icon"
  34. @click="search"
  35. size="small"
  36. >
  37. 查询
  38. </el-button>
  39. <el-button @click="reset"
  40. icon="el-icon-refresh-left"
  41. size="small"
  42. type="primary"
  43. >重置</el-button>
  44. </div>
  45. </el-col>
  46. </el-row> -->
  47. <el-row :gutter="15">
  48. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  49. <el-form-item label="所属工厂" prop="factoryId">
  50. <el-select
  51. filterable
  52. placeholder="请选择"
  53. @change="getWarehouseListHandle"
  54. v-model="where.factoryId"
  55. clearable
  56. class="w100"
  57. >
  58. <el-option
  59. v-for="item in factoryList"
  60. :key="item.id"
  61. :label="item.name"
  62. :value="item.id"
  63. ></el-option>
  64. </el-select>
  65. </el-form-item>
  66. </el-col>
  67. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  68. <el-form-item label="调拨时间" prop="time">
  69. <el-date-picker
  70. class="w100"
  71. size="small"
  72. v-model="where.time"
  73. type="daterange"
  74. range-separator="至"
  75. start-placeholder="开始日期"
  76. end-placeholder="结束日期"
  77. value-format="yyyy-MM-dd"
  78. ></el-date-picker>
  79. </el-form-item>
  80. </el-col>
  81. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  82. <el-form-item label="调出仓库" prop="sourceWarehouse">
  83. <el-select
  84. filterable
  85. placeholder="请选择"
  86. v-model="where.sourceWarehouse"
  87. clearable
  88. class="w100"
  89. >
  90. <el-option
  91. v-for="item in warehouseList"
  92. :key="item.id"
  93. :label="item.name"
  94. :value="item.id"
  95. ></el-option>
  96. </el-select>
  97. </el-form-item>
  98. </el-col>
  99. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  100. <el-form-item label="调入仓库" prop="targetWarehouse">
  101. <el-select
  102. filterable
  103. placeholder="请选择"
  104. v-model="where.targetWarehouse"
  105. clearable
  106. class="w100"
  107. >
  108. <el-option
  109. v-for="item in warehouseList"
  110. :key="item.id"
  111. :label="item.name"
  112. :value="item.id"
  113. ></el-option>
  114. </el-select>
  115. </el-form-item>
  116. </el-col>
  117. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  118. <el-form-item label="调拨单号:">
  119. <el-input
  120. clearable
  121. v-model="where.allotCode"
  122. placeholder="请输入物品名称"
  123. />
  124. </el-form-item>
  125. </el-col>
  126. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  127. <el-form-item label="调拨名称:">
  128. <el-input
  129. clearable
  130. v-model="where.name"
  131. placeholder="请输入物品名称"
  132. />
  133. </el-form-item>
  134. </el-col>
  135. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  136. <el-form-item label="物品名称:">
  137. <el-input
  138. clearable
  139. v-model="where.categoryName"
  140. placeholder="请输入物品名称"
  141. />
  142. </el-form-item>
  143. </el-col>
  144. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  145. <el-form-item label="物品编码:">
  146. <el-input
  147. clearable
  148. v-model="where.categoryCode"
  149. placeholder="请输入物品编码"
  150. />
  151. </el-form-item>
  152. </el-col>
  153. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  154. <el-form-item label="组织机构:" prop="deptIds">
  155. <auth-selection
  156. data-type="Array"
  157. v-model="where.deptIds"
  158. style="width: 100%"
  159. ></auth-selection>
  160. </el-form-item>
  161. </el-col> -->
  162. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  163. <el-form-item label="调拨类型" prop="type">
  164. <el-select
  165. filterable
  166. placeholder="请选择"
  167. v-model="where.type"
  168. clearable
  169. class="w100"
  170. >
  171. <el-option
  172. v-for="item in allocationType"
  173. :key="item.code"
  174. :label="item.label"
  175. :value="item.code"
  176. ></el-option>
  177. </el-select>
  178. </el-form-item>
  179. </el-col>
  180. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  181. <el-form-item label="调拨状态" prop="status">
  182. <el-select
  183. filterable
  184. placeholder="请选择"
  185. v-model="where.status"
  186. clearable
  187. class="w100"
  188. >
  189. <el-option
  190. v-for="item in stutusOptions"
  191. :key="item.value"
  192. :label="item.label"
  193. :value="item.value"
  194. ></el-option>
  195. </el-select>
  196. </el-form-item>
  197. </el-col>
  198. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  199. <el-form-item label="销售订单:" prop="saleOrderNo">
  200. <el-input
  201. clearable
  202. v-model="where.saleOrderNo"
  203. placeholder="请输入"
  204. ></el-input>
  205. </el-form-item>
  206. </el-col>
  207. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  208. <el-form-item label="客户名称:" prop="customerName">
  209. <el-input
  210. clearable
  211. v-model="where.customerName"
  212. placeholder="请输入"
  213. ></el-input>
  214. </el-form-item>
  215. </el-col>
  216. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  217. <el-form-item label="对账状态:" prop="isReconciliation">
  218. <el-select
  219. filterable
  220. placeholder="请选择"
  221. v-model="where.isReconciliation"
  222. clearable
  223. class="w100"
  224. >
  225. <el-option
  226. v-for="item in isReconciliationOp"
  227. :key="item.value"
  228. :label="item.label"
  229. :value="item.value"
  230. ></el-option>
  231. </el-select>
  232. </el-form-item>
  233. </el-col>
  234. <el-col v-bind="styleResponsive ? { lg: 18, md: 12 } : { span: 18 }">
  235. <div class="ele-form-actions">
  236. <el-button
  237. type="primary"
  238. icon="el-icon-search"
  239. class="ele-btn-icon"
  240. @click="search"
  241. size="small"
  242. >
  243. 查询
  244. </el-button>
  245. <el-button
  246. @click="reset"
  247. icon="el-icon-refresh-left"
  248. size="small"
  249. type="primary"
  250. >重置</el-button
  251. >
  252. </div>
  253. </el-col>
  254. </el-row>
  255. </el-form>
  256. </template>
  257. <script>
  258. import { login } from '@/api/login';
  259. import { getWarehouseList } from '@/api/classifyManage/itemInformation';
  260. import storageApi from '@/api/warehouseManagement/index.js';
  261. import { allocationType } from '@/utils/dict/warehouse';
  262. import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
  263. export default {
  264. data() {
  265. // 默认表单数据
  266. const defaultWhere = {
  267. name: '',
  268. allotCode: '',
  269. type: '',
  270. status: '',
  271. factoryId: '',
  272. categoryName: '',
  273. categoryCode: '',
  274. targetWarehouse: '',
  275. sourceWarehouse: '',
  276. isReconciliation: '',
  277. time: []
  278. };
  279. return {
  280. // 表单数据
  281. defaultWhere,
  282. where: { ...defaultWhere },
  283. treeLoading: false,
  284. allocationType,
  285. treeData: [],
  286. factoryList: [],
  287. warehouseList: [],
  288. allWarehouseList: [],
  289. stutusOptions: [
  290. {
  291. value: 0,
  292. label: '未提交'
  293. },
  294. {
  295. value: 1,
  296. label: '审核中'
  297. },
  298. {
  299. value: 2,
  300. label: '已完成'
  301. }
  302. ],
  303. isReconciliationOp: [
  304. { value: 0, label: '未对账' },
  305. { value: 1, label: '已对账' }
  306. ]
  307. };
  308. },
  309. computed: {
  310. // 是否开启响应式布局
  311. styleResponsive() {
  312. return this.$store.state.theme.styleResponsive;
  313. }
  314. },
  315. created() {
  316. this.getArguInfo();
  317. this.getFactoryList();
  318. },
  319. methods: {
  320. async getTreeData(val) {
  321. this.where.targetWarehouse = '';
  322. this.where.sourceWarehouse = '';
  323. try {
  324. this.treeLoading = true;
  325. let res = await storageApi.getWarehouseTrees({
  326. factoriesId: val
  327. });
  328. this.treeLoading = false;
  329. if (res?.code === '0') {
  330. this.warehouseList = res.data;
  331. }
  332. } catch (error) {
  333. console.log(error);
  334. }
  335. this.treeLoading = false;
  336. },
  337. async getArguInfo() {
  338. const { data } = await getWarehouseList();
  339. this.allWarehouseList = data;
  340. },
  341. //获取工厂列表
  342. async getFactoryList() {
  343. const res = await warehouseDefinition.getFactoryarea({
  344. pageNum: 1,
  345. size: 9999,
  346. type: 1
  347. });
  348. this.factoryList = res.list;
  349. },
  350. getWarehouseListHandle(val) {
  351. this.where.targetWarehouse = '';
  352. this.where.sourceWarehouse = '';
  353. this.warehouseList = this.allWarehouseList.filter(
  354. (item) => item.factoryId === val
  355. );
  356. },
  357. /* 搜索 */
  358. search() {
  359. console.log(this.where);
  360. this.$emit('search', this.where);
  361. },
  362. /* 重置 */
  363. reset() {
  364. this.where = { ...this.defaultWhere };
  365. this.search();
  366. }
  367. }
  368. };
  369. </script>
  370. <style lang="scss" scoped>
  371. .ele-form-actions {
  372. display: flex;
  373. align-items: center;
  374. justify-content: flex-end;
  375. }
  376. .el-form-item {
  377. margin-bottom: 5px !important;
  378. }
  379. </style>