roll-check.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. <template>
  2. <div v-if="!excelViewStatus">
  3. <el-table :data="tableData" class="tableView">
  4. <el-table-column align="center" fixed label="管号" prop="seqNo" />
  5. <el-table-column align="center" fixed label="操作人" prop="checkUser" />
  6. <el-table-column
  7. align="center"
  8. label="是否破坏性检验"
  9. prop="isDestruction"
  10. >
  11. <template #default="scope">
  12. {{ scope.row.isDestruction ? "是" : "否" }}
  13. </template>
  14. </el-table-column>
  15. <!-- <el-table-column
  16. align="center"
  17. label="是否破坏性检验"
  18. prop="isDestruction"
  19. >
  20. <template #default="scope">
  21. {{ dictS.getLableByValue("excel_type", scope.row.formType) }}
  22. </template>
  23. </el-table-column> -->
  24. <el-table-column fixed="right" label="操作" width="200">
  25. <template #default="scope">
  26. <!-- <el-button
  27. v-if="scope.row.writeData !== ''"
  28. class="btnText"
  29. link
  30. type="primary"
  31. @click="handleLook(scope.row)"
  32. >
  33. 查看
  34. </el-button> -->
  35. <!-- <el-button
  36. class="btnText"
  37. link
  38. type="primary"
  39. @click="handleEdit(scope.row)"
  40. >
  41. 编辑
  42. </el-button> -->
  43. <el-button
  44. class="btnText"
  45. link
  46. type="primary"
  47. @click="del(scope.row.id)"
  48. >
  49. 删除
  50. </el-button>
  51. </template>
  52. </el-table-column>
  53. </el-table>
  54. <Pagination
  55. v-model:limit="page.pageSize"
  56. v-model:page="page.pageNo"
  57. :total="page.total"
  58. size="large"
  59. @pagination="dataList"
  60. position="right"
  61. />
  62. </div>
  63. <!-- <div v-else class="excelView">
  64. <div class="view">
  65. <ExcelView
  66. ref="excelViewRef"
  67. v-model:data="excelData"
  68. :checkStatus="true"
  69. :option="excelOptions"
  70. :verifications="setting"
  71. />
  72. </div>
  73. <div class="opeara">
  74. <div>
  75. <el-button
  76. v-if="excelOptions.edit"
  77. class="btn"
  78. type="primary"
  79. @click="submitData"
  80. >提交
  81. </el-button>
  82. <el-button class="btn" @click="resetData"
  83. >{{ excelOptions.edit ? "取消" : "返回" }}
  84. </el-button>
  85. </div>
  86. </div>
  87. </div> -->
  88. </template>
  89. <script setup>
  90. import { shoujianList, seqList, delItem } from "@/api/prosteps/dianjian";
  91. import { setExcelData } from "@/api/prosteps/excel";
  92. import { useDictionaryStore, useProcessStore } from "@/store";
  93. const props = defineProps({
  94. userName: String,
  95. });
  96. const page = reactive({
  97. pageSize: 10,
  98. pageNo: 1,
  99. total: 0,
  100. });
  101. const emits = defineEmits(["editOpen"]);
  102. const del = async (id) => {
  103. const { code } = await delItem({
  104. id: id,
  105. });
  106. if (code == "200") {
  107. ElMessage.success("操作成功!");
  108. dataList();
  109. }
  110. };
  111. const handleEdit = (row) => {
  112. emits("editOpen", 1, row);
  113. };
  114. const setting = ref([]);
  115. const dictS = useDictionaryStore();
  116. const store = useProcessStore();
  117. const tableData = ref([]);
  118. const dataList = async () => {
  119. const { data } = await shoujianList({
  120. checkType: 2,
  121. pageNo: page.pageNo,
  122. pageSize: page.pageSize,
  123. processId: store.scanInfo.id,
  124. });
  125. tableData.value = data.records;
  126. page.total = data.totalCount;
  127. };
  128. const useExcelHook = () => {
  129. const excelViewStatus = ref(false);
  130. const excelData = ref(null);
  131. const excelViewRef = ref(null);
  132. const excelSelectRow = ref(null);
  133. const excelOptions = ref({
  134. opreaState: true,
  135. in: true,
  136. out: true,
  137. print: true,
  138. edit: true,
  139. inName: "",
  140. });
  141. const resetData = () => {
  142. if (excelViewRef.value) {
  143. excelViewRef.value.saveCellData();
  144. excelViewRef.value.reset();
  145. }
  146. excelViewStatus.value = false;
  147. excelData.value = null;
  148. excelSelectRow.value = null;
  149. excelOptions.value = {
  150. opreaState: true,
  151. in: true,
  152. out: true,
  153. print: true,
  154. edit: true,
  155. inName: "",
  156. };
  157. };
  158. const reset = async (row) => {
  159. excelData.value = "";
  160. const { data, code } = await setExcelData({
  161. excelData: excelData.value,
  162. formName: row.formName,
  163. excelFormId: row.excelFormId,
  164. formType: row.formType,
  165. processId: store.scanInfo.id,
  166. });
  167. if (code == "200") {
  168. ElMessage.success("操作成功!");
  169. row.dialogVisible = false;
  170. resetData();
  171. dataList();
  172. }
  173. };
  174. // const handleEdit = (row) => {
  175. // excelSelectRow.value = row;
  176. // if (row.writeData == "") {
  177. // excelData.value = JSON.parse(row.excelData);
  178. // } else {
  179. // excelData.value = JSON.parse(row.writeData);
  180. // }
  181. // excelOptions.value.inName = row.formName;
  182. // excelViewStatus.value = true;
  183. // setting.value = row.settings;
  184. // };
  185. const handleLook = (row) => {
  186. excelOptions.value.edit = false;
  187. excelData.value = JSON.parse(row.writeData);
  188. excelOptions.value.inName = row.formName;
  189. excelViewStatus.value = true;
  190. };
  191. const submitData = async () => {
  192. excelData.value = excelViewRef.value.getData();
  193. const { data, code } = await setExcelData({
  194. excelData: excelData.value,
  195. excelFormId: excelSelectRow.value.excelFormId,
  196. formName: excelSelectRow.value.formName,
  197. formType: excelSelectRow.value.formType,
  198. processId: store.scanInfo.id,
  199. workOrderId: store.scanInfo.workOrderId,
  200. userName: props.userName,
  201. });
  202. if (code === "200") {
  203. ElMessage.success("操作成功!");
  204. resetData();
  205. dataList();
  206. }
  207. };
  208. return {
  209. excelViewStatus,
  210. excelOptions,
  211. excelData,
  212. excelViewRef,
  213. resetData,
  214. submitData,
  215. handleLook,
  216. reset,
  217. };
  218. };
  219. const {
  220. excelViewStatus,
  221. excelOptions,
  222. excelData,
  223. excelViewRef,
  224. resetData,
  225. submitData,
  226. handleLook,
  227. reset,
  228. } = useExcelHook();
  229. onMounted(() => {
  230. dataList();
  231. });
  232. defineExpose({
  233. dataList,
  234. });
  235. </script>
  236. <style lang="scss" scoped>
  237. .btnText {
  238. font-size: $f20;
  239. color: black;
  240. }
  241. .excelView {
  242. width: 100%;
  243. height: calc(100vh - 275px);
  244. padding: 20px;
  245. display: flex;
  246. background-color: white;
  247. border-radius: 16px;
  248. .view {
  249. position: relative;
  250. flex: 1;
  251. height: calc(100vh - 325px);
  252. }
  253. .opeara {
  254. width: 200px;
  255. height: 100%;
  256. padding: 10px;
  257. display: flex;
  258. align-items: center;
  259. }
  260. }
  261. .tableView {
  262. width: 100%;
  263. height: calc(100vh - 370px);
  264. padding: 20px 0px;
  265. border-radius: 16px;
  266. }
  267. .btn {
  268. width: 180px;
  269. border-radius: 16px;
  270. height: 40px;
  271. font-size: 16px;
  272. margin: 10px 0;
  273. }
  274. .red-text {
  275. color: red;
  276. }
  277. .green-text {
  278. color: green;
  279. }
  280. :deep(.el-table__inner-wrapper::before) {
  281. display: none;
  282. }
  283. </style>