index.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. :inline="true"
  7. v-show="showSearch"
  8. label-width="68px"
  9. >
  10. <el-form-item prop="name">
  11. <el-input
  12. v-model="queryParams.name"
  13. placeholder="请输入物品名称"
  14. clearable
  15. size="small"
  16. @input="handleQuery"
  17. />
  18. </el-form-item>
  19. <!-- <el-form-item label="物品类型" prop="wuPinType">
  20. <el-select
  21. v-model="queryParams.wuPinType"
  22. placeholder="请选择物品类型"
  23. clearable
  24. size="small"
  25. >
  26. <el-option
  27. v-for="dict in dict.type.category"
  28. :key="dict.value"
  29. :label="dict.label"
  30. :value="dict.value"
  31. />
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="物品名称" prop="name">
  35. <el-select
  36. v-model="queryParams.name"
  37. placeholder="请选择物品名称"
  38. clearable
  39. size="small"
  40. >
  41. <el-option label="请选择字典生成" value="" />
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item label="物资规格" prop="materialSpecification">
  45. <el-input
  46. v-model="queryParams.materialSpecification"
  47. placeholder="请输入物资规格"
  48. clearable
  49. size="small"
  50. @keyup.enter.native="handleQuery"
  51. />
  52. </el-form-item>
  53. <el-form-item label="物资型号" prop="materialXh">
  54. <el-input
  55. v-model="queryParams.materialXh"
  56. placeholder="请输入物资型号"
  57. clearable
  58. size="small"
  59. @keyup.enter.native="handleQuery"
  60. />
  61. </el-form-item>
  62. <el-form-item label="营具类型" prop="yingJuType">
  63. <el-select
  64. v-model="queryParams.yingJuType"
  65. placeholder="请选择营具类型"
  66. clearable
  67. size="small"
  68. >
  69. <el-option
  70. v-for="dict in dict.type.camp_equipment"
  71. :key="dict.value"
  72. :label="dict.label"
  73. :value="dict.value"
  74. />
  75. </el-select>
  76. </el-form-item>-->
  77. <!-- <el-form-item label="" prop="responsibilityUnit">
  78. <el-input
  79. v-model="queryParams.responsibilityUnit"
  80. placeholder="请输入责任单位"
  81. clearable
  82. size="small"
  83. @keyup.enter.native="handleQuery"
  84. />
  85. </el-form-item>
  86. <el-form-item label="" prop="personLiable">
  87. <el-input
  88. v-model="queryParams.personLiable"
  89. placeholder="请输入责任人"
  90. clearable
  91. size="small"
  92. @keyup.enter.native="handleQuery"
  93. />
  94. </el-form-item>-->
  95. <!-- <el-form-item label="出库数量" prop="putOut">
  96. <el-input
  97. v-model="queryParams.putOut"
  98. placeholder="请输入出库数量"
  99. clearable
  100. size="small"
  101. @keyup.enter.native="handleQuery"
  102. />
  103. </el-form-item>
  104. <el-form-item label="创建人" prop="createName">
  105. <el-input
  106. v-model="queryParams.createName"
  107. placeholder="请输入创建人"
  108. clearable
  109. size="small"
  110. @keyup.enter.native="handleQuery"
  111. />
  112. </el-form-item>
  113. <el-form-item label="发放时间" prop="putOutTime">
  114. <el-date-picker
  115. clearable
  116. size="small"
  117. v-model="queryParams.putOutTime"
  118. type="date"
  119. value-format="yyyy-MM-dd"
  120. placeholder="选择发放时间"
  121. >
  122. </el-date-picker>
  123. </el-form-item>
  124. <el-form-item label="存放位置" prop="storageLocation">
  125. <el-input
  126. v-model="queryParams.storageLocation"
  127. placeholder="请输入存放位置"
  128. clearable
  129. size="small"
  130. @keyup.enter.native="handleQuery"
  131. />
  132. </el-form-item>
  133. <el-form-item label="购买时间" prop="buyingTime">
  134. <el-date-picker
  135. clearable
  136. size="small"
  137. v-model="queryParams.buyingTime"
  138. type="date"
  139. value-format="yyyy-MM-dd"
  140. placeholder="选择购买时间"
  141. >
  142. </el-date-picker>
  143. </el-form-item>
  144. <el-form-item label="价值" prop="price">
  145. <el-input
  146. v-model="queryParams.price"
  147. placeholder="请输入价值"
  148. clearable
  149. size="small"
  150. @keyup.enter.native="handleQuery"
  151. />
  152. </el-form-item>
  153. <el-form-item label="库房" prop="warehouse">
  154. <el-select
  155. v-model="queryParams.warehouse"
  156. placeholder="请选择库房"
  157. clearable
  158. size="small"
  159. >
  160. <el-option
  161. v-for="dict in dict.type.storage_room"
  162. :key="dict.value"
  163. :label="dict.label"
  164. :value="dict.value"
  165. />
  166. </el-select>
  167. </el-form-item>
  168. <el-form-item label="档案id" prop="archivesId">
  169. <el-input
  170. v-model="queryParams.archivesId"
  171. placeholder="请输入档案id"
  172. clearable
  173. size="small"
  174. @keyup.enter.native="handleQuery"
  175. />
  176. </el-form-item>
  177. <el-form-item label="现有数量" prop="total">
  178. <el-input
  179. v-model="queryParams.total"
  180. placeholder="请输入现有数量"
  181. clearable
  182. size="small"
  183. @keyup.enter.native="handleQuery"
  184. />
  185. </el-form-item>
  186. <el-form-item label="发放单位" prop="outUnit">
  187. <el-select
  188. v-model="queryParams.outUnit"
  189. placeholder="请选择发放单位"
  190. clearable
  191. size="small"
  192. >
  193. <el-option label="请选择字典生成" value="" />
  194. </el-select>
  195. </el-form-item>
  196. <el-form-item label="发放对象" prop="outPeople">
  197. <el-select
  198. v-model="queryParams.outPeople"
  199. placeholder="请选择发放对象"
  200. clearable
  201. size="small"
  202. >
  203. <el-option
  204. v-for="dict in dict.type.distribution_object"
  205. :key="dict.value"
  206. :label="dict.label"
  207. :value="dict.value"
  208. />
  209. </el-select>
  210. </el-form-item>
  211. <el-form-item label="接收人" prop="recipient">
  212. <el-select
  213. v-model="queryParams.recipient"
  214. placeholder="请选择接收人"
  215. clearable
  216. size="small"
  217. >
  218. <el-option label="请选择字典生成" value="" />
  219. </el-select>
  220. </el-form-item>
  221. <el-form-item label="入库表id" prop="registrationId">
  222. <el-input
  223. v-model="queryParams.registrationId"
  224. placeholder="请输入入库表id"
  225. clearable
  226. size="small"
  227. @keyup.enter.native="handleQuery"
  228. />
  229. </el-form-item>-->
  230. <el-form-item>
  231. <el-button size="btr" @click="resetQuery">重置</el-button>
  232. </el-form-item>
  233. </el-form>
  234. <el-row :gutter="10" class="mb8">
  235. <el-col :span="1.5">
  236. <el-button
  237. type="primary"
  238. plain
  239. icon="el-icon-plus"
  240. size="mini"
  241. @click="handleAdd"
  242. v-hasPermi="['materialManagement:distribution:add']"
  243. >新增</el-button>
  244. </el-col>
  245. <el-col :span="1.5">
  246. <el-button
  247. type="success"
  248. plain
  249. icon="el-icon-edit"
  250. size="mini"
  251. :disabled="single"
  252. @click="handleUpdate"
  253. v-hasPermi="['materialManagement:distribution:edit']"
  254. >修改</el-button>
  255. </el-col>
  256. <el-col :span="1.5">
  257. <el-button
  258. type="danger"
  259. plain
  260. icon="el-icon-delete"
  261. size="mini"
  262. :disabled="multiple"
  263. @click="handleDelete"
  264. v-hasPermi="['materialManagement:distribution:remove']"
  265. >删除</el-button>
  266. </el-col>
  267. <!-- <el-col :span="1.5">
  268. <el-button
  269. type="warning"
  270. plain
  271. icon="el-icon-download"
  272. size="mini"
  273. :loading="exportLoading"
  274. @click="handleExport"
  275. v-hasPermi="['materialManagement:distribution:export']"
  276. >导出</el-button
  277. >
  278. </el-col>-->
  279. <!-- <right-toolbar
  280. :showSearch.sync="showSearch"
  281. @queryTable="getList"
  282. ></right-toolbar>-->
  283. </el-row>
  284. <el-table
  285. v-loading="loading"
  286. :data="distributionList"
  287. @selection-change="handleSelectionChange"
  288. :header-cell-style="{ background: '#003C69', color: 'white' }"
  289. >
  290. <el-table-column type="selection" width="55" align="center" />
  291. <el-table-column label="序号" align="center">
  292. <template scope="scope">
  293. <span>
  294. {{
  295. (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
  296. }}
  297. </span>
  298. </template>
  299. </el-table-column>
  300. <!-- <el-table-column label="物品类别" align="center" prop="wuPinType">
  301. <template slot-scope="scope">
  302. <dict-tag
  303. :options="dict.type.category"
  304. :value="scope.row.wuPinType"
  305. />
  306. </template>
  307. </el-table-column>-->
  308. <el-table-column label="物品名称" align="center" prop="name" />
  309. <el-table-column label="条形码编号" align="center" prop="barcode" />
  310. <el-table-column label="物品规格" align="center" prop="materialSpecification" />
  311. <el-table-column label="物品型号" align="center" prop="materialXh" />
  312. <el-table-column label="营具类型" align="center" prop="yingJuType">
  313. <!-- <template slot-scope="scope">
  314. <dict-tag :options="dict.type.camp_equipment" :value="scope.row.yingJuType" />
  315. </template>-->
  316. </el-table-column>
  317. <!-- <el-table-column
  318. label="责任单位"
  319. align="center"
  320. prop="responsibilityUnit"
  321. />-->
  322. <el-table-column label="出库数量" align="center" prop="putOut" />
  323. <el-table-column label="价值" align="center" prop="price" />
  324. <el-table-column label="发放时间" align="center" prop="putOutTime" width="120">
  325. <template slot-scope="scope">
  326. <span>{{ parseTime(scope.row.putOutTime, "{y}-{m}-{d}") }}</span>
  327. </template>
  328. </el-table-column>
  329. <el-table-column label="发放单位" align="center" prop="responsibilityUnit" width="150px" />
  330. <el-table-column label="发放对象" align="center" prop="outPeople"></el-table-column>
  331. <el-table-column label="接收单位" align="center" prop="outUnit" width="150px" />
  332. <el-table-column label="接收人" align="center" prop="recipient" />
  333. <el-table-column label="存放位置" align="center" prop="storageLocation" />
  334. <!-- <el-table-column label="备注" align="center" prop="remark" /> -->
  335. <el-table-column label="库房" align="center" prop="warehouse">
  336. <template slot-scope="scope">
  337. <dict-tag :options="dict.type.storage_room" :value="scope.row.warehouse" />
  338. </template>
  339. </el-table-column>
  340. <el-table-column label="库存数量" align="center" prop="total" />
  341. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
  342. <template slot-scope="scope">
  343. <el-button
  344. size="btu"
  345. type="text"
  346. @click="handleUpdate(scope.row)"
  347. v-hasPermi="['materialManagement:distribution:edit']"
  348. >修改</el-button>
  349. <el-button
  350. size="btd"
  351. type="text"
  352. @click="handleDelete(scope.row)"
  353. v-hasPermi="['materialManagement:distribution:remove']"
  354. >删除</el-button>
  355. </template>
  356. </el-table-column>
  357. </el-table>
  358. <pagination
  359. v-show="total > 0"
  360. :total="total"
  361. :page.sync="queryParams.pageNum"
  362. :limit.sync="queryParams.pageSize"
  363. @pagination="getList"
  364. />
  365. <!-- 添加或修改物资发放对话框 -->
  366. <el-dialog
  367. :title="title"
  368. :visible.sync="open"
  369. width="500px"
  370. append-to-body
  371. :close-on-click-modal="false"
  372. >
  373. <el-form ref="form" :model="form" :rules="rules" label-width="80px" :inline="true">
  374. <el-form-item label="条形码编号" prop>
  375. <el-input v-model="form.barcode" @blur="barcodefun" placeholder="请输入条形码编号" />
  376. </el-form-item>
  377. <div class="jiben">基本信息</div>
  378. <el-form-item label="物品类别" prop="wuPinType">
  379. <el-select v-model="form.wuPinType" placeholder="请选择物品类别">
  380. <el-option
  381. v-for="dict in dict.type.category"
  382. :key="dict.value"
  383. :label="dict.label"
  384. :value="dict.value"
  385. ></el-option>
  386. </el-select>
  387. </el-form-item>
  388. <el-form-item label="物品名称" prop="name">
  389. <el-select v-model="form.name" placeholder="请选择物品名称">
  390. <el-option
  391. v-for="(item, i) in itemlist"
  392. :key="i"
  393. :value="item.name"
  394. :label="item.names"
  395. class="input_xiala"
  396. @click.native="wuPing(item)"
  397. ></el-option>
  398. </el-select>
  399. </el-form-item>
  400. <el-form-item label="物品规格" prop="materialSpecification">
  401. <el-input v-model="form.materialSpecification" placeholder="请输入物品规格" readonly />
  402. </el-form-item>
  403. <el-form-item label="物品型号" prop="materialXh">
  404. <el-input v-model="form.materialXh" placeholder="请输入物资型号" readonly />
  405. </el-form-item>
  406. <el-form-item label="库房" prop="warehouse">
  407. <el-select v-model="form.warehouse" placeholder="请选择库房">
  408. <el-option
  409. v-for="dict in dict.type.storage_room"
  410. :key="dict.value"
  411. :label="dict.label"
  412. :value="dict.value"
  413. ></el-option>
  414. </el-select>
  415. </el-form-item>
  416. <el-form-item label="存放位置" prop="storageLocation">
  417. <el-input v-model="form.storageLocation" placeholder="请输入存放位置" />
  418. </el-form-item>
  419. <el-form-item label="现有数量" prop="total">
  420. <el-input v-model="form.total" placeholder="请输入现有数量" readonly />
  421. </el-form-item>
  422. <el-form-item label="出库数量" prop="putOut">
  423. <el-input v-model="form.putOut" placeholder="请输入出库数量" @blur="shuLiang" />
  424. </el-form-item>
  425. <el-form-item label="发放时间" prop="putOutTime">
  426. <el-date-picker
  427. clearable
  428. size="small"
  429. v-model="form.putOutTime"
  430. type="date"
  431. value-format="yyyy-MM-dd"
  432. placeholder="选择发放时间"
  433. ></el-date-picker>
  434. </el-form-item>
  435. <el-form-item label="营具类型" prop="yingJuType">
  436. <el-select v-model="form.yingJuType" placeholder="请选择营具类型">
  437. <el-option
  438. v-for="dict in dict.type.camp_equipment"
  439. :key="dict.value"
  440. :label="dict.label"
  441. :value="dict.value"
  442. ></el-option>
  443. </el-select>
  444. </el-form-item>
  445. <el-form-item label="价值" prop="price">
  446. <el-input v-model="form.price" placeholder="请输入价值" readonly />
  447. </el-form-item>
  448. <el-form-item label="发放单位" prop="responsibilityUnit">
  449. <el-input v-model="form.responsibilityUnit" readonly />
  450. </el-form-item>
  451. <el-form-item label="发放对象" prop="outPeople">
  452. <el-select v-model="form.outPeople" placeholder="请选择发放对象">
  453. <el-option
  454. v-for="dict in dict.type.distribution_object"
  455. :key="dict.value"
  456. :label="dict.label"
  457. :value="dict.label"
  458. @click.native="dianJi(dict.value)"
  459. ></el-option>
  460. </el-select>
  461. </el-form-item>
  462. <el-form-item label="接收人" prop="recipient" v-if="ren">
  463. <el-select v-model="form.recipient" placeholder="请选择接收人" @change="rens">
  464. <el-option
  465. v-for="item in renYuan"
  466. :key="item.id"
  467. :label="item.name"
  468. :value="item"
  469. class="input_xiala"
  470. ></el-option>
  471. </el-select>
  472. </el-form-item>
  473. <el-form-item label="接收单位" prop="outUnitId" v-if="danWei">
  474. <treeselect
  475. v-model="form.outUnitId"
  476. placeholder="请选择接收单位"
  477. :options="deptOptions"
  478. @select="danWeis"
  479. ></treeselect>
  480. </el-form-item>
  481. <div class="jiben">备注</div>
  482. <el-form-item label prop="remark">
  483. <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  484. </el-form-item>
  485. <!-- <el-form-item label="责任单位" prop="responsibilityUnit">
  486. <el-input
  487. v-model="form.responsibilityUnit"
  488. placeholder="请输入责任单位"
  489. />
  490. </el-form-item>
  491. <el-form-item label="责任人" prop="personLiable">
  492. <el-input v-model="form.personLiable" placeholder="请输入责任人" />
  493. </el-form-item>
  494. <el-form-item label="创建人" prop="createName">
  495. <el-input v-model="form.createName" placeholder="请输入创建人" />
  496. </el-form-item>
  497. <el-form-item label="购买时间" prop="buyingTime">
  498. <el-date-picker
  499. clearable
  500. size="small"
  501. v-model="form.buyingTime"
  502. type="date"
  503. value-format="yyyy-MM-dd"
  504. placeholder="选择购买时间"
  505. >
  506. </el-date-picker>
  507. </el-form-item>
  508. <el-form-item label="档案id" prop="archivesId">
  509. <el-input v-model="form.archivesId" placeholder="请输入档案id" />
  510. </el-form-item>
  511. <el-form-item label="入库表id" prop="registrationId">
  512. <el-input
  513. v-model="form.registrationId"
  514. placeholder="请输入入库表id"
  515. />
  516. </el-form-item>-->
  517. </el-form>
  518. <div slot="footer" class="dialog-footer">
  519. <el-button type="primary" @click="submitForm">确 定</el-button>
  520. <el-button @click="cancel" size="btn">取 消</el-button>
  521. </div>
  522. </el-dialog>
  523. </div>
  524. </template>
  525. <script>
  526. import {
  527. listDistribution,
  528. getDistribution,
  529. delDistribution,
  530. addDistribution,
  531. updateDistribution,
  532. exportDistribution,
  533. exportMaterialRegWuPingList,
  534. treeselect
  535. } from "@/api/materialManagement/distribution";
  536. // 导入树形结构
  537. import Treeselect from "@riophae/vue-treeselect";
  538. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  539. import { getZhuChiRen } from "@/api/materialManagement/archives";
  540. import { getBarCode } from "@/api/materialManagement/materialRegistration";
  541. export default {
  542. components: {
  543. Treeselect
  544. },
  545. name: "Distribution",
  546. dicts: ["category", "camp_equipment", "storage_room", "distribution_object"],
  547. data() {
  548. return {
  549. // 遮罩层
  550. loading: true,
  551. // 导出遮罩层
  552. exportLoading: false,
  553. // 选中数组
  554. ids: [],
  555. // 非单个禁用
  556. single: true,
  557. // 非多个禁用
  558. multiple: true,
  559. // 显示搜索条件
  560. showSearch: true,
  561. // 总条数
  562. total: 0,
  563. // 物资发放表格数据
  564. distributionList: [],
  565. // 弹出层标题
  566. title: "",
  567. // 是否显示弹出层
  568. open: false,
  569. // 查询参数
  570. queryParams: {
  571. pageNum: 1,
  572. pageSize: 10,
  573. wuPinType: null,
  574. name: null,
  575. materialSpecification: null,
  576. materialXh: null,
  577. yingJuType: null,
  578. responsibilityUnit: null,
  579. personLiable: null,
  580. putOut: null,
  581. createName: null,
  582. putOutTime: null,
  583. storageLocation: null,
  584. buyingTime: null,
  585. price: null,
  586. warehouse: null,
  587. archivesId: null,
  588. total: null,
  589. outUnit: null,
  590. outPeople: null,
  591. recipient: null,
  592. registrationId: null
  593. },
  594. // 表单参数
  595. form: {},
  596. // 表单校验
  597. rules: {
  598. name: [{ required: true, message: "请选择物品名称", trigger: "blur" }],
  599. yingJuType: [
  600. { required: true, message: "请选择营具类型", trigger: "blur" }
  601. ],
  602. warehouse: [{ required: true, message: "请选择库房", trigger: "blur" }],
  603. putOut: [{ required: true, message: "请输入出库数量", trigger: "blur" }]
  604. },
  605. // 获取物品名称列表
  606. itemlist: [],
  607. // 树形单位
  608. deptOptions: [],
  609. // 显示与隐藏接收人
  610. ren: true,
  611. // 显示与隐藏接收单位
  612. danWei: false,
  613. // 人员列表
  614. renYuan: [],
  615. // 总数量
  616. yinJunShu: ""
  617. };
  618. },
  619. created() {
  620. this.getList();
  621. },
  622. methods: {
  623. //条形码获取
  624. barcodefun() {
  625. getBarCode({ barcode: this.form.barcode }).then(res => {
  626. if (res.code == 200) {
  627. this.form = res.data;
  628. this.form.archivesId = res.data.id;
  629. this.form.total = res.data.materialInventory;
  630. this.form.price = res.data.price;
  631. this.form.id = null;
  632. }
  633. });
  634. },
  635. // 数量的判断
  636. shuLiang() {
  637. if (this.form.putOut > this.form.total) {
  638. return this.$modal.msgWarning(`库存数量为${this.form.total}`);
  639. }
  640. },
  641. // 点击接收单位触发
  642. danWeis(data) {
  643. this.form.outUnit = data.label;
  644. },
  645. // 点击选择接收人触发
  646. rens(data) {
  647. this.form.recipientId = data.id;
  648. this.$set(this.form, "recipient", data.name);
  649. },
  650. // 点击发放对象
  651. dianJi(value) {
  652. if (value == "0") {
  653. this.danWei = false;
  654. this.ren = true;
  655. this.form.outUnitId = null;
  656. this.form.outUnit = "";
  657. this.form.recipient = "";
  658. this.form.recipientId = "";
  659. } else if (value == "2") {
  660. this.ren = false;
  661. this.danWei = true;
  662. this.form.recipient = "";
  663. this.form.recipientId = "";
  664. this.form.outUnitId = null;
  665. this.form.outUnit = "";
  666. }
  667. },
  668. // 获取人员
  669. getRenYuan(id) {
  670. getZhuChiRen(id).then(res => {
  671. this.renYuan = res.data;
  672. });
  673. },
  674. /** 查询部门下拉树结构 */
  675. getTreeselect() {
  676. treeselect().then(response => {
  677. this.deptOptions = response.data;
  678. });
  679. },
  680. // 点击物品名称触发
  681. wuPing(data) {
  682. this.form.responsibilityUnit = data.responsibilityUnit;
  683. this.form.price = data.price;
  684. this.form.archivesId = data.archivesId;
  685. this.form.responsibilityUnitId = data.unitId;
  686. this.form.registrationId = data.id;
  687. this.form.total = data.total;
  688. this.yinJunShu = data.total;
  689. this.form.materialSpecification = data.materialSpecification;
  690. this.form.materialXh = data.materialXh;
  691. this.getRenYuan(data.unitId);
  692. },
  693. // 获取物品名称
  694. getMingCheng() {
  695. exportMaterialRegWuPingList().then(response => {
  696. this.itemlist = response.rows;
  697. });
  698. },
  699. /** 查询物资发放列表 */
  700. getList() {
  701. this.loading = true;
  702. listDistribution(this.queryParams).then(response => {
  703. this.distributionList = response.rows;
  704. this.total = response.total;
  705. this.loading = false;
  706. });
  707. },
  708. // 取消按钮
  709. cancel() {
  710. this.open = false;
  711. this.reset();
  712. },
  713. // 表单重置
  714. reset() {
  715. this.form = {
  716. id: null,
  717. wuPinType: null,
  718. name: null,
  719. materialSpecification: null,
  720. materialXh: null,
  721. yingJuType: null,
  722. responsibilityUnit: null,
  723. personLiable: null,
  724. putOut: null,
  725. createName: null,
  726. createTime: null,
  727. putOutTime: null,
  728. storageLocation: null,
  729. buyingTime: null,
  730. price: null,
  731. remark: null,
  732. warehouse: null,
  733. archivesId: null,
  734. total: null,
  735. outUnit: null,
  736. outPeople: null,
  737. recipient: null,
  738. registrationId: null
  739. };
  740. this.resetForm("form");
  741. },
  742. /** 搜索按钮操作 */
  743. handleQuery() {
  744. this.queryParams.pageNum = 1;
  745. this.getList();
  746. },
  747. /** 重置按钮操作 */
  748. resetQuery() {
  749. this.resetForm("queryForm");
  750. this.handleQuery();
  751. },
  752. // 多选框选中数据
  753. handleSelectionChange(selection) {
  754. this.ids = selection.map(item => item.id);
  755. this.single = selection.length !== 1;
  756. this.multiple = !selection.length;
  757. },
  758. /** 新增按钮操作 */
  759. handleAdd() {
  760. this.getTreeselect();
  761. this.getMingCheng();
  762. this.reset();
  763. this.open = true;
  764. this.title = "添加物资发放";
  765. },
  766. /** 修改按钮操作 */
  767. handleUpdate(row) {
  768. this.getTreeselect();
  769. this.reset();
  770. const id = row.id || this.ids;
  771. if (row.outPeople == "单位") {
  772. this.danWei = true;
  773. this.ren = false;
  774. } else {
  775. this.ren = true;
  776. this.danWei = false;
  777. }
  778. getDistribution(id).then(response => {
  779. this.form = response.data;
  780. this.getRenYuan(this.form.responsibilityUnitId);
  781. this.open = true;
  782. this.title = "修改物资发放";
  783. });
  784. },
  785. /** 提交按钮 */
  786. submitForm() {
  787. this.$refs["form"].validate(valid => {
  788. if (valid) {
  789. console.log(this.form.id);
  790. if (this.form.id != null) {
  791. updateDistribution(this.form).then(response => {
  792. this.$modal.msgSuccess("修改成功");
  793. this.open = false;
  794. this.getList();
  795. });
  796. } else {
  797. if (this.form.putOut > this.form.total) {
  798. return;
  799. }
  800. addDistribution(this.form).then(response => {
  801. this.$modal.msgSuccess("新增成功");
  802. this.open = false;
  803. this.getList();
  804. });
  805. }
  806. }
  807. });
  808. },
  809. /** 删除按钮操作 */
  810. handleDelete(row) {
  811. const ids = row.id || this.ids;
  812. this.$modal
  813. .confirm('是否确认删除物资发放编号为"' + ids + '"的数据项?')
  814. .then(function() {
  815. return delDistribution(ids);
  816. })
  817. .then(() => {
  818. this.getList();
  819. this.$modal.msgSuccess("删除成功");
  820. })
  821. .catch(() => {});
  822. },
  823. /** 导出按钮操作 */
  824. handleExport() {
  825. const queryParams = this.queryParams;
  826. this.$modal
  827. .confirm("是否确认导出所有物资发放数据项?")
  828. .then(() => {
  829. this.exportLoading = true;
  830. return exportDistribution(queryParams);
  831. })
  832. .then(response => {
  833. this.$download.name(response.msg);
  834. this.exportLoading = false;
  835. })
  836. .catch(() => {});
  837. }
  838. }
  839. };
  840. </script>
  841. <style scoped>
  842. /* 对话框背景颜色 */
  843. ::v-deep .el-dialog {
  844. width: 1016px !important;
  845. background: #004d86 !important;
  846. }
  847. ::v-deep .el-textarea__inner {
  848. width: 965px;
  849. height: 104px;
  850. }
  851. ::v-deep .el-dialog__header {
  852. border-bottom: 1px solid #718a9d;
  853. }
  854. ::v-deep .el-dialog__title {
  855. color: #fff;
  856. font: 18px;
  857. }
  858. ::v-deep .el-dialog__headerbtn .el-dialog__close {
  859. color: #fff;
  860. }
  861. ::v-deep .el-form-item__label {
  862. font: 16px;
  863. color: #fff;
  864. width: 100px !important;
  865. }
  866. ::v-deep .el-dialog .el-input__inner {
  867. width: 200px !important;
  868. height: 36px;
  869. background: transparent;
  870. color: #fff;
  871. border: 1px solid white !important;
  872. border-color: #fff !important;
  873. }
  874. /* 单位框背景颜色 */
  875. ::v-deep .vue-treeselect__control {
  876. background: #004d86 !important;
  877. }
  878. /*调整表单间距 */
  879. ::v-deep .el-form-item__content {
  880. width: 200px;
  881. }
  882. ::v-deep .el-dialog__footer {
  883. margin-right: 6px !important;
  884. }
  885. .contents {
  886. padding: 0px 40px !important;
  887. }
  888. ::v-deep .el-form-item__label {
  889. width: 115px !important;
  890. }
  891. ::v-deep .el-dialog__body {
  892. padding: 30px 0px 30px 26px !important;
  893. }
  894. ::v-deep .el-form .el-input__inner {
  895. height: 36px !important;
  896. }
  897. ::v-deep .vue-treeselect__single-value {
  898. color: #fff !important;
  899. }
  900. </style>