particulars.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <template>
  2. <div class="particulars">
  3. <el-dialog v-model="outerVisible" :title="data.drawerTiti" draggable destroy-on-close>
  4. <div style="border-top:1px solid #ccc;padding-top: 20px;">
  5. <el-form ref="ruleFormRef" label-width="160px">
  6. <el-form-item label="项目名称">
  7. <el-input v-model="fromData.T_name" style="width: 350px;" :disabled="true"/>
  8. </el-form-item>
  9. <el-form-item label="项目地址">
  10. <el-input v-model="fromData.T_address" style="width: 350px;" :disabled="true"/>
  11. </el-form-item>
  12. <el-form-item label="项目负责人">
  13. <el-input v-model="fromData.T_submit_name" style="width: 350px;" :disabled="true"/>
  14. </el-form-item>
  15. <el-form-item label="预计签约时间">
  16. <el-date-picker v-model="fromData.T_predict_sign_time" :disabled="true" value-format="YYYY-MM-DD" type="date" placeholder="预计签约时间" />
  17. </el-form-item>
  18. <el-form-item label="服务内容">
  19. <el-table :data="fromData.ServiceItemList" border style="width: 100%">
  20. <el-table-column type="index" label="序号" width="60" />
  21. <el-table-column prop="address" label="服务类型" show-overflow-tooltip width="100">
  22. <template #default="scope">
  23. {{ scope.row.ServiceItem.ServiceType.T_name }}
  24. </template>
  25. </el-table-column>
  26. <el-table-column prop="address" label="销售类型" show-overflow-tooltip width="100">
  27. <template #default="scope">
  28. {{ scope.row.ServiceItem.T_sale_type }}
  29. </template>
  30. </el-table-column>
  31. <el-table-column prop="address" label="服务内容" show-overflow-tooltip>
  32. <template #default="scope">
  33. {{ scope.row.ServiceItem.T_name }}
  34. </template>
  35. </el-table-column>
  36. <el-table-column prop="address" label="型号" show-overflow-tooltip>
  37. <template #default="scope">
  38. {{ scope.row.ServiceItem.T_model }}
  39. </template>
  40. </el-table-column>
  41. <el-table-column prop="address" label="规格" show-overflow-tooltip width="80">
  42. <template #default="scope">
  43. {{ scope.row.ServiceItem.T_spec }}
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="数量" width="100" show-overflow-tooltip>
  47. <template #default="scope">
  48. {{ scope.row.T_quantity }}
  49. </template>
  50. </el-table-column>
  51. <el-table-column label="单价" width="100">
  52. <template #default="scope">
  53. {{ scope.row.T_unit_price }}
  54. </template>
  55. </el-table-column>
  56. <el-table-column prop="address" label="金额" show-overflow-tooltip>
  57. <template #default="scope">
  58. {{ scope.row.T_quantity * scope.row.T_unit_price }}
  59. </template>
  60. </el-table-column>
  61. <el-table-column prop="T_remark" label="备注" show-overflow-tooltip>
  62. <template #default="scope">
  63. {{ scope.row.T_remark }}
  64. </template>
  65. </el-table-column>
  66. <!-- <el-table-column prop="address" label="操作" width="80" fixed="right">
  67. <template #default="scope">
  68. <el-button link type="danger" size="small" :icon="Delete" @click="onclickdelete(scope)">删除</el-button>
  69. </template>
  70. </el-table-column> -->
  71. </el-table>
  72. </el-form-item>
  73. <el-form-item label="总金额">
  74. {{ moneyFun() }}
  75. </el-form-item>
  76. <el-form-item label="是否有居间费">
  77. <el-radio-group v-model="fromData.T_have_brokerage_fee" :disabled="true">
  78. <el-radio :label="true">是</el-radio>
  79. <el-radio :label="false">否</el-radio>
  80. </el-radio-group>
  81. </el-form-item>
  82. <el-form-item label="居间费金额">
  83. {{ fromData.T_brokerage_fee_money }}
  84. </el-form-item>
  85. <el-form-item label="状态">
  86. <el-tag :type="[1,2].includes(fromData.T_audit) ? 'warning' :
  87. [3,5].includes(fromData.T_audit) ? 'primary' :
  88. [4,6].includes(fromData.T_audit) ? 'danger' : ''">
  89. {{
  90. fromData.T_audit == '1' ? '待提交审核' :
  91. fromData.T_audit == '2' ? '待审核' :
  92. fromData.T_audit == '3' ? '财务通过' :
  93. fromData.T_audit == '4' ? '财务驳回' :
  94. fromData.T_audit == '5' ? '总经理通过' :
  95. fromData.T_audit == '6' ? '总经理驳回' : ''
  96. }}
  97. </el-tag>
  98. </el-form-item>
  99. <el-form-item label="成本会计审批意见" v-if="data.drawerTiti == '详情' || types=='Manager'">
  100. <el-alert :title="
  101. fromData.T_finance_approval_opinion?fromData.T_finance_approval_opinion:'暂无' "
  102. :type="[4].includes(fromData.T_audit)?'error':'success'" :closable="false" />
  103. </el-form-item>
  104. <el-form-item label="成本会计审批意见" v-if="data.drawerTiti == '审核' && types=='Finance'">
  105. <el-input v-model="data.initParam.T_approval_opinion" :rows="3" type="textarea" placeholder="审批意见" />
  106. </el-form-item>
  107. <el-form-item label="总经理审批意见" v-if="data.drawerTiti == '详情'">
  108. <el-alert :title=" fromData.T_manager_approval_opinion?fromData.T_manager_approval_opinion:'暂无'"
  109. :type="[6].includes(fromData.T_audit)?'error':'success'" :closable="false" />
  110. </el-form-item>
  111. <el-form-item label="总经理审批意见" v-if="data.drawerTiti == '审核' && types=='Manager'">
  112. <el-input v-model="data.initParam.T_approval_opinion" :rows="3" type="textarea" placeholder="审批意见" />
  113. </el-form-item>
  114. </el-form>
  115. </div>
  116. <template #footer v-if="data.drawerTiti != '详情'">
  117. <div class="dialog-footer"
  118. style="border-top:1px solid #ccc;padding-top: 20px;display: flex;justify-content: center;gap: 40px;">
  119. <el-button type="primary" @click="onSubmit(audit[0])">同意</el-button>
  120. <el-button type="danger" @click="onSubmit(audit[1])">驳回</el-button>
  121. </div>
  122. </template>
  123. </el-dialog>
  124. </div>
  125. </template>
  126. <script setup lang='ts'>
  127. import { ref, reactive, watch } from 'vue';
  128. import type {FormInstance } from 'element-plus'
  129. import { ElMessage } from 'element-plus'
  130. import {
  131. Review_Finance_Audit,
  132. Review_Manager_Audit
  133. } from '@/api/contractReview/index'
  134. const outerVisible = ref(false)
  135. const ruleFormRef = ref<FormInstance>()
  136. const props = defineProps({
  137. fromData: {
  138. type: Object,
  139. default: () => { },
  140. },
  141. types: {
  142. type: String,
  143. default: () => '',
  144. },
  145. audit:{
  146. type: Array,
  147. default: () => [0,0],
  148. }
  149. })
  150. watch(()=>outerVisible.value,(newData:any)=>{
  151. if(newData){
  152. console.log('展示', props.fromData)
  153. }
  154. })
  155. const data: any = reactive({
  156. drawerTiti: '',
  157. initParam: {
  158. T_id: null,
  159. T_audit: '',
  160. T_approval_opinion: '',
  161. },
  162. fromData: {},
  163. optionsType: [{ T_name: '/' }, { T_name: '软件' }, { T_name: '硬件' }],
  164. })
  165. const moneyFun = () => {
  166. let total = props.fromData.ServiceItemList.reduce((acc: any, item: any) => {
  167. return acc + item.T_quantity * item.T_unit_price;
  168. }, 0);
  169. props.fromData.T_money = total
  170. return total + '元';
  171. }
  172. const onSubmit = async (audit:any) => {
  173. data.initParam.T_id = props.fromData.Id
  174. data.initParam.T_audit = audit
  175. props.types=='Finance'?financeAuditApi():managerAuditApi()
  176. }
  177. const emit = defineEmits<{ (event: 'successFun', value: boolean): void }>()
  178. //财务
  179. const financeAuditApi = async ()=>{
  180. const result:any = await Review_Finance_Audit(data.initParam)
  181. console.log('财务提交',result)
  182. if(result.Code==200){
  183. ElMessage.success('审核成功')
  184. emit('successFun', true)
  185. outerVisible.value = false
  186. }
  187. }
  188. //总经理
  189. const managerAuditApi = async ()=>{
  190. const result:any = await Review_Manager_Audit(data.initParam)
  191. if(result.Code==200){
  192. ElMessage.success('审核成功')
  193. emit('successFun', true)
  194. outerVisible.value = false
  195. }
  196. console.log('总经理提交',result)
  197. }
  198. defineExpose({
  199. outerVisible, data
  200. })
  201. </script>
  202. <style lang="scss" scoped>
  203. ::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner {
  204. display: none !important;
  205. }
  206. // ::v-deep .el-dialog__body {
  207. // padding: 0;
  208. // }</style>