fault-detail.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <template>
  2. <div class="fault" v-if="faultDetails1!=null">
  3. <div class="title-fault" >
  4. 产品名称:&nbsp;&nbsp;{{faultDetails1.materialName}}
  5. </div>
  6. <div class="title-fault">
  7. 产品编码:&nbsp;&nbsp;{{faultDetails1.materialCode}}
  8. </div>
  9. </div>
  10. <div class="mainContentBox">
  11. <avue-crud
  12. ref="crudRef"
  13. v-model:search="search"
  14. v-model="form"
  15. :data="data"
  16. :option="option"
  17. v-model:page="page"
  18. @row-save="createRow"
  19. @row-update="updateRow"
  20. @row-del="deleteRow"
  21. @search-change="searchChange"
  22. @search-reset="resetChange"
  23. @selection-change="selectionChange"
  24. >
  25. </avue-crud>
  26. </div>
  27. <div class="fault">
  28. <div class="image-title">图片</div>
  29. <el-image
  30. style="width: 100px; height: 100px"
  31. :src="url"
  32. :zoom-rate="1.2"
  33. :max-scale="7"
  34. :min-scale="0.2"
  35. :preview-src-list="srcList"
  36. :initial-index="4"
  37. fit="cover"
  38. />
  39. </div>
  40. <div class="fault" v-if="faultDetails1!=null">
  41. <div class="fault-detail" v-if="faultDetails1.trackingNumber!=null">不合格审理单号 :&nbsp;&nbsp;{{faultDetails1.trackingNumber}}</div>
  42. <div class="fault-detail" >序列号 :&nbsp;&nbsp;{{faultDetails1.seqNo}}</div>
  43. <div class="fault-detail">故障描述 :&nbsp;&nbsp;{{faultDetails1.remark}}</div>
  44. <div class="fault-detail" v-if="faultDetails1.opinion!=null">线长意见 :&nbsp;&nbsp;{{faultDetails1.opinion}}</div>
  45. <div class="title-fault" style="margin-top: 10px">
  46. 报故人:&nbsp;&nbsp;{{faultDetails1.creator}}
  47. </div>
  48. <div class="title-fault" style="margin-top: 10px">
  49. 报故工位:&nbsp;&nbsp;{{faultDetails1.stationName}}
  50. </div>
  51. <div class="title-fault" style="margin-top: 10px">
  52. 报故数量:&nbsp;&nbsp;{{faultDetails1.unqualifiedNum}}
  53. </div>
  54. <div class="title-fault" style="margin-top: 10px;margin-bottom: 10px" v-if="faultDetails1.result!=undefined&&faultDetails1.result!=''">
  55. 处理结果:&nbsp;&nbsp;{{faultDetails1.result}}
  56. </div>
  57. </div>
  58. <div class="mainContentBox" v-if="faultDetails1!=null&&faultDetails1.currentState==5">
  59. <avue-crud
  60. ref="formRef"
  61. v-model="form"
  62. :data="data2"
  63. :option="option2"
  64. >
  65. </avue-crud>
  66. </div>
  67. </template>
  68. <script setup>
  69. import { ref, getCurrentInstance } from "vue";
  70. import { useCrud } from "@/hooks/userCrud";
  71. import ButtonPermKeys from "@/common/configs/buttonPermission";
  72. import { useCommonStoreHook, useDictionaryStore } from "@/store";
  73. const { isShowTable, tableType } = toRefs(useCommonStoreHook());
  74. import {getFault,getFaultDetails,getSeqNoList} from "@/api/fault"
  75. import dictDataUtil from "@/common/configs/dictDataUtil";
  76. // 数据字典相关
  77. const { dicts } = useDictionaryStore();
  78. const test = () => {
  79. isShowTable.value = true;
  80. tableType.value = tableType.value == 1 ? 2 : 1;
  81. };
  82. const props = defineProps({
  83. escalationFaultId: {
  84. type: String,
  85. default: () => {
  86. return 0;
  87. }
  88. },
  89. dialog:{
  90. type:Object,
  91. default:()=>{
  92. return {};
  93. }
  94. }
  95. })
  96. const url=ref({});
  97. const srcList=ref([]);
  98. const drawingDetail=ref(null);
  99. const drawing=(row)=>{
  100. drawingDetail.value=row;
  101. dialog.visible=true;
  102. }
  103. // 传入一个url,后面不带/
  104. const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
  105. useCrud({
  106. src: "/api/v1/process/escalationDefects",
  107. });
  108. const { dataNoPageList, createRow, updateRow, deleteRow, searchChange, resetChange } =
  109. Methords; //增删改查
  110. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  111. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  112. // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
  113. // const permission = reactive({
  114. // delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
  115. // addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
  116. // editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
  117. // menu: true,
  118. // });
  119. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  120. const router = useRouter();
  121. const formData1=ref({});
  122. const data2=ref([]);
  123. const option2=ref([]);
  124. const formFault=ref({});
  125. const faultDetails1=ref(null);
  126. onMounted(() => {
  127. // console.log("crudRef", crudRef)
  128. search.value.escalationFaultId=props.escalationFaultId;
  129. dataNoPageList();
  130. formData1.value.escalationFaultId=props.escalationFaultId;
  131. formFault.value.escalationFaultId=props.escalationFaultId;
  132. getFault(formData1.value).then((data) => {
  133. if(data.data.length>0){
  134. url.value=dictDataUtil.img_url+data.data[0].fileUrl;
  135. for(let i=0;i<data.data.length;i++){
  136. srcList.value[i]=dictDataUtil.img_url+data.data[i].fileUrl;
  137. }
  138. }
  139. });
  140. getFaultDetails(props.escalationFaultId).then((data) => {
  141. faultDetails1.value = data.data;
  142. if (dicts.disposal_measures_type.length>0) {
  143. for (let i = 0; i < dicts.disposal_measures_type.length; i++) {
  144. if (faultDetails1.value.disposalMeasures === dicts.disposal_measures_type[i].dictValue) {
  145. faultDetails1.value.disposalMeasures = dicts.disposal_measures_type[i].dictLabel;
  146. }
  147. }
  148. }
  149. getSeqNoList(formFault.value).then((data) => {
  150. data2.value=data.data;
  151. for(let i=0;i<data2.value.length;i++){
  152. data2.value[i].$cellEdit=true;
  153. }
  154. });
  155. });
  156. });
  157. // 设置表格列或者其他自定义的option
  158. option.value = Object.assign(option.value, {
  159. addBtn: false,
  160. editBtn:false,
  161. delBtn:false,
  162. viewBtn:false,
  163. menu:false,
  164. columnBtn: false,
  165. gridBtn: false,
  166. column: [
  167. {
  168. label: "缺陷大类",
  169. prop: "bugType",
  170. dicUrl:dictDataUtil.request_url + dictDataUtil.TYPE_CODE.defect_mana,
  171. props: { label: "dictLabel", value: "dictValue" },
  172. },
  173. {
  174. label: "缺陷小类",
  175. prop: "bugName",
  176. },
  177. ],
  178. });
  179. // 设置表格列或者其他自定义的option
  180. option2.value = {
  181. addBtn: false,
  182. editBtn:false,
  183. delBtn:false,
  184. viewBtn:false,
  185. menu:false,
  186. columnBtn: false,
  187. gridBtn: false,
  188. refreshBtn:false,
  189. column: [
  190. {
  191. label: "跟踪卡号",
  192. prop: "seqNo",
  193. labelWidth:130,
  194. },
  195. {
  196. label: "返工工序",
  197. prop: "reworkOperationName",
  198. labelWidth:130,
  199. type:"select",
  200. },
  201. ],
  202. };
  203. </script>
  204. <style>
  205. .title-fault{
  206. float: left;
  207. width: 300px;
  208. }
  209. .fault{
  210. margin-left: 15px;
  211. margin-top: 10px;
  212. display: block;
  213. overflow: hidden;
  214. }
  215. .fault-image{
  216. width: 150px;
  217. float: left;
  218. margin-left: 10px;
  219. overflow: hidden;
  220. }
  221. .image-title{
  222. margin-bottom: 15px;
  223. }
  224. .fault-img{
  225. display: inline-block;
  226. }
  227. .fault-detail{
  228. margin-top: 20px;
  229. }
  230. </style>