edit.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <template>
  2. <div>
  3. <a-button type="primary" @click="showDrawer">编辑</a-button>
  4. <a-drawer
  5. v-model:open="visible"
  6. class="custom-class"
  7. title="编辑年度目标"
  8. placement="right"
  9. :get-container="!fullscreen"
  10. :style="{ position: 'absolute' }"
  11. width="500"
  12. :closable="false"
  13. @close="onClose"
  14. >
  15. <a-form ref="formRef" :model="form" layout="vertical">
  16. <a-row :gutter="16">
  17. <a-col :span="24">
  18. <a-form-item label="年度" name="year" :rules="[{ required: true, message: '请选择目标年度' }]">
  19. <a-date-picker disabled style="width:100%" v-model:value="form.year" value-format="YYYY" picker="year" />
  20. </a-form-item>
  21. </a-col>
  22. <a-col :span="24">
  23. <a-form-item label="考核指标">
  24. <a-radio-group style="width:100%" v-model:value="form.assessmentindicators" @change="onChange">
  25. <a-radio value="订单">订单</a-radio>
  26. <a-radio value="出货">出货</a-radio>
  27. <!-- <a-radio value="开票">开票</a-radio> -->
  28. <a-radio value="收款">收款</a-radio>
  29. </a-radio-group>
  30. </a-form-item>
  31. </a-col>
  32. <a-col v-if="form.assessmentindicators !== '收款'">
  33. <a-form-item label="统计方式">
  34. <a-radio-group style="width:100%" v-model:value="form.statisticaldimensionValue">
  35. <a-radio v-for="item in options" :key="item.index" :value="item.value">{{item.name}}</a-radio>
  36. </a-radio-group>
  37. </a-form-item>
  38. </a-col>
  39. <a-col :span="24" v-else>
  40. <a-form-item label="选择资金账户" name="sa_accountclassids" :rules="[{ required: true, message: '请选择资金账户' }]">
  41. <a-select
  42. v-model:value="form.sa_accountclassids"
  43. mode="multiple"
  44. style="width:100%"
  45. placeholder="请选择">
  46. <a-select-option v-for="item in alist" :key="item.sa_accountclassid" :value="item.sa_accountclassid">{{item.accountname}}</a-select-option>
  47. </a-select>
  48. </a-form-item>
  49. <a-form-item label="类型">
  50. <a-select
  51. v-model:value="form.statisticaldimensionTypeValue"
  52. mode="multiple"
  53. style="width:100%"
  54. placeholder="请选择"
  55. @change="onTypeChange">
  56. <a-select-option v-for="item in tlist" :key="item.index" :value="item.value"></a-select-option>
  57. </a-select>
  58. </a-form-item>
  59. <a-form-item label="明细">
  60. <a-select
  61. v-model:value="form.statisticaldimensionMxValue"
  62. mode="multiple"
  63. style="width:100%"
  64. placeholder="请选择">
  65. <a-select-option v-for="item in mxlist" :key="item.index" :value="item"></a-select-option>
  66. </a-select>
  67. </a-form-item>
  68. </a-col>
  69. </a-row>
  70. </a-form>
  71. <template #extra>
  72. <a-space>
  73. <a-button @click="onClose">关闭</a-button>
  74. <a-button type="primary" @click="submit">保存</a-button>
  75. </a-space>
  76. </template>
  77. </a-drawer>
  78. </div>
  79. </template>
  80. <script setup>
  81. import {ref,defineEmits,defineProps} from 'vue'
  82. import Api from '@/api/api'
  83. import utils from '@/utils/utils'
  84. import { storeToRefs } from 'pinia'
  85. import { useBaseStore } from '@/stores/modules/base'
  86. const base = useBaseStore()
  87. let { fullscreen } = storeToRefs(base)
  88. const emit = defineEmits(['onSuccess'])
  89. const props = defineProps(['data'])
  90. const visible = ref(false)
  91. const form = ref({
  92. sa_salestargetbillid:0,
  93. year:"",
  94. sales:[],
  95. assessmentindicators:"收款",
  96. statisticaldimensionValue:'',
  97. sa_accountclassids:[],
  98. statisticaldimensionTypeValue:[],
  99. statisticaldimensionMxValue:[]
  100. })
  101. const showDrawer = ()=>{
  102. let obj = {
  103. sa_salestargetbillid:props.data.sa_salestargetbillid,
  104. year:String(props.data.year),
  105. sa_accountclassids:props.data.sa_accountclassids[0]?[props.data.sa_accountclassids[0].sa_accountclassid] : '',
  106. assessmentindicators:props.data.assessmentindicators,
  107. }
  108. form.value = Object.assign({},form.value,obj)
  109. form.value.statisticaldimensionTypeValue = props.data.statisticaldimension.type
  110. form.value.statisticaldimensionMxValue = props.data.statisticaldimension.mx
  111. visible.value = true
  112. onChange({
  113. target:{
  114. value:props.data.assessmentindicators
  115. }
  116. })
  117. accountList()
  118. typeList()
  119. }
  120. const onClose = () => {
  121. visible.value = false;
  122. formRef.value.resetFields();
  123. };
  124. const formRef = ref()
  125. const submit = async () => {
  126. console.log(form.value)
  127. const values = await formRef.value.validateFields();
  128. if (form.value.assessmentindicators !== '收款') {
  129. form.value.statisticaldimension = form.value.statisticaldimensionValue
  130. } else {
  131. form.value.statisticaldimension = {
  132. mx:form.value.statisticaldimensionMxValue,
  133. type:form.value.statisticaldimensionTypeValue
  134. }
  135. }
  136. const res = await Api.post({
  137. "id": "20220831165302",
  138. content:{
  139. sa_salestargetbillid:props.data.sa_salestargetbillid,
  140. sales:[],
  141. year:form.value.year,
  142. statisticaldimension:form.value.statisticaldimension,
  143. assessmentindicators:form.value.assessmentindicators,
  144. sa_accountclassids:form.value.sa_accountclassids,
  145. }
  146. })
  147. utils.message(res,'保存成功!',()=>{
  148. emit('onSuccess')
  149. onClose()
  150. })
  151. }
  152. const options=ref([{name:'订单审核',value:'订单审核'},{name:'订单提交',value:'订单提交'}])
  153. const onChange = ({target})=>{
  154. switch (target.value) {
  155. case '订单':
  156. form.value.sa_accountclassids = []
  157. form.value.statisticaldimensionValue = '订单审核'
  158. options.value = [{name:'订单审核',value:'订单审核'},{name:'订单提交',value:'订单提交'}]
  159. break;
  160. case '出货':
  161. form.value.sa_accountclassids = []
  162. form.value.statisticaldimensionValue = '销售出库单审核'
  163. options.value = [{name:'销售出库单审核',value:'销售出库单审核'}]
  164. break
  165. case '开票':
  166. form.value.statisticaldimensionTypeValue = []
  167. form.value.statisticaldimensionMxValue = []
  168. form.value.statisticaldimensionValue = '开票单审核'
  169. options.value = [{name:'开票单审核',value:'开票单审核'}]
  170. break
  171. default:
  172. options.value = []
  173. accountList()
  174. typeList()
  175. break;
  176. }
  177. }
  178. const alist = ref([])
  179. const accountList = async () => {
  180. const res = await Api.requested({
  181. id:20221008134803,
  182. content:{
  183. pageNumber:1,
  184. pageSize:100
  185. }
  186. })
  187. alist.value = res.data
  188. }
  189. const tlist = ref([])
  190. const typeList = async () => {
  191. const res = await Api.optionstype('cashbillrectype')
  192. tlist.value = res.data
  193. }
  194. const mxlist = ref([])
  195. const onTypeChange = (val)=>{
  196. let mx = new Map()
  197. tlist.value.forEach((e)=>{
  198. mx.set(e.remarks,e.subvalues)
  199. })
  200. mxlist.value = []
  201. val.forEach(e => {
  202. mxlist.value = mxlist.value.concat(mx.get(e))
  203. form.value.statisticaldimensionMxValue = mxlist.value
  204. });
  205. }
  206. </script>
  207. <style>
  208. </style>