index.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <template>
  2. <div>
  3. <van-nav-bar
  4. title="应急仓库"
  5. left-arrow
  6. placeholder
  7. @click-left="goback"
  8. :fixed="true"
  9. @click-right="bjclick"
  10. >
  11. <template #right>
  12. <span v-if="!isbj" class="bjbtn">办结</span>
  13. </template>
  14. </van-nav-bar>
  15. <div v-if="!isempt">
  16. <div class="content">
  17. <div>
  18. <van-cell-group>
  19. <van-field
  20. v-model="whdata.value.name"
  21. label="仓库命名"
  22. input-align="right"
  23. :readonly="isedit"
  24. placeholder="请输入仓库命名"
  25. />
  26. <van-field
  27. v-model="whdata.value.manageUnit"
  28. label="管理单位"
  29. input-align="right"
  30. :readonly="isedit"
  31. placeholder="请输入管理单位"
  32. />
  33. <van-field
  34. v-model="whdata.value.contactName"
  35. required
  36. :readonly="isedit"
  37. label="联系人"
  38. input-align="right"
  39. placeholder="请输入联系人"
  40. />
  41. <van-field
  42. v-model="whdata.value.contactPhone"
  43. required
  44. label="联系方式"
  45. :readonly="isedit"
  46. input-align="right"
  47. placeholder="请输入联系方式"
  48. />
  49. </van-cell-group>
  50. </div>
  51. <div v-for="(item, index) in wzdata.aar" v-bind:key="index">
  52. <div class="cell-header">
  53. <span>应急物资({{ index + 1 }})</span>
  54. <div style="float: right" @click="deletewz(index)">删除</div>
  55. </div>
  56. <van-cell-group style="">
  57. <van-field
  58. v-model="item.name"
  59. label="名称"
  60. input-align="right"
  61. placeholder="请输入名称"
  62. />
  63. <van-field
  64. v-model="item.model"
  65. label="型号"
  66. input-align="right"
  67. placeholder="请输入型号"
  68. />
  69. <van-field
  70. v-model="item.size"
  71. label="规格"
  72. input-align="right"
  73. placeholder="请输入规格"
  74. />
  75. <van-field
  76. v-model="item.num"
  77. label="仓储数量"
  78. type="number"
  79. input-align="right"
  80. placeholder="请输入数量"
  81. />
  82. <van-field
  83. v-model="item.availableNum"
  84. label="可用数量"
  85. type="number"
  86. input-align="right"
  87. placeholder="请输入数量"
  88. />
  89. <van-field
  90. v-model="item.unit"
  91. label="单位"
  92. input-align="right"
  93. placeholder="请输入单位"
  94. />
  95. </van-cell-group>
  96. </div>
  97. </div>
  98. <div style="text-align: center">
  99. <van-button
  100. @click="doaddwzClick"
  101. icon="plus"
  102. style="color: #0b33a8; background: rgba(0, 0, 0, 0); border: none"
  103. >新增物资</van-button
  104. >
  105. </div>
  106. <div style="padding: 10px 20px">
  107. <van-button
  108. type="primary"
  109. block
  110. style="border-radius: 30px"
  111. @click="dosavedata"
  112. >提交</van-button
  113. >
  114. </div>
  115. </div>
  116. <div><van-empty v-if="isempt" description="无仓库" /></div>
  117. </div>
  118. </template>
  119. <script setup>
  120. import { ref, reactive, onUpdated,onMounted } from 'vue';
  121. import { RouterView, useRoute, useRouter } from 'vue-router';
  122. import {
  123. api_getresource,
  124. api_getresourcedetail,
  125. api_putresource,
  126. api_bj,api_isbj
  127. } from '@/service/warehouse';
  128. import { Toast, Notify,Dialog } from 'vant';
  129. const whdata = reactive({
  130. value: { name: '', manageUnit: '', contactName: '', contactPhone: '' },
  131. });
  132. const isedit = ref(true);
  133. const isempt = ref(true);
  134. // let deletwzarr = [];
  135. const wzdata = reactive({ aar: [] });
  136. const bjclick = () => {
  137. if(isbj.value){
  138. return;
  139. }
  140. Dialog.confirm({
  141. title: '提示',
  142. confirmButtonText: '办结',
  143. message: '确认是否办结?',
  144. })
  145. .then(() => {
  146. // on confirm
  147. Toast.loading({
  148. message: '加载中...',
  149. duration: 0,
  150. forbidClick: true,
  151. });
  152. api_bj({ taskId: route.query.taskid }).then((res) => {
  153. Toast.clear();
  154. try {
  155. Toast.message("成功")
  156. uni.navigateBack();
  157. } catch (E) {
  158. }
  159. });
  160. Toast.clear();
  161. })
  162. .catch(() => {
  163. // on cancel
  164. Toast.clear();
  165. });
  166. };
  167. const doaddwzClick = () => {
  168. var wz = {
  169. name: '',
  170. model: '',
  171. size: '',
  172. num: 0,
  173. unit: '',
  174. availableNum: '',
  175. };
  176. wzdata.aar.push(wz);
  177. };
  178. const editclick = () => {
  179. isedit.value = false;
  180. };
  181. const deletewz = (index) => {
  182. if (index >= wzdata.aar.length) {
  183. return;
  184. }
  185. wzdata.aar.splice(index, 1);
  186. };
  187. const goback = () => {
  188. try {
  189. uni.navigateBack();
  190. } catch (E) {}
  191. };
  192. const dosavedata = () => {
  193. Toast.loading({
  194. message: '加载中...',
  195. duration: 0,
  196. forbidClick: true,
  197. });
  198. var data = whdata.value;
  199. data['resourceDetailList'] = wzdata.aar;
  200. api_putresource(data)
  201. .then((res) => {
  202. Toast.clear();
  203. setTimeout(() => {
  204. Toast('保存成功');
  205. }, 1000);
  206. // Notify({ type: 'success', message: '保存成功'});
  207. getdata();
  208. })
  209. .catch((ee) => {
  210. Toast.clear();
  211. });
  212. };
  213. const isbj = ref(true);
  214. const route = useRoute();
  215. onMounted(()=>{
  216. var taskid = route.query.taskid;
  217. if(taskid){
  218. api_isbj(taskid).then((res)=>{
  219. isbj.value = !res.data;
  220. console.log(isbj.value)
  221. })
  222. }
  223. })
  224. const getdata = () => {
  225. Toast.loading({
  226. message: '加载中...',
  227. duration: 0,
  228. forbidClick: true,
  229. });
  230. api_getresource({
  231. resourceType: 1,
  232. })
  233. .then((res) => {
  234. Toast.clear();
  235. if (res.rows.length > 0) {
  236. isempt.value = false;
  237. // whdata.value = res.rows.find(i=>i.id=="1481549762984415233")
  238. whdata.value = res.rows[0];
  239. api_getresourcedetail(whdata.value.id).then((res1) => {
  240. if (
  241. res1.data.resourceDetailList == null ||
  242. res1.data.resourceDetailList.length == 0
  243. ) {
  244. // debugger
  245. Toast('仓库还没有物资,请添加物资!');
  246. } else {
  247. wzdata.aar = res1.data.resourceDetailList;
  248. // console.log(whdata)
  249. }
  250. });
  251. } else {
  252. Toast('未获取到仓库信息,请联系管理员!');
  253. }
  254. })
  255. .catch((eer) => {
  256. Toast.clear();
  257. });
  258. };
  259. getdata();
  260. // onUpdated(()=>{
  261. // //根据管理单位获取仓库信息
  262. // api_getresource({}).then((res)=>{
  263. // })
  264. // });
  265. </script>
  266. <style lang="scss">
  267. .content label,
  268. .content span {
  269. font-size: 15px;
  270. font-family: PingFangSC, PingFangSC-Regular;
  271. color: #333333;
  272. }
  273. .bjbtn {
  274. font-size: 14px;
  275. font-weight: 500;
  276. color: #ffffff;
  277. font-size: 13px;
  278. font-weight: 500;
  279. background: #bb0000;
  280. padding: 3px 8px;
  281. border-radius: 2px;
  282. }
  283. .content {
  284. .cell-header {
  285. font-family: PingFangSC, PingFangSC-Regular;
  286. font-weight: 400;
  287. line-height: 42px;
  288. padding: 0px 15px;
  289. span {
  290. font-size: 12px;
  291. }
  292. div {
  293. font-size: 14px;
  294. color: #0b33a8;
  295. }
  296. }
  297. }
  298. </style>