index.vue 9.3 KB

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