InventoryRecordsModal.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="width"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. @ok="handleOk"
  8. @cancel="handleCancel"
  9. cancelText="关闭">
  10. <a-spin :spinning="confirmLoading">
  11. <a-form :form="form">
  12. <a-form-item label="盘点日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
  13. <j-date placeholder="请选择盘点日期" v-decorator="[ 'checkDate', validatorRules.checkDate]" :trigger-change="true" style="width: 100%"/>
  14. </a-form-item>
  15. <a-form-item label="资产编码" :labelCol="labelCol" :wrapperCol="wrapperCol">
  16. <a-select placeholder="请选择" v-decorator="[ 'assetEncoding', validatorRules.assetEncoding]" @change="handleChange" >
  17. <!-- <a-select-option :value="undefined">请选择</a-select-option> -->
  18. <a-select-option
  19. v-for="(item,index) in assets"
  20. :key="index"
  21. :value="item.assetNumber">
  22. {{ item.assetNumber }}
  23. </a-select-option>
  24. </a-select>
  25. </a-form-item>
  26. <a-form-item label="资产名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
  27. <a-input v-decorator="[ 'assetName', validatorRules.assetName]" placeholder="请输入资产名称" ></a-input>
  28. </a-form-item>
  29. <a-form-item label="资产类别" :labelCol="labelCol" :wrapperCol="wrapperCol">
  30. <a-input v-decorator="[ 'assetsCategory', validatorRules.assetsCategory]" placeholder="请输入资产类别" disabled></a-input>
  31. </a-form-item>
  32. <a-form-item label="规格型号" :labelCol="labelCol" :wrapperCol="wrapperCol">
  33. <a-input v-decorator="[ 'specificationsModels', validatorRules.specificationsModels]" placeholder="请输入规格型号" disabled></a-input>
  34. </a-form-item>
  35. <a-form-item label="原值" :labelCol="labelCol" :wrapperCol="wrapperCol">
  36. <a-input v-decorator="[ 'originalValue', validatorRules.originalValue]" placeholder="请输入原值" disabled></a-input>
  37. </a-form-item>
  38. <a-form-item label="购置日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
  39. <a-input v-decorator="[ 'carAcquisitionDate', validatorRules.carAcquisitionDate]" placeholder="请输入购置日期" disabled></a-input>
  40. </a-form-item>
  41. <a-form-item label="使用年限" :labelCol="labelCol" :wrapperCol="wrapperCol">
  42. <a-input v-decorator="[ 'durableYears', validatorRules.durableYears]" placeholder="请输入使用年限" disabled></a-input>
  43. </a-form-item>
  44. <a-form-item label="存放地点" :labelCol="labelCol" :wrapperCol="wrapperCol">
  45. <a-input v-decorator="[ 'storageLocation', validatorRules.storageLocation]" placeholder="请输入存放地点"></a-input>
  46. </a-form-item>
  47. <a-form-item label="使用人" :labelCol="labelCol" :wrapperCol="wrapperCol">
  48. <j-select-user-by-dep v-decorator="['usePersonnel', validatorRules.usePersonnel]" :trigger-change="true" />
  49. </a-form-item>
  50. <a-form-item label="使用部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
  51. <j-select-depart v-decorator="['useDepartment', validatorRules.useDepartment]" :trigger-change="true" customReturnField="departName"/>
  52. </a-form-item>
  53. <a-form-item label="资产状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
  54. <j-dict-select-tag type="list" v-decorator="['assetState', validatorRules.assetState]" :trigger-change="true" dictCode="assets_status" placeholder="请选择资产状态"/>
  55. </a-form-item>
  56. <a-form-item label="附件" :labelCol="labelCol" :wrapperCol="wrapperCol">
  57. <j-upload v-decorator="['accessory', validatorRules.accessory]" :trigger-change="true"></j-upload>
  58. </a-form-item>
  59. </a-form>
  60. </a-spin>
  61. </a-modal>
  62. </template>
  63. <script>
  64. import { httpAction, getAction } from '@/api/manage'
  65. import pick from 'lodash.pick'
  66. import { validateDuplicateValue } from '@/utils/util'
  67. import JDate from '@/components/jeecg/JDate'
  68. import JUpload from '@/components/jeecg/JUpload'
  69. import JSelectDepart from '@/components/jeecgbiz/JSelectDepart'
  70. import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
  71. import JDictSelectTag from "@/components/dict/JDictSelectTag"
  72. import moment from 'moment'
  73. export default {
  74. name: "InventoryRecordsModal",
  75. components: {
  76. JDate,
  77. JUpload,
  78. JSelectDepart,
  79. JSelectUserByDep,
  80. JDictSelectTag,
  81. },
  82. data () {
  83. return {
  84. form: this.$form.createForm(this),
  85. title:"操作",
  86. width:800,
  87. visible: false,
  88. model: {},
  89. labelCol: {
  90. xs: { span: 24 },
  91. sm: { span: 5 },
  92. },
  93. wrapperCol: {
  94. xs: { span: 24 },
  95. sm: { span: 16 },
  96. },
  97. confirmLoading: false,
  98. validatorRules: {
  99. checkDate: {rules: [
  100. ]},
  101. assetEncoding: {rules: [
  102. ]},
  103. assetName: {rules: [
  104. ]},
  105. assetsCategory: {rules: [
  106. ]},
  107. specificationsModels: {rules: [
  108. ]},
  109. originalValue: {rules: [
  110. ]},
  111. carAcquisitionDate: {rules: [
  112. ]},
  113. durableYears: {rules: [
  114. ]},
  115. storageLocation: {rules: [
  116. ]},
  117. usePersonnel: {rules: [
  118. ]},
  119. useDepartment: {rules: [
  120. ]},
  121. assetState: {rules: [
  122. ]},
  123. accessory: {rules: [
  124. ]},
  125. },
  126. url: {
  127. add: "/oa/inventoryRecords/add",
  128. edit: "/oa/inventoryRecords/edit",
  129. allAssets: "/oa/assets/all",
  130. },
  131. assets: []
  132. }
  133. },
  134. mounted () {
  135. this.initAssets()
  136. },
  137. methods: {
  138. add () {
  139. this.edit({});
  140. },
  141. edit (record) {
  142. this.form.resetFields();
  143. this.model = Object.assign({}, record);
  144. this.visible = true;
  145. this.$nextTick(() => {
  146. this.form.setFieldsValue(pick(this.model,'checkDate','assetEncoding','assetName','assetsCategory','specificationsModels','originalValue','carAcquisitionDate','durableYears','storageLocation','usePersonnel','useDepartment','assetState','accessory'))
  147. })
  148. },
  149. close () {
  150. this.$emit('close');
  151. this.visible = false;
  152. },
  153. handleOk () {
  154. const that = this;
  155. // 触发表单验证
  156. this.form.validateFields((err, values) => {
  157. if (!err) {
  158. that.confirmLoading = true;
  159. let httpurl = '';
  160. let method = '';
  161. if(!this.model.id){
  162. httpurl+=this.url.add;
  163. method = 'post';
  164. }else{
  165. httpurl+=this.url.edit;
  166. method = 'put';
  167. }
  168. let formData = Object.assign(this.model, values);
  169. console.log("表单提交数据",formData)
  170. httpAction(httpurl,formData,method).then((res)=>{
  171. if(res.success){
  172. that.$message.success(res.message);
  173. that.$emit('ok');
  174. }else{
  175. that.$message.warning(res.message);
  176. }
  177. }).finally(() => {
  178. that.confirmLoading = false;
  179. that.close();
  180. })
  181. }
  182. })
  183. },
  184. handleCancel () {
  185. this.close()
  186. },
  187. popupCallback(row){
  188. this.form.setFieldsValue(pick(row,'checkDate','assetEncoding','assetName','assetsCategory','specificationsModels','originalValue','carAcquisitionDate','durableYears','storageLocation','usePersonnel','useDepartment','assetState','accessory'))
  189. },
  190. initAssets(){
  191. getAction(this.url.allAssets).then((res)=>{
  192. if(res.success){
  193. this.assets = res.result
  194. }else {
  195. this.$message.warning(res.message)
  196. }
  197. })
  198. },
  199. handleChange(val,op){
  200. var asset = this.assets.find(i=>{
  201. return i.assetNumber===val
  202. })
  203. console.log(asset)
  204. let durableYears = moment(asset.acquisitionDate,"YYYY-MM-DD").diff(moment(),"year")
  205. this.form.setFieldsValue({
  206. assetName:asset.assetName,
  207. assetsCategory:asset.assetsCategory,
  208. specificationsModels:asset.specificationsModels,
  209. originalValue:asset.unitPrice,
  210. carAcquisitionDate:asset.acquisitionDate,
  211. durableYears:durableYears,
  212. })
  213. }
  214. }
  215. }
  216. </script>