addPage.vue 14 KB

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