accountsDialog.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <template>
  2. <div>
  3. <el-form :model="form" ref="form" label-width="70px" class="demo-ruleForm">
  4. <el-row :gutter="20">
  5. <el-col :span="12">
  6. <el-form-item label="科目编码:" prop="code">
  7. <el-input style="width: 100%;" v-model="form.code"
  8. size="small" autocomplete="off"
  9. clearable placeholder="请输入科目编码" >
  10. </el-input>
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="12">
  14. <el-form-item label="科目名称:" prop="cnName">
  15. <el-input style="width: 100%;" v-model="form.cnName"
  16. size="small" autocomplete="off"
  17. clearable placeholder="请输入科目名称" >
  18. </el-input>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="12">
  22. <el-form-item label="方向:" prop="dc">
  23. <search-query :datalist="dcData"
  24. :selectValue="form.dc"
  25. :filterable="true"
  26. :clearable="true"
  27. :remote="true"
  28. :buttonIf="false"
  29. placeholder="请选择方向"
  30. @corpChange="corpChange($event,'dc')">
  31. </search-query>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="12">
  35. <el-form-item label="科目类别:" prop="property">
  36. <search-query :datalist="propertyData"
  37. :selectValue="form.property"
  38. :filterable="true"
  39. :clearable="true"
  40. :remote="true"
  41. :buttonIf="false"
  42. placeholder="请选择科目类别"
  43. :forParameter="{key:'dictKey',label:'dictValue',value:'dictKey'}"
  44. @remoteMethod="propertyWorkDictsfun"
  45. @corpChange="corpChange($event,'property')"
  46. @corpFocus="propertyWorkDictsfun">
  47. </search-query>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="12">
  51. <el-form-item label="上级科目:" prop="parentCode">
  52. <el-input style="width: 100%;" v-model="form.parentCode"
  53. size="small" autocomplete="off" :disabled="true"
  54. clearable placeholder="请输入上级科目" >
  55. </el-input>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="12">
  59. <el-form-item label="币种:" prop="curCode">
  60. <search-query :datalist="curData"
  61. :selectValue="form.curCode"
  62. :filterable="true"
  63. :clearable="true"
  64. :remote="true"
  65. :buttonIf="false"
  66. placeholder="请选择币种"
  67. :forParameter="{key:'id',label:'code',value:'code'}"
  68. @remoteMethod="getRateListfun"
  69. @corpChange="corpChange($event,'curCode')"
  70. @corpFocus="getRateListfun">
  71. </search-query>
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="24">
  75. <el-form-item label="辅助核算:">
  76. <el-checkbox size="medium" :true-label="1" :false-label="0" v-model="form.isItem">项目</el-checkbox>
  77. <el-checkbox size="medium" :true-label="1" :false-label="0" v-model="form.isCorp">客户</el-checkbox>
  78. <el-checkbox size="medium" :true-label="1" :false-label="0" v-model="form.isDept">部门</el-checkbox>
  79. <el-checkbox size="medium" :true-label="1" :false-label="0" v-model="form.isEmpl">职员</el-checkbox>
  80. <el-checkbox size="medium" :true-label="1" :false-label="0" v-model="form.isStock">库存</el-checkbox>
  81. </el-form-item>
  82. </el-col>
  83. <el-row v-if="form.isItem == 0">
  84. <el-col :span="24">
  85. <el-form-item label="单价" prop="price">
  86. <el-input style="width: 100%;" v-model="form.price"
  87. size="small" autocomplete="off" @blur="countBlur"
  88. clearable placeholder="请输入单价" >
  89. </el-input>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="6">
  93. <el-form-item label="期初借方数量" prop="quantityOpenDr" label-width="100px" >
  94. <el-input style="width: 100%;" v-model="form.quantityOpenDr"
  95. size="small" autocomplete="off" @blur="countBlur"
  96. clearable placeholder="请输入期初借方数量" >
  97. </el-input>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="6" v-if="form.curCode == 'USD'">
  101. <el-form-item label="期初借方金额" prop="amountOpenDrUsd" label-width="100px">
  102. <el-input style="width: 100%;" v-model="form.amountOpenDrUsd"
  103. size="small" autocomplete="off" :disabled="true"
  104. clearable placeholder="请输入期初借方金额" >
  105. </el-input>
  106. </el-form-item>
  107. </el-col>
  108. <el-col :span="6" v-if="form.curCode == 'CNY'">
  109. <el-form-item label="期初借方金额" prop="quantityOpenDr" label-width="100px">
  110. <el-input style="width: 100%;" v-model="form.amountOpenDr"
  111. size="small" autocomplete="off" :disabled="true"
  112. clearable placeholder="请输入期初借方金额" >
  113. </el-input>
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="6">
  117. <el-form-item label="期初贷方数量" prop="quantityOpenCr" label-width="100px" >
  118. <el-input style="width: 100%;" v-model="form.quantityOpenCr"
  119. size="small" autocomplete="off" @blur="countBlur"
  120. clearable placeholder="请输入期初贷方数量" >
  121. </el-input>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="6" v-if="form.curCode == 'USD'" >
  125. <el-form-item label="期初贷方金额" prop="amountOpenCrUsd" label-width="100px">
  126. <el-input style="width: 100%;" v-model="form.amountOpenCrUsd"
  127. size="small" autocomplete="off" :disabled="true"
  128. clearable placeholder="请输入期初贷方金额" >
  129. </el-input>
  130. </el-form-item>
  131. </el-col>
  132. <el-col :span="6" v-if="form.curCode == 'CNY'" >
  133. <el-form-item label="期初贷方金额" prop="amountOpenCr" label-width="100px">
  134. <el-input style="width: 100%;" v-model="form.amountOpenCr"
  135. size="small" autocomplete="off" :disabled="true"
  136. clearable placeholder="请输入期初贷方金额" >
  137. </el-input>
  138. </el-form-item>
  139. </el-col>
  140. <el-col :span="6">
  141. <el-form-item label="本期借方数量" prop="quantityDr" label-width="100px" >
  142. <el-input style="width: 100%;" v-model="form.quantityDr"
  143. size="small" autocomplete="off" @blur="countBlur"
  144. clearable placeholder="请输入本期借方数量" >
  145. </el-input>
  146. </el-form-item>
  147. </el-col>
  148. <el-col :span="6" v-if="form.curCode == 'USD'" >
  149. <el-form-item label="本期借方金额" prop="amountDrUsd" label-width="100px">
  150. <el-input style="width: 100%;" v-model="form.amountDrUsd"
  151. size="small" autocomplete="off" :disabled="true"
  152. clearable placeholder="请输入本期借方金额" >
  153. </el-input>
  154. </el-form-item>
  155. </el-col>
  156. <el-col :span="6" v-if="form.curCode == 'CNY'" >
  157. <el-form-item label="本期借方金额" prop="amountDr" label-width="100px">
  158. <el-input style="width: 100%;" v-model="form.amountDr"
  159. size="small" autocomplete="off" :disabled="true"
  160. clearable placeholder="请输入本期借方金额" >
  161. </el-input>
  162. </el-form-item>
  163. </el-col>
  164. <el-col :span="6">
  165. <el-form-item label="本期贷方数量" prop="quantityCr" label-width="100px" >
  166. <el-input style="width: 100%;" v-model="form.quantityCr"
  167. size="small" autocomplete="off"
  168. clearable placeholder="请输入本期贷方数量" >
  169. </el-input>
  170. </el-form-item>
  171. </el-col>
  172. <el-col :span="6" v-if="form.curCode == 'USD'" >
  173. <el-form-item label="本期贷方金额" prop="amountCrUsd" label-width="100px">
  174. <el-input style="width: 100%;" v-model="form.amountCrUsd"
  175. size="small" autocomplete="off" :disabled="true"
  176. clearable placeholder="请输入本期贷方金额" >
  177. </el-input>
  178. </el-form-item>
  179. </el-col>
  180. <el-col :span="6" v-if="form.curCode == 'CNY'" >
  181. <el-form-item label="本期贷方金额" prop="amountCr" label-width="100px">
  182. <el-input style="width: 100%;" v-model="form.amountCr"
  183. size="small" autocomplete="off" :disabled="true"
  184. clearable placeholder="请输入本期贷方金额" >
  185. </el-input>
  186. </el-form-item>
  187. </el-col>
  188. </el-row>
  189. </el-row>
  190. </el-form>
  191. </div>
  192. </template>
  193. <script>
  194. import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
  195. import {getRateList} from "@/api/iosBasicData/rateManagement";
  196. import {getBunitsPage} from "@/api/iosBasicData/bunits";
  197. import {baccitemstypeList} from "@/api/iosBasicData/baccitemstype";
  198. import {getWorkDicts} from "@/api/system/dictbiz";
  199. export default {
  200. components: {SearchQuery},
  201. props:{
  202. form:{
  203. type:Object,
  204. default:{}
  205. }
  206. },
  207. data(){
  208. return {
  209. // 方向数据
  210. dcData:[
  211. {
  212. label:'借方',
  213. value:'D',
  214. },
  215. {
  216. label:'贷方',
  217. value:'C',
  218. }
  219. ],
  220. curData:[], // 币别数据
  221. unitNoData:[], // 单位
  222. propertyData:[], // 核算项目数据
  223. }
  224. },
  225. methods:{
  226. // 金额计算
  227. countBlur(){
  228. this.$set(this.form,'price',this.form.price?Number(this.form.price):0) // 单价
  229. this.$set(this.form,'quantityOpenDr',this.form.quantityOpenDr?Number(this.form.quantityOpenDr):0) // 期初借方数量
  230. this.$set(this.form,'quantityOpenCr',this.form.quantityOpenCr?Number(this.form.quantityOpenCr):0) // 期初贷方数量
  231. this.$set(this.form,'quantityDr',this.form.quantityDr?Number(this.form.quantityDr):0) // 本期借方数量
  232. this.$set(this.form,'quantityCr',this.form.quantityCr?Number(this.form.quantityCr):0) // 本期贷方数量
  233. if (this.form.curCode == 'USD') {
  234. // 期初借方外币金额 = 单价 * 期初借方数量
  235. this.$set(this.form,'amountOpenDrUsd',Number(this.form.price) * Number(this.form.quantityOpenDr))
  236. // 期初贷方外币金额 = 单价 * 期初贷方数量
  237. this.$set(this.form,'amountOpenCrUsd',Number(this.form.price) * Number(this.form.quantityOpenCr))
  238. // 期初外币余额 = 期初贷方外币金额 - 期初借方外币金额
  239. this.$set(this.form,'amountOpenUsdBlc',Number(this.form.amountOpenCrUsd) - Number(this.form.amountOpenDrUsd))
  240. // 本期借方外币金额 = 单价 * 本期借方数量
  241. this.$set(this.form,'amountDrUsd',Number(this.form.price) * Number(this.form.quantityDr))
  242. // 本期贷方外币金额 = 单价 * 本期贷方数量
  243. this.$set(this.form,'amountCrUsd',Number(this.form.price) * Number(this.form.quantityCr))
  244. // 本期外币余额 = 本期贷方外币金额 - 本期借方外币金额
  245. this.$set(this.form,'amountUsdBlc',Number(this.form.amountCrUsd) - Number(this.form.amountDrUsd))
  246. }else {
  247. // 期初借方本币金额 = 单价 * 期初借方数量
  248. this.$set(this.form,'amountOpenDr',Number(this.form.price) * Number(this.form.quantityOpenDr))
  249. // 期初贷方本币金额 = 单价 * 期初贷方数量
  250. this.$set(this.form,'amountOpenCr',Number(this.form.price) * Number(this.form.quantityOpenCr))
  251. // 期初本币余额 = 期初贷方本币金额 - 期初借方本币金额
  252. this.$set(this.form,'amountOpenBlc',Number(this.form.amountOpenCr) - Number(this.form.amountOpenDr))
  253. // 本期借方本币金额 = 单价 * 本期借方数量
  254. this.$set(this.form,'amountDr',Number(this.form.price) * Number(this.form.quantityDr))
  255. // 本期贷方本币金额 = 单价 * 本期贷方数量
  256. this.$set(this.form,'amountCr',Number(this.form.price) * Number(this.form.quantityCr))
  257. // 本期本币余额 = 本期贷方本币金额 - 本期借方本币金额
  258. this.$set(this.form,'amountBlc',Number(this.form.amountCr) - Number(this.form.amountDr))
  259. }
  260. // 期初余额数量 = 期初贷方数量 - 期初借方数量
  261. this.$set(this.form,'quantityOpenBlc',Number(this.form.quantityOpenCr) - Number(this.form.quantityOpenDr))
  262. // 本期余额数量 = 本期贷方数量 - 本期借方数量
  263. this.$set(this.form,'quantityBlc',Number(this.form.quantityCr) - Number(this.form.quantityDr))
  264. },
  265. // 下拉回调
  266. corpChange(value,name){
  267. if (name == 'curCode') {
  268. for (let item of this.curData) {
  269. if (item.code == value) {
  270. this.$set(this.form,'curCode',item.code)
  271. this.$set(this.form,'exrate',item.exrate)
  272. }
  273. }
  274. }else {
  275. this.$set(this.form,name,value)
  276. }
  277. },
  278. // 获取币别数据
  279. getRateListfun(cnName){
  280. getRateList({current:1,size:10,cnName}).then(res=>{
  281. this.curData = res.data.data.records
  282. })
  283. },
  284. // 获取计算属性
  285. getBunitsPagefun(){
  286. getBunitsPage().then(res=>{
  287. this.unitNoData = res.data.data
  288. })
  289. },
  290. // 核算项目数据
  291. propertyWorkDictsfun(cnName){
  292. getWorkDicts('itemClassify_los').then((res) => {
  293. this.propertyData = res.data.data
  294. });
  295. },
  296. }
  297. }
  298. </script>
  299. <style scoped>
  300. ::v-deep.el-form-item {
  301. margin-bottom: 0;
  302. }
  303. </style>