accountsDialog.vue 17 KB

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