index.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. <template>
  2. <div class="body">
  3. <!-- 剔除 -->
  4. <el-scrollbar class="containerBox">
  5. <div style="margin-bottom: 10px; display: flex" :style="{ justifyContent: !formStatus ? 'center' : '' }">
  6. <el-button type="primary" style="font-size: 16px" v-if="formStatus" @click="toAdd">新增</el-button>
  7. <el-button type="primary" v-else @click="toList">返回</el-button>
  8. </div>
  9. <template v-if="formStatus">
  10. <el-table class="table" :data="tableData">
  11. <el-table-column label="物料名称" prop="materialName" />
  12. <el-table-column label="状态" prop="state">
  13. <template #default="scope">
  14. <span v-if="scope.row.state == '0'">待处理</span>
  15. <span v-else-if="scope.row.state == '1'">审核中</span>
  16. <span v-else-if="scope.row.state == '2'">审核驳回</span>
  17. <span v-else-if="scope.row.state == '3'">审核完成</span>
  18. </template>
  19. </el-table-column>
  20. <el-table-column label="操作">
  21. <template #default="{ row }">
  22. <el-button v-if="row.state == '0'" link type="danger" @click="del(row.id)" style="font-size: 20px"
  23. >删除</el-button
  24. >
  25. </template>
  26. </el-table-column>
  27. </el-table>
  28. <Pagination
  29. v-model:limit="limit"
  30. v-model:page="page"
  31. :position="'right'"
  32. :total="total"
  33. @pagination="getPagination1"
  34. />
  35. </template>
  36. <template v-else>
  37. <el-scrollbar class="form">
  38. <el-form ref="ruleFormRef1" :model="ruleForm1" :rules="rules1" label-width="100">
  39. <el-form-item
  40. label="流转卡号"
  41. prop="seqs"
  42. :rules="{
  43. required: true,
  44. trigger: 'change',
  45. }"
  46. >
  47. <el-select v-model="ruleForm1.seqs" multiple placeholder="请选择" value-key="value">
  48. <el-option v-for="item in infoData?.processWorkSeq" :key="item" :label="item" :value="item" />
  49. </el-select>
  50. </el-form-item>
  51. <el-form-item
  52. label="发生地点"
  53. prop="address"
  54. :rules="{
  55. required: true,
  56. trigger: 'change',
  57. }"
  58. >
  59. <el-input v-model="ruleForm1.address" />
  60. </el-form-item>
  61. <el-form-item
  62. label="数量"
  63. prop="remark1[num]"
  64. :rules="{
  65. required: true,
  66. trigger: 'change',
  67. }"
  68. >
  69. <el-input v-model="ruleForm1.remark1.num" />
  70. </el-form-item>
  71. <el-form-item
  72. label="问题描述"
  73. prop="remark1[content]"
  74. :rules="{
  75. required: true,
  76. trigger: 'change',
  77. }"
  78. >
  79. <el-input type="textarea" v-model="ruleForm1.remark1.content" />
  80. </el-form-item>
  81. <el-form-item
  82. label="审理级别:"
  83. prop="remark1[lv]"
  84. :rules="{
  85. required: true,
  86. trigger: 'change',
  87. }"
  88. >
  89. <el-radio-group v-model="ruleForm1.remark1.lv">
  90. <el-radio value="1">一级</el-radio>
  91. <el-radio value="2">二级</el-radio>
  92. </el-radio-group>
  93. </el-form-item>
  94. <el-form-item
  95. label="填表人"
  96. prop="remark1[user1]"
  97. :rules="{
  98. required: true,
  99. trigger: 'change',
  100. }"
  101. >
  102. <el-tree-select
  103. v-model="ruleForm1.remark1.user1"
  104. :data="userList"
  105. placeholder="请选择人员"
  106. :default-expand-all="false"
  107. filterable
  108. clearable
  109. />
  110. </el-form-item>
  111. <el-form-item
  112. label="发生日期"
  113. prop="remark1[time]"
  114. :rules="{
  115. required: true,
  116. trigger: 'change',
  117. }"
  118. >
  119. <el-date-picker
  120. v-model="ruleForm1.remark1.time"
  121. type="date"
  122. format="YYYY-MM-DD"
  123. value-format="YYYY-MM-DD"
  124. />
  125. </el-form-item>
  126. <el-form-item
  127. label="指定检验人"
  128. prop="remark2[user2]"
  129. :rules="{
  130. required: true,
  131. trigger: 'change',
  132. }"
  133. >
  134. <el-tree-select
  135. v-model="ruleForm1.remark2.user2"
  136. :data="userList"
  137. placeholder="请选择人员"
  138. :default-expand-all="false"
  139. filterable
  140. clearable
  141. />
  142. </el-form-item>
  143. </el-form>
  144. </el-scrollbar>
  145. <div class="btns">
  146. <el-button type="primary" @click="submit1">提交</el-button>
  147. </div>
  148. </template>
  149. </el-scrollbar>
  150. </div>
  151. </template>
  152. <script setup>
  153. import { breakReportInfoById, operationListByIds } from "@/api/process/reportBreak";
  154. import { addRework, addRework1, getList, getList1, delError } from "@/api/rework";
  155. import { useProcessStore } from "@/store/modules/processView";
  156. import { useDictionaryStore } from "@/store/modules/dictionary";
  157. import { getUserTree } from "@/api/user/index";
  158. const dictStroe = useDictionaryStore();
  159. const processStore = useProcessStore();
  160. const ruleForm = ref({
  161. seqList: [],
  162. });
  163. const ruleForm1 = ref({
  164. seqs: [],
  165. remark1: {
  166. content: "",
  167. user1: "",
  168. },
  169. remark2: {
  170. user2: "",
  171. },
  172. });
  173. const tableData = ref([]);
  174. const toAdd = () => {
  175. formStatus.value = false;
  176. breakReportInfoById(processStore.scanInfo.id).then((res) => {
  177. infoData.value = res.data;
  178. });
  179. };
  180. const toList = () => {
  181. resetForm();
  182. formStatus.value = true;
  183. };
  184. const resetForm = () => {
  185. page.value = 1;
  186. limit.value = 10;
  187. ruleForm.value = { seqList: [] };
  188. ruleForm1.value = {
  189. seqs: [],
  190. remark1: {
  191. content: "",
  192. user1: "",
  193. },
  194. remark2: {
  195. user2: "",
  196. },
  197. };
  198. };
  199. const del = async (id) => {
  200. const { code } = await delError({
  201. id,
  202. });
  203. if (code == "200") {
  204. ElMessage.success("删除成功");
  205. getPagination1();
  206. }
  207. };
  208. const getPagination1 = async () => {
  209. const { data } = await getList1({
  210. type: "eliminate",
  211. pageNo: page.value,
  212. pageSize: limit.value,
  213. workOrderCode: processStore.odersData.workOrderCode,
  214. });
  215. tableData.value = data.records;
  216. total.value = data.totalCount;
  217. };
  218. const formStatus = ref(true);
  219. const ruleFormRef1 = ref(null);
  220. const submit1 = async () => {
  221. ruleFormRef1.value.validate((valid) => {
  222. if (valid) {
  223. addTask1();
  224. } else {
  225. ElMessage.error("请检查是否有未填项");
  226. }
  227. });
  228. };
  229. const addTask1 = async () => {
  230. const { code } = await addRework1({
  231. ...ruleForm1.value,
  232. materialModel: processStore.processInfo.materialModel,
  233. materialCode: processStore.scanInfo.materialCode,
  234. materialName: processStore.scanInfo.materialName,
  235. operationId: processStore.scanInfo.operationId,
  236. operationName: processStore.scanInfo.operationName,
  237. pid: processStore.scanInfo.id,
  238. workOrderCode: processStore.odersData.workOrderCode,
  239. orderNo: processStore.scanInfo.orderCode,
  240. stage: processStore.scanInfo.operationName,
  241. type: "eliminate",
  242. seqs: ruleForm1.value.seqs.join(","),
  243. });
  244. if (code == "200") {
  245. resetForm();
  246. formStatus.value = true;
  247. getPagination1();
  248. ElMessage.success("操作成功!");
  249. }
  250. };
  251. const total = ref(0);
  252. const page = ref(1);
  253. const limit = ref(10);
  254. const operationList = ref([]);
  255. const infoData = ref({});
  256. const rules1 = reactive({
  257. location: [
  258. {
  259. required: true,
  260. message: "Please select a location",
  261. trigger: "change",
  262. },
  263. ],
  264. });
  265. // ================= 人员树结构
  266. const userList = ref([]);
  267. const queryUserList = () => {
  268. getUserTree().then((data) => {
  269. userList.value = data.data;
  270. });
  271. };
  272. onMounted(() => {
  273. getPagination1();
  274. queryUserList();
  275. });
  276. </script>
  277. <style lang="scss" scoped>
  278. .table {
  279. height: calc(100vh - 240px);
  280. border-radius: 16px;
  281. }
  282. .body {
  283. width: 100%;
  284. height: calc(100vh - 60px);
  285. .opera {
  286. height: 40px;
  287. display: flex;
  288. justify-content: center;
  289. align-items: center;
  290. background-color: white;
  291. padding-right: 8%;
  292. }
  293. }
  294. .containerBox {
  295. height: calc(100vh - 100px);
  296. padding: 20px;
  297. }
  298. :deep(.el-switch__label) {
  299. span {
  300. font-size: 20px !important;
  301. line-height: 25px !important;
  302. }
  303. }
  304. .form {
  305. width: 50%;
  306. max-width: 600px;
  307. height: calc(100vh - 240px);
  308. background-color: white;
  309. margin: 0 auto;
  310. padding: 0 20px;
  311. padding-top: 20px;
  312. border-radius: 16px;
  313. }
  314. .btns {
  315. height: 40px;
  316. display: flex;
  317. justify-content: center;
  318. align-items: center;
  319. width: 50%;
  320. max-width: 600px;
  321. margin: 0 auto;
  322. }
  323. </style>