chafengbaogong.vue 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912
  1. <template>
  2. <div>
  3. <layout>
  4. <layout-header>
  5. <div class="">
  6. <!--按钮部分-->
  7. <el-form ref="elSearchFormRef" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
  8. <el-form-item>
  9. <el-input v-model="searchInfo" placeholder="搜索" clearable style="width: 180px;height:40px;"></el-input>
  10. <el-button type="primary" @click="onSubmit"
  11. style="margin: 0px 5px 0px 0px;width: 80px;height:40px;border-radius: 5%;" icon="search" >查询</el-button>
  12. <el-button type="primary" @click="onAttendance"
  13. style="margin: 0px 5px 0px 0px;width: 80px;height:40px;border-radius: 5%;">新增</el-button>
  14. <el-button type="primary" @click="baogong_del"
  15. style="margin: 0px 5px 0px 0px;width: 80px;height:40px;border-radius: 5%;float: right;background-color: red">删除</el-button>
  16. <el-button type="primary" @click="onxiaopiaoclick"
  17. style="margin: 0px 5px 0px 0px;width: 80px;height:40px;border-radius: 5%;background-color: #20a53a;">补打小票</el-button>
  18. </el-form-item>
  19. </el-form>
  20. </div>
  21. </layout-header>
  22. <layout>
  23. <!--左侧树侧形结构-->
  24. <layout-sider :resize-directions="['right']" :width="190" style="margin-right: 10px;">
  25. <div class="JKWTree-tree" style="height: 200px">
  26. <h3>车缝完工报工</h3>
  27. <el-tree :data="treeData" class="treecolor" @node-click="handleNodeClick"></el-tree>
  28. </div>
  29. </layout-sider>
  30. <!-- 右侧区域 -->
  31. <layout-content >
  32. <el-main>
  33. <div class="gva-table-box">
  34. <!-- 表格数据 -->
  35. <el-table ref="multipleTable" style="width: 100%;height: 65vh" tooltip-effect="dark"
  36. :row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
  37. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  38. :data="tableData" border row-key="ID" size="small"
  39. highlight-current-row="true" @row-dblclick="updateCompanyFunc"
  40. @row-click="tableRowClick" :show-overflow-tooltip="true"
  41. @selection-change="handleSelectionChange">
  42. <!-- <el-table-column type="selection" width="55" /> -->
  43. <el-table-column sortable align="center" label="序号" prop="序号" width="70" />
  44. <el-table-column sortable align="left" label="订单子编号" prop="订单子编号" width="115"/>
  45. <el-table-column sortable align="left" label="订单号" prop="订单号" width="115"/>
  46. <el-table-column sortable align="left" label="生产款号" prop="生产款号" width="120" />
  47. <el-table-column sortable align="left" label="款式" prop="款式" width="100" />
  48. <el-table-column sortable align="left" label="颜色" prop="颜色" width="80" />
  49. <el-table-column sortable align="left" label="制单总数" prop="制单总数" width="100" />
  50. <el-table-column sortable align="left" label="组别" prop="组别" width="100" />
  51. <el-table-column sortable align="left" label="排产单数" prop="排产单数" width="100" />
  52. <el-table-column sortable align="left" label="尺码" prop="尺码" width="70" />
  53. <el-table-column sortable align="left" label="报工数量" prop="报工数量" width="100" />
  54. <el-table-column sortable align="left" label="是否尾包" prop="是否尾包" width="100" />
  55. <el-table-column sortable align="left" label="工序" prop="工序" width="80" />
  56. <el-table-column sortable align="left" label="验片人" prop="验片人" width="90" />
  57. <el-table-column sortable align="left" label="日期" prop="日期" width="100" />
  58. </el-table>
  59. <!-- 分页 -->
  60. <div class="gva-pagination">
  61. <el-pagination layout="total" :current-page="page" :page-size="pageSize"
  62. :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
  63. <!-- <el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize" :page-sizes="[10, 30, 50, 100]"-->
  64. <!-- :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />-->
  65. </div>
  66. </div>
  67. <!-- 修改弹窗 -->
  68. <el-dialog v-model="dialogFormVisible" :before-close="edit_closeDialog" destroy-on-close style="width: 100%; height: 100%;margin: 0%;">
  69. <h1 style="margin: 0%;margin-bottom: 10px;">修改</h1>
  70. <el-row :gutter="24">
  71. <el-col :span="10">
  72. <el-form-item label="订单子编号:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  73. <el-input v-model="edit_formData['订单子编号']" style="width: 60%; height: 40px;" id="订单子编号" />
  74. </el-form-item>
  75. </el-col>
  76. <el-col :span="12">
  77. <el-form-item label="订单号:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  78. <el-input v-model="edit_formData['订单号']" style="width: 60%; height: 40px;" id="订单号:" />
  79. </el-form-item>
  80. </el-col>
  81. </el-row>
  82. <el-row :gutter="24">
  83. <el-col :span="10">
  84. <el-form-item label="生产款号:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  85. <el-input v-model="edit_formData['生产款号']" style="width: 60%; height: 40px;" id="生产款号" />
  86. </el-form-item>
  87. </el-col>
  88. <el-col :span="12">
  89. <el-form-item label="款式:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  90. <el-input v-model="edit_formData['款式']" style="width: 60%; height: 40px;" id="款式" />
  91. </el-form-item>
  92. </el-col>
  93. </el-row>
  94. <el-row :gutter="24" >
  95. <el-col :span="10">
  96. <el-form-item label="颜色:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  97. <el-input v-model="edit_formData['颜色']" style="width: 60%; height: 40px;" id="颜色" />
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="12">
  101. <el-form-item label="制单总数:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  102. <el-input v-model="edit_formData['制单总数']" style="width: 60%; height: 40px;" id="制单总数" />
  103. </el-form-item>
  104. </el-col>
  105. </el-row>
  106. <el-row :gutter="24" >
  107. <el-col :span="10">
  108. <el-form-item label="组别:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  109. <el-input v-model="edit_formData['组别']" style="width: 60%; height: 40px;" id="组别" />
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="12">
  113. <el-form-item label="排产单数:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  114. <el-input v-model="edit_formData['排产单数']" style="width: 60%; height: 40px;" id="排产单数" />
  115. </el-form-item>
  116. </el-col>
  117. </el-row>
  118. <el-row :gutter="24" >
  119. <el-col :span="10">
  120. <el-form-item label="尺码:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  121. <el-input v-model="edit_formData['尺码']" style="width: 60%; height: 40px;" id="尺码" />
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="12">
  125. <el-form-item label="报工数量:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  126. <el-input v-model="edit_formData['报工数量']" style="width: 60%; height: 40px;" id="报工数量" />
  127. </el-form-item>
  128. </el-col>
  129. </el-row>
  130. <el-row :gutter="24" >
  131. <el-col :span="10">
  132. <el-form-item label="是否尾包:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  133. <el-select v-model="edit_formData['是否订单尾包']" style="width: 60%; height: 40px;" id="是否订单尾包">
  134. <el-option label="是" value="是"></el-option>
  135. <el-option label="否" value="否"></el-option>
  136. </el-select>
  137. </el-form-item>
  138. </el-col>
  139. <el-col :span="12">
  140. <el-form-item label="工序:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  141. <el-input v-model="edit_formData['工序']" style="width: 60%; height: 40px;" id="工序" />
  142. </el-form-item>
  143. </el-col>
  144. </el-row>
  145. <el-row :gutter="24" style="margin-bottom: 20px;">
  146. <el-col :span="10">
  147. <el-form-item label="验片人:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  148. <el-input v-model="edit_formData['验片人']" style="width: 60%;" id="验片人" />
  149. </el-form-item>
  150. </el-col>
  151. <el-col :span="12">
  152. <el-form-item label="日期:" prop="deliveryDate" class="mab" label-width="180" style="font-size: 30px;margin: 10px;">
  153. <el-input v-model="edit_formData['日期']" style="width: 60%;" id="日期" />
  154. </el-form-item>
  155. </el-col>
  156. </el-row>
  157. <template #footer>
  158. <div class="dialog-footer">
  159. <el-button @click="edit_closeDialog" style="width: 110px;height: 60px;font-size: 20px;">取消</el-button>
  160. <el-button type="primary" @click="edit_Dialog" style="width: 110px;height: 60px;font-size: 20px;">确认</el-button>
  161. </div>
  162. </template>
  163. </el-dialog>
  164. <!-- 新增弹窗 -->
  165. <el-dialog v-model="AttendanceVisible" destroy-on-close style="width: 100%;height: 100%;margin: 0px;">
  166. <h1 style="margin: 0%;margin-bottom: 10px;">工序报工</h1>
  167. <el-row :gutter="24" style="margin-bottom: 15px;">
  168. <el-input v-model="add_searchInfo" placeholder="扫描订单二维码获取订单信息"
  169. @keyup.enter="add_onSubmit"
  170. id="searchInput"
  171. style="width: 270px;margin: 5px;height: 50px;">
  172. </el-input>
  173. <el-button type="primary" icon="search" @click="add_onSubmit" style="margin: 5px;height: 50px;">查询</el-button>
  174. <el-form-item label="机台号:" prop="deliveryDate" class="mab" style="font-size: 30px;margin: 10px;">
  175. <el-input v-model="add_formData['机台号']" style="width: 120px;height: 40px;" id="机台号" />
  176. </el-form-item>
  177. <el-form-item label="工序:" prop="deliveryDate" class="mab"style="font-size: 30px;margin: 10px;" label-width="100">
  178. <el-input v-model="add_formData['工序']" style="width: 120px;height: 40px;" id="工序" />
  179. </el-form-item>
  180. <el-form-item label="组别:" prop="deliveryDate" class="mab" style="font-size: 30px;margin: 10px;" label-width="100">
  181. <el-input v-model="add_formData['组别']" style="width: 120px;height: 40px;" id="组别" />
  182. </el-form-item>
  183. <el-form-item label="人员:" prop="deliveryDate" class="mab" style="font-size: 30px;margin: 10px;" label-width="100">
  184. <el-input v-model="add_formData['人员']" style="width: 120px;height: 40px;" id="人员" />
  185. </el-form-item>
  186. <el-form-item label="尺码:" prop="joinDate" style="font-size: 30px;" label-width="110">
  187. <el-select v-model="add_formData['尺码']" style="width: 120px;" id="尺码">
  188. <el-option label="32" value="32"></el-option>
  189. <el-option label="33" value="33"></el-option>
  190. <el-option label="34" value="34"></el-option>
  191. <el-option label="35" value="35"></el-option>
  192. <el-option label="36" value="36"></el-option>
  193. </el-select>
  194. </el-form-item>
  195. <el-form-item label="数量:" prop="joinDate" style="font-size: 30px;" label-width="110">
  196. <el-input v-model="add_formData['数量']" style="width: 150px;height: 40px;" id="人员" />
  197. </el-form-item>
  198. <el-form-item label="是否尾包:" prop="joinDate" style="font-size: 30px;" label-width="150">
  199. <el-select v-model="add_formData['是否订单尾包']" style="width: 120px;height: 40px;" id="尺码" @change="wbSelectChange">
  200. <el-option label="是" value="是"></el-option>
  201. <el-option label="否" value="否"></el-option>
  202. </el-select>
  203. </el-form-item>
  204. </el-row>
  205. <el-row :gutter="24" style="margin-bottom: 15px;">
  206. <div @contextmenu.prevent>
  207. <el-table
  208. ref="multipleTableRef"
  209. style="width: 100%;height: 40vh"
  210. tooltip-effect="dark"
  211. :row-style="{ height: '50px' }" :header-cell-style="{ padding: '5px', fontSize: '20px' }"
  212. :cell-style="{ padding: '10px', fontSize: '20px' }" :header-row-style="{ height: '20px' }"
  213. :data="add_tableData" border row-key="ID" size="small"
  214. highlight-current-row="true"
  215. @row-dblclick="add_updateCompanyFunc" @row-click="add_tableRowClick" @row-contextmenu="handleRightClick"
  216. :show-overflow-tooltip="true" @selection-change="add_xpSelectionChange">
  217. <el-table-column type="selection" width="70" />
  218. <el-table-column sortable align="left" label="订单号" prop="订单号" width="140"/>
  219. <el-table-column sortable align="left" label="订单子编号" prop="订单子编号" width="140"/>
  220. <el-table-column sortable align="left" label="生产款号" prop="生产款号" width="140"/>
  221. <el-table-column sortable align="left" label="款式" prop="款式" width="140"/>
  222. <el-table-column sortable align="left" label="颜色" prop="颜色" width="140"/>
  223. <el-table-column sortable align="left" label="S" prop="S" width="140"/>
  224. <el-table-column sortable align="left" label="M" prop="M" width="140"/>
  225. <el-table-column sortable align="left" label="L" prop="L" width="140"/>
  226. <el-table-column sortable align="left" label="XL" prop="XL" width="140"/>
  227. <el-table-column sortable align="left" label="2XL" prop="2XL" width="140"/>
  228. </el-table>
  229. </div>
  230. </el-row>
  231. <template #footer>
  232. <div class="dialog-footer" >
  233. <el-button @click="add_closeDialog" style="width: 110px;height: 60px;font-size: 20px;">取消</el-button>
  234. <el-button type="primary" @click="add_Dialog" style="width: 110px;height: 60px;font-size: 20px;">确认</el-button>
  235. <el-button type="primary" @click="add_printxp" style="width: 110px;height: 60px;font-size: 20px;">打印小票</el-button>
  236. </div>
  237. </template>
  238. </el-dialog>
  239. <!-- 是否订单尾包确认弹窗 -->
  240. <el-dialog v-model="DialogVisible" title="是否订单尾包" destroy-on-close width="30%" style="top: 20%;">
  241. <h3>请再次确认是否该订单产品已全部报工,该批为订单尾包?</h3>
  242. <div class="dialog-footer" style="text-align: right;">
  243. <el-button @click="confirmDialogVisible">取消</el-button>
  244. <el-button type="primary" @click="handleConfirm">确认</el-button>
  245. </div>
  246. </el-dialog>
  247. </el-main>
  248. </layout-content>
  249. </layout>
  250. </layout>
  251. </div>
  252. </template>
  253. <script>
  254. export default {
  255. };
  256. </script>
  257. <script setup>
  258. // 全量引入格式化工具 请按需保留
  259. import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
  260. import {hiprint} from "vue-plugin-hiprint";
  261. import {ref, reactive,nextTick } from 'vue'
  262. import {getCustom, getDepartment, getProductData,getStaffInfo, getStaffList, ygjbzledit,clockUpdate} from '@/api/yunyin/yunying'
  263. import {ElMessage} from "element-plus";
  264. defineOptions({name: 'Company'})
  265. // =========== 全局获取当前日期 ===========
  266. // currentDate 年月日 时分秒
  267. // currentDates 年月日
  268. const today = new Date();
  269. const year = today.getFullYear();
  270. const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  271. const day = String(today.getDate()).padStart(2, '0');
  272. const hours = String(today.getHours()).padStart(2, '0');
  273. const minutes = String(today.getMinutes()).padStart(2, '0');
  274. const seconds = String(today.getSeconds()).padStart(2, '0');
  275. const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  276. const currentDates = `${year}-${month}-${day}`;
  277. // =========== 获取左侧树侧形结构 ===========
  278. const treeData = ref({})
  279. const DataListdata = async () => {
  280. try {
  281. const data =
  282. [
  283. {label : '2024.7.16'},
  284. {label : '2024.7.15'},
  285. {label : '2024.7.14'},
  286. {label : '2024.7.13'},
  287. {label : '2024.7.12'},
  288. {label : '2024.7.11'}
  289. ];
  290. treeData.value = data
  291. } catch (error) {
  292. console.error(error);
  293. }
  294. };
  295. DataListdata();
  296. // 表格部分
  297. const tableData = reactive([]);
  298. //点击左侧树形 获取右侧table列表
  299. const handleNodeClick = async (node) => {
  300. _getStaffList(); // 执行获取员工列表的函数
  301. };
  302. // =========== 搜索 ===========
  303. const searchInfo = ref('')
  304. const _department_code = ref(null)
  305. //点击【查询】按钮
  306. const onSubmit = () => {
  307. // _department_code.value = '';
  308. if(searchInfo.value === ''){
  309. tableData.length = 0;
  310. }else{
  311. _getStaffList();
  312. }
  313. };
  314. //表格
  315. const row_onclick = ref(null);
  316. //表格行点击
  317. const tableRowClick = async (row) => {
  318. console.log(row)
  319. row_onclick.value = row
  320. }
  321. const _getStaffList = async ()=>{
  322. console.log(searchInfo.value)
  323. try {
  324. const WorkListdata = [
  325. {
  326. '序号':'1',
  327. '订单子编号':'2408001-1',
  328. '订单号':'2408001',
  329. '生产款号':'2401-1622款',
  330. '款式':'连衣裙',
  331. '颜色':'红色',
  332. '制单总数':'90',
  333. '组别':'车缝1组',
  334. '排产单数':'50',
  335. '尺码':'32',
  336. '报工数量':'10',
  337. '是否尾包':'否',
  338. '工序':'仓库出库',
  339. '验片人':'xxx',
  340. '日期':'2024-07-16'
  341. },
  342. {
  343. '序号':'2',
  344. '订单子编号':'2408001-2',
  345. '订单号':'2408001',
  346. '生产款号':'2402-1623款',
  347. '款式':'长袖',
  348. '颜色':'蓝色',
  349. '制单总数':'90',
  350. '组别':'车缝2组',
  351. '排产单数':'60',
  352. '尺码':'35',
  353. '报工数量':'58',
  354. '是否尾包':'否',
  355. '工序':'仓库出库',
  356. '验片人':'xxx',
  357. '日期':'2024-07-16'
  358. },
  359. {
  360. '序号':'3',
  361. '订单子编号':'2408002-2',
  362. '订单号':'2408002',
  363. '生产款号':'2403-1624款',
  364. '款式':'西服',
  365. '颜色':'白色',
  366. '制单总数':'90',
  367. '组别':'车缝3组',
  368. '排产单数':'60',
  369. '尺码':'35',
  370. '报工数量':'58',
  371. '是否尾包':'否',
  372. '工序':'仓库出库',
  373. '验片人':'xxx',
  374. '日期':'2024-07-16'
  375. },
  376. {
  377. '序号':'4',
  378. '订单子编号':'2408003-3',
  379. '订单号':'2408003',
  380. '生产款号':'2403-1625款',
  381. '款式':'裤子',
  382. '颜色':'黑色',
  383. '制单总数':'90',
  384. '组别':'车缝4组',
  385. '排产单数':'40',
  386. '尺码':'36',
  387. '报工数量':'37',
  388. '是否尾包':'是',
  389. '工序':'仓库出库',
  390. '验片人':'xxx',
  391. '日期':'2024-07-16'
  392. },
  393. ];
  394. console.log(WorkListdata)
  395. tableData.splice(0,tableData.length,...WorkListdata);//表格数据
  396. // total.value =WorkListdata.data.total;//共多少条
  397. } catch (error) {
  398. console.error(error);
  399. }
  400. }
  401. // =========== 新增按钮 ===========
  402. const AttendanceVisible=ref(false)
  403. const add_tableData = reactive([]);
  404. //清空对象的属性值
  405. const gd_clearFormData = () => {
  406. Object.keys(add_formData).forEach(key => {
  407. add_formData[key] = '';
  408. });
  409. };
  410. //新增按钮
  411. const onAttendance = () => {
  412. AttendanceVisible.value=true
  413. setTimeout(() => {
  414. const inputElement = document.querySelector('#searchInput');
  415. if (inputElement) {
  416. inputElement.focus();
  417. }
  418. }, 100); // 延迟100毫秒
  419. gd_clearFormData();
  420. add_formData['机台号'] = '车缝'
  421. add_formData['工序'] = '车缝'
  422. add_formData['组别'] = '服装厂1组'
  423. add_formData['人员'] = 'xxx'
  424. add_searchInfo.value = ''
  425. const WorkListdata = [];
  426. add_tableData.splice(0,add_tableData.length,...WorkListdata);
  427. };
  428. const add_formData = reactive({
  429. 机台号: '',
  430. 工序: '',
  431. 组别: '',
  432. 人员: '',
  433. 尺码: '',
  434. 数量: '',
  435. 是否订单尾包: '',
  436. });
  437. // 新增确定
  438. const add_Dialog = () => {
  439. // AttendanceVisible.value = false
  440. };
  441. // 新增取消
  442. const add_closeDialog = () => {
  443. AttendanceVisible.value = false
  444. };
  445. const DialogVisible = ref(false)
  446. // 是否订单尾包选择是弹窗
  447. const wbSelectChange = (value) => {
  448. console.log(value)
  449. if (value === '是') {
  450. DialogVisible.value = true
  451. }
  452. };
  453. // 确定
  454. const handleConfirm = () => {
  455. add_formData['是否订单尾包'] = '是'
  456. DialogVisible.value = false
  457. };
  458. // 取消
  459. const confirmDialogVisible = () => {
  460. add_formData['是否订单尾包'] = '否'
  461. DialogVisible.value = false
  462. };
  463. // =========== 新增搜索 ===========
  464. const add_searchInfo = ref('')
  465. //点击【查询】按钮
  466. const add_onSubmit = async ()=>{
  467. if(add_searchInfo.value === '' || add_searchInfo.value === undefined){
  468. const WorkListdata = [];
  469. add_tableData.splice(0,add_tableData.length,...WorkListdata);
  470. ElMessage({type: 'warning',message: '搜索内容不能为空' })
  471. }else{
  472. console.log(add_searchInfo.value)
  473. if(add_searchInfo.value === '2408001'){
  474. const WorkListdata = [
  475. {
  476. '订单子编号':'2408001-1',
  477. '订单号':'2408001',
  478. '生产款号':'2401-1622款',
  479. '款式':'连衣裙',
  480. '颜色':'红色',
  481. 'S':'34',
  482. 'M':'12',
  483. 'L':'53',
  484. 'XL':'44',
  485. '2XL':'15'
  486. },
  487. {
  488. '订单子编号':'2408001-2',
  489. '订单号':'2408001',
  490. '生产款号':'2401-1623款',
  491. '款式':'长袖',
  492. '颜色':'蓝色',
  493. 'S':'23',
  494. 'M':'26',
  495. 'L':'48',
  496. 'XL':'67',
  497. '2XL':'12'
  498. },
  499. ];
  500. add_formData['尺码'] = '32'
  501. add_formData['数量'] = '10'
  502. add_formData['是否订单尾包'] = '否'
  503. add_tableData.splice(0,add_tableData.length,...WorkListdata);//表格数据
  504. }else if(add_searchInfo.value === '2408002'){
  505. const WorkListdata = [
  506. {
  507. '订单子编号':'2408002-2',
  508. '订单号':'2408002',
  509. '生产款号':'2402-1624款',
  510. '款式':'西服',
  511. '颜色':'白色'
  512. },
  513. ];
  514. add_formData['尺码'] = '35'
  515. add_formData['数量'] = '58'
  516. add_formData['是否订单尾包'] = '否'
  517. add_tableData.splice(0,add_tableData.length,...WorkListdata);//表格数据
  518. }else if(add_searchInfo.value === '2408003'){
  519. const WorkListdata = [
  520. {
  521. '订单子编号':'2408003-3',
  522. '订单号':'2408003',
  523. '生产款号':'2403-1625款',
  524. '款式':'西服',
  525. '颜色':'白色'
  526. },
  527. ];
  528. add_formData['尺码'] = '35'
  529. add_formData['数量'] = '58'
  530. add_formData['是否订单尾包'] = '是'
  531. add_tableData.splice(0,add_tableData.length,...WorkListdata);//表格数据
  532. }else if(add_searchInfo.value === '2408001-1'){
  533. const WorkListdata = [
  534. {
  535. '订单子编号':'2408001-1',
  536. '订单号':'2408001',
  537. '生产款号':'2401-1622款',
  538. '款式':'连衣裙',
  539. '颜色':'红色',
  540. 'S':'34',
  541. 'M':'12',
  542. 'L':'53',
  543. 'XL':'44',
  544. '2XL':'15'
  545. },
  546. ];
  547. add_formData['尺码'] = '32'
  548. add_formData['数量'] = '10'
  549. add_formData['是否订单尾包'] = '否'
  550. add_tableData.splice(0,add_tableData.length,...WorkListdata);//表格数据
  551. }else if(add_searchInfo.value === '2408001-2'){
  552. const WorkListdata = [
  553. {
  554. '订单子编号':'2408001-2',
  555. '订单号':'2408001',
  556. '生产款号':'2401-1623款',
  557. '款式':'长袖',
  558. '颜色':'蓝色',
  559. 'S':'23',
  560. 'M':'26',
  561. 'L':'48',
  562. 'XL':'67',
  563. '2XL':'12'
  564. },
  565. ];
  566. add_formData['尺码'] = '32'
  567. add_formData['数量'] = '10'
  568. add_formData['是否订单尾包'] = '否'
  569. add_tableData.splice(0,add_tableData.length,...WorkListdata);//表格数据
  570. }
  571. setTimeout(() => {
  572. const inputElement = document.querySelector('#searchInput');
  573. if (inputElement) {
  574. inputElement.focus();
  575. }
  576. }, 100); // 延迟100毫秒
  577. add_searchInfo.value = ''
  578. }
  579. };
  580. // =========== 新增打印小票 ===========
  581. const jsondata = {"panels":[{"index":0,"name":1,"height":296.6,"width":210,"paperHeader":328.5,"paperFooter":832.5,"printElements":[{"options":{"left":207.5,"top":335,"height":61.5,"width":211.5,"title":"这是更新后的元素","right":418.9921875,"bottom":397.2421875,"vCenter":313.2421875,"hCenter":366.4921875,"field":"zddbh","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":0,"top":337.5,"height":60,"width":207,"title":"子订单编号","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":187.74375915527344,"bottom":392.25,"vCenter":84.24375915527344,"hCenter":360.75},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":432.5,"top":380,"height":159,"width":159,"title":"二维码","qrcodeType":"qrcode","testData":"qrcode","right":590.7421875,"bottom":538.2421875,"vCenter":511.2421875,"hCenter":458.7421875,"field":"emm","qrCodeLevel":0,"coordinateSync":false,"widthHeightSync":false,"hideTitle":true},"printElementType":{"title":"二维码","type":"qrcode"}},{"options":{"left":85,"top":400,"height":61.5,"width":337.5,"title":"这是更新后的元素","right":297,"bottom":463.5,"vCenter":191.25,"hCenter":432.75,"field":"kh","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"qid":"zddbh_1"},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":0,"top":400,"height":60,"width":84,"title":"款号","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":209.49375915527344,"bottom":455.4937505722046,"vCenter":105.99375915527344,"hCenter":423.9937505722046},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":0,"top":460,"height":60,"width":84,"title":"品名","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":207.75,"bottom":522.4921875,"vCenter":104.25,"hCenter":492.4921875},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":85,"top":462.5,"height":61.5,"width":342,"title":"这是更新后的元素","right":295.2421875,"bottom":523.9921875,"vCenter":189.4921875,"hCenter":493.2421875,"field":"pm","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"qid":"kh_1"},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":85,"top":525,"height":61.5,"width":211.5,"title":"这是更新后的元素","right":293.7421875,"bottom":585.4921875,"vCenter":187.9921875,"hCenter":554.7421875,"field":"ys","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"qid":"kh_2"},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":0,"top":525,"height":60,"width":84,"title":"颜色","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":209.49375915527344,"bottom":580.5,"vCenter":105.99375915527344,"hCenter":549},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":0,"top":587.5,"height":60,"width":82.5,"title":"尺码","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":209.49375915527344,"bottom":642.9937591552734,"vCenter":105.99375915527344,"hCenter":611.4937591552734},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":85,"top":590,"height":61.5,"width":211.5,"title":"这是更新后的元素","right":295.9921875,"bottom":651.24609375,"vCenter":190.2421875,"hCenter":620.49609375,"field":"cm","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"qid":"kh_3"},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":0,"top":650,"height":60,"width":82.5,"title":"数量","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":209.49375915527344,"bottom":705.4968795776367,"vCenter":105.99375915527344,"hCenter":673.9968795776367},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":85,"top":652.5,"height":61.5,"width":211.5,"title":"这是更新后的元素","right":298.2421875,"bottom":714,"vCenter":192.4921875,"hCenter":683.25,"field":"sl","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"qid":"kh_4"},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":450,"top":705,"height":61.5,"width":120,"title":"这是更新后的元素","right":570.9937362670898,"bottom":765.75,"vCenter":510.99373626708984,"hCenter":735,"field":"wb","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"qid":"kh_7"},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":362.5,"top":707.5,"height":60,"width":87,"title":"尾包","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":450.24373626708984,"bottom":765.4968795776367,"vCenter":406.74373626708984,"hCenter":735.4968795776367},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":85,"top":710,"height":61.5,"width":276,"title":"这是更新后的元素","right":298.2421875,"bottom":771.99609375,"vCenter":192.4921875,"hCenter":741.24609375,"field":"zb","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"qid":"kh_5"},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":0,"top":712.5,"height":60,"width":82.5,"title":"组别","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":209.49375915527344,"bottom":768,"vCenter":105.99375915527344,"hCenter":736.5},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":0,"top":765,"height":60,"width":168,"title":"打印日期","coordinateSync":false,"widthHeightSync":false,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"right":215.74687957763672,"bottom":814.7437648773193,"vCenter":112.24687957763672,"hCenter":783.2437648773193},"printElementType":{"title":"这是更新后的元素","type":"text"}},{"options":{"left":170,"top":767.5,"height":61.5,"width":420,"title":"这是更新后的元素","right":381,"bottom":828.75,"vCenter":275.25,"hCenter":798,"field":"dyrq","coordinateSync":false,"widthHeightSync":false,"hideTitle":true,"fontSize":40,"textContentVerticalAlign":"middle","qrCodeLevel":0,"qid":"kh_6"},"printElementType":{"title":"这是更新后的元素","type":"text"}}],"paperNumberLeft":568.5,"paperNumberTop":330,"paperNumberContinue":true,"watermarkOptions":{"content":"vue-plugin-hiprint","rotate":25,"timestamp":true,"format":"YYYY-MM-DD HH:mm"},"panelLayoutOptions":{}}]}
  582. // 右键点击行时触发
  583. const roww = ref(null)
  584. const selectedRows = ref([]);
  585. const printdata = ref({});
  586. //单机
  587. const add_tableRowClick = async (row) => {
  588. roww.value = row
  589. }
  590. //双击
  591. const add_updateCompanyFunc = async (row) => {
  592. }
  593. //右键
  594. const handleRightClick = async (row) => {
  595. }
  596. //复选框
  597. const add_xpSelectionChange = (selection, type) => {
  598. console.log(selection);
  599. if (selection.length > 1) {
  600. // 当选择超过一个时,给出提示并只保留最后一个选择的行
  601. ElMessage({
  602. type: 'warning',
  603. message: '您只能选择一个订单子编号'
  604. });
  605. // 重置选择项
  606. selectedRows.value = []; // 清空之前的选择
  607. selection.splice(0, selection.length); // 清空当前选择数组
  608. return false;
  609. } else if (selection.length === 1) {
  610. // 只保留最后选择的那一行数据
  611. selectedRows.value = [selection[0]];
  612. // 将选中的数据赋值给 printdata
  613. const selectedRow = selection[0];
  614. let weibao;
  615. if (add_formData['是否尾包'] === '是') {
  616. weibao = 1;
  617. } else {
  618. weibao = 0;
  619. }
  620. const ewm = `${selectedRow['订单子编号']},01,${add_formData['尺码']},${add_formData['数量']},${weibao}`;
  621. printdata.value = {
  622. emm: ewm,
  623. zddbh: selectedRow['订单子编号'],
  624. kh: selectedRow['生产款号'],
  625. pm: selectedRow['款式'],
  626. ys: selectedRow['颜色'],
  627. cm: add_formData['尺码'],
  628. sl: add_formData['数量'],
  629. zb: add_formData['组别'],
  630. dyrq: currentDates,
  631. wb: add_formData['是否订单尾包'],
  632. };
  633. }
  634. };
  635. // 打印小票按钮点击时直接触发打印
  636. const add_printxp = () => {
  637. console.log(selectedRows.value);
  638. console.log(printdata.value);
  639. // 判断是否没有选择或者选择了多条记录
  640. if (selectedRows.value.length === 0) {
  641. ElMessage({
  642. type: 'warning',
  643. message: '请选择一个订单子编号'
  644. });
  645. return false;
  646. } else if (selectedRows.value.length > 1) {
  647. ElMessage({
  648. type: 'warning',
  649. message: '只能选择一个订单子编号'
  650. });
  651. return false;
  652. }
  653. // 选中一条记录时执行打印
  654. if (selectedRows.value.length === 1 && Object.keys(printdata.value).length > 0) {
  655. hiprint.init();
  656. const hiprintTemplate = new hiprint.PrintTemplate({ template: jsondata });
  657. hiprintTemplate.print(printdata.value);
  658. }
  659. };
  660. // =========== 删除按钮 ===========
  661. //记录复选框的值
  662. const bgSelection = ref(null)
  663. const baogong_del = () => {
  664. if(bgSelection.value === null || bgSelection.value === ''){
  665. ElMessage({type: 'warning',message: '请选择删除的数据' })
  666. }else{
  667. console.log(bgSelection.value)
  668. }
  669. }
  670. // 表格复选框
  671. const handleSelectionChange = (selection, type) => {
  672. const ids = selection.map(item => {
  673. return item.订单子编号
  674. })
  675. bgSelection.value = ids.join(',')
  676. }
  677. // =========== 补打小票 ===========
  678. const onxiaopiaoclick = async () => {
  679. if(row_onclick.value === '' || row_onclick.value === null || row_onclick.value === undefined){
  680. ElMessage({type: 'warning',message: '请选择一条数据' })
  681. return false;
  682. }
  683. let weibao;
  684. if (row_onclick.value['是否尾包'] === '是') {
  685. weibao = 1;
  686. } else {
  687. weibao = 0;
  688. }
  689. const ewm = `${row_onclick.value['订单子编号']},01,${row_onclick.value['尺码']},${row_onclick.value['数量']},${weibao}`;
  690. printdata.value = {
  691. emm: ewm,
  692. zddbh: row_onclick.value['订单子编号'],
  693. kh: row_onclick.value['生产款号'],
  694. pm: row_onclick.value['款式'],
  695. ys: row_onclick.value['颜色'],
  696. cm: row_onclick.value['尺码'],
  697. sl: row_onclick.value['报工数量'],
  698. zb: row_onclick.value['组别'],
  699. dyrq: currentDate,
  700. wb: row_onclick.value['是否尾包'],
  701. };
  702. hiprint.init();
  703. const hiprintTemplate = new hiprint.PrintTemplate({ template: jsondata });
  704. hiprintTemplate.print(printdata.value);
  705. }
  706. // =========== 修改 ===========
  707. const dialogFormVisible = ref(false)
  708. const edit_formData = ref({})
  709. // 双击修改
  710. const updateCompanyFunc = async (row) => {
  711. console.log(row)
  712. dialogFormVisible.value = true;
  713. Object.assign(edit_formData.value,row);
  714. edit_formData.value['是否订单尾包'] = row['是否尾包'];
  715. // let code = row['员工编号'];
  716. // const getStaffInfo_data = await getStaffInfo({code:code});
  717. // formDataTest.value = getStaffInfo_data.data;
  718. };
  719. // 弹窗修改确定
  720. const edit_Dialog = async () => {
  721. _ygjbzledit();
  722. }
  723. // 弹窗修改关闭
  724. const edit_closeDialog = () => {
  725. dialogFormVisible.value = false
  726. }
  727. const _ygjbzledit = async ()=>{
  728. // const formattedData = {
  729. // '订单子编号': edit_formData.value['订单子编号'],
  730. // '订单号': edit_formData.value['订单号'],
  731. // '生产款号': edit_formData.value['生产款号'],
  732. // '款式': edit_formData.value['款式'],
  733. // '颜色': edit_formData.value['颜色'],
  734. // '制单总数': edit_formData.value['制单总数'],
  735. // '组别': edit_formData.value['组别'],
  736. // '排产单数': edit_formData.value['排产单数'],
  737. // '尺码': edit_formData.value['尺码'],
  738. // '报工数量': edit_formData.value['报工数量'],
  739. // '是否为尾包': edit_formData.value['是否为尾包'],
  740. // '工序': edit_formData.value['工序'],
  741. // '验片人': edit_formData.value['验片人'],
  742. // '日期': edit_formData.value['日期'],
  743. // };
  744. // try {
  745. // const edid_edit_formData = await 修改接口(formattedData);
  746. // if (edid_edit_formData .code === 0) {
  747. // dialogFormVisible.value = false;
  748. // ElMessage({type: 'success',message: '更新成功'})
  749. // } else {
  750. // ElMessage({ type: 'error',message: '更新失败'})
  751. // }
  752. // } catch (error) {
  753. // console.error(error);
  754. // }
  755. }
  756. // =========== 分页 ===========
  757. // 分页相关的响应式变量
  758. const page = ref(1)
  759. const total = ref(0)
  760. const pageSize = ref(10)
  761. // 分页
  762. const handleCurrentChange = (val) => {
  763. page.value = val;
  764. _getStaffList();
  765. };
  766. // 修改页面容量 点击多少条/页
  767. const handleSizeChange = (val) => {
  768. page.value = 10;//默认显示
  769. pageSize.value = val;
  770. _getStaffList();
  771. };
  772. </script>
  773. <style scoped>
  774. .form-container {
  775. display: flex;
  776. flex-wrap: wrap;
  777. }
  778. .form-column {
  779. /*flex: 1;*/
  780. margin-right: 15px; /* 调整列之间的间距 */
  781. }
  782. /* 左侧输入框宽度调整 */
  783. .form-column .el-form-item .el-input {
  784. width: 150px; /* 调整左侧输入框的宽度 */
  785. }
  786. /* 媒体查询,根据需要调整断点 */
  787. @media screen and (max-width: 768px) {
  788. .form-column {
  789. flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
  790. margin-right: 0;
  791. }
  792. }
  793. /*:deep(.el-table td .cell) {*/
  794. /* line-height: 30px !important;*/
  795. /*}*/
  796. .JKWTree-container {
  797. display: flex;
  798. }
  799. .JKWTree-tree {
  800. /*width: 300px;*/
  801. background-color: #fff;
  802. padding: 10px;
  803. margin-right: 20px;
  804. }
  805. .JKWTree-tree h3 {
  806. font-size: 15px;
  807. font-weight: 700;
  808. margin: 10px 0;
  809. }
  810. .JKWTree-content {
  811. flex: 1;
  812. }
  813. /* 图片上传 */
  814. .upload-box {
  815. width: 200px;
  816. height: 200px;
  817. border: 2px dashed #e2e2e2;
  818. display: flex;
  819. justify-content: center;
  820. align-items: center;
  821. position: relative;
  822. cursor: pointer;
  823. }
  824. .uploaded-image {
  825. width: 100%;
  826. height: 100%;
  827. object-fit: cover;
  828. }
  829. .upload-icon {
  830. font-size: 40px;
  831. color: #c0c4cc;
  832. }
  833. .file-input {
  834. display: none;
  835. }
  836. .el-table .warning-row {
  837. background: oldlace;
  838. }
  839. /* 选中某行时的背景色 */
  840. :deep(.el-table__body tr.current-row) > td {
  841. background: #ff80ff !important;
  842. }
  843. </style>
  844. <style scoped>
  845. :deep(.el-table td .cell) {
  846. line-height: 20px !important;
  847. }
  848. :deep(.el-tabs__header){
  849. margin-bottom: 0;
  850. }
  851. .search{
  852. margin-left: 0px !important;
  853. margin-right: 10px !important;
  854. }
  855. .bt{
  856. margin-left: 2px !important;
  857. padding: 3px !important;
  858. font-size: 12px;
  859. }
  860. .el-tabs__header{
  861. margin: 0px !important;
  862. }
  863. .gva-table-box{
  864. padding: 0px !important;
  865. }
  866. .mab{
  867. margin-bottom: 5px;
  868. }
  869. </style>