BaseFormBak.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. <template>
  2. <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
  3. <h1 style="margin:20px auto; text-align: center"> 质量数据录入界面 </h1>
  4. <title-divider title="样品" width="90px"></title-divider>
  5. <a-form :form="form">
  6. <a-form-item v-show="false" >
  7. <a-input v-decorator="['id']" type="hidden"/>
  8. </a-form-item>
  9. <a-row :gutter="24">
  10. <a-col :lg="12" :md="24" :sm="24">
  11. <a-form-item
  12. label="样品信息"
  13. :labelCol="BaseTool.Constant.labelCol"
  14. :wrapperCol="BaseTool.Constant.wrapperCol"
  15. >
  16. <a-input
  17. v-decorator="['param1', {rules: [{required: false, message: '样品信息不能为空'}]}]" />
  18. </a-form-item>
  19. </a-col>
  20. <a-col :lg="12" :md="24" :sm="24">
  21. <a-form-item
  22. label="订单号"
  23. :labelCol="BaseTool.Constant.labelCol"
  24. :wrapperCol="BaseTool.Constant.wrapperCol"
  25. >
  26. <a-input
  27. v-decorator="['param2']" />
  28. </a-form-item>
  29. </a-col>
  30. <a-col :lg="12" :md="24" :sm="24">
  31. <a-form-item
  32. label="检测车间"
  33. :labelCol="BaseTool.Constant.labelCol"
  34. :wrapperCol="BaseTool.Constant.wrapperCol"
  35. >
  36. <a-select v-decorator="['param3']" placeholder="请选择">
  37. <a-select-option value="一号车间">
  38. 一号车间
  39. </a-select-option>
  40. <a-select-option value="二号车间">
  41. 二号车间
  42. </a-select-option>
  43. </a-select>
  44. </a-form-item>
  45. </a-col>
  46. <a-col :lg="12" :md="24" :sm="24">
  47. <a-form-item
  48. label="送样时间"
  49. :labelCol="BaseTool.Constant.labelCol"
  50. :wrapperCol="BaseTool.Constant.wrapperCol"
  51. >
  52. <a-date-picker
  53. style="width: 100%"
  54. :format="BaseTool.Date.PICKER_NORM_DATETIME_PATTERN"
  55. v-decorator="['param4']" />
  56. </a-form-item>
  57. </a-col>
  58. <a-col :lg="12" :md="24" :sm="24">
  59. <a-form-item
  60. label="工段名称"
  61. :labelCol="BaseTool.Constant.labelCol"
  62. :wrapperCol="BaseTool.Constant.wrapperCol"
  63. >
  64. <a-input
  65. v-decorator="['param5']"
  66. suffix="%" />
  67. </a-form-item>
  68. </a-col>
  69. <a-col :lg="12" :md="24" :sm="24">
  70. <a-form-item
  71. label="水分/ppm"
  72. :labelCol="BaseTool.Constant.labelCol"
  73. :wrapperCol="BaseTool.Constant.wrapperCol"
  74. >
  75. <a-input
  76. v-decorator="['param6']"
  77. suffix="%" />
  78. </a-form-item>
  79. </a-col>
  80. <a-col :lg="12" :md="24" :sm="24">
  81. <a-form-item
  82. label="固含量"
  83. :labelCol="BaseTool.Constant.labelCol"
  84. :wrapperCol="BaseTool.Constant.wrapperCol"
  85. >
  86. <a-input
  87. style="width:70%"
  88. v-decorator="['param7', {rules: [{required: false, message: '不能为空'}]}]" />
  89. <a-button type="primary" style="width:30%" @click="showModel">选择公式</a-button>
  90. </a-form-item>
  91. </a-col>
  92. <a-col :lg="12" :md="24" :sm="24">
  93. <a-form-item
  94. label="pH"
  95. :labelCol="BaseTool.Constant.labelCol"
  96. :wrapperCol="BaseTool.Constant.wrapperCol"
  97. >
  98. <a-input
  99. style="width:70%"
  100. v-decorator="['param8', {rules: [{required: false, message: '不能为空'}]}]" />
  101. <a-button type="primary" style="width:30%" @click="showModel">选择公式</a-button>
  102. </a-form-item>
  103. </a-col>
  104. <a-col :lg="12" :md="24" :sm="24">
  105. <a-form-item
  106. label="密度"
  107. :labelCol="BaseTool.Constant.labelCol"
  108. :wrapperCol="BaseTool.Constant.wrapperCol"
  109. >
  110. <a-input
  111. suffix="g/cm"
  112. v-decorator="['param9', {rules: [{required: false, message: '不能为空'}]}]" />
  113. </a-form-item>
  114. </a-col>
  115. <a-col :lg="12" :md="24" :sm="24">
  116. <a-form-item
  117. label="HF"
  118. :labelCol="BaseTool.Constant.labelCol"
  119. :wrapperCol="BaseTool.Constant.wrapperCol"
  120. >
  121. <a-input
  122. suffix="ug/g"
  123. v-decorator="['param10', {rules: [{required: false, message: '不能为空'}]}]" />
  124. </a-form-item>
  125. </a-col>
  126. <a-col :lg="12" :md="24" :sm="24">
  127. <a-form-item
  128. label="色度"
  129. :labelCol="BaseTool.Constant.labelCol"
  130. :wrapperCol="BaseTool.Constant.wrapperCol"
  131. >
  132. <a-input
  133. v-decorator="['param11', {rules: [{required: false, message: '不能为空'}]}]" />
  134. </a-form-item>
  135. </a-col>
  136. <a-col :lg="12" :md="24" :sm="24">
  137. <a-form-item
  138. label="LIFSI"
  139. :labelCol="BaseTool.Constant.labelCol"
  140. :wrapperCol="BaseTool.Constant.wrapperCol"
  141. >
  142. <a-input
  143. v-decorator="['param12', {rules: [{required: false, message: '不能为空'}]}]" />
  144. </a-form-item>
  145. </a-col>
  146. <a-col :lg="12" :md="24" :sm="24">
  147. <a-form-item
  148. label="F-160C"
  149. :labelCol="BaseTool.Constant.labelCol"
  150. :wrapperCol="BaseTool.Constant.wrapperCol"
  151. >
  152. <a-input
  153. v-decorator="['param13', {rules: [{required: false, message: '不能为空'}]}]" />
  154. </a-form-item>
  155. </a-col>
  156. <a-col :lg="12" :md="24" :sm="24">
  157. <a-form-item
  158. label="GS-907"
  159. :labelCol="BaseTool.Constant.labelCol"
  160. :wrapperCol="BaseTool.Constant.wrapperCol"
  161. >
  162. <a-input
  163. v-decorator="['param14', {rules: [{required: false, message: '不能为空'}]}]" />
  164. </a-form-item>
  165. </a-col>
  166. <a-col :lg="12" :md="24" :sm="24">
  167. <a-form-item
  168. label="GS-908"
  169. :labelCol="BaseTool.Constant.labelCol"
  170. :wrapperCol="BaseTool.Constant.wrapperCol"
  171. >
  172. <a-input
  173. v-decorator="['param15', {rules: [{required: false, message: '不能为空'}]}]" />
  174. </a-form-item>
  175. </a-col>
  176. <a-col :lg="12" :md="24" :sm="24">
  177. <a-form-item
  178. label="GS-905"
  179. :labelCol="BaseTool.Constant.labelCol"
  180. :wrapperCol="BaseTool.Constant.wrapperCol"
  181. >
  182. <a-input
  183. v-decorator="['param16', {rules: [{required: false, message: '不能为空'}]}]" />
  184. </a-form-item>
  185. </a-col>
  186. </a-row>
  187. </a-form>
  188. <title-divider title="检测记录" width="90px"></title-divider>
  189. <div class="table-operator">
  190. </div>
  191. <a-table
  192. bordered
  193. :data-source="data"
  194. :columns="columns"
  195. tableLayout="auto"
  196. :scroll="{x: 1, y: BaseTool.Constant.scrollY }"
  197. rowKey="id"
  198. :row-selection="rowSelection">
  199. <span slot="action" slot-scope="record">
  200. <template>
  201. <a @click="handleEdit(record)">修改</a>
  202. <a-divider type="vertical" />
  203. <a-popconfirm title="是否要删除该条数据?" @confirm="handleDelOne(record.id)">
  204. <a>删除</a>
  205. </a-popconfirm>
  206. </template>
  207. </span>
  208. </a-table>
  209. <a-row :gutter="48">
  210. <a-col :md="48" :sm="48">
  211. <span class="table-page-search-submitButtons" style="float: right;margin-top: 10px">
  212. <a-button type="primary" @click="save()">提交</a-button>
  213. <a-button style="margin-left: 8px" @click="handleCancel()">返回</a-button>
  214. </span>
  215. </a-col>
  216. </a-row>
  217. </a-card>
  218. </template>
  219. <script>
  220. import pick from 'lodash.pick'
  221. export default {
  222. name: 'BaseInStoreForm',
  223. components: {
  224. },
  225. data () {
  226. return {
  227. confirmLoading: false,
  228. modalTitle: null,
  229. form: this.$form.createForm(this),
  230. visible: true,
  231. maskClosable: false,
  232. storeId: null,
  233. typeMap: {},
  234. userList: {},
  235. rowSelection: {
  236. onChange: (selectedRowKeys, selectedRows) => {
  237. this.selectedRowKeys = selectedRowKeys
  238. this.selectedRows = selectedRows
  239. }
  240. },
  241. // 表头
  242. columns: [
  243. {
  244. title: '序号',
  245. width: 180,
  246. dataIndex: 'id'
  247. },
  248. {
  249. title: '样品信息',
  250. width: 120,
  251. dataIndex: 'param1'
  252. },
  253. {
  254. title: '订单号',
  255. width: 120,
  256. dataIndex: 'param2'
  257. },
  258. {
  259. title: '检测车间',
  260. width: 120,
  261. dataIndex: 'param3'
  262. },
  263. {
  264. title: '送样时间',
  265. width: 120,
  266. dataIndex: 'param4'
  267. },
  268. {
  269. title: '工段名称',
  270. dataIndex: 'param5',
  271. width: 120,
  272. scopedSlots: { customRender: 'num' }
  273. },
  274. {
  275. title: '水分/ppm',
  276. dataIndex: 'param6',
  277. width: 150,
  278. scopedSlots: { customRender: 'price' }
  279. },
  280. {
  281. title: '固含量',
  282. dataIndex: 'param7',
  283. width: 150,
  284. scopedSlots: { customRender: 'totalPrice' }
  285. },
  286. {
  287. title: 'pH',
  288. dataIndex: 'param8',
  289. width: 150,
  290. scopedSlots: { customRender: 'totalPrice' }
  291. },
  292. {
  293. title: '密度',
  294. dataIndex: 'param9',
  295. width: 150,
  296. scopedSlots: { customRender: 'totalPrice' }
  297. },
  298. {
  299. title: 'HF',
  300. dataIndex: 'param10',
  301. width: 150,
  302. scopedSlots: { customRender: 'totalPrice' }
  303. },
  304. {
  305. title: '色度',
  306. dataIndex: 'param11',
  307. width: 150,
  308. scopedSlots: { customRender: 'totalPrice' }
  309. },
  310. {
  311. title: 'LIFSI',
  312. dataIndex: 'param12',
  313. width: 150,
  314. scopedSlots: { customRender: 'totalPrice' }
  315. },
  316. {
  317. title: 'F-160C',
  318. dataIndex: 'param13',
  319. width: 150,
  320. scopedSlots: { customRender: 'totalPrice' }
  321. },
  322. {
  323. title: 'GS-907',
  324. dataIndex: 'param14',
  325. width: 150,
  326. scopedSlots: { customRender: 'totalPrice' }
  327. },
  328. {
  329. title: 'GS-908',
  330. dataIndex: 'param15',
  331. width: 150,
  332. scopedSlots: { customRender: 'totalPrice' }
  333. },
  334. {
  335. title: 'GS-905',
  336. dataIndex: 'param16',
  337. width: 150,
  338. scopedSlots: { customRender: 'totalPrice' }
  339. },
  340. {
  341. title: '操作',
  342. key: 'action',
  343. width: 120,
  344. fixed: 'right',
  345. align: 'center',
  346. scopedSlots: { customRender: 'action' }
  347. }
  348. ],
  349. data: [],
  350. index: 1,
  351. user: this.$store.getters.userInfo,
  352. selectedRowKeys: [],
  353. selectedRows: [],
  354. options: {
  355. rowSelection: {
  356. selectedRowKeys: this.selectedRowKeys
  357. }
  358. }
  359. }
  360. },
  361. props: {
  362. },
  363. created () {
  364. // 下拉框map
  365. this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.IN_STORE_FORM_TYPE)
  366. this.data = JSON.parse(localStorage.getItem('test'))
  367. if (this.data != null) {
  368. this.index = this.data.length + 1
  369. } else {
  370. this.data = []
  371. }
  372. },
  373. methods: {
  374. base (record) {
  375. this.visible = true
  376. // 如果是空标识添加
  377. if (this.BaseTool.Object.isBlank(record)) {
  378. this.modalTitle = '添加'
  379. this.data = []
  380. }
  381. },
  382. save () {
  383. const { form: { validateFieldsAndScroll } } = this
  384. this.confirmLoading = true
  385. validateFieldsAndScroll((errors, values) => {
  386. if (errors) {
  387. this.confirmLoading = false
  388. return
  389. }
  390. if (values.id == null) {
  391. var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  392. var result = ''
  393. var length = 16
  394. for (var i = length; i > 0; --i) { result += str[Math.floor(Math.random() * str.length)] }
  395. values.id = result
  396. values.param4 = this.BaseTool.Date.formatter(values.param4, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  397. this.data.push(values)
  398. this.$message.info('更新成功')
  399. this.confirmLoading = false
  400. } else {
  401. const data = [...this.data]
  402. this.data = data.filter(item => values.id !== item.id)
  403. var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  404. var result = ''
  405. var length = 16
  406. for (var i = length; i > 0; --i) { result += str[Math.floor(Math.random() * str.length)] }
  407. values.id = result
  408. this.data.push(values)
  409. }
  410. localStorage.setItem('test', JSON.stringify(this.data))
  411. this.form.resetFields()
  412. })
  413. },
  414. handleCancel (values) {
  415. this.visible = false
  416. this.confirmLoading = false
  417. this.form.resetFields()
  418. if (this.BaseTool.Object.isNotBlank(values)) {
  419. this.$emit('ok', values)
  420. } else {
  421. this.$emit('ok')
  422. }
  423. },
  424. handleEdit (record) {
  425. record.param4 = this.BaseTool.Date.formatter(record.param4, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  426. const { form: { setFieldsValue } } = this
  427. // 日期处理
  428. this.$nextTick(() => {
  429. setFieldsValue(record)
  430. })
  431. },
  432. handleDelOne (id) {
  433. const data = [...this.data]
  434. this.data = data.filter(item => id !== item.id)
  435. localStorage.setItem('test', JSON.stringify(this.data))
  436. },
  437. showModel () {
  438. this.$message.info('后期如果配置了公式,这里则可以选择计算公示,自动计算。')
  439. }
  440. }
  441. }
  442. </script>