addPage.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. <!--新增化学品-->
  2. <template>
  3. <div class="listPage">
  4. <div class="title-box">
  5. <p>{{addPropsData.id?'编辑化学品':'新增化学品'}}</p>
  6. <p class="reset-button-one" @click="backPage"><i class="el-icon-arrow-left"></i>返回</p>
  7. </div>
  8. <div class="listPage-min scrollbar-box">
  9. <el-form :model="formData" ref="form" :inline="true" :rules="rules" label-width="120px">
  10. <div class="form-min-box">
  11. <el-form-item label="化学品名:" prop="chemicalName">
  12. <el-input
  13. maxlength="30"
  14. style="width:500px;"
  15. v-model="formData.chemicalName"
  16. placeholder="请输入化学品名"
  17. clearable
  18. size="small"/>
  19. </el-form-item>
  20. </div>
  21. <div class="form-min-box">
  22. <el-form-item label="化学品分类:" prop="chemicalClassify">
  23. <el-select v-model="formData.chemicalClassify" clearable placeholder="请选择化学品分类" style="width:180px;">
  24. <el-option
  25. v-for="item in optionsListOne"
  26. :key="item.id"
  27. :label="item.classifyName"
  28. :value="item.id">
  29. </el-option>
  30. </el-select>
  31. </el-form-item>
  32. <!--<el-form-item label="属性:" prop="classifyAttribute" label-width="70px">-->
  33. <!--<el-select-->
  34. <!--style="width:250px;"-->
  35. <!--v-model="formData.classifyAttribute"-->
  36. <!--multiple-->
  37. <!--collapse-tags-->
  38. <!--placeholder="请选择属性">-->
  39. <!--<el-option-->
  40. <!--v-for="item in optionsListTwo"-->
  41. <!--:key="item.dictValue"-->
  42. <!--:label="item.dictLabel"-->
  43. <!--:value="item.dictValue">-->
  44. <!--</el-option>-->
  45. <!--</el-select>-->
  46. <!--</el-form-item>-->
  47. <el-form-item class="criticality-input" label="临界量(T):" prop="criticality" label-width="100px" v-if="formData.chemicalClassify == 1">
  48. <el-input-number
  49. :precision="2"
  50. :step="0.01" :max="10000"
  51. style="width:210px;"
  52. v-model="formData.criticality"
  53. placeholder="请输入临界量"
  54. clearable/>
  55. </el-form-item>
  56. </div>
  57. <div class="form-min-box">
  58. <el-form-item label="形态:" prop="chemicalShape">
  59. <el-select v-model="formData.chemicalShape" clearable placeholder="请选择形态" style="width:500px;">
  60. <el-option
  61. v-for="item in optionsList"
  62. :key="item.dictValue"
  63. :label="item.dictLabel"
  64. :value="item.dictValue">
  65. </el-option>
  66. </el-select>
  67. </el-form-item>
  68. </div>
  69. <!--<div class="form-min-box">-->
  70. <!--<el-form-item label="标签类型:" prop="labelType" style="width:500px;">-->
  71. <!--<el-radio-group v-model="formData.labelType">-->
  72. <!--<el-radio :label="1">RFID</el-radio>-->
  73. <!--<el-radio :label="2">二维码</el-radio>-->
  74. <!--</el-radio-group>-->
  75. <!--</el-form-item>-->
  76. <!--</div>-->
  77. <div class="form-min-box">
  78. <el-form-item label="计量方式:" prop="measuringMethod">
  79. <el-select v-model="formData.measuringMethod" clearable placeholder="请选择计量方式" style="width:180px;">
  80. <el-option label="重量" :value="1"></el-option>
  81. <!--<el-option label="体积" :value="2"></el-option>-->
  82. <!--<el-option label="个数" :value="3"></el-option>-->
  83. </el-select>
  84. </el-form-item>
  85. <el-form-item label="单位:" prop="chemicalUnit" label-width="100px">
  86. <el-select v-model="formData.chemicalUnit" clearable placeholder="请选择单位" style="width:210px;">
  87. <el-option v-for="(item,index) in chemicalsMeasuringUnit" :key="index" :label="item.dictValue" :value="item.dictValue"></el-option>
  88. </el-select>
  89. </el-form-item>
  90. </div>
  91. <div class="form-el-checkbox-group" style="max-width:1380px;">
  92. <el-form-item label="属性:" prop="classifyAttribute">
  93. <div style="padding:10px 20px 4px; border:1px solid #dedede;">
  94. <el-checkbox-group v-model="formData.classifyAttribute" style="margin-top:2px;flex:1;">
  95. <el-checkbox v-for="item in optionsListTwo" :label="item.dictValue"
  96. :key="item.dictValue">{{item.dictLabel}}</el-checkbox>
  97. </el-checkbox-group>
  98. </div>
  99. </el-form-item>
  100. </div>
  101. <!--<div class="form-min-box">-->
  102. <!--<el-form-item label="检验方式:" prop="verification">-->
  103. <!--<el-select v-model="formData.verification" clearable placeholder="请选择检验方式" style="width:500px;">-->
  104. <!--<el-option label="单人验证" :value="1"></el-option>-->
  105. <!--<el-option label="双人双卡" :value="2"></el-option>-->
  106. <!--</el-select>-->
  107. <!--</el-form-item>-->
  108. <!--</div>-->
  109. <div class="form-min-box">
  110. <el-form-item label="别名:" prop="anotherName">
  111. <el-input
  112. maxlength="30"
  113. style="width:500px;"
  114. v-model="formData.anotherName"
  115. placeholder="请输入别名"
  116. clearable
  117. size="small"/>
  118. </el-form-item>
  119. </div>
  120. <div class="form-min-box">
  121. <el-form-item label="CAS号:" prop="casNum">
  122. <el-input
  123. maxlength="30"
  124. style="width:500px;"
  125. v-model="formData.casNum"
  126. placeholder="请输入CAS号"
  127. clearable
  128. size="small"/>
  129. </el-form-item>
  130. </div>
  131. <div class="form-min-box">
  132. <el-form-item label="生产厂家:" prop="factory">
  133. <el-input
  134. maxlength="30"
  135. style="width:500px;"
  136. v-model="formData.factory"
  137. placeholder="请输入生产厂家"
  138. clearable
  139. size="small"/>
  140. </el-form-item>
  141. </div>
  142. <div class="form-min-box">
  143. <el-form-item label="纯度:" prop="purity">
  144. <el-input
  145. maxlength="30"
  146. style="width:500px;"
  147. v-model="formData.purity"
  148. placeholder="请输入纯度"
  149. clearable
  150. size="small"/>
  151. </el-form-item>
  152. </div>
  153. <div class="form-min-box input-number-none-box">
  154. <el-form-item label="领用时效:" prop="collectHour">
  155. <el-input-number
  156. :max="99"
  157. style="width:100px;"
  158. v-model="formData.collectHour"
  159. placeholder="请输入"
  160. clearable/>
  161. </el-form-item>
  162. <el-form-item label="小时" label-width="44px" prop="collectMinute">
  163. <el-input-number
  164. :max="99"
  165. style="width:100px;"
  166. v-model="formData.collectMinute"
  167. placeholder="请输入"
  168. clearable/>
  169. </el-form-item>
  170. <span class="form-left-text">分钟</span>
  171. <i class="el-icon-question form-i-icon"></i>
  172. <span class="form-right-text">化学品使用最大时长设置</span>
  173. </div>
  174. <div class="bottom-button-box">
  175. <p class="inquire-button-one right-button" @click="upData">提交</p>
  176. </div>
  177. </el-form>
  178. </div>
  179. </div>
  180. </template>
  181. <script>
  182. import { classifyList,addHxpChemical,putHxpChemical } from "@/api/medicUniversity-3_1/index";
  183. export default {
  184. name: "addPage",
  185. props:{
  186. addPropsData:{},
  187. },
  188. data() {
  189. return {
  190. rules:{
  191. chemicalName:[
  192. { required: true, message: '请输入化学品名', trigger: 'blur' },
  193. { required: true, message: "请输入化学品名", validator: this.spaceJudgment, trigger: "blur" }
  194. ],
  195. chemicalClassify:[
  196. { required: true, message: '请选择化学品分类', trigger: 'blur' },
  197. { required: true, message: "请选择化学品分类", validator: this.spaceJudgment, trigger: "blur" }
  198. ],
  199. chemicalShape:[
  200. { required: true, message: '请选择形态', trigger: 'blur' },
  201. { required: true, message: "请选择形态", validator: this.spaceJudgment, trigger: "blur" }
  202. ],
  203. // labelType:[
  204. // { required: true, message: '请选择标签类型', trigger: 'blur' },
  205. // { required: true, message: "请选择标签类型", validator: this.spaceJudgment, trigger: "blur" }
  206. // ],
  207. measuringMethod:[
  208. { required: true, message: '请选择计量方式', trigger: 'blur' },
  209. { required: true, message: "请选择计量方式", validator: this.spaceJudgment, trigger: "blur" }
  210. ],
  211. chemicalUnit:[
  212. { required: true, message: '请选择单位', trigger: 'blur' },
  213. { required: true, message: "请选择单位", validator: this.spaceJudgment, trigger: "blur" }
  214. ],
  215. verification:[
  216. { required: true, message: '请选择检验方式', trigger: 'blur' },
  217. { required: true, message: "请选择检验方式", validator: this.spaceJudgment, trigger: "blur" }
  218. ],
  219. },
  220. formData:{
  221. // labelType:1,
  222. classifyAttribute:[],
  223. },
  224. //化学品形态
  225. optionsList:[],
  226. //化学品分类列表
  227. optionsListOne:[],
  228. //属性列表
  229. optionsListTwo:[],
  230. //化学品计量单位
  231. chemicalsMeasuringUnit:[],
  232. };
  233. },
  234. created() {
  235. },
  236. mounted(){
  237. this.getDicts("chemicals_measuring_unit").then((response) => {
  238. this.chemicalsMeasuringUnit = response.data;
  239. });
  240. this.getDicts("chemical_shape").then(response => {
  241. this.optionsList = response.data;
  242. })
  243. this.getDicts("hxp_classifyattribute").then(response => {
  244. this.optionsListTwo = response.data;
  245. })
  246. this.classifyList();
  247. if(this.addPropsData.id){
  248. this.formData = JSON.parse(JSON.stringify(this.addPropsData));
  249. this.formData.chemicalShape = this.addPropsData.chemicalShape+''
  250. if(this.formData.classifyAttribute){
  251. this.formData.classifyAttribute = this.formData.classifyAttribute.split(",");
  252. }
  253. }
  254. },
  255. methods: {
  256. //提交接口
  257. upData(){
  258. let self = this;
  259. console.log('this.addPropsData',this.addPropsData);
  260. this.$refs["form"].validate(valid => {
  261. if (valid) {
  262. console.log('this.addPropsData',this.addPropsData);
  263. if(this.addPropsData.id){
  264. //编辑
  265. if(this.formData.chemicalClassify != 1){
  266. this.formData.criticality = 0;
  267. }else{
  268. if(!this.formData.criticality){
  269. this.formData.criticality = 0;
  270. }
  271. }
  272. this.formData.classifyAttribute = this.formData.classifyAttribute+'';
  273. putHxpChemical(this.formData).then(response => {
  274. if(response.code == 200){
  275. this.msgSuccess(response.msg);
  276. this.$parent.pageToggle(1,'get');
  277. }
  278. });
  279. }else{
  280. //新增
  281. if(this.formData.chemicalClassify != 1){
  282. this.formData.criticality = 0;
  283. }else{
  284. if(!this.formData.criticality){
  285. this.formData.criticality = 0;
  286. }
  287. }
  288. this.formData.classifyAttribute = this.formData.classifyAttribute+'';
  289. addHxpChemical(this.formData).then(response => {
  290. if(response.code == 200){
  291. this.msgSuccess(response.msg);
  292. this.$parent.pageToggle(1,'refresh');
  293. }
  294. });
  295. }
  296. }
  297. });
  298. },
  299. //获取化学品分类列表
  300. classifyList(){
  301. classifyList().then(response => {
  302. this.optionsListOne = response.rows;
  303. });
  304. },
  305. backPage(){
  306. this.$parent.pageToggle(1);
  307. },
  308. }
  309. }
  310. </script>
  311. <style scoped lang="scss">
  312. .listPage{
  313. flex:1;
  314. display: flex;
  315. flex-direction: column;
  316. overflow: hidden;
  317. p{
  318. margin:0;
  319. padding:0;
  320. }
  321. .title-box{
  322. display: flex;
  323. height:90px;
  324. border-bottom: 1px solid #D8D8D8;
  325. p:nth-child(1){
  326. flex:1;
  327. font-size:16px;
  328. line-height:90px;
  329. margin-left:18px;
  330. color:#0045AF;
  331. }
  332. p:nth-child(2){
  333. margin:25px 25px 0 0;
  334. }
  335. }
  336. .listPage-min{
  337. flex:1;
  338. display: flex;
  339. flex-direction: column;
  340. padding:20px;
  341. .form-min-box{
  342. display: inline-block;
  343. width:750px;
  344. height:70px;
  345. .form-i-icon{
  346. margin-right:10px;
  347. color:rgba(255,192,0,1);
  348. }
  349. .form-left-text{
  350. line-height:30px;
  351. font-size:14px;
  352. color:#606266;
  353. margin-right:40px;
  354. }
  355. .form-right-text{
  356. line-height:40px;
  357. font-size:14px;
  358. color:#606266;
  359. }
  360. }
  361. .bottom-button-box{
  362. display: flex;
  363. width:160px;
  364. margin:40px auto 20px;
  365. .left-button{
  366. margin-right:20px;
  367. }
  368. }
  369. }
  370. }
  371. </style>
  372. <style lang="scss">
  373. .listPage{
  374. .listPage-min{
  375. .criticality-input{
  376. .el-input-number__decrease,.el-input-number__increase{
  377. display: none;
  378. }
  379. .el-input-number .el-input{
  380. input{
  381. padding:0 15px;
  382. text-align: left;
  383. }
  384. }
  385. }
  386. .form-el-checkbox-group{
  387. .el-form-item{
  388. display: flex;
  389. .el-form-item__label{
  390. width:120px;
  391. }
  392. .el-form-item__content{
  393. flex:1;
  394. }
  395. .el-checkbox{
  396. display: inline-block;
  397. }
  398. }
  399. }
  400. }
  401. }
  402. .num-input-item{
  403. .num-input-min-box{
  404. display: flex;
  405. .el-input-number__increase{
  406. display: none;
  407. }
  408. .el-input-number__decrease{
  409. display: none;
  410. }
  411. input{
  412. padding:0 20px!important;
  413. border-top-right-radius: 0;
  414. border-bottom-right-radius: 0;
  415. }
  416. .num-title-span{
  417. display: inline-block;
  418. width:40px;
  419. height:40px;
  420. text-align: center;
  421. border: 1px solid #DCDFE6;
  422. border-left:none;
  423. border-top-right-radius: 4px;
  424. border-bottom-right-radius: 4px;
  425. }
  426. }
  427. }
  428. </style>