zongjianbaogong.vue 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  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: 200px;margin: 5px"></el-input>
  10. <el-button type="primary" icon="search" @click="onSubmit" style="margin: 5px">查询</el-button>
  11. <el-button type="primary" @click="onAttendance" style="margin: 5px">新增</el-button>
  12. <el-button type="primary" @click="baogong_del" style="margin: 5px;float: right;background-color: red">删除</el-button>
  13. <el-button type="primary" @click="onxiaopiaoclick" style="margin: 5px">补打小票</el-button>
  14. </el-form-item>
  15. </el-form>
  16. </div>
  17. </layout-header>
  18. <layout>
  19. <!--左侧树侧形结构-->
  20. <layout-sider :resize-directions="['right']" :width="190" style="margin-right: 10px;">
  21. <div class="JKWTree-tree" style="height: 200px">
  22. <h3>总检报工</h3>
  23. <el-tree :data="treeData" class="treecolor" @node-click="handleNodeClick"></el-tree>
  24. </div>
  25. </layout-sider>
  26. <!-- 右侧区域 -->
  27. <layout-content >
  28. <el-main>
  29. <div class="gva-table-box">
  30. <!-- 表格数据 -->
  31. <el-table ref="multipleTable" style="width: 100%;height: 65vh" tooltip-effect="dark"
  32. :row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
  33. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  34. :data="tableData" border row-key="ID"
  35. size="small"
  36. highlight-current-row="true" @row-dblclick="updateCompanyFunc"
  37. @row-click="tableRowClick" :show-overflow-tooltip="true"
  38. @selection-change="handleSelectionChange">
  39. <el-table-column type="selection" width="55" />
  40. <el-table-column sortable align="center" label="序号" prop="序号" width="80" />
  41. <el-table-column sortable align="left" label="订单子编号" prop="订单子编号" width="120"/>
  42. <el-table-column sortable align="center" label="订单号" prop="订单号" width="120"/>
  43. <el-table-column sortable align="left" label="生产款号" prop="生产款号" width="120" />
  44. <el-table-column sortable align="left" label="款式" prop="款式" width="110" />
  45. <el-table-column sortable align="left" label="颜色" prop="颜色" width="80" />
  46. <el-table-column sortable align="left" label="制单总数" prop="制单总数" width="100" />
  47. <el-table-column sortable align="left" label="组别" prop="组别" width="110" />
  48. <el-table-column sortable align="left" label="排产单数" prop="排产单数" width="110" />
  49. <el-table-column sortable align="left" label="尺码" prop="尺码" width="80" />
  50. <el-table-column sortable align="left" label="报工数量" prop="报工数量" width="110" />
  51. <el-table-column sortable align="left" label="是否尾包" prop="是否尾包" width="110" />
  52. <el-table-column sortable align="left" label="工序" prop="工序" width="80" />
  53. <el-table-column sortable align="left" label="验片人" prop="验片人" width="90" />
  54. <el-table-column sortable align="left" label="日期" prop="日期" width="120" />
  55. </el-table>
  56. <!-- 分页 -->
  57. <div class="gva-pagination">
  58. <el-pagination layout="total" :current-page="page" :page-size="pageSize"
  59. :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
  60. <!-- <el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize" :page-sizes="[10, 30, 50, 100]"-->
  61. <!-- :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />-->
  62. </div>
  63. </div>
  64. <!-- 弹窗 -->
  65. <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="'修改员工基本资料'" destroy-on-close>
  66. <el-form :model="formDataTest" label-position="right" ref="elFormRef" :rules="rule" label-width="100px">
  67. <div class="form-container">
  68. <!-- 左侧部分 -->
  69. <div class="form-column" style="width: 36%;">
  70. <el-form-item label="员工编号:" prop="employeeId" class="mab" >
  71. <el-input v-model="formDataTest['员工编号']" placeholder="" style="width: 190px;"
  72. id="员工编号" @keydown="handleKeyDown($event, '员工编号', '在职状态', '性别')" />
  73. </el-form-item>
  74. <el-form-item label="性别:" prop="gender" class="mab">
  75. <el-input v-model="formDataTest['性别']" placeholder="" style="width: 190px;"
  76. id="性别" @keydown="handleKeyDown($event, '性别', '员工编号', '身份证号')" />
  77. </el-form-item>
  78. <el-form-item label="身份证号:" prop="gender" class="mab">
  79. <el-input v-model="formDataTest['身份证号']" placeholder="" style="width: 190px;"
  80. id="身份证号" @keydown="handleKeyDown($event, '身份证号', '性别', '所在部门')" />
  81. </el-form-item>
  82. <el-form-item label="部门名称:" prop="gender" class="mab">
  83. <el-input v-model="formDataTest['所在部门']" placeholder="" style="width: 190px;"
  84. id="所在部门" @keydown="handleKeyDown($event, '所在部门', '身份证号', '聘用日期')" />
  85. </el-form-item>
  86. <el-form-item label="入职日期:" prop="joinDate" class="mab">
  87. <el-input v-model="formDataTest['聘用日期']" placeholder="" style="width: 190px;"
  88. id="聘用日期" @keydown="handleKeyDown($event, '聘用日期', '所在部门', '人员类别')" />
  89. </el-form-item>
  90. <el-form-item label="人员类别:" prop="joinDate" >
  91. <el-select v-model="formDataTest['人员类别']" placeholder="" style="width: 190px;" id="人员类别"
  92. @keydown="handleKeyDown($event, '人员类别', '聘用日期', '班次类型')"
  93. >
  94. <el-option label="生产" value="生产"></el-option>
  95. <el-option label="行政" value="行政"></el-option>
  96. </el-select>
  97. </el-form-item>
  98. <el-form-item label="班次类型:" prop="joinDate" class="mab">
  99. <el-input v-model="formDataTest['班次类型']" placeholder="" style="width: 190px;"
  100. id="班次类型" @keydown="handleKeyDown($event, '班次类型', '人员类别', '工资表类别')" />
  101. </el-form-item>
  102. <el-form-item label="工资表类别:" prop="joinDate" class="mab">
  103. <el-select v-model="formDataTest['工资表类别']" placeholder="" style="width: 190px;"
  104. id="工资表类别" @keydown="handleKeyDown($event, '工资表类别', '班次类型', 'U8在职')"
  105. >
  106. <el-option label="职员级计时工资表" value="职员级计时工资表"></el-option>
  107. <el-option label="另发工资" value="另发工资"></el-option>
  108. <el-option label="操作级计件工资表" value="操作级计件工资表"></el-option>
  109. <el-option label="操作级计时工资表" value="操作级计时工资表"></el-option>
  110. </el-select>
  111. </el-form-item>
  112. <el-form-item label="U8在职:" prop="joinDate" class="mab">
  113. <el-input v-model="formDataTest['U8在职']" placeholder="" style="width: 190px;"
  114. id="U8在职" @keydown="handleKeyDown($event, 'U8在职', '工资表类别', '员工姓名')" />
  115. </el-form-item>
  116. </div>
  117. <!-- 中间部分 -->
  118. <div class="form-column">
  119. <el-form-item label="员工姓名:" prop="name" class="mab" label-width="100">
  120. <el-input v-model="formDataTest['员工姓名']" placeholder="" style="width: 190px;"
  121. id="员工姓名" @keydown="handleKeyDown($event, '员工姓名', 'U8在职', '出生日期')" />
  122. </el-form-item>
  123. <el-form-item label="出生日期:" prop="birthDate" class="mab" label-width="100">
  124. <el-input v-model="formDataTest['出生日期']" placeholder="" style="width: 190px;"
  125. id="出生日期" @keydown="handleKeyDown($event, '出生日期', '员工姓名', '职称职务')" />
  126. </el-form-item>
  127. <el-form-item label="职务:" prop="position" class="mab" label-width="100">
  128. <el-input v-model="formDataTest['职称职务']" placeholder="" style="width: 190px;"
  129. id="职称职务" @keydown="handleKeyDown($event, '职称职务', '出生日期', '部门编码')" />
  130. </el-form-item>
  131. <el-form-item label="部门编号:" prop="position" class="mab" label-width="100">
  132. <el-input v-model="formDataTest['部门编码']" placeholder="" style="width: 190px;"
  133. id="部门编码" @keydown="handleKeyDown($event, '部门编码', '职称职务', '转正日期')" />
  134. </el-form-item>
  135. <el-form-item label="转正日期:" prop="departmentId" class="mab" label-width="100">
  136. <el-input v-model="formDataTest['转正日期']" placeholder="" style="width: 190px;"
  137. id="转正日期" @keydown="handleKeyDown($event, '转正日期', '部门编码', '扣减司龄')" />
  138. </el-form-item>
  139. <el-form-item label="扣减司龄:" prop="departmentId" class="mab" label-width="100">
  140. <el-input v-model="formDataTest['扣减司龄']" placeholder="" style="width: 190px;"
  141. id="扣减司龄" @keydown="handleKeyDown($event, '扣减司龄', '转正日期', '人员性质')" />
  142. </el-form-item>
  143. <el-form-item label="人员性质:" prop="departmentId" class="mab" label-width="100">
  144. <el-select v-model="formDataTest['人员性质']" placeholder="" style="width: 190px;"
  145. id="人员性质" @keydown="handleKeyDown($event, '人员性质', '扣减司龄', '薪酬核算分组')"
  146. >
  147. <el-option label="退休返聘" value="退休返聘"></el-option>
  148. <el-option label="劳动合同工" value="劳动合同工"></el-option>
  149. <el-option label="借用" value="借用"></el-option>
  150. <el-option label="劳务派遣" value="劳务派遣"></el-option>
  151. <el-option label="实习生" value="实习生"></el-option>
  152. </el-select>
  153. </el-form-item>
  154. <el-form-item label="工资核算分组:" prop="joinDate" class="mab" label-width="100" >
  155. <el-input v-model="formDataTest['薪酬核算分组']" placeholder="" style="width: 190px;"
  156. id="薪酬核算分组" @keydown="handleKeyDown($event, '薪酬核算分组', '人员性质', '在职状态')" />
  157. </el-form-item>
  158. <el-form-item label="在职状态:" prop="joinDate" class="mab" label-width="100" >
  159. <el-input v-model="formDataTest['在职状态']" placeholder="" style="width: 190px;"
  160. id="在职状态" @keydown="handleKeyDown($event, '在职状态', '薪酬核算分组', '员工编号')" />
  161. </el-form-item>
  162. </div>
  163. </div>
  164. </el-form>
  165. <!-- 添加编辑页面取消确定按钮 -->
  166. <div style="text-align: right; ">
  167. <el-button @click="closeDialog">取消</el-button>
  168. <el-button type="primary" @click="enterDialog">确定</el-button>
  169. </div>
  170. </el-dialog>
  171. <!-- 新增弹窗 -->
  172. <el-dialog v-model="AttendanceVisible" title="工序报工" destroy-on-close width="50%">
  173. <el-row :gutter="24" style="margin-bottom: 20px;">
  174. <el-form-item label="机台号:" prop="deliveryDate" class="mab" label-width="70">
  175. <el-input v-model="add_formData['机台号']" style="width: 100px;" id="机台号" />
  176. </el-form-item>
  177. <el-form-item label="工序:" prop="deliveryDate" class="mab" label-width="70">
  178. <el-input v-model="add_formData['工序']" style="width: 140px;" id="工序" />
  179. </el-form-item>
  180. <el-form-item label="组别:" prop="deliveryDate" class="mab" label-width="70">
  181. <el-input v-model="add_formData['组别']" style="width: 140px;" id="组别" />
  182. </el-form-item>
  183. <el-form-item label="人员:" prop="deliveryDate" class="mab" label-width="70">
  184. <el-input v-model="add_formData['人员']" style="width: 100px;" id="人员" />
  185. </el-form-item>
  186. </el-row>
  187. <el-row :gutter="24" style="margin-bottom: 20px;">
  188. <el-input v-model="add_searchInfo" placeholder="扫描订单二维码获取订单信息" clearable style="width: 400px;margin: 5px"></el-input>
  189. <el-button type="primary" icon="search" @click="add_onSubmit" style="margin: 5px">查询</el-button>
  190. </el-row>
  191. <el-row :gutter="24" style="margin-bottom: 20px;">
  192. <el-table ref="multipleTable" style="width: 100%;height: 20vh" tooltip-effect="dark"
  193. :row-style="{ height: '30px' }" :header-cell-style="{ padding: '0px' }"
  194. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  195. :data="add_tableData" border row-key="ID"
  196. size="small" highlight-current-row="true" @row-dblclick="add_updateCompanyFunc"
  197. @row-click="add_tableRowClick" :show-overflow-tooltip="true"
  198. @selection-change="handleSelectionChange">
  199. <el-table-column sortable align="center" label="订单子编号" prop="订单子编号" width="180"/>
  200. <el-table-column sortable align="center" label="订单号" prop="订单号" width="180"/>
  201. <el-table-column sortable align="left" label="生产款号" prop="生产款号" width="305"/>
  202. <el-table-column sortable align="left" label="款式" prop="款式" width="180"/>
  203. <el-table-column sortable align="left" label="颜色" prop="颜色" width="180"/>
  204. </el-table>
  205. </el-row>
  206. <el-row :gutter="24" style="margin-bottom: 20px;">
  207. <el-form-item label="尺码:" prop="joinDate" style="font-size: 30px;font-weight: 1000;" label-width="90px">
  208. <el-select v-model="add_formData['尺码']" style="width: 150px;" id="尺码">
  209. <el-option label="是" value="32"></el-option>
  210. <el-option label="否" value="33"></el-option>
  211. <el-option label="否" value="34"></el-option>
  212. <el-option label="否" value="35"></el-option>
  213. <el-option label="否" value="36"></el-option>
  214. </el-select>
  215. </el-form-item>
  216. <el-form-item label="数量:" prop="joinDate" style="font-size: 30px;font-weight: 1000;" label-width="130px">
  217. <el-input v-model="add_formData['数量']" style="width: 140px;height: 40px;" id="人员" />
  218. </el-form-item>
  219. </el-row>
  220. <el-row :gutter="24" style="margin-bottom: 20px;">
  221. <el-form-item label="是否订单尾包:" prop="joinDate" style="font-size: 20px;font-weight: 1000;" label-width="145px">
  222. <el-select v-model="add_formData['是否订单尾包']" style="width: 150px;" id="尺码">
  223. <el-option label="是" value="是"></el-option>
  224. <el-option label="否" value="否"></el-option>
  225. </el-select>
  226. </el-form-item>
  227. </el-row>
  228. <template #footer>
  229. <div class="dialog-footer">
  230. <el-button @click="add_closeDialog">取消</el-button>
  231. <el-button type="primary" @click="add_Dialog">保存</el-button>
  232. <el-button type="primary" @click="add_printxp">打印小票</el-button>
  233. </div>
  234. </template>
  235. </el-dialog>
  236. </el-main>
  237. </layout-content>
  238. </layout>
  239. </layout>
  240. </div>
  241. </template>
  242. <script>
  243. export default {
  244. };
  245. </script>
  246. <script setup>
  247. // 全量引入格式化工具 请按需保留
  248. import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
  249. import {hiprint} from "vue-plugin-hiprint";
  250. import {ref, reactive,nextTick } from 'vue'
  251. import {getCustom, getDepartment, getProductData,getStaffInfo, getStaffList, ygjbzledit,clockUpdate} from '@/api/yunyin/yunying'
  252. import {ElMessage} from "element-plus";
  253. defineOptions({name: 'Company'})
  254. // =========== 获取左侧树侧形结构 ===========
  255. const treeData = ref({})
  256. const DataListdata = async () => {
  257. try {
  258. const data =
  259. [{
  260. label : '总检完成记录',
  261. children : [
  262. {label : '2024.7.16'},
  263. {label : '2024.7.15'},
  264. {label : '2024.7.14'},
  265. {label : '2024.7.13'},
  266. {label : '2024.7.12'},
  267. {label : '2024.7.11'}
  268. ]
  269. }];
  270. treeData.value = data
  271. } catch (error) {
  272. console.error(error);
  273. }
  274. };
  275. DataListdata();
  276. //点击左侧树形 获取右侧table列表
  277. const tableData = reactive([]);
  278. const _u8 = ref(null); // U8系统的值
  279. const _mes = ref(null); // MES系统的值
  280. const handleNodeClick = async (node) => {
  281. _getStaffList(); // 执行获取员工列表的函数
  282. };
  283. //点击管理中心 显示部门的全部数据
  284. const handleNodeExpand = async (node) => {
  285. // _department_code.value = node['编号'];
  286. searchInfo.value = '';
  287. _getStaffList()
  288. }
  289. // =========== 搜索 ===========
  290. const searchInfo = ref('')
  291. const _department_code = ref(null)
  292. //点击【查询】按钮
  293. const onSubmit = () => {
  294. _department_code.value = '';
  295. if(searchInfo.value === ''){
  296. tableData.length = 0;
  297. }else{
  298. _getStaffList();
  299. }
  300. };
  301. //获取员工信息列表
  302. const _getStaffList = async ()=>{
  303. console.log(123)
  304. try {
  305. const WorkListdata = [
  306. {
  307. '序号':'1',
  308. '订单子编号':'XXX001-1',
  309. '订单号':'XXX001',
  310. '生产款号':'2403-1622款',
  311. '款式':'连衣裙',
  312. '颜色':'红色',
  313. '制单总数':'90',
  314. '组别':'服装厂1组',
  315. '排产单数':'50',
  316. '尺码':'32',
  317. '报工数量':'10',
  318. '是否尾包':'否',
  319. '工序':'仓库出库',
  320. '上报人':'xxx',
  321. '日期':'2024-07-16'
  322. },
  323. {
  324. '序号':'2',
  325. '订单子编号':'XXX002-2',
  326. '订单号':'XXX002',
  327. '生产款号':'2403-1622款',
  328. '款式':'西服',
  329. '颜色':'白色',
  330. '制单总数':'90',
  331. '组别':'服装厂1组',
  332. '排产单数':'60',
  333. '尺码':'35',
  334. '报工数量':'58',
  335. '是否尾包':'否',
  336. '工序':'仓库出库',
  337. '上报人':'xxx',
  338. '日期':'2024-07-16'
  339. },
  340. {
  341. '序号':'3',
  342. '订单子编号':'XXX003-3',
  343. '订单号':'XXX003',
  344. '生产款号':'2403-1622款',
  345. '款式':'裤子',
  346. '颜色':'黑色',
  347. '制单总数':'90',
  348. '组别':'服装厂1组',
  349. '排产单数':'40',
  350. '尺码':'36',
  351. '报工数量':'37',
  352. '是否尾包':'否',
  353. '工序':'仓库出库',
  354. '上报人':'xxx',
  355. '日期':'2024-07-16'
  356. },
  357. ];
  358. console.log(WorkListdata)
  359. tableData.splice(0,tableData.length,...WorkListdata);//表格数据
  360. // total.value =WorkListdata.data.total;//共多少条
  361. } catch (error) {
  362. console.error(error);
  363. }
  364. }
  365. // =========== 新增按钮 ===========
  366. const AttendanceVisible=ref(false)
  367. const add_tableData = reactive([]);
  368. // 获取当前日期
  369. const today = new Date();
  370. const year = today.getFullYear();
  371. const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  372. const day = String(today.getDate()).padStart(2, '0');
  373. const hours = String(today.getHours()).padStart(2, '0');
  374. const minutes = String(today.getMinutes()).padStart(2, '0');
  375. const seconds = String(today.getSeconds()).padStart(2, '0');
  376. const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  377. //新增按钮
  378. const onAttendance = () => {
  379. AttendanceVisible.value=true
  380. const WorkListdata = [
  381. {
  382. '订单子编号':'XXX001-1',
  383. '订单号':'XXX001',
  384. '生产款号':'2403-1622款',
  385. '款式':'连衣裙',
  386. '颜色':'红色'
  387. },
  388. ];
  389. add_formData['机台号'] = '125'
  390. add_formData['工序'] = '车缝'
  391. add_formData['组别'] = '服装厂1组'
  392. add_formData['人员'] = 'xxx'
  393. add_formData['尺码'] = '31'
  394. add_formData['数量'] = '10'
  395. add_formData['是否订单尾包'] = '否'
  396. console.log(WorkListdata)
  397. add_tableData.splice(0,add_tableData.length,...WorkListdata);//表格数据
  398. };
  399. const add_formData = reactive({
  400. 机台号: '',
  401. 工序: '',
  402. 组别: '',
  403. 人员: '',
  404. 尺码: '',
  405. 数量: '',
  406. 是否订单尾包: '',
  407. });
  408. // 新增确定
  409. const add_Dialog = () => {
  410. };
  411. // 新增取消
  412. const add_closeDialog = () => {
  413. AttendanceVisible.value=true
  414. };
  415. // =========== 新增搜索 ===========
  416. const add_searchInfo = ref('')
  417. //点击【查询】按钮
  418. const add_onSubmit = async ()=>{
  419. if(add_searchInfo.value === '' || add_searchInfo.value === undefined){
  420. ElMessage({type: 'warning',message: '搜索内容不能为空' })
  421. }else{
  422. console.log(add_searchInfo.value)
  423. }
  424. };
  425. // 生成二维码的方法
  426. const generateQRCode = () => {
  427. // 先清除之前的二维码,以免生成多个
  428. const qrcodeContainer = document.getElementById('qrcode');
  429. qrcodeContainer.innerHTML = '';
  430. // 生成新的二维码
  431. new QRCode(qrcodeContainer, {
  432. text: 'https://www.example.com', // 这里替换为你需要生成二维码的内容
  433. width: 100,
  434. height: 100,
  435. });
  436. };
  437. // =========== 删除按钮 ===========
  438. const bgSelection = ref(null)
  439. const baogong_del = () => {
  440. if(bgSelection.value === null || bgSelection.value === ''){
  441. ElMessage({type: 'warning',message: '请选择删除的数据' })
  442. }else{
  443. console.log(bgSelection.value)
  444. }
  445. }
  446. // 复选框
  447. const handleSelectionChange = (selection, type) => {
  448. const ids = selection.map(item => {
  449. return item.订单子编号
  450. })
  451. bgSelection.value = ids.join(',')
  452. }
  453. // =========== 补打小票 ===========
  454. const onxiaopiaoclick = async (row) => {
  455. }
  456. // =========== 修改 ===========
  457. // 双击修改
  458. const updateCompanyFunc = async (row) => {
  459. // let code = row['员工编号'];
  460. // const getStaffInfo_data = await getStaffInfo({code:code});
  461. // formDataTest.value = getStaffInfo_data.data;
  462. // dialogFormVisible.value = true;
  463. };
  464. // =========== 分页 ===========
  465. // 分页相关的响应式变量
  466. const page = ref(1)
  467. const total = ref(0)
  468. const pageSize = ref(10)
  469. // 分页
  470. const handleCurrentChange = (val) => {
  471. page.value = val;
  472. _getStaffList();
  473. };
  474. // 修改页面容量 点击多少条/页
  475. const handleSizeChange = (val) => {
  476. page.value = 10;//默认显示
  477. pageSize.value = val;
  478. _getStaffList();
  479. };
  480. // 弹窗控制标记
  481. const dialogFormVisible = ref(false)
  482. //修改
  483. const formDataTest = ref({})
  484. // 修改关闭弹窗
  485. const closeDialog = () => {dialogFormVisible.value = false,AttendanceVisible.value=false}
  486. // 弹窗确定
  487. const enterDialog = async () => {
  488. }
  489. //修改
  490. const _ygjbzledit = async ()=>{
  491. // const formattedData = {
  492. // '员工编号': formDataTest.value['员工编号'],
  493. // '员工姓名': formDataTest.value['员工姓名'],
  494. // '性别': formDataTest.value['性别'],
  495. // '出生日期': formDataTest.value['出生日期'],
  496. // '身份证号': formDataTest.value['身份证号'],
  497. // '职称职务': formDataTest.value['职称职务'],
  498. // '所在部门': formDataTest.value['所在部门'],
  499. // '聘用日期': formDataTest.value['聘用日期'],
  500. // '转正日期': formDataTest.value['转正日期'],
  501. // '扣减司龄': formDataTest.value['扣减司龄'] ? formDataTest.value['扣减司龄'] : '0',
  502. // '人员类别': formDataTest.value['人员类别'],
  503. // '人员性质': formDataTest.value['人员性质'],
  504. // '班次类型': formDataTest.value['班次类型'],
  505. // '薪酬核算分组': formDataTest.value['薪酬核算分组'],
  506. // '工资表类别': formDataTest.value['工资表类别'],
  507. // 'U8在职': formDataTest.value['U8在职'],
  508. // '在职状态': formDataTest.value['在职状态'],
  509. // '部门编码': formDataTest.value['部门编码'],
  510. // };
  511. // try {
  512. // const ygjbzledit_eddt = await ygjbzledit(formattedData);
  513. // if (ygjbzledit_eddt .code === 0) {
  514. // dialogFormVisible.value = false;
  515. // ElMessage({type: 'success',message: '更新成功'})
  516. // } else {
  517. // console.log(ygjbzledit_eddt);
  518. // ElMessage({ type: 'error',message: '更新失败'})
  519. // }
  520. // } catch (error) {
  521. // console.error(error);
  522. // }
  523. }
  524. // =========== 打印小票 ===========
  525. 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":{}}]}
  526. // 打印小票按钮点击时直接触发打印
  527. const add_printxp = () => {
  528. hiprint.init()
  529. const hiprintTemplate = new hiprint.PrintTemplate({ template: jsondata })
  530. // 获取当前日期
  531. const today = new Date();
  532. const year = today.getFullYear();
  533. const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  534. const day = String(today.getDate()).padStart(2, '0');
  535. const hours = String(today.getHours()).padStart(2, '0');
  536. const minutes = String(today.getMinutes()).padStart(2, '0');
  537. const seconds = String(today.getSeconds()).padStart(2, '0');
  538. const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  539. const printdata = {
  540. "emm": "子订单编号",
  541. "zddbh": "123",
  542. "kh": "123",
  543. "pm": "123",
  544. "ys": add_formData['颜色'],
  545. "cm": add_formData['尺码'],
  546. "sl": add_formData['数量'],
  547. "zb": add_formData['组别'],
  548. "dyrq": currentDate,
  549. "wb": add_formData['是否订单尾包'],
  550. }
  551. hiprintTemplate.print(printdata);
  552. };
  553. </script>
  554. <style scoped>
  555. .form-container {
  556. display: flex;
  557. flex-wrap: wrap;
  558. }
  559. .form-column {
  560. /*flex: 1;*/
  561. margin-right: 15px; /* 调整列之间的间距 */
  562. }
  563. /* 左侧输入框宽度调整 */
  564. .form-column .el-form-item .el-input {
  565. width: 150px; /* 调整左侧输入框的宽度 */
  566. }
  567. /* 媒体查询,根据需要调整断点 */
  568. @media screen and (max-width: 768px) {
  569. .form-column {
  570. flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
  571. margin-right: 0;
  572. }
  573. }
  574. /*:deep(.el-table td .cell) {*/
  575. /* line-height: 30px !important;*/
  576. /*}*/
  577. .JKWTree-container {
  578. display: flex;
  579. }
  580. .JKWTree-tree {
  581. /*width: 300px;*/
  582. background-color: #fff;
  583. padding: 10px;
  584. margin-right: 20px;
  585. }
  586. .JKWTree-tree h3 {
  587. font-size: 15px;
  588. font-weight: 700;
  589. margin: 10px 0;
  590. }
  591. .JKWTree-content {
  592. flex: 1;
  593. }
  594. /* 图片上传 */
  595. .upload-box {
  596. width: 200px;
  597. height: 200px;
  598. border: 2px dashed #e2e2e2;
  599. display: flex;
  600. justify-content: center;
  601. align-items: center;
  602. position: relative;
  603. cursor: pointer;
  604. }
  605. .uploaded-image {
  606. width: 100%;
  607. height: 100%;
  608. object-fit: cover;
  609. }
  610. .upload-icon {
  611. font-size: 40px;
  612. color: #c0c4cc;
  613. }
  614. .file-input {
  615. display: none;
  616. }
  617. .el-table .warning-row {
  618. background: oldlace;
  619. }
  620. /* 选中某行时的背景色 */
  621. :deep(.el-table__body tr.current-row) > td {
  622. background: #ff80ff !important;
  623. }
  624. </style>
  625. <style scoped>
  626. :deep(.el-table td .cell) {
  627. line-height: 20px !important;
  628. }
  629. :deep(.el-tabs__header){
  630. margin-bottom: 0;
  631. }
  632. .search{
  633. margin-left: 0px !important;
  634. margin-right: 10px !important;
  635. }
  636. .bt{
  637. margin-left: 2px !important;
  638. padding: 3px !important;
  639. font-size: 12px;
  640. }
  641. .el-tabs__header{
  642. margin: 0px !important;
  643. }
  644. .gva-table-box{
  645. padding: 0px !important;
  646. }
  647. .mab{
  648. margin-bottom: 5px;
  649. }
  650. </style>