index.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  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 class="section-title" label="零存库管理" />
  11. <el-form-item class="section-title" label="工段:">
  12. <el-select-v2 v-model="queryParams.deptId" :options="deptList" placeholder="请选择工段" style="width: 110px"
  13. />
  14. </el-form-item>
  15. <el-form-item label="批次号:">
  16. <el-input
  17. placeholder="请输入批次号"
  18. v-model.trim="queryParams.lotCode"
  19. style="width: 120px"
  20. clearable
  21. @keyup.enter="handleQuery"
  22. @keydown.enter.prevent
  23. />
  24. </el-form-item>
  25. <el-form-item label="产品描述:">
  26. <el-input
  27. placeholder="请输入产品描述"
  28. v-model.trim="queryParams.productDescription"
  29. style="width: 120px"
  30. clearable
  31. @keyup.enter="handleQuery"
  32. @keydown.enter.prevent
  33. />
  34. </el-form-item>
  35. <el-form-item label="图号:">
  36. <el-input
  37. placeholder="请输入图号"
  38. v-model.trim="queryParams.drawingNumber"
  39. style="width: 120px"
  40. clearable
  41. @keyup.enter="handleQuery"
  42. @keydown.enter.prevent
  43. />
  44. </el-form-item>
  45. <el-form-item label="存录员:">
  46. <el-input
  47. placeholder="请输入存录员"
  48. v-model.trim="queryParams.storagerName"
  49. style="width: 120px"
  50. clearable
  51. @keyup.enter="handleQuery"
  52. @keydown.enter.prevent
  53. />
  54. </el-form-item>
  55. <el-form-item label="零存时间:">
  56. <el-date-picker v-model="queryParams.startStorageTime" type="date" value-format="YYYY-MM-DD"
  57. :editable="false" clearable placeholder="请选择" style="width: 136px" />
  58. <span>~</span>
  59. <el-date-picker v-model="queryParams.endStorageTime" type="date" value-format="YYYY-MM-DD"
  60. :editable="false" clearable placeholder="请选择" style="width: 136px"/>
  61. </el-form-item>
  62. <el-form-item label="取出批次:">
  63. <el-input
  64. placeholder="请输入取出批次"
  65. v-model.trim="queryParams.retrievalLotCode"
  66. style="width: 120px"
  67. clearable
  68. @keyup.enter="handleQuery"
  69. @keydown.enter.prevent
  70. />
  71. </el-form-item>
  72. <el-form-item label="零取时间:">
  73. <el-date-picker v-model="queryParams.startRetrievalTime" type="date" value-format="YYYY-MM-DD"
  74. :editable="false" clearable placeholder="请选择" style="width: 136px" />
  75. <span>~</span>
  76. <el-date-picker v-model="queryParams.endRetrievalTime" type="date" value-format="YYYY-MM-DD"
  77. :editable="false" clearable placeholder="请选择" style="width: 136px"/>
  78. </el-form-item>
  79. <el-form-item label="状态:">
  80. <el-select
  81. v-model="queryParams.status"
  82. clearable
  83. placeholder="请选择状态"
  84. style="width: 130px"
  85. >
  86. <el-option
  87. v-for="dict in is_retrieval"
  88. :key="dict.value"
  89. :label="dict.label"
  90. :value="dict.value"
  91. ></el-option>
  92. </el-select>
  93. </el-form-item>
  94. <el-form-item>
  95. <el-button type="info" icon="Search" @click="handleQuery"
  96. >搜索</el-button
  97. >
  98. </el-form-item>
  99. </el-form>
  100. <!-- 列表区 -->
  101. <div class="el-table-container">
  102. <div class="el-table-inner-container">
  103. <el-table
  104. ref="dataTable"
  105. v-loading="loading"
  106. border
  107. :data="dataList"
  108. highlight-current-row
  109. height="100%"
  110. >
  111. <el-table-column
  112. type="index"
  113. label="行号"
  114. width="50"
  115. align="center"
  116. />
  117. <el-table-column
  118. label="批次号"
  119. width="120"
  120. align="center"
  121. prop="lotCode"
  122. />
  123. <el-table-column
  124. label="产品描述"
  125. align="center"
  126. prop="productDescription"
  127. />
  128. <el-table-column
  129. label="图号"
  130. width="100"
  131. align="center"
  132. prop="drawingNumber"
  133. />
  134. <el-table-column
  135. label="版本号"
  136. align="center"
  137. width="70"
  138. prop="technologyVersion"
  139. />
  140. <el-table-column
  141. label="工段"
  142. width="90"
  143. align="center"
  144. prop="deptName"
  145. />
  146. <el-table-column label="存录员" align="center" width="80" prop="storagerName" />
  147. <el-table-column label="零存数量" align="center" width="150" prop="storageNum" >
  148. <template #default="scope">
  149. <el-input-number v-if="scope.row.editStatus" controls-position="right" v-model="scope.row.storageNum" style="width: 150px"
  150. :min="0" />
  151. <span v-else>{{ scope.row.storageNum }}</span>
  152. </template>
  153. </el-table-column>
  154. <el-table-column label="零存时间" align="center" width="150" prop="createTime" />
  155. <el-table-column
  156. label="取出批次"
  157. align="center"
  158. width="120"
  159. prop="retrievalLotCode"
  160. />
  161. <el-table-column
  162. label="取出时间"
  163. align="center"
  164. width="150"
  165. prop="retrievalTime"
  166. />
  167. <el-table-column label="状态" align="center" width="70" prop="status">
  168. <template #default="scope">
  169. <dict-tag :options="is_retrieval" :value="scope.row.status" />
  170. </template>
  171. </el-table-column>
  172. <el-table-column label="操作" align="center" width="160">
  173. <template #default="scope">
  174. <el-button link v-if="!scope.row.editStatus" type="warning" size="small" icon="Edit"
  175. @click="scope.row.editStatus = true" v-hasPermi="['business:storageRetrieval:update']">编辑</el-button>
  176. <el-button link v-else type="primary" size="small" icon="Finished" @click="handleSubmit(scope.row)">保存</el-button>
  177. <el-button link v-if="scope.row.editStatus" type="info" size="small" icon="Close"
  178. @click=" handleCancelEdit">取消编辑</el-button>
  179. </template>
  180. </el-table-column>
  181. </el-table>
  182. </div>
  183. </div>
  184. <!-- 分页 -->
  185. <pagination
  186. v-show="total > 0"
  187. :total="total"
  188. v-model:page="queryParams.pageNum"
  189. v-model:limit="queryParams.pageSize"
  190. @pagination="getList"
  191. />
  192. </div>
  193. </template>
  194. <script setup>
  195. import { listStorageRetrieval, updateStorageRetrieval } from "@/api/business/storageRetrieval";
  196. import { getDeptList } from "@/api/business/planDetailSubDetail.js";
  197. const { proxy } = getCurrentInstance();
  198. /** 字典数组区 */
  199. const { is_retrieval } = proxy.useDict("is_retrieval");
  200. /** 查询对象 */
  201. const queryParams = ref({
  202. status:'0',
  203. pageNum: 1,
  204. pageSize: 10,
  205. });
  206. /** 变量 */
  207. const dataList = ref([]);
  208. const loading = ref(false);
  209. const deptList = ref([]);
  210. const total = ref(0);
  211. const isDispatch = ref(false);
  212. /*********************** 方法区 ***********************/
  213. //当前登录人员的咨询部门权限
  214. function getList() {
  215. getDeptList().then((response) => {
  216. deptList.value = response.data.rows;
  217. isDispatch.value = response.data.others.isDispatch;
  218. loading.value = false;
  219. if (isDispatch.value) {
  220. deptList.value.unshift({ label: "全部", value: "0" });
  221. }
  222. let index = deptList.value.findIndex(item => {
  223. return item.label == '外协'
  224. })
  225. if (index > -1) {
  226. deptList.value.splice(index, 1)
  227. }
  228. queryParams.value.deptId = deptList.value[0].value;
  229. getStorageRetrievalList();
  230. });
  231. }
  232. /** 查询列表 */
  233. function getStorageRetrievalList() {
  234. loading.value = true;
  235. listStorageRetrieval(queryParams.value).then((res) => {
  236. if(res.rows.length > 0) {
  237. res.rows.forEach(element => {
  238. element.editStatus = false
  239. });
  240. }
  241. dataList.value = res.rows;
  242. console.log(dataList.value)
  243. total.value = res.total;
  244. loading.value = false;
  245. });
  246. }
  247. /** 搜索按钮操作 */
  248. function handleQuery() {
  249. queryParams.value.pageNum = 1;
  250. getStorageRetrievalList();
  251. }
  252. //保存
  253. function handleSubmit(data) {
  254. updateStorageRetrieval(data).then(res =>{
  255. proxy.$modal.msgSuccess("保存成功");
  256. getStorageRetrievalList()
  257. })
  258. }
  259. //取消编辑
  260. function handleCancelEdit() {
  261. getStorageRetrievalList()
  262. }
  263. onMounted(() => {
  264. getList();
  265. });
  266. </script>