fault-detail.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  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" v-if="faultDetails1.remark!=''">故障描述 :&nbsp;&nbsp;{{faultDetails1.remark}}</div>
  44. <div class="fault-detail" v-if="faultDetails1.opinion!=''">线长意见 :&nbsp;&nbsp;{{faultDetails1.opinion}}</div>
  45. <div class="title-fault" style="margin-top: 10px">
  46. 报故人:&nbsp;&nbsp;{{ getLabelByValue(faultDetails1.creator,'user_name_list') }}
  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 { useCommonStoreHook, useDictionaryStore } from "@/store";
  72. const { isShowTable, tableType } = toRefs(useCommonStoreHook());
  73. import {getFault,getFaultDetails,getSeqNoList} from "@/api/fault"
  74. import dictDataUtil from "@/common/configs/dictDataUtil";
  75. // 数据字典相关
  76. const { dicts,getLabelByValue } = useDictionaryStore();
  77. const test = () => {
  78. isShowTable.value = true;
  79. tableType.value = tableType.value == 1 ? 2 : 1;
  80. };
  81. const props = defineProps({
  82. escalationFaultId: {
  83. type: String,
  84. default: () => {
  85. return 0;
  86. }
  87. },
  88. dialog:{
  89. type:Object,
  90. default:()=>{
  91. return {};
  92. }
  93. }
  94. })
  95. const url=ref({});
  96. const srcList=ref([]);
  97. const drawingDetail=ref(null);
  98. const drawing=(row)=>{
  99. drawingDetail.value=row;
  100. dialog.visible=true;
  101. }
  102. // 传入一个url,后面不带/
  103. const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
  104. useCrud({
  105. src: "/api/v1/process/escalationDefects",
  106. });
  107. const { dataNoPageList, createRow, updateRow, deleteRow, searchChange, resetChange } =
  108. Methords; //增删改查
  109. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  110. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  111. // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
  112. // const permission = reactive({
  113. // delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
  114. // addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
  115. // editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
  116. // menu: true,
  117. // });
  118. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  119. const router = useRouter();
  120. const formData1=ref({});
  121. const data2=ref([]);
  122. const option2=ref([]);
  123. const formFault=ref({});
  124. const faultDetails1=ref(null);
  125. onMounted(() => {
  126. // console.log("crudRef", crudRef)
  127. search.value.escalationFaultId=props.escalationFaultId;
  128. dataNoPageList();
  129. formData1.value.escalationFaultId=props.escalationFaultId;
  130. formFault.value.escalationFaultId=props.escalationFaultId;
  131. getFault(formData1.value).then((data) => {
  132. if(data.data.length>0){
  133. url.value=dictDataUtil.img_url+data.data[0].fileUrl;
  134. for(let i=0;i<data.data.length;i++){
  135. srcList.value[i]=dictDataUtil.img_url+data.data[i].fileUrl;
  136. }
  137. }
  138. });
  139. getFaultDetails(props.escalationFaultId).then((data) => {
  140. faultDetails1.value = data.data;
  141. if (dicts.disposal_measures_type.length>0) {
  142. for (let i = 0; i < dicts.disposal_measures_type.length; i++) {
  143. if (faultDetails1.value.disposalMeasures === dicts.disposal_measures_type[i].dictValue) {
  144. faultDetails1.value.disposalMeasures = dicts.disposal_measures_type[i].dictLabel;
  145. }
  146. }
  147. }
  148. getSeqNoList(formFault.value).then((data) => {
  149. data2.value=data.data;
  150. for(let i=0;i<data2.value.length;i++){
  151. data2.value[i].$cellEdit=true;
  152. }
  153. });
  154. });
  155. });
  156. // 设置表格列或者其他自定义的option
  157. option.value = Object.assign(option.value, {
  158. addBtn: false,
  159. editBtn:false,
  160. delBtn:false,
  161. viewBtn:false,
  162. menu:false,
  163. columnBtn: false,
  164. gridBtn: false,
  165. column: [
  166. {
  167. label: "缺陷大类",
  168. prop: "bugType",
  169. dicUrl:dictDataUtil.request_url + dictDataUtil.TYPE_CODE.defect_mana,
  170. props: { label: "dictLabel", value: "dictValue" },
  171. },
  172. {
  173. label: "缺陷小类",
  174. prop: "bugName",
  175. },
  176. ],
  177. });
  178. // 设置表格列或者其他自定义的option
  179. option2.value = {
  180. addBtn: false,
  181. editBtn:false,
  182. delBtn:false,
  183. viewBtn:false,
  184. menu:false,
  185. columnBtn: false,
  186. gridBtn: false,
  187. refreshBtn:false,
  188. column: [
  189. {
  190. label: "跟踪卡号",
  191. prop: "seqNo",
  192. },
  193. {
  194. label: "返工工序/报废",
  195. prop: "reworkOperationName",
  196. type:"select",
  197. },
  198. ],
  199. };
  200. </script>
  201. <style>
  202. .title-fault{
  203. float: left;
  204. width: 300px;
  205. }
  206. .fault{
  207. margin-left: 15px;
  208. margin-top: 10px;
  209. display: block;
  210. overflow: hidden;
  211. }
  212. .fault-image{
  213. width: 150px;
  214. float: left;
  215. margin-left: 10px;
  216. overflow: hidden;
  217. }
  218. .image-title{
  219. margin-bottom: 15px;
  220. }
  221. .fault-img{
  222. display: inline-block;
  223. }
  224. .fault-detail{
  225. margin-top: 20px;
  226. }
  227. </style>