Dayreports.vue 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997
  1. <template>
  2. <div>
  3. <el-container>
  4. <el-aside width="200px">
  5. <div class="JKWTree-tree">
  6. <h3 > 组织列表</h3>
  7. <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
  8. </div>
  9. </el-aside>
  10. <el-container>
  11. <!-- <el-header>dd</el-header>-->
  12. <el-main>
  13. <div class="gva-search-box">
  14. <el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
  15. <el-form-item label="创建日期" prop="createdAt">
  16. <template #label>
  17. <span>
  18. 创建日期
  19. <el-tooltip content="搜索范围是开始日期(包含)至结束日期(不包含)">
  20. <el-icon><QuestionFilled /></el-icon>
  21. </el-tooltip>
  22. </span>
  23. </template>
  24. <el-date-picker v-model="searchInfo.startCreatedAt" type="datetime" placeholder="开始日期" :disabled-date="time=> searchInfo.endCreatedAt ? time.getTime() > searchInfo.endCreatedAt.getTime() : false"></el-date-picker>
  25. <el-date-picker v-model="searchInfo.endCreatedAt" type="datetime" placeholder="结束日期" :disabled-date="time=> searchInfo.startCreatedAt ? time.getTime() < searchInfo.startCreatedAt.getTime() : false"></el-date-picker>
  26. </el-form-item>
  27. <el-form-item>
  28. <el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
  29. <el-button icon="refresh" @click="onReset">重置</el-button>
  30. </el-form-item>
  31. </el-form>
  32. </div>
  33. <div class="gva-table-box">
  34. <div class="gva-btn-list">
  35. <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
  36. <el-button type="primary" icon="plus" @click="displayDialog">显示方式</el-button>
  37. <el-button type="primary" icon="plus" @click="positDialog">定位</el-button>
  38. <el-button type="primary" icon="plus" @click="SeleUpda">查改</el-button>
  39. <el-button type="primary" icon="plus" @click="displayDialog">导出到Excel</el-button>
  40. <el-button type="primary" icon="plus" @click="dialogTableVisible">拆片系数修正 </el-button>
  41. <el-button type="primary" icon="plus" @click="dialogTableVisible2">工序产量核查 </el-button>
  42. <el-button type="primary" icon="plus" @click="Exception">机台异常明细</el-button>
  43. <el-button type="primary" icon="plus" @click="displayDialog">退出</el-button>
  44. <el-popover v-model:visible="deleteVisible" :disabled="!multipleSelection.length" placement="top" width="160">
  45. <p>确定要删除吗?</p>
  46. <div style="text-align: right; margin-top: 8px;">
  47. <el-button type="primary" link @click="deleteVisible = false">取消</el-button>
  48. <el-button type="primary" @click="onDelete">确定</el-button>
  49. </div>
  50. <template #reference>
  51. <el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length" @click="deleteVisible = true">删除</el-button>
  52. </template>
  53. </el-popover>
  54. </div>
  55. <el-table
  56. :data="tableData"
  57. height="600"
  58. border
  59. highlight-current-row
  60. v-model="selectedRow"
  61. @row-click="selectRow"
  62. @current-change="handleCurrentChange"
  63. @row-dblclick="dbSelected"
  64. @cell-click="cellclick"
  65. :cell-style="tableCellStyle">
  66. style="width: 100%">
  67. <el-table-column
  68. fixed
  69. prop="sczl_gdbh"
  70. label="工单编号"
  71. width="100">
  72. </el-table-column>
  73. <el-table-column
  74. fixed
  75. prop="Gd_cpmc"
  76. label="产品名称"
  77. width="180">
  78. </el-table-column>
  79. <el-table-column
  80. prop="jyno_gxmc"
  81. label="印件及工序"
  82. width="180">
  83. </el-table-column>
  84. <el-table-column
  85. prop="sczl_rq"
  86. label="生产日期"
  87. width="180">
  88. </el-table-column>
  89. <el-table-column
  90. prop="sczl_jtbh"
  91. label="机台"
  92. width="180">
  93. </el-table-column>
  94. <el-table-column
  95. prop="sczl_bzdh"
  96. label="班组"
  97. width="180">
  98. </el-table-column>
  99. <el-table-column
  100. prop="sczl_num"
  101. label="流程单"
  102. width="180">
  103. </el-table-column>
  104. <el-table-column
  105. prop="sczl_cl"
  106. label="车头产量"
  107. width="180">
  108. </el-table-column>
  109. <el-table-column
  110. prop="sczl_ms"
  111. label="色度数"
  112. width="180">
  113. </el-table-column>
  114. <el-table-column
  115. prop="sczl_zcfp"
  116. label="制程废"
  117. width="180">
  118. </el-table-column>
  119. <el-table-column
  120. prop="sczl_zccp"
  121. label="次品"
  122. width="180">
  123. </el-table-column>
  124. <el-table-column
  125. prop="incomingerror"
  126. label="来料异常"
  127. width="180">
  128. </el-table-column>
  129. <el-table-column
  130. prop="sczl_装版工时"
  131. label="装版工时"
  132. width="180">
  133. </el-table-column>
  134. <el-table-column
  135. prop="sczl_保养工时"
  136. label="保养工时"
  137. width="180">
  138. </el-table-column>
  139. <el-table-column
  140. prop="sczl_打样工时"
  141. label="打样工时"
  142. width="180">
  143. </el-table-column>
  144. <el-table-column
  145. prop="sczl_异常停机工时"
  146. label="异常停机工时"
  147. width="180">
  148. </el-table-column>
  149. <el-table-column
  150. prop="runwork"
  151. label="sczl_设备运行工时"
  152. width="180">
  153. </el-table-column>
  154. <el-table-column
  155. prop="sczl_bh1"
  156. label="组员编号1"
  157. width="180">
  158. </el-table-column>
  159. <el-table-column
  160. prop="name1"
  161. label="组员姓名1"
  162. width="180">
  163. </el-table-column>
  164. <el-table-column
  165. prop="sczl_bh2"
  166. label="组员编号2"
  167. width="180">
  168. </el-table-column>
  169. <el-table-column
  170. prop="name2"
  171. label="组员姓名"
  172. width="180">
  173. </el-table-column>
  174. <el-table-column
  175. prop="sczl_bh3"
  176. label="组员编号3"
  177. width="180">
  178. </el-table-column>
  179. <el-table-column
  180. prop="name3"
  181. label="组员姓名3"
  182. width="180">
  183. </el-table-column>
  184. <el-table-column
  185. prop="sczl_bh4"
  186. label="组员编号4"
  187. width="180">
  188. </el-table-column>
  189. <el-table-column
  190. prop="name4"
  191. label="组员姓名4"
  192. width="180">
  193. </el-table-column>
  194. <el-table-column
  195. prop="sczl_bh5"
  196. label="组员编号5"
  197. width="180">
  198. </el-table-column>
  199. <el-table-column
  200. prop="name5"
  201. label="组员姓名5"
  202. width="180">
  203. </el-table-column>
  204. <el-table-column
  205. prop="sczl_bh6"
  206. label="组员编号6"
  207. width="180">
  208. </el-table-column>
  209. <el-table-column
  210. prop="name6"
  211. label="组员姓名6"
  212. width="180">
  213. </el-table-column>
  214. <el-table-column
  215. prop="拆片联拼系数"
  216. label="拆片联拼系数"
  217. width="180">
  218. </el-table-column>
  219. <el-table-column
  220. prop="拆片条小盒系数"
  221. label="拆片小盒系数"
  222. width="180">
  223. </el-table-column>
  224. <el-table-column
  225. prop="sczl_工价系数"
  226. label="工价系数"
  227. width="180">
  228. </el-table-column>
  229. <el-table-column
  230. prop="dailyquota"
  231. label="日定额"
  232. width="180">
  233. </el-table-column>
  234. <el-table-column
  235. prop="piecesprice "
  236. label="千件工价"
  237. width="180">
  238. </el-table-column>
  239. <el-table-column
  240. prop="addstandards "
  241. label="补产标准"
  242. width="180">
  243. </el-table-column>
  244. <el-table-column
  245. prop="sys_id"
  246. label="创建用户"
  247. width="180">
  248. </el-table-column>
  249. <el-table-column
  250. prop="sys_rq"
  251. label="创建时间"
  252. width="180">
  253. </el-table-column>
  254. <el-table-column
  255. prop="mod_rq"
  256. label="修改时间"
  257. width="180">
  258. </el-table-column>
  259. <el-table-column
  260. prop="UniqId"
  261. label="UniqId"
  262. width="180">
  263. </el-table-column>
  264. </el-table>
  265. <div class="gva-pagination">
  266. <el-pagination
  267. layout="total, sizes, prev, pager, next, jumper"
  268. :current-page="page"
  269. :page-size="pageSize"
  270. :page-sizes="[10, 30, 50, 100]"
  271. :total="total"
  272. @current-change="handleCurrentChange"
  273. @size-change="handleSizeChange"
  274. />
  275. </div>
  276. </div>
  277. <!-- 显示方式 -->
  278. <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
  279. <el-card class="box-card">
  280. <el-radio v-model="radio" label="1">按工单显示</el-radio>
  281. <el-radio v-model="radio" label="2">按输单日期显示</el-radio>
  282. </el-card>
  283. <template #footer>
  284. <el-button type="primary" @click="enterDialog">确 定</el-button>
  285. <el-button @click="closeDialog">放弃</el-button>
  286. </template>
  287. </el-dialog>
  288. <el-dialog v-model="dialogTableVisibleShow" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
  289. <el-form-item label="工单编号:" prop="address" >
  290. <el-input v-model="formData.address" :clearable="true" placeholder="请输入班组" style="width:200px" />
  291. <el-input v-model="formData.address" :clearable="true" placeholder="请输入班组" style="width:200px" />
  292. </el-form-item>
  293. <el-table :data="gridData">
  294. <el-table-column property="date" label="工单编号" width="150"></el-table-column>
  295. <el-table-column property="name" label="拆片名称" width="200"></el-table-column>
  296. <el-table-column property="address" label="印件工序及工艺" width="200"></el-table-column>
  297. <el-table-column property="date" label="生产日期" width="150"></el-table-column>
  298. <el-table-column property="name" label="产量" width="200"></el-table-column>
  299. <el-table-column property="address" label="原工价系数" width="200"></el-table-column>
  300. <el-table-column property="date" label="新工价系数" width="150"></el-table-column>
  301. <el-table-column property="name" label="联数系数" width="200"></el-table-column>
  302. <el-table-column property="address" label="条小盒系数" width="200"></el-table-column>
  303. <el-table-column property="date" label="日定额" width="150"></el-table-column>
  304. <el-table-column property="name" label="千件工价" width="200"></el-table-column>
  305. <el-table-column property="address" label="组员编号1" width="200"></el-table-column>
  306. <el-table-column property="name" label="组员姓名1" width="200"></el-table-column>
  307. <el-table-column property="address" label="组员编号2" width="200"></el-table-column>
  308. <el-table-column property="name" label="组员姓名2" width="200"></el-table-column>
  309. </el-table>
  310. </el-dialog>
  311. <el-dialog v-model="dialogTableVisibleShow2" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
  312. <el-form-item label="工单编号:" prop="address" >
  313. <el-input v-model="formData.address" :clearable="true" placeholder="请输入班组" style="width:200px" />
  314. <el-input v-model="formData.address" :clearable="true" placeholder="请输入班组" style="width:200px" />
  315. </el-form-item>
  316. <el-table :data="gridData">
  317. <el-table-column property="date" label="印件及工序名称" width="150"></el-table-column>
  318. <el-table-column property="name" label="工序计划产量" width="200"></el-table-column>
  319. <el-table-column property="address" label="联数" width="200"></el-table-column>
  320. <el-table-column property="date" label="折算车头产量" width="150"></el-table-column>
  321. <el-table-column property="name" label="实际上报产量" width="200"></el-table-column>
  322. <el-table-column property="address" label="制程废品" width="200"></el-table-column>
  323. <el-table-column property="date" label="制程废品率" width="150"></el-table-column>
  324. <el-table-column property="name" label="来料异常" width="200"></el-table-column>
  325. <el-table-column property="address" label="流程单数" width="200"></el-table-column>
  326. <el-table-column property="date" label="当前设备" width="150"></el-table-column>
  327. <el-table-column property="name" label="工序状态" width="200"></el-table-column>
  328. <el-table-column property="address" label="首版生产日期" width="200"></el-table-column>
  329. </el-table>
  330. </el-dialog>
  331. <el-dialog v-model="positVisible" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
  332. <el-card class="box-card">
  333. <div class="demo-input-suffix">
  334. 工单编号:<el-input placeholder="" prefix-icon="el-icon-search" v-model="input2"> </el-input>
  335. </div>
  336. <div class="demo-input-suffix">
  337. 产品名称:
  338. <el-input
  339. placeholder=""
  340. v-model="input4">
  341. <i slot="prefix" class="el-input__icon el-icon-search"></i>
  342. </el-input>
  343. </div>
  344. </el-card>
  345. <template #footer>
  346. <el-button type="primary" @click="enterDialog">继续</el-button>
  347. <el-button @click="closeDialog">放弃</el-button>
  348. </template>
  349. </el-dialog>
  350. <el-dialog v-model="ExceptionShow" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
  351. <el-card class="box-card">
  352. <div class="block">
  353. <span class="demonstration">统计时间从</span>
  354. <el-date-picker
  355. v-model="value1"
  356. type="daterange"
  357. range-separator="至"
  358. start-placeholder="开始日期"
  359. end-placeholder="结束日期">
  360. </el-date-picker>
  361. </div>
  362. </el-card>
  363. <template #footer>
  364. <el-button type="primary" @click="enterDialog">执行</el-button>
  365. <el-button @click="closeDialog">放弃</el-button>
  366. </template>
  367. </el-dialog>
  368. <el-dialog v-model="SeleUpdaShow" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
  369. <el-scrollbar height="500px">
  370. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
  371. <el-form-item label="工单编号:" prop="address" >
  372. <el-input v-model="formData.address" :clearable="true" placeholder="" />
  373. </el-form-item>
  374. <el-form-item label="产品名称" prop="image" >
  375. <el-input v-model="formData.image" :clearable="true" placeholder="" style="width: 400px;"/>
  376. </el-form-item>
  377. </el-form>
  378. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
  379. <el-form-item label="印件号:" prop="address" >
  380. <el-input v-model="formData.address" :clearable="true" placeholder="请输入班组" />
  381. </el-form-item>
  382. <el-form-item label="印件名称:" prop="image" >
  383. <el-input v-model="formData.image" :clearable="true" placeholder="请输入日期" style="width: 400px;" />
  384. </el-form-item>
  385. </el-form>
  386. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
  387. <el-form-item label="工序名称:" prop="address" >
  388. <el-input v-model="formData.address" :clearable="true" placeholder="请输入工单编号" />
  389. </el-form-item>
  390. <el-form-item prop="image" >
  391. <el-input v-model="formData.image" :clearable="true" placeholder="请输入产品名称" />
  392. </el-form-item>
  393. <el-form-item label="工艺名称:" prop="address" >
  394. <el-input v-model="formData.address" :clearable="true" placeholder="请输入工单编号" />
  395. </el-form-item>
  396. </el-form>
  397. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
  398. <el-form-item label="日期:" prop="address" >
  399. <el-input v-model="formData.address" :clearable="true" placeholder="请输入工序名称" style="width: 140px;" />
  400. </el-form-item>
  401. <el-form-item prop="image" label="机器" >
  402. <el-input v-model="formData.image" :clearable="true" placeholder="请输入工序号" style="width: 140px;" />
  403. </el-form-item>
  404. <el-form-item label="组别:" prop="address" >
  405. <el-input v-model="formData.address" :clearable="true" placeholder="请输入流程单号" style="width: 140px;" />
  406. </el-form-item>
  407. </el-form>
  408. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
  409. <el-form-item label="墨色:" prop="address" >
  410. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 123px;" />
  411. </el-form-item>
  412. <el-form-item label="加工联数:" prop="address" >
  413. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 123px;" />
  414. </el-form-item>
  415. <el-form-item label="产量:" prop="address" >
  416. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 123px;" />
  417. </el-form-item>
  418. <el-form-item label="制程废品:" prop="address" >
  419. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 123px;" />
  420. </el-form-item>
  421. </el-form>
  422. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="95px">
  423. <el-form-item label="装版总工时:" prop="address" >
  424. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  425. </el-form-item>
  426. <el-form-item label="装版补产工时:" prop="address">
  427. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  428. </el-form-item>
  429. <el-form-item label="保养工时:" prop="address" >
  430. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 123px;" />
  431. </el-form-item>
  432. <el-form-item label="异常停机:" prop="address" >
  433. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 123px;" />
  434. </el-form-item>
  435. </el-form>
  436. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="95px">
  437. <el-form-item label="打样总工时:" prop="address" >
  438. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  439. </el-form-item>
  440. <el-form-item label="打样补产工时:" prop="address">
  441. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  442. </el-form-item>
  443. <el-form-item label="通电时间:" prop="address" >
  444. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 123px;" />
  445. </el-form-item>
  446. </el-form>
  447. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="95px">
  448. <el-form-item label="拆片联拼系数:" prop="address" >
  449. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  450. </el-form-item>
  451. <el-form-item label="拆片小盒系数:" prop="address">
  452. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  453. </el-form-item>
  454. </el-form>
  455. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="95px">
  456. <el-form-item label="定额代号:" prop="address" >
  457. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  458. </el-form-item>
  459. <el-form-item label="工价系数:" prop="address">
  460. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  461. </el-form-item>
  462. <el-form-item label="计产系数:" prop="address" >
  463. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 123px;" />
  464. </el-form-item>
  465. </el-form>
  466. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="55px">
  467. <el-form-item label="班组成员" prop="address" >
  468. </el-form-item>
  469. <el-form-item label="组员1:" prop="image" >
  470. </el-form-item>
  471. <el-form-item label="组员2" prop="address" >
  472. </el-form-item>
  473. <el-form-item label="组员3" prop="address" >
  474. </el-form-item>
  475. <el-form-item label="组员4" prop="image" >
  476. </el-form-item>
  477. <el-form-item label="组员5" prop="address" >
  478. </el-form-item>
  479. <el-form-item label="组员6" prop="address" >
  480. </el-form-item>
  481. <el-form-item label="组员7" prop="image" >
  482. </el-form-item>
  483. <el-form-item label="组员8" prop="address" >
  484. </el-form-item>
  485. <el-form-item label="组员9" prop="address" >
  486. </el-form-item>
  487. <el-form-item label="特殊组员" prop="image" >
  488. </el-form-item>
  489. </el-form>
  490. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="55px">
  491. <el-form-item label="" prop="address" >
  492. </el-form-item>
  493. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  494. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  495. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  496. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  497. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  498. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  499. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  500. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  501. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  502. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  503. </el-form>
  504. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="55px">
  505. <el-form-item label="" prop="address" >
  506. </el-form-item>
  507. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  508. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  509. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  510. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  511. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  512. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  513. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  514. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  515. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  516. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  517. </el-form>
  518. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="55px">
  519. <el-form-item label="" prop="address" >
  520. </el-form-item>
  521. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  522. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  523. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  524. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  525. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  526. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  527. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  528. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  529. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  530. <el-input class="input-space" v-model="formData.address" :clearable="true" placeholder="请输入A类废品" style="width: 75px;" />
  531. </el-form>
  532. </el-scrollbar>
  533. </el-dialog>
  534. <el-dialog v-model="DismantlingShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" title="查看详情" destroy-on-close>
  535. <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="95px">
  536. <el-form-item label="工单编号:" prop="address" >
  537. <el-input v-model="formData.address" :clearable="true" placeholder="请输入抽检数量" style="width: 95px;" />
  538. </el-form-item>
  539. </el-form>
  540. </el-dialog>
  541. <el-dialog v-model="detailShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" title="查看详情" destroy-on-close>
  542. <el-scrollbar height="550px">
  543. <el-descriptions column="1" border>
  544. <el-descriptions-item label="address字段">
  545. {{ formData.address }}
  546. </el-descriptions-item>
  547. <el-descriptions-item label="image字段">
  548. {{ formData.image }}
  549. </el-descriptions-item>
  550. <el-descriptions-item label="name字段">
  551. {{ formData.name }}
  552. </el-descriptions-item>
  553. </el-descriptions>
  554. </el-scrollbar>
  555. </el-dialog>
  556. </el-main>
  557. </el-container>
  558. </el-container>
  559. </div>
  560. </template>
  561. <script setup>
  562. import {
  563. createCompany,
  564. deleteCompany,
  565. deleteCompanyByIds,
  566. updateCompany,
  567. findCompany,
  568. getCompanyList
  569. } from '@/api/company'
  570. // 全量引入格式化工具 请按需保留
  571. import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
  572. import { ElMessage, ElMessageBox } from 'element-plus'
  573. import { ref, reactive } from 'vue'
  574. import {
  575. getproductionCount,
  576. getproductionList
  577. } from '@/api/jixiaoguanli/jitairibaobiao'
  578. defineOptions({
  579. name: 'Company'
  580. })
  581. const treeData=reactive([{}])
  582. const getTabdata = async () => {
  583. //接口调用函数
  584. const response = await getproductionCount();
  585. console.log(response.data)
  586. // const data = await getproductionCount();
  587. // const rawData = data.data;
  588. // console.log(rawData)
  589. // const dataArray =Object.keys(rawData).map(key => ({
  590. // label: key,
  591. // // children: Object.keys(rawData[key]).map(subKey => ({
  592. // // label: subKey,
  593. // // }))
  594. // }));
  595. // treeData.value = dataArray
  596. // console.log(treeData)
  597. const transformedData = response.data.map(item => ({
  598. label: `${item.date.replace(/-/g, '.')}【单据数: ${item.counts}张】`,
  599. children: Object.keys(item.sys).map(sysItem => {
  600. const matchResult = sysItem.match(/:(\d+)/);
  601. const recordCount = matchResult ? matchResult[1] : 0;
  602. return {
  603. label: `${sysItem}【记录数: ${recordCount}张】`,
  604. params: {
  605. date: item.date.replace(/\./g, '-'),
  606. sys_id: sysItem,
  607. total: item.sys[sysItem],
  608. },
  609. };
  610. }),
  611. }));
  612. treeData.splice(0, treeData.length, ...transformedData);
  613. console.log(treeData);
  614. }
  615. getTabdata();
  616. const handleNodeClick = (node,check) => {
  617. //存放当前节点的nodeId
  618. if (node.params) {
  619. params.date = node.params.date;
  620. params.sys_id = node.params.sys_id;
  621. total.value = node.params.total;
  622. getTableData();
  623. }
  624. }
  625. // 自动化生成的字典(可能为空)以及字段
  626. const formData = ref({
  627. worknum: '',
  628. dailyquota: '',
  629. name: '',
  630. })
  631. // 验证规则
  632. const rule = reactive({
  633. })
  634. const searchRule = reactive({
  635. createdAt: [
  636. { validator: (rule, value, callback) => {
  637. if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
  638. callback(new Error('请填写结束日期'))
  639. } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
  640. callback(new Error('请填写开始日期'))
  641. } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
  642. callback(new Error('开始日期应当早于结束日期'))
  643. } else {
  644. callback()
  645. }
  646. }, trigger: 'change' }
  647. ],
  648. })
  649. const elFormRef = ref()
  650. const elSearchFormRef = ref()
  651. // =========== 表格控制部分 ===========
  652. const page = ref(1)
  653. const total = ref(0)
  654. const limit = ref(10)
  655. const tableData = reactive([])
  656. const searchInfo = ref({})
  657. const params = {
  658. date: '',
  659. sys_id: '',
  660. page: page.value.toString(),
  661. limit: limit.value.toString(),
  662. }
  663. // 重置
  664. const onReset = () => {
  665. searchInfo.value = {}
  666. getTableData()
  667. }
  668. // 搜索
  669. const onSubmit = () => {
  670. elSearchFormRef.value?.validate(async(valid) => {
  671. if (!valid) return
  672. page.value = 1
  673. pageSize.value = 10
  674. getTableData()
  675. })
  676. }
  677. // 分页
  678. const handleSizeChange = (val) => {
  679. pageSize.value = val
  680. getTableData()
  681. }
  682. // 修改页面容量
  683. const handleCurrentChange = (val) => {
  684. page.value = val
  685. getTableData()
  686. }
  687. // 查询
  688. const getTableData = async() => {
  689. const response = await getproductionList(params);
  690. console.log(response)
  691. if (response.code === 0) {
  692. tableData.splice(0, tableData.length, ...response.data.rows);
  693. }
  694. }
  695. // getTableData()
  696. // ============== 表格控制部分结束 ===============
  697. // 获取需要的字典 可能为空 按需保留
  698. const setOptions = async () =>{
  699. }
  700. // 获取需要的字典 可能为空 按需保留
  701. setOptions()
  702. // 多选数据
  703. const multipleSelection = ref([])
  704. // 多选
  705. const handleSelectionChange = (val) => {
  706. multipleSelection.value = val
  707. }
  708. // 删除行
  709. const deleteRow = (row) => {
  710. ElMessageBox.confirm('确定要删除吗?', '提示', {
  711. confirmButtonText: '确定',
  712. cancelButtonText: '取消',
  713. type: 'warning'
  714. }).then(() => {
  715. deleteCompanyFunc(row)
  716. })
  717. }
  718. // 批量删除控制标记
  719. const deleteVisible = ref(false)
  720. // 多选删除
  721. const onDelete = async() => {
  722. const ids = []
  723. if (multipleSelection.value.length === 0) {
  724. ElMessage({
  725. type: 'warning',
  726. message: '请选择要删除的数据'
  727. })
  728. return
  729. }
  730. multipleSelection.value &&
  731. multipleSelection.value.map(item => {
  732. ids.push(item.ID)
  733. })
  734. const res = await deleteCompanyByIds({ ids })
  735. if (res.code === 0) {
  736. ElMessage({
  737. type: 'success',
  738. message: '删除成功'
  739. })
  740. if (tableData.value.length === ids.length && page.value > 1) {
  741. page.value--
  742. }
  743. deleteVisible.value = false
  744. getTableData()
  745. }
  746. }
  747. // 行为控制标记(弹窗内部需要增还是改)
  748. const type = ref('')
  749. // 更新行
  750. const updateCompanyFunc = async(row) => {
  751. const res = await findCompany({ ID: row.ID })
  752. type.value = 'update'
  753. if (res.code === 0) {
  754. formData.value = res.data.recompany
  755. dialogFormVisible.value = true
  756. }
  757. }
  758. // 删除行
  759. const deleteCompanyFunc = async (row) => {
  760. const res = await deleteCompany({ ID: row.ID })
  761. if (res.code === 0) {
  762. ElMessage({
  763. type: 'success',
  764. message: '删除成功'
  765. })
  766. if (tableData.value.length === 1 && page.value > 1) {
  767. page.value--
  768. }
  769. getTableData()
  770. }
  771. }
  772. // 弹窗控制标记
  773. const dialogFormVisible = ref(false)
  774. const positVisible = ref(false)
  775. const DismantlingShow= ref(false)
  776. // 查看详情控制标记
  777. const detailShow = ref(false)
  778. const dialogTableVisibleShow = ref(false)
  779. const dialogTableVisibleShow2 = ref(false)
  780. const SeleUpdaShow = ref(false)
  781. const ExceptionShow = ref(false)
  782. // 打开详情弹窗
  783. const openDetailShow = () => {
  784. detailShow.value = true
  785. }
  786. // 打开详情
  787. const getDetails = async (row) => {
  788. // 打开弹窗
  789. const res = await findCompany({ ID: row.ID })
  790. if (res.code === 0) {
  791. formData.value = res.data.recompany
  792. openDetailShow()
  793. }
  794. }
  795. // 关闭详情弹窗
  796. const closeDetailShow = () => {
  797. detailShow.value = false
  798. formData.value = {
  799. address: '',
  800. image: '',
  801. name: '',
  802. }
  803. }
  804. // 打开弹窗
  805. const openDialog = () => {
  806. type.value = 'create'
  807. dialogFormVisible.value = true
  808. }
  809. const dbSelected = () => {
  810. type.value = 'create'
  811. dialogFormVisible.value = true
  812. }
  813. const displayDialog2 = () => {
  814. type.value = 'create'
  815. dialogFormVisible2.value = true
  816. }
  817. const positDialog = () => {
  818. type.value = 'create'
  819. positVisible.value = true
  820. }
  821. const Dismantling = () => {
  822. type.value = 'create'
  823. DismantlingShow.value = true
  824. }
  825. const dialogTableVisible = () => {
  826. type.value = 'create'
  827. dialogTableVisibleShow.value = true
  828. }
  829. const dialogTableVisible2 = () => {
  830. type.value = 'create'
  831. dialogTableVisibleShow2.value = true
  832. }
  833. const SeleUpda = () => {
  834. type.value = 'create'
  835. SeleUpdaShow.value = true
  836. }
  837. const Exception = () => {
  838. type.value = 'create'
  839. ExceptionShow.value = true
  840. }
  841. // 关闭弹窗
  842. const closeDialog = () => {
  843. dialogFormVisible.value = false
  844. formData.value = {
  845. address: '',
  846. image: '',
  847. name: '',
  848. }
  849. }
  850. // 弹窗确定
  851. const enterDialog = async () => {
  852. elFormRef.value?.validate( async (valid) => {
  853. if (!valid) return
  854. let res
  855. switch (type.value) {
  856. case 'create':
  857. res = await createCompany(formData.value)
  858. break
  859. case 'update':
  860. res = await updateCompany(formData.value)
  861. break
  862. default:
  863. res = await createCompany(formData.value)
  864. break
  865. }
  866. if (res.code === 0) {
  867. ElMessage({
  868. type: 'success',
  869. message: '创建/更改成功'
  870. })
  871. closeDialog()
  872. getTableData()
  873. }
  874. })
  875. }
  876. </script>
  877. <style>
  878. .JKWTree-container {
  879. display: flex;
  880. }
  881. .JKWTree-tree {
  882. width: 300px;
  883. background-color: #fff;
  884. padding: 10px;
  885. margin-right: 20px;
  886. }
  887. .JKWTree-tree h3 {
  888. font-size: 15px;
  889. font-weight: 700;
  890. margin: 10px 0;
  891. }
  892. .JKWTree-content {
  893. flex: 1;
  894. }
  895. .input-space {
  896. margin: 7px;
  897. }
  898. </style>