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.

418 lines
18 KiB

3 weeks ago
  1. 
  2. @{
  3. ViewBag.Title = "";
  4. Layout = "~/Views/Shared/_Form.cshtml";
  5. }
  6. <script src="~/Content/js/datepicker/WdatePicker.js"></script>
  7. <!--引入 element-ui 的样式,-->
  8. <link rel="stylesheet" href="~/Content/element-ui/lib/theme-chalk/index.css">
  9. <script src="~/Content/vue/dist/vue.js"></script>
  10. <script src="~/Content/element-ui/lib/index.js"></script>
  11. <script src="~/Content/axios.min.js"></script>
  12. <style>
  13. </style>
  14. <form id="form1">
  15. <div id="app">
  16. <template>
  17. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  18. <el-divider>主表信息</el-divider>
  19. <el-row :gutter="24">
  20. <el-col :span="6">
  21. <el-form-item label="Aql编码" prop="RulesCode">
  22. <el-input v-model="form.RulesCode" placeholder="请输入内容" size="mini" :disabled="disabled4RulesCode"></el-input>
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="6">
  26. <el-form-item label="Aql名称" prop="RulesName">
  27. <el-input v-model="form.RulesName" placeholder="请输入内容" size="mini"></el-input>
  28. </el-form-item>
  29. </el-col>
  30. @*<el-col :span="6">
  31. <el-form-item label="Aql描述" prop="RulesDesc">
  32. <el-input v-model="form.RulesDesc" placeholder="请输入内容" size="mini"></el-input>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="6">
  36. <el-form-item label="Aql类别" prop="Type">
  37. <el-input v-model="form.Type" placeholder="请输入内容" size="mini"></el-input>
  38. </el-form-item>
  39. </el-col>*@
  40. <el-col :span="6">
  41. <el-form-item label="维护人" prop="MUSERName">
  42. <el-input v-model="form.MUSERName" placeholder="请输入内容" size="mini"></el-input>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="6">
  46. <el-form-item label="维护时间" prop="MTIME">
  47. <el-input v-model="form.MTIME" placeholder="请输入内容" size="mini"></el-input>
  48. </el-form-item>
  49. </el-col>
  50. </el-row>
  51. <el-row :gutter="24">
  52. <el-col :span="6">
  53. <el-form-item label="启用" prop="Enable">
  54. <el-switch v-model="form.Enable" active-color="#13ce66" inactive-color="#ff4949">
  55. </el-switch>
  56. </el-form-item>
  57. </el-col>
  58. </el-row>
  59. <el-divider>子表信息</el-divider>
  60. <el-row :gutter="24">
  61. <el-col :span="24">
  62. @*<el-button type="primary" size="mini" v-on:click="addLine()">新增</el-button>*@
  63. <a id="NF-Add" authorize="no" style="margin-left:3px;" class="btn btn-primary" v-on:click="addLine()"><i class="fa fa-pencil-square-o"></i>新增</a>
  64. </el-col>
  65. </el-row>
  66. <el-row :gutter="24">
  67. <el-col :span="2">
  68. </el-col>
  69. <el-col :span="22">
  70. <el-table ref="singleTable" highlight-current-row
  71. :data="dataSource4Detail"
  72. style="width: 100%"
  73. stripe border
  74. size="mini"
  75. height="500"
  76. v-on:current-change="handleCurrentChange">
  77. <el-table-column type="index" width="50"></el-table-column>
  78. <el-table-column prop="SetValueMin" label="批量下限" width="140">
  79. <template slot-scope="scope">
  80. <el-input-number v-model="scope.row.SetValueMin" controls-position="right" :min="0" size="small"></el-input-number>
  81. </template>
  82. </el-table-column>
  83. <el-table-column prop="SetValueMax" label="批量上限" width="140">
  84. <template slot-scope="scope">
  85. <el-input-number v-model="scope.row.SetValueMax" controls-position="right" :min="0" size="small"></el-input-number>
  86. </template>
  87. </el-table-column>
  88. <el-table-column prop="EATTRIBUTE2" label="取样类型" width="140">
  89. <template slot-scope="scope">
  90. <el-select v-model="scope.row.EATTRIBUTE2" placeholder="请选择" size="mini">
  91. <el-option v-for="item in dataSourceType"
  92. :key="item.Code"
  93. :label="item.Name"
  94. :value="item.Code">
  95. </el-option>
  96. </el-select>
  97. </template>
  98. </el-table-column>
  99. <el-table-column prop="SampleQuantity" label="取样数量/比例" width="140">
  100. <template slot-scope="scope">
  101. <el-input-number v-model="scope.row.SampleQuantity" controls-position="right" size="small"></el-input-number>
  102. </template>
  103. </el-table-column>
  104. <el-table-column prop="EATTRIBUTE1" label="允许不良数" width="150">
  105. <template slot-scope="scope">
  106. <el-input-number v-model="scope.row.EATTRIBUTE1" controls-position="right" :min="0" size="small"></el-input-number>
  107. </template>
  108. </el-table-column>
  109. @*<el-table-column prop="Enable" label="启用" width="150">
  110. <template slot-scope="scope">
  111. <el-switch v-model="scope.row.Enable" active-color="#13ce66" inactive-color="#ff4949">
  112. </el-switch>
  113. </template>
  114. </el-table-column>*@
  115. <el-table-column label="操作">
  116. <template slot-scope="scope">
  117. <a id="NF-Delete" authorize="yes" class="btn btn-primary" v-on:click="handleDelete(scope.$index, scope.row)"><i class="fa fa-trash-o"></i>删除</a>
  118. @*<el-button size="mini" type="danger" v-on:click="handleDelete(scope.$index, scope.row)">删除</el-button>*@
  119. </template>
  120. </el-table-column>
  121. </el-table>
  122. </el-col>
  123. <el-col :span="2">
  124. &nbsp; &nbsp;
  125. </el-col>
  126. </el-row>
  127. </el-form>
  128. </template>
  129. </div>
  130. </form>
  131. <script type="text/javascript">
  132. //const { Console } = require("node:console");
  133. var Muser = '@NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode'
  134. var date = GetDate();
  135. var vm = new Vue({
  136. el: '#app',
  137. data: {
  138. id:'',
  139. userCode: "",
  140. ssList: [],
  141. dataSourceType: [],
  142. form: {},
  143. detail: {
  144. key:0,
  145. SetValueMin: 0,
  146. SetValueMax: 0,
  147. SampleQuantity: 0,
  148. EATTRIBUTE1: 0,
  149. EATTRIBUTE2: [{ required: true, message: '请选择', trigger: 'blur' },],
  150. EATTRIBUTE3: 0,
  151. },
  152. dataSource4Detail: [],
  153. currentRow: null,
  154. rules: {
  155. RulesCode: [{ required: true, message: '请输入', trigger: 'blur' },],
  156. RulesName: [{ required: true, message: '请输入', trigger: 'blur' },],
  157. },
  158. disabled4RulesCode:false,
  159. },
  160. //挂在DOM 触发
  161. mounted() {
  162. let reactiveObject = {
  163. RulesCode: '',
  164. RulesName: '',
  165. //RulesDesc: '',
  166. //Type: '',
  167. MUSERName: Muser,
  168. MTIME: date,
  169. Enable: true,
  170. DetailList: [],
  171. };
  172. this.form = reactiveObject;
  173. // this.loadGrid();
  174. // this.show();
  175. this.id = '@ViewData["ids"]';
  176. this.initControl();
  177. this.getType();
  178. // console.log(this.id);
  179. },
  180. beforeDestroy() {
  181. // this.autoScrol1(true);
  182. },
  183. methods: {
  184. initControl: function () {
  185. let that = this;
  186. let orgName = '';
  187. this.disabled4RulesCode = this.id ? true : false;
  188. let userName = '@NFine.Code.OperatorProvider.Provider.GetCurrent().UserName';
  189. // console.log(userName);
  190. this.getData();
  191. },
  192. getData() {
  193. if (!this.id) return;
  194. axios
  195. .get('/DHAY/IQCQuality/GetAql?keyValue=' + this.id)
  196. .then(function (res) {
  197. // console.log(res.data);
  198. //this.ssList = res.data;
  199. //if (res.data != null) {
  200. // res.data.forEach(function (el, i) {
  201. // Vue.set(vm.ssList, i, el)
  202. // });
  203. //}
  204. debugger;
  205. if (res.data) {
  206. for (var i in res.data) {
  207. Vue.set(vm.form, i, res.data[i]);
  208. }
  209. res.data.DetailList.forEach(function (el, i) {
  210. Vue.set(vm.dataSource4Detail, i, el)
  211. });
  212. }
  213. })
  214. .catch(function (error) { // 请求失败处理
  215. alert(error);
  216. });
  217. },
  218. getType() {
  219. axios
  220. .get('/WMS/BasicSettings/GetICSType?Type=EATTRIBUTE2&TableCode=ICSInspectionRulesList')
  221. .then(function (res) {
  222. if (res.data) {
  223. res.data.forEach(function (el, i) {
  224. Vue.set(vm.dataSourceType, i, el)
  225. });
  226. }
  227. })
  228. .catch(function (error) { // 请求失败处理
  229. alert(error);
  230. });
  231. },
  232. addLine() {
  233. //debugger;
  234. // console.log('new line');
  235. let key = 1;
  236. let maxObj = this.dataSource4Detail.sort((a, b) => b.key - a.key)[0];
  237. if (maxObj != null) {
  238. var currentMin = this.dataSource4Detail[0].SetValueMin;
  239. var currentMax = this.dataSource4Detail[0].SetValueMax;
  240. var EATTRIBUTE2 = this.dataSource4Detail[0].EATTRIBUTE2;
  241. if (currentMin >= currentMax) {
  242. $.modalMsg("下限必须小于上限,行号: " + maxObj.key, "warning");
  243. this.dataSource4Detail.sort((a, b) => a.key - b.key);
  244. return false;
  245. }
  246. if (maxObj.key > 1) {
  247. var lastMax = this.dataSource4Detail[1].SetValueMax;
  248. if (currentMin != lastMax + 1) {
  249. $.modalMsg("当前行下限必须紧邻上一行的上限", "warning");
  250. this.dataSource4Detail.sort((a, b) => a.key - b.key);
  251. return false;
  252. }
  253. }
  254. if (EATTRIBUTE2 == '') {
  255. $.modalMsg("取样类型不能为空!", "warning");
  256. return false;
  257. }
  258. key = maxObj.key + 1;
  259. }
  260. let obj = {
  261. key: key,
  262. SetValueMin: 0,
  263. SetValueMax: 0,
  264. SampleQuantity: 0,
  265. EATTRIBUTE1: '',
  266. EATTRIBUTE2: [{ required: true, message: '请选择', trigger: 'blur' },],
  267. EATTRIBUTE3: '',
  268. };
  269. this.dataSource4Detail.push(obj);
  270. this.dataSource4Detail.sort((a, b) => a.key - b.key);
  271. },
  272. //删除行
  273. handleDelete(index, row) {
  274. // console.log(index, row);
  275. this.dataSource4Detail = this.dataSource4Detail.filter(x => x.key != row.key);
  276. },
  277. //选中行变化
  278. handleCurrentChange(val) {
  279. this.currentRow = val;
  280. // console.log(val);
  281. },
  282. submitCheck() {
  283. // debugger;
  284. this.dataSource4Detail = this.dataSource4Detail.sort((a, b) => a.SetValueMin - b.SetValueMin);
  285. if (this.dataSource4Detail.length == 0) {
  286. $.modalMsg("必须存在规则信息行", "warning");
  287. return false;
  288. }
  289. let allNum = [];
  290. //debugger;
  291. for (var i = 0; i < this.dataSource4Detail.length; i++) {
  292. let item = this.dataSource4Detail[i];
  293. if (item.SampleQuantity <= 0) {
  294. $.modalMsg("取样数量/比例必须大于0,行号 " + (i + 1), "warning");
  295. return false;
  296. }
  297. if (item.SetValueMin >= item.SetValueMax) {
  298. $.modalMsg("下限必须小于上限,行号 "+(i+1), "warning");
  299. return false;
  300. }
  301. if (i >= 1) {
  302. let lastitem = this.dataSource4Detail[i - 1];
  303. if (lastitem.SetValueMax + 1 != item.SetValueMin) {
  304. $.modalMsg("第"+(i+1)+"行下限值必须紧邻第"+i+"行上限值", "warning");
  305. return false;
  306. }
  307. }
  308. if (item.EATTRIBUTE2 == '') {
  309. $.modalMsg("第" + (i + 1) +"行取样类型不能为空!", "warning");
  310. return false;
  311. }
  312. allNum.push(item.SetValueMin);
  313. allNum.push(item.SetValueMax);
  314. }
  315. for (var i = 0; i < allNum.length; i++) {
  316. if (i == 0) {
  317. continue;
  318. }
  319. if (i <= allNum.length - 1) {
  320. if (allNum[i - 1] >= allNum[i]) {
  321. $.modalMsg("区间范围重复,重复值: " + allNum[i - 1], "warning");
  322. return false;
  323. }
  324. }
  325. }
  326. this.form.DetailList = this.dataSource4Detail;
  327. this.$refs['form'].validate((valid) => {
  328. if (valid) {
  329. //alert('submit!');
  330. $.submitForm({
  331. url: "/DHAY/IQCQuality/SaveAql",
  332. param: { keyValue: JSON.stringify(this.form) },
  333. success: function () {
  334. $.currentWindow().$("#gridList").trigger("reloadGrid");
  335. }
  336. })
  337. } else {
  338. console.log('error submit!!');
  339. return false;
  340. }
  341. });
  342. // console.log(result);
  343. },
  344. },
  345. });
  346. function submitForm() {
  347. //debugger;
  348. vm.submitCheck();
  349. //if (!$('#form1').formValid()) {
  350. // $.modalMsg("验证未通过", "warning");
  351. // return false;
  352. //}
  353. //let obj = {
  354. // CheckFixtureNo: $("#F_CheckFixtureNo").val(),
  355. // CheckFixtureName: $("#F_CheckFixtureName").val(),
  356. // CustomerItemCode: $("#F_CustomerItemCode").val(),
  357. // ID: $("#ids").val(),
  358. // Useage: $("#F_Useage").val(),
  359. // Unit: $("#F_Unit").val(),
  360. // Remark: $("#F_Remark").val(),
  361. // Std: $("#F_Std").val(),
  362. //};
  363. ////if (!obj.line) {
  364. //// return false;
  365. ////}
  366. //if (!obj.CheckFixtureNo) {
  367. // return false;
  368. //}
  369. //$.submitForm({
  370. // url: "/DHAY/CheckingFixture/SaveCheckingFixture",
  371. // param: { keyValue: JSON.stringify(obj) },
  372. // success: function () {
  373. // $.currentWindow().$("#gridList").trigger("reloadGrid");
  374. // }
  375. //})
  376. }
  377. function GetDate() {
  378. let currentTime = new Date();
  379. let year = currentTime.getFullYear();
  380. let month = currentTime.getMonth() + 1; // 注意,月份是从0开始的,所以要加1
  381. let date = currentTime.getDate();
  382. let hours = currentTime.getHours();
  383. let minutes = currentTime.getMinutes();
  384. let seconds = currentTime.getSeconds();
  385. // 格式化时间,补全前导零
  386. month = month < 10 ? '0' + month : month;
  387. date = date < 10 ? '0' + date : date;
  388. hours = hours < 10 ? '0' + hours : hours;
  389. minutes = minutes < 10 ? '0' + minutes : minutes;
  390. seconds = seconds < 10 ? '0' + seconds : seconds;
  391. // 拼接时间字符串
  392. let formattedTime = `${year}-${month}-${date} ${hours}:${minutes}:${seconds}`;
  393. return formattedTime;
  394. }
  395. </script>