血透系统PC前端

goodInfo.vue 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. <template>
  2. <div class=" sign-and-weigh-box" style="background: white">
  3. <good-info-dailog :titles="goodInfo.goodInfoDialog.goodInfoTitle" :formValue="goodInfo.goodInfoDialog.formValue"
  4. :visibility="goodInfo.goodInfoDialog.isVisibility"
  5. :isCreated="goodInfo.goodInfoDialog.isCreated" v-on:dialog-comfirm="goodInfoDialogComfirm"
  6. v-on:dialog-cancle="goodInfoDialogCancle"></good-info-dailog>
  7. <el-row :gutter="15">
  8. <el-col>
  9. <div>
  10. <el-button size="small" icon="el-icon-circle-plus-outline" style="float: right;margin-bottom: 15px" type="primary" @click="showInfoDialog">新增</el-button>
  11. </div>
  12. <el-table :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)'}" :data="goodInfo.goodInfoData" :class="signAndWeighBoxPatients" style="width: 100%" border
  13. v-loading="goodInfo.loading"
  14. >
  15. <el-table-column label="商品编码" min-width="30" align="center">
  16. <template slot-scope="scope">
  17. {{scope.row.good_code}}
  18. </template>
  19. </el-table-column>
  20. <el-table-column label="规格名称" min-width="30" align="center">
  21. <template slot-scope="scope">
  22. {{scope.row.specification_name}}
  23. </template>
  24. </el-table-column>
  25. <el-table-column label="进价" min-width="30" align="center">
  26. <template slot-scope="scope">
  27. {{scope.row.buy_price}}
  28. </template>
  29. </el-table-column>
  30. <el-table-column label="出货价" min-width="30" align="center">
  31. <template slot-scope="scope">
  32. {{scope.row.sell_price}}
  33. </template>
  34. </el-table-column>
  35. <el-table-column label="有效期预警" min-width="30" align="center">
  36. <template slot-scope="scope">
  37. {{scope.row.expiry_date_warn_day_count}}
  38. </template>
  39. </el-table-column>
  40. <el-table-column label="库存预警" min-width="30" align="center">
  41. <template slot-scope="scope">
  42. {{scope.row.stock_warn_count}}
  43. </template>
  44. </el-table-column>
  45. <el-table-column label="操作" align="center" min-width="100">
  46. <template slot-scope="scope">
  47. <el-tooltip class="item" effect="dark" content="编辑" placement="top">
  48. <el-button
  49. size="small"
  50. type="primary"
  51. icon="el-icon-edit-outline"
  52. @click="handleGoodInfoEdit(scope.$index, scope.row)">
  53. </el-button>
  54. </el-tooltip>
  55. <el-tooltip class="item" effect="dark" content="删除" placement="top">
  56. <el-button
  57. size="small"
  58. type="danger"
  59. icon="el-icon-delete"
  60. @click="handleGoodInfoDelete(scope.$index, scope.row)">
  61. </el-button>
  62. </el-tooltip>
  63. <!--<el-button-->
  64. <!--size="mini"-->
  65. <!--type="primary"-->
  66. <!--@click="showGoodInfoDetails(scope.$index, scope.row)">详情-->
  67. <!--</el-button>-->
  68. </template>
  69. </el-table-column>
  70. </el-table>
  71. </el-col>
  72. </el-row>
  73. <el-pagination
  74. @size-change="handleSizeChange"
  75. @current-change="handleCurrentChange"
  76. :page-sizes="[7]"
  77. :page-size="7"
  78. background
  79. align="right"
  80. style="margin-top:20px;"
  81. layout="total, sizes, prev, pager, next, jumper"
  82. :total="total">
  83. </el-pagination>
  84. </div>
  85. </template>
  86. <script>
  87. import GoodInfoDailog from "../Dialog/goodInfoDailog";
  88. import {
  89. GetAllGoodType,
  90. createGoodInfo,
  91. modifyGoodInfo,
  92. deleteGoodInfo,
  93. GetGoodInfoByGoodId,
  94. GetGoodInfo,
  95. GetAllDeals,
  96. GetAllManufacturer,
  97. getGoodInfoList
  98. } from "@/api/stock";
  99. export default {
  100. components: {
  101. GoodInfoDailog,
  102. },
  103. name: "goodInfo",
  104. data() {
  105. return {
  106. signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
  107. total: 0,
  108. pageTotal: 0,
  109. pageSelect: 0,
  110. page: 1,
  111. limit: 7,
  112. goodInfo: {
  113. loading: false,
  114. goodInfoData: [],
  115. good_code: '',
  116. editGoodId: '',
  117. editGoodIndex: '',
  118. goodInfoDialog: {
  119. goodInfoTitle: '新增商品信息',
  120. isCreated: 1, //1.创建 2.编辑 3.查看详情
  121. formValue: {
  122. good_id: '',
  123. specification_name: '',
  124. buy_price: '',
  125. sell_price: '',
  126. remark: '',
  127. manufacturer: '',
  128. good_type_id: '',
  129. dealer: '',
  130. expiry_date_warn_day_count: '',
  131. stock_warn_count: '',
  132. is_reuse: '2',
  133. dealers: [],
  134. manufacturers: [],
  135. goodType: [],
  136. goodUnit: [],
  137. },
  138. isVisibility: false,
  139. },
  140. },
  141. };
  142. },
  143. methods: {
  144. handleGoodInfoEdit: function (index, row) {
  145. this.getAllDealer()
  146. this.getAllManufacturer()
  147. this.getAllGoodType()
  148. this.goodInfo.editGoodId = row.id
  149. this.goodInfo.editGoodIndex = index
  150. let params = {
  151. id: row.id
  152. }
  153. GetGoodInfo(params).then(response => {
  154. if (response.data.state == 0) {
  155. this.$message.error(response.data.msg);
  156. return false;
  157. } else {
  158. console.log(response.data.data.goodInfo)
  159. if(response.data.data.goodInfo.good_unit <= 0){
  160. this.goodInfo.goodInfoDialog.formValue.good_unit = ""
  161. }else{
  162. this.goodInfo.goodInfoDialog.formValue.good_unit = response.data.data.goodInfo.good_unit
  163. }
  164. if(response.data.data.goodInfo.manufacturer <= 0){
  165. this.goodInfo.goodInfoDialog.formValue.manufacturer = ""
  166. }else{
  167. this.goodInfo.goodInfoDialog.formValue.manufacturer = response.data.data.goodInfo.manufacturer
  168. }
  169. if(response.data.data.goodInfo.dealer <= 0){
  170. this.goodInfo.goodInfoDialog.formValue.dealer = ""
  171. }else{
  172. this.goodInfo.goodInfoDialog.formValue.dealer = response.data.data.goodInfo.dealer
  173. }
  174. this.goodInfo.goodInfoDialog.formValue.specification_name = response.data.data.goodInfo.specification_name
  175. this.goodInfo.goodInfoDialog.formValue.buy_price = response.data.data.goodInfo.buy_price
  176. this.goodInfo.goodInfoDialog.formValue.sell_price = response.data.data.goodInfo.sell_price
  177. this.goodInfo.goodInfoDialog.formValue.expiry_date_warn_day_count = response.data.data.goodInfo.expiry_date_warn_day_count
  178. this.goodInfo.goodInfoDialog.formValue.stock_warn_count = response.data.data.goodInfo.stock_warn_count
  179. this.goodInfo.goodInfoDialog.formValue.is_reuse = response.data.data.goodInfo.is_reuse.toString()
  180. this.goodInfo.goodInfoDialog.formValue.remark = response.data.data.goodInfo.remark
  181. this.goodInfo.goodInfoDialog.isCreated = 2
  182. this.goodInfo.goodInfoDialog.isVisibility = true
  183. this.goodInfo.good_code = response.data.data.goodInfo.good_code
  184. this.goodInfo.goodInfoDialog.formValue.good_id =response.data.data.goodInfo.good_type_id
  185. }
  186. });
  187. },
  188. handleGoodInfoDelete: function (index, row) {
  189. this.$confirm('确认删除这条商品信息?', '删除商品信息', {
  190. confirmButtonText: '确定',
  191. cancelButtonText: '取消',
  192. type: 'warning'
  193. }).then(() => {
  194. let params = {
  195. id: row.id
  196. }
  197. deleteGoodInfo(params).then(response => {
  198. if (response.data.state == 0) {
  199. this.$message.error(response.data.msg);
  200. return false;
  201. } else {
  202. this.goodInfo.goodInfoData.splice(index, 1);
  203. this.$notify({
  204. title: "成功",
  205. message: "商品信息已经删除",
  206. type: "success",
  207. duration: 2000
  208. });
  209. }
  210. });
  211. }).catch(() => {
  212. });
  213. },
  214. showGoodInfoDetails: function (index, row) {
  215. let params = {
  216. id: row.id
  217. }
  218. GetGoodInfo(params).then(response => {
  219. if (response.data.state == 0) {
  220. this.$message.error(response.data.msg);
  221. return false;
  222. } else {
  223. this.goodInfo.goodInfoDialog.formValue.specification_name = response.data.data.goodInfo.specification_name
  224. this.goodInfo.goodInfoDialog.formValue.good_unit = response.data.data.goodInfo.good_unit
  225. this.goodInfo.goodInfoDialog.formValue.buy_price = response.data.data.goodInfo.buy_price
  226. this.goodInfo.goodInfoDialog.formValue.sell_price = response.data.data.goodInfo.sell_price
  227. this.goodInfo.goodInfoDialog.formValue.manufacturer = response.data.data.goodInfo.manufacturer
  228. this.goodInfo.goodInfoDialog.formValue.dealer = response.data.data.goodInfo.dealer
  229. this.goodInfo.goodInfoDialog.formValue.expiry_date_warn_day_count = response.data.data.goodInfo.expiry_date_warn_day_count
  230. this.goodInfo.goodInfoDialog.formValue.stock_warn_count = response.data.data.goodInfo.stock_warn_count
  231. this.goodInfo.goodInfoDialog.formValue.is_reuse = response.data.data.goodInfo.is_reuse.toString()
  232. this.goodInfo.goodInfoDialog.formValue.remark = response.data.data.goodInfo.remark
  233. this.goodInfo.goodInfoDialog.isCreated = 3
  234. this.goodInfo.goodInfoDialog.isVisibility = true
  235. }
  236. });
  237. }, getList() {
  238. this.goodInfo.loading = true
  239. let params = {
  240. 'page': this.page,
  241. 'limit': this.limit
  242. }
  243. getGoodInfoList(params).then(response => {
  244. if (response.data.state == 0) {
  245. this.goodInfo.loading = false
  246. this.$message.error(response.data.msg);
  247. return false;
  248. } else {
  249. this.goodInfo.loading = false
  250. this.total = response.data.data.total
  251. this.goodInfo.goodInfoData = []
  252. for (let i = 0; i < response.data.data.list.length; i++) {
  253. this.goodInfo.goodInfoData.push(response.data.data.list[i])
  254. }
  255. }
  256. });
  257. }, tableRowClassName({row, rowIndex}) {
  258. //把每一行的索引放进row
  259. row.index = rowIndex;
  260. },
  261. onRowClick(row, event, column) {
  262. this.goodInfo.goodInfoData = []
  263. this.goodType.tableCurrentIndex = row.index;
  264. this.goodInfo.goodInfoDialog.formValue.good_id = row.id
  265. let params = {
  266. 'id': row.id
  267. }
  268. this.goodInfo.loading = true
  269. GetGoodInfoByGoodId(params).then(response => {
  270. if (response.data.state == 0) {
  271. this.goodInfo.loading = false
  272. this.$message.error(response.data.msg);
  273. return false;
  274. } else {
  275. this.goodInfo.loading = false
  276. for (let i = 0; i < response.data.data.list.length; i++) {
  277. this.goodInfo.goodInfoData.push(response.data.data.list[i])
  278. }
  279. }
  280. });
  281. }, goodInfoDialogComfirm: function (val) {
  282. this.goodInfo.goodInfoDialog.isVisibility = false
  283. if (val.isCreated == 2) { //修改
  284. val['id'] = this.goodInfo.editGoodId
  285. val['good_code'] = this.goodInfo.good_code
  286. modifyGoodInfo(val).then(response => {
  287. if (response.data.state == 0) {
  288. this.$message.error(response.data.msg);
  289. return false;
  290. } else {
  291. this.goodInfo.goodInfoData[this.goodInfo.editGoodIndex].specification_name = response.data.data.goodInfo.specification_name
  292. this.goodInfo.goodInfoData[this.goodInfo.editGoodIndex].good_unit = response.data.data.goodInfo.good_unit
  293. this.goodInfo.goodInfoData[this.goodInfo.editGoodIndex].buy_price = response.data.data.goodInfo.buy_price.toString()
  294. this.goodInfo.goodInfoData[this.goodInfo.editGoodIndex].sell_price = response.data.data.goodInfo.sell_price.toString()
  295. this.goodInfo.goodInfoData[this.goodInfo.editGoodIndex].expiry_date_warn_day_count = response.data.data.goodInfo.expiry_date_warn_day_count.toString()
  296. this.goodInfo.goodInfoData[this.goodInfo.editGoodIndex].stock_warn_count = response.data.data.goodInfo.stock_warn_count.toString()
  297. this.$notify({
  298. title: "成功",
  299. message: "修改成功",
  300. type: "success",
  301. duration: 2000
  302. });
  303. }
  304. });
  305. } else if (val.isCreated == 1) { //新增
  306. createGoodInfo(val).then(response => {
  307. if (response.data.state == 0) {
  308. this.$message.error(response.data.msg);
  309. return false;
  310. } else {
  311. this.goodInfo.goodInfoData.unshift(response.data.data.goodInfo)
  312. this.$notify({
  313. title: "成功",
  314. message: "新增成功",
  315. type: "success",
  316. duration: 2000
  317. });
  318. }
  319. });
  320. }
  321. },
  322. goodInfoDialogCancle: function () {
  323. this.goodInfo.goodInfoDialog.isVisibility = false
  324. }, showInfoDialog: function () {
  325. this.getAllDealer()
  326. this.getAllManufacturer()
  327. this.goodInfo.goodInfoDialog.formValue.goodType = []
  328. GetAllGoodType().then(response => {
  329. if (response.data.state == 0) {
  330. this.$message.error(response.data.msg);
  331. return false;
  332. } else {
  333. for (let i = 0; i < response.data.data.goodType.length; i++) {
  334. this.goodInfo.goodInfoDialog.formValue.goodType.push(response.data.data.goodType[i])
  335. }
  336. if (this.goodInfo.goodInfoDialog.formValue.goodType.length <= 0) {
  337. this.$message.error("请先新增商品类型");
  338. return
  339. } else {
  340. this.goodInfo.goodInfoDialog.isVisibility = true
  341. this.goodInfo.goodInfoDialog.isCreated = 1
  342. }
  343. }
  344. });
  345. this.goodInfo.goodInfoDialog.formValue.good_id = ''
  346. this.goodInfo.goodInfoDialog.formValue.specification_name = ''
  347. this.goodInfo.goodInfoDialog.formValue.buy_price = ''
  348. this.goodInfo.goodInfoDialog.formValue.sell_price = ''
  349. this.goodInfo.goodInfoDialog.formValue.remark = ''
  350. this.goodInfo.goodInfoDialog.formValue.manufacturer = ''
  351. this.goodInfo.goodInfoDialog.formValue.good_type_id = ''
  352. this.goodInfo.goodInfoDialog.formValue.dealer = ''
  353. this.goodInfo.goodInfoDialog.formValue.expiry_date_warn_day_count = ''
  354. this.goodInfo.goodInfoDialog.formValue.stock_warn_count = ''
  355. this.goodInfo.goodInfoDialog.formValue.is_reuse = '2'
  356. }, getAllDealer: function () {
  357. this.goodInfo.goodInfoDialog.formValue.dealers = []
  358. GetAllDeals().then(response => {
  359. if (response.data.state == 0) {
  360. this.$message.error(response.data.msg);
  361. return false;
  362. } else {
  363. for (let i = 0; i < response.data.data.dealer.length; i++) {
  364. this.goodInfo.goodInfoDialog.formValue.dealers.push(response.data.data.dealer[i])
  365. }
  366. }
  367. });
  368. }, getAllManufacturer: function () {
  369. this.goodInfo.goodInfoDialog.formValue.manufacturers = []
  370. GetAllManufacturer().then(response => {
  371. if (response.data.state == 0) {
  372. this.$message.error(response.data.msg);
  373. return false;
  374. } else {
  375. for (let i = 0; i < response.data.data.manufacturer.length; i++) {
  376. this.goodInfo.goodInfoDialog.formValue.manufacturers.push(response.data.data.manufacturer[i])
  377. }
  378. }
  379. });
  380. }, getAllGoodType: function () {
  381. this.goodInfo.goodInfoDialog.formValue.goodType = []
  382. GetAllGoodType().then(response => {
  383. if (response.data.state == 0) {
  384. this.$message.error(response.data.msg);
  385. return false;
  386. } else {
  387. for (let i = 0; i < response.data.data.goodType.length; i++) {
  388. this.goodInfo.goodInfoDialog.formValue.goodType.push(response.data.data.goodType[i])
  389. }
  390. }
  391. });
  392. }, handleSizeChange(val) {
  393. this.limit = val;
  394. this.getList();
  395. }, handleCurrentChange(val) {
  396. this.page = val;
  397. this.getList();
  398. }
  399. },
  400. created() {
  401. this.getList()
  402. // this.getAllDealer()
  403. // this.getAllManufacturer()
  404. // this.getAllGoodType()
  405. this.goodInfo.goodInfoDialog.formValue.goodUnit = this.$store.getters.good_unit
  406. }
  407. };
  408. </script>
  409. <style rel="stylesheet/css" lang="scss" scoped>
  410. .information {
  411. border: 1px #dcdfe6 solid;
  412. padding: 30px 20px 30px 20px;
  413. .border {
  414. border-bottom: 1px #dcdfe6 solid;
  415. margin: 0px 0 20px 0;
  416. }
  417. }
  418. .title {
  419. height: 44px;
  420. line-height: 44px;
  421. padding: 0 0 0 10px;
  422. margin: 0 0 10px 0;
  423. // border-radius: 4px 4px 0 0;
  424. }
  425. .edit_separater {
  426. border-top: 1px solid rgb(233, 233, 233);
  427. margin-top: 15px;
  428. margin-bottom: 15px;
  429. }
  430. </style>
  431. <style>
  432. .sign-and-weigh-box .sign-and-weigh-box-patients .cell {
  433. font-size: 12px;
  434. }
  435. .sign-and-weigh-box .sign-and-weigh-box-patients .current-row > td {
  436. background: #6fb5fa;
  437. }
  438. </style>