You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

379 lines
12 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
  1. <script>
  2. import {
  3. getLabelFormatUserDefaultList,
  4. saveLabelFormatUserDefault,
  5. updateLabelFormatUserDefault
  6. } from '../../../api/label/labelFormatUserDefault'
  7. import {getTableDefaultListLanguage, getTableUserListLanguage} from '../../../api/table'
  8. import getLodop from '@/utils/LodopFuncs.js'
  9. let labelFormat = {
  10. labelType: '',
  11. formatId: '',
  12. formatDesc: '',
  13. active: 'Y',
  14. printerName: '',
  15. printerIP: ''
  16. }
  17. export default {
  18. name: 'userDefault',
  19. props:{
  20. height:{
  21. type: Number,
  22. default:780
  23. },
  24. ofComponents:{
  25. type: Boolean,
  26. default: false,
  27. },
  28. part:{
  29. type:Boolean,
  30. default:()=>{}
  31. }
  32. },
  33. data(){
  34. return{
  35. labelFormat: {
  36. ...labelFormat
  37. },
  38. saveLabelFormat:{
  39. ...labelFormat
  40. },
  41. saveVisible:false,
  42. labelFormatList:[],
  43. labelFormatRules:{
  44. printerName:[ { required: true, message: 'Printer Name is required', trigger: ['blur','change']}],
  45. printerIP:[{ required: true, message: 'Printer IP is required', trigger: ['blur','change'] }],
  46. },
  47. columnList:[
  48. {
  49. userId: this.$store.state.user.name,
  50. functionId: 30003,
  51. serialNumber: '30003TableLabelType',
  52. tableId: "30003Table",
  53. tableName: "标签模板信息表",
  54. columnProp: "labelType",
  55. headerAlign: "center",
  56. align: "left",
  57. columnLabel: "Label Type",
  58. columnHidden: false,
  59. columnImage: false,
  60. columnSortable: false,
  61. sortLv: 10,
  62. status: true,
  63. fixed: '',
  64. columnWidth: 80
  65. },{
  66. userId: this.$store.state.user.name,
  67. functionId: 30003,
  68. serialNumber: '30003TableFormatId',
  69. tableId: "30003Table",
  70. tableName: "标签模板信息表",
  71. columnProp: "formatId",
  72. headerAlign: "center",
  73. align: "center",
  74. columnLabel: "Format ID",
  75. columnHidden: false,
  76. columnImage: false,
  77. columnSortable: false,
  78. sortLv: 10,
  79. status: true,
  80. fixed: '',
  81. columnWidth: 180
  82. },{
  83. userId: this.$store.state.user.name,
  84. functionId: 30003,
  85. serialNumber: '30003TableFormatDesc',
  86. tableId: "30003Table",
  87. tableName: "标签模板信息表",
  88. columnProp: "formatDesc",
  89. headerAlign: "center",
  90. align: "left",
  91. columnLabel: "Format Desc",
  92. columnHidden: false,
  93. columnImage: false,
  94. columnSortable: false,
  95. sortLv: 10,
  96. status: true,
  97. fixed: '',
  98. columnWidth: 180
  99. },{
  100. userId: this.$store.state.user.name,
  101. functionId: 30003,
  102. serialNumber: '30003TablePrinterName',
  103. tableId: "30003Table",
  104. tableName: "标签模板信息表",
  105. columnProp: "printerName",
  106. headerAlign: "center",
  107. align: "left",
  108. columnLabel: "Printer Name",
  109. columnHidden: false,
  110. columnImage: false,
  111. columnSortable: false,
  112. sortLv: 10,
  113. status: true,
  114. fixed: '',
  115. columnWidth: 180
  116. },
  117. // {
  118. // userId: this.$store.state.user.name,
  119. // functionId: 30003,
  120. // serialNumber: '30003TablePrinterIP',
  121. // tableId: "30003Table",
  122. // tableName: "标签模板信息表",
  123. // columnProp: "printerIP",
  124. // headerAlign: "center",
  125. // align: "left",
  126. // columnLabel: "Printer IP",
  127. // columnHidden: false,
  128. // columnImage: false,
  129. // columnSortable: false,
  130. // sortLv: 10,
  131. // status: true,
  132. // fixed: '',
  133. // columnWidth: 180
  134. // }
  135. ],
  136. printerSetupList:[],
  137. }
  138. },
  139. watch:{
  140. "labelFormat.formatId"(newVal,oldVal){
  141. this.labelFormat.formatId = newVal.toUpperCase()
  142. }
  143. },
  144. methods:{
  145. getLabelFormatUserDefaultList(){
  146. let params = {
  147. ...this.labelFormat,
  148. site: this.$store.state.user.site,
  149. username: this.$store.state.user.name
  150. }
  151. getLabelFormatUserDefaultList(params).then(({data})=>{
  152. if (data && data.code === 0){
  153. this.labelFormatList = data.rows
  154. }else {
  155. this.$message.warning(data.msg)
  156. }
  157. }).catch((error)=>{
  158. this.$message.error(error)
  159. })
  160. },
  161. handleSetup(row){
  162. this.saveLabelFormat = {
  163. ...row,
  164. }
  165. // this.$nextTick(()=>{
  166. // this.$refs.saveLabelFormatForm.resetFields()
  167. // })
  168. this.saveVisible = true
  169. },
  170. closeSaveVisible(){
  171. this.saveLabelFormat = {
  172. ...labelFormat,
  173. }
  174. this.$refs.saveLabelFormatForm.resetFields()
  175. },
  176. handleSaveLabelFormat(){
  177. this.$refs.saveLabelFormatForm.validate((valid,obj) => {
  178. if (valid){
  179. let params = {
  180. ...this.saveLabelFormat,
  181. }
  182. // let regexIP = /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/g;
  183. // if (!regexIP.test(params.printerIP)) {
  184. // this.$message.warning('Printer IP is not valid')
  185. // return
  186. // }
  187. if (this.saveLabelFormat.username){
  188. // 编辑
  189. updateLabelFormatUserDefault(params).then(({data})=>{
  190. if (data && data.code === 0){
  191. this.saveVisible = false
  192. this.$message.success(data.msg)
  193. this.getLabelFormatUserDefaultList()
  194. }else {
  195. this.$message.warning(data.msg)
  196. }
  197. }).catch((error)=>{
  198. this.$message.error(error)
  199. })
  200. }else {
  201. // 新增
  202. params.username = this.$store.state.user.name
  203. saveLabelFormatUserDefault(params).then(({data})=>{
  204. if (data && data.code === 0){
  205. this.saveVisible = false
  206. this.$message.success(data.msg)
  207. this.getLabelFormatUserDefaultList()
  208. }else {
  209. this.$message.warning(data.msg)
  210. }
  211. }).catch((error)=>{
  212. this.$message.error(error)
  213. })
  214. }
  215. }else {
  216. for (let i = 0; i < Object.keys(obj).length; i++) {
  217. this.$message.warning(obj[Object.keys(obj)[i]][0].message)
  218. return
  219. }
  220. }
  221. })
  222. },
  223. async getTableUserColumn (tableId, columnId) {
  224. let queryTableUser = {
  225. userId: this.$store.state.user.name,
  226. functionId: this.$route.meta.menuId,
  227. tableId: tableId,
  228. status: true,
  229. languageCode: this.$i18n.locale
  230. }
  231. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  232. if (data.rows.length > 0) {
  233. this.caseTable(data.rows,columnId)
  234. } else {
  235. this.getColumnList(tableId, columnId)
  236. }
  237. })
  238. },
  239. // 获取 tableDefault 列
  240. async getColumnList (tableId, columnId) {
  241. let queryTable = {
  242. functionId: this.$route.meta.menuId,
  243. tableId: tableId,
  244. languageCode: this.$i18n.locale
  245. }
  246. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  247. if (!data.rows.length === 0) {
  248. this.caseTable(data.rows,columnId)
  249. } else {
  250. }
  251. })
  252. },
  253. caseTable(list,columnId){
  254. if (list.length > 0){
  255. switch (columnId) {
  256. case 1:
  257. this.columnList = list
  258. break;
  259. }
  260. }
  261. },
  262. },
  263. created () {
  264. if (this.ofComponents){
  265. return
  266. }
  267. this.getLabelFormatUserDefaultList();
  268. this.getTableUserColumn("30003Table",1)
  269. },
  270. mounted () {
  271. const lodop = getLodop()
  272. for (let i = 0; i < lodop.GET_PRINTER_COUNT(); i++) {
  273. this.printerSetupList.push(lodop.GET_PRINTER_NAME(i))
  274. }
  275. }
  276. }
  277. </script>
  278. <template>
  279. <div>
  280. <el-form v-if="!ofComponents" :inline="true" label-position="top" :model="labelFormat">
  281. <el-form-item label="Label Type">
  282. <el-select v-model="labelFormat.labelType" placeholder="">
  283. <el-option label="All" value=""></el-option>
  284. <el-option label="Shipment Carton" value="Shipment Carton"></el-option>
  285. <el-option label="Roll Label" value="Roll Label"></el-option>
  286. <el-option label="Logistic Label" value="Logistic Label"></el-option>
  287. </el-select>
  288. </el-form-item>
  289. <el-form-item label="Format ID">
  290. <el-input v-model="labelFormat.formatId"></el-input>
  291. </el-form-item>
  292. <el-form-item label="Format Desc">
  293. <el-input v-model="labelFormat.formatDesc"></el-input>
  294. </el-form-item>
  295. <el-form-item label=" ">
  296. <el-button type="primary" @click="getLabelFormatUserDefaultList">Query</el-button>
  297. </el-form-item>
  298. </el-form>
  299. <el-table :data="labelFormatList" border style="width: 100%;margin-top: 10px" :height="height">
  300. <el-table-column v-if="!ofComponents"
  301. header-align="center"
  302. align="center"
  303. width="100"
  304. fixed="left"
  305. label="Actions">
  306. <template slot-scope="{row,$index}">
  307. <el-link style="cursor:pointer;" @click="handleSetup(row)">Setup</el-link>
  308. </template>
  309. </el-table-column>
  310. <el-table-column
  311. v-for="(item,index) in columnList" :key="index"
  312. :sortable="item.columnSortable"
  313. :prop="item.columnProp"
  314. :header-align="item.headerAlign"
  315. :show-overflow-tooltip="item.showOverflowTooltip"
  316. :align="item.align"
  317. :fixed="item.fixed===''?false:item.fixed"
  318. :min-width="item.columnWidth"
  319. :label="item.columnLabel">
  320. <template slot-scope="scope">
  321. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  322. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  323. style="width: 100px; height: 80px"/></span>
  324. </template>
  325. </el-table-column>
  326. </el-table>
  327. <el-dialog v-drag title="User Default Printer" :close-on-click-modal="false" @close="closeSaveVisible" :visible.sync="saveVisible" width="400px">
  328. <el-form :model="saveLabelFormat" :rules="labelFormatRules" ref="saveLabelFormatForm" label-position="top">
  329. <el-row :gutter="20">
  330. <el-col :span="8">
  331. <el-form-item label="Label Type">
  332. <el-select v-model="saveLabelFormat.labelType" style="width: 100%;" disabled placeholder="">
  333. <el-option label="All" value=""></el-option>
  334. <el-option label="Shipment Carton" value="shipmentCarton"></el-option>
  335. </el-select>
  336. </el-form-item>
  337. </el-col>
  338. <el-col :span="16">
  339. <el-form-item label="Format No">
  340. <el-input v-model="saveLabelFormat.formatId" readonly disabled></el-input>
  341. </el-form-item>
  342. </el-col>
  343. <el-col :span="24">
  344. <el-form-item label="Format Description">
  345. <el-input v-model="saveLabelFormat.formatDesc" readonly disabled></el-input>
  346. </el-form-item>
  347. </el-col>
  348. <el-col :span="24">
  349. <el-form-item label="Printer Name" prop="printerName" :show-message="false">
  350. <!-- <el-input v-model="saveLabelFormat.printerName"></el-input>-->
  351. <el-select v-model="saveLabelFormat.printerName" placeholder=" " style="width: 100%;">
  352. <el-option :label="item" :value="item" v-for="(item,index) in printerSetupList" :key="index"></el-option>
  353. </el-select>
  354. </el-form-item>
  355. </el-col>
  356. <!-- <el-col :span="24">-->
  357. <!-- <el-form-item label="Printer IP" prop="printerIP" :show-message="false">-->
  358. <!-- <el-input v-model="saveLabelFormat.printerIP"></el-input>-->
  359. <!-- </el-form-item>-->
  360. <!-- </el-col>-->
  361. </el-row>
  362. </el-form>
  363. <div slot="footer" class="dialog-footer">
  364. <el-button type="primary" @click="handleSaveLabelFormat">Save</el-button>
  365. <el-button @click="saveVisible = false">Cancel</el-button>
  366. </div>
  367. </el-dialog>
  368. </div>
  369. </template>
  370. <style scoped>
  371. </style>