fault-examine.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  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. <div v-for="(image, index) in faultImg1" :key="index" class="fault-image">
  30. <!-- 使用v-for循环渲染图片列表 -->
  31. <img :src="dictDataUtil.img_url+image.fileUrl" alt="图片" width="150px" class="fault-img">
  32. </div>
  33. </div>
  34. <div class="fault" v-if="faultDetails1!=null">
  35. <div class="fault-detail" >序列号:&nbsp;&nbsp;{{faultDetails1.seqNo}}</div>
  36. <div class="fault-detail">故障描述:&nbsp;&nbsp;{{faultDetails1.remark}}</div>
  37. <div class="title-fault" style="margin-top: 10px">
  38. 报故人:&nbsp;&nbsp;{{getLabelByValue('user_name_list',faultDetails1.creator)}}
  39. </div>
  40. <div class="title-fault" style="margin-top: 10px">
  41. 报故工位:&nbsp;&nbsp;{{faultDetails1.stationName}}
  42. </div>
  43. <div class="title-fault" style="margin-top: 10px">
  44. 报故数量:&nbsp;&nbsp;{{faultDetails1.unqualifiedNum}}
  45. </div>
  46. <div class="title-fault" style="margin-top: 10px;margin-bottom: 10px" v-if="faultDetails1.result!=undefined&&faultDetails1.result!=null">
  47. 处理结果:&nbsp;&nbsp;{{faultDetails1.result}}
  48. </div>
  49. </div>
  50. <div class="fault" v-if="faultDetails1!=null">
  51. <el-radio-group v-model="radio1" size="large">
  52. <el-radio-button label="审核通过" value="6" />
  53. <el-radio-button label="驳回" value="2" />
  54. </el-radio-group>
  55. </div>
  56. <div class="fault" v-if="faultDetails1!=null" style="margin-top: 15px;margin-bottom: 15px">
  57. <el-input
  58. type="textarea"
  59. :autosize="{ minRows: 3, maxRows: 6}"
  60. placeholder="请输入处理意见"
  61. v-model="textarea2"
  62. >
  63. </el-input>
  64. </div>
  65. <div style="overflow: hidden">
  66. <div class="detail-footer">
  67. <el-button type="primary" @click="onHandle"> 确定 </el-button>
  68. <el-button @click="cancelWindow">取消</el-button>
  69. </div>
  70. </div>
  71. </template>
  72. <script setup>
  73. import { ref, getCurrentInstance } from "vue";
  74. import { useCrud } from "@/hooks/userCrud";
  75. import ButtonPermKeys from "@/common/configs/buttonPermission";
  76. import { useCommonStoreHook, useDictionaryStore } from "@/store";
  77. const { isShowTable, tableType } = toRefs(useCommonStoreHook());
  78. import {getFault,getFaultDetails,updateFault} from "@/api/fault"
  79. import dictDataUtil from "@/common/configs/dictDataUtil";
  80. // 数据字典相关
  81. const { dicts,getLabelByValue } = useDictionaryStore();
  82. const test = () => {
  83. isShowTable.value = true;
  84. tableType.value = tableType.value == 1 ? 2 : 1;
  85. };
  86. const props = defineProps({
  87. escFaultId: {
  88. type: String,
  89. default: () => {
  90. return 0;
  91. }
  92. },
  93. dialogPs:{
  94. type:Object,
  95. default:()=>{
  96. return {};
  97. }
  98. },
  99. })
  100. const drawingDetail=ref(null);
  101. // 传入一个url,后面不带/
  102. const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
  103. useCrud({
  104. src: "/api/v1/process/escalationDefects",
  105. });
  106. const { dataNoPageList, createRow, updateRow, deleteRow, searchChange, resetChange } =
  107. Methords; //增删改查
  108. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  109. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  110. // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
  111. // const permission = reactive({
  112. // delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
  113. // addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
  114. // editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
  115. // menu: true,
  116. // });
  117. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  118. const router = useRouter();
  119. const radio1=ref("6");
  120. const faultImg1=ref(null);
  121. const formData1=ref({});
  122. const faultDetails1=ref(null);
  123. const textarea2=ref('');
  124. onMounted(() => {
  125. // console.log("crudRef", crudRef)
  126. search.value.escalationFaultId=props.escFaultId;
  127. dataNoPageList();
  128. formData1.value.escalationFaultId=props.escFaultId;
  129. getFault(formData1.value).then((data) => {
  130. faultImg1.value=data.data;
  131. console.info(faultImg1.value);
  132. });
  133. getFaultDetails(props.escFaultId).then((data) => {
  134. faultDetails1.value=data.data;
  135. for(let i=0;i<dicts.disposal_measures_type.length;i++){
  136. if(faultDetails1.value.disposalMeasures===dicts.disposal_measures_type[i].dictValue){
  137. faultDetails1.value.disposalMeasures=dicts.disposal_measures_type[i].dictLabel;
  138. }
  139. }
  140. });
  141. });
  142. const onHandle=()=>{
  143. const updateFaultData=ref({id:faultDetails1.value.id,currentState:radio1.value,opinion:textarea2.value});
  144. updateFault(updateFaultData.value).then(
  145. (data)=>{
  146. if(data.code==="200") {
  147. ElMessage({
  148. message: data.msg,
  149. type: "success",
  150. });
  151. props.dialogPs.visible=false;
  152. dataList();
  153. }
  154. else {
  155. ElMessage({
  156. message: data.msg,
  157. type: "error",
  158. });
  159. }
  160. }
  161. )
  162. }
  163. // 设置表格列或者其他自定义的option
  164. option.value = Object.assign(option.value, {
  165. addBtn: false,
  166. editBtn:false,
  167. delBtn:false,
  168. viewBtn:false,
  169. menu:false,
  170. column: [
  171. {
  172. label: "缺陷大类",
  173. prop: "bugType",
  174. dicData:dicts.defect_mana,
  175. props: { label: "dictLabel", value: "dictValue" },
  176. },
  177. {
  178. label: "缺陷小类",
  179. prop: "bugName",
  180. },
  181. ],
  182. });
  183. const cancelWindow=()=>{
  184. props.dialogPs.visible=false;
  185. }
  186. </script>
  187. <style>
  188. .title-fault{
  189. float: left;
  190. width: 300px;
  191. }
  192. .fault{
  193. margin-left: 15px;
  194. margin-top: 10px;
  195. display: block;
  196. overflow: hidden;
  197. }
  198. .fault-image{
  199. width: 150px;
  200. float: left;
  201. margin-left: 10px;
  202. overflow: hidden;
  203. }
  204. .image-title{
  205. margin-bottom: 15px;
  206. }
  207. .fault-img{
  208. display: inline-block;
  209. }
  210. .fault-detail{
  211. margin-top: 20px;
  212. }
  213. .detail-footer{
  214. float: right;
  215. overflow: hidden;
  216. }
  217. </style>