customerAdd.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642
  1. <?php
  2. require_once 'conn.php';
  3. checkLogin();
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <title>客户管理</title>
  10. <link rel="stylesheet" href="css/common.css" type="text/css" />
  11. <script src="js/jquery-1.7.2.min.js"></script>
  12. <script src="js/js.js"></script>
  13. <script src="js/xheditor-1.1.9/xheditor-1.1.9-zh-cn.min.js"></script>
  14. <script src="js/Hz2Py-szm-min.js"></script>
  15. <script src="js/ySearchSelect.js"></script>
  16. <script>
  17. $(document).ready(function(){
  18. $('.txt2').xheditor({
  19. tools:'full',
  20. hoverExecDelay:-1,
  21. urlBase:'system',
  22. upLinkUrl:"upload.php",
  23. upLinkExt:"zip,rar,txt,pdf",
  24. upImgUrl:"upload.php",
  25. upImgExt:"jpg,jpeg,gif,png",
  26. upFlashUrl:"upload.php",
  27. upFlashExt:"swf",
  28. upMediaUrl:"upload.php",
  29. upMediaExt:"wmv,avi,wma,mp3,mid"
  30. });
  31. // 失去焦点时执行格式化
  32. $(document).on('blur', '.method-input', function() {
  33. var methodType = $(this).prev('.method-select').val();
  34. if (methodType === 'tel' || methodType === 'whatsapp') {
  35. var formattedValue = formatPhoneNumber($(this).val(), true);
  36. $(this).val(formattedValue);
  37. }
  38. });
  39. // Add contact form
  40. $('.add-contact-btn').click(function() {
  41. var contactsContainer = $('#contacts-container');
  42. var contactIndex = contactsContainer.children('.contact-form').length;
  43. var contactForm = `
  44. <div class="contact-form" id="contact-form-${contactIndex}">
  45. <div class="contact-header">
  46. <button type="button" class="remove-contact-btn" data-index="${contactIndex}">删除</button>
  47. <h3>联系人 #${contactIndex + 1}</h3>
  48. </div>
  49. <input type="hidden" name="contact[${contactIndex}][id]" value="">
  50. <div class="contact-method-row">
  51. <span style="width:80px;display:inline-block;font-weight:bold;" class="method-select">联系人姓名</span>
  52. <input type="text" name="contact[${contactIndex}][contact_name]" class="txt1 method-input" style="width:60%;" placeholder="联系人姓名"/>
  53. </div>
  54. <div class="contact-methods-container" id="contact-methods-${contactIndex}">
  55. <!-- Contact methods will be added here -->
  56. </div>
  57. <button type="button" class="add-method-btn" data-contact-index="${contactIndex}">添加联系方式</button>
  58. </div>
  59. `;
  60. contactsContainer.append(contactForm);
  61. });
  62. // Add contact method
  63. $(document).on('click', '.add-method-btn', function() {
  64. var contactIndex = $(this).data('contact-index');
  65. var methodsContainer = $('#contact-methods-' + contactIndex);
  66. // Count existing methods by type
  67. var methodCounts = {};
  68. methodsContainer.find('select.method-select').each(function() {
  69. var type = $(this).val();
  70. if (type) {
  71. methodCounts[type] = (methodCounts[type] || 0) + 1;
  72. }
  73. });
  74. var methodRow = `
  75. <div class="contact-method-row">
  76. <select class="method-select" onchange="updateMethodSelectAndPlaceholder(this)">
  77. <option value="">请选择联系方式</option>
  78. <option value="tel" ${(methodCounts.tel || 0) >= 3 ? 'disabled' : ''}>电话</option>
  79. <option value="wechat" ${(methodCounts.wechat || 0) >= 3 ? 'disabled' : ''}>微信</option>
  80. <option value="whatsapp" ${(methodCounts.whatsapp || 0) >= 3 ? 'disabled' : ''}>WhatsApp</option>
  81. <option value="email" ${(methodCounts.email || 0) >= 3 ? 'disabled' : ''}>邮箱</option>
  82. <option value="linkedin" ${(methodCounts.linkedin || 0) >= 3 ? 'disabled' : ''}>领英</option>
  83. <option value="facebook" ${(methodCounts.facebook || 0) >= 3 ? 'disabled' : ''}>Facebook</option>
  84. <option value="alibaba" ${(methodCounts.alibaba || 0) >= 3 ? 'disabled' : ''}>阿里巴巴</option>
  85. </select>
  86. <input type="text" class="txt1 method-input" style="width:60%;" placeholder="请选择联系方式类型">
  87. <button type="button" class="remove-method-btn">删除</button>
  88. </div>
  89. `;
  90. methodsContainer.append(methodRow);
  91. updateMethodFields(methodsContainer.find('.contact-method-row:last-child'));
  92. // 初始化新添加的方法行的输入事件
  93. var newRow = methodsContainer.find('.contact-method-row:last-child');
  94. newRow.find('.method-select').on('change', function() {
  95. var methodType = $(this).val();
  96. if (methodType === 'tel' || methodType === 'whatsapp') {
  97. // 清除已有内容并设置正确的placeholder
  98. $(this).next('.method-input').val('');
  99. }
  100. });
  101. });
  102. // Remove contact method
  103. $(document).on('click', '.remove-method-btn', function() {
  104. var methodRow = $(this).closest('.contact-method-row');
  105. var contactIndex = methodRow.closest('.contact-form').attr('id').split('-')[2];
  106. var type = methodRow.find('select.method-select').val();
  107. methodRow.remove();
  108. // Update available options in other selects
  109. updateAvailableMethodTypes(contactIndex);
  110. });
  111. // Remove contact
  112. $(document).on('click', '.remove-contact-btn', function() {
  113. var contactForm = $(this).closest('.contact-form');
  114. contactForm.remove();
  115. // Renumber remaining contacts
  116. $('#contacts-container .contact-form').each(function(index) {
  117. $(this).find('h3').text('联系人 #' + (index + 1));
  118. });
  119. });
  120. // Add initial contact form if none exists
  121. if ($('#contacts-container').children().length === 0) {
  122. $('.add-contact-btn').click();
  123. }
  124. });
  125. // 格式化电话号码函数
  126. function formatPhoneNumber(phone, finalFormat = false) {
  127. if (!phone) return phone;
  128. // 去除所有非数字、加号和空格
  129. phone = phone.replace(/[^\d\s+]/g, '');
  130. // 去除开头和结尾的空格
  131. phone = phone.trim();
  132. // 确保以加号开头
  133. if (!phone.startsWith('+')) {
  134. // 如果第一个字符是数字,添加加号
  135. if (/^\d/.test(phone)) {
  136. phone = '+' + phone;
  137. } else {
  138. // 如果不是以数字开头,检查是否有数字并添加加号
  139. var firstDigitIndex = phone.search(/\d/);
  140. if (firstDigitIndex >= 0) {
  141. phone = '+' + phone.substring(firstDigitIndex);
  142. } else {
  143. // 如果没有数字,返回原始输入
  144. return phone;
  145. }
  146. }
  147. }
  148. return phone;
  149. }
  150. // Update method fields based on selection
  151. function updateMethodFields(methodRow) {
  152. var select = methodRow.find('select.method-select');
  153. var input = methodRow.find('input.method-input');
  154. var contactForm = methodRow.closest('.contact-form');
  155. var contactIndex = contactForm.attr('id').split('-')[2];
  156. var type = select.val();
  157. if (!type) return;
  158. // Count existing methods of this type
  159. var count = 1;
  160. contactForm.find('select.method-select').each(function() {
  161. if ($(this).val() === type && $(this)[0] !== select[0]) {
  162. count++;
  163. }
  164. });
  165. // Update field names
  166. select.attr('name', `contact[${contactIndex}][method_type_${count}]`);
  167. input.attr('name', `contact[${contactIndex}][${type}_${count}]`);
  168. // Add format field for tel and whatsapp
  169. if (type === 'tel' || type === 'whatsapp') {
  170. if (!methodRow.find('.format-input').length) {
  171. input.after(`<input type="hidden" class="format-input" name="contact[${contactIndex}][${type}_${count}_format]">`);
  172. }
  173. }
  174. // Add backup field
  175. if (!methodRow.find('.backup-input').length) {
  176. methodRow.append(`<input type="hidden" class="backup-input" name="contact[${contactIndex}][${type}_${count}_bu]">`);
  177. }
  178. }
  179. // Update available method types for a contact
  180. function updateAvailableMethodTypes(contactIndex) {
  181. var methodsContainer = $('#contact-methods-' + contactIndex);
  182. // Count methods by type
  183. var methodCounts = {};
  184. methodsContainer.find('select.method-select').each(function() {
  185. var type = $(this).val();
  186. if (type) {
  187. methodCounts[type] = (methodCounts[type] || 0) + 1;
  188. }
  189. });
  190. // Update all selects in this contact
  191. methodsContainer.find('select.method-select').each(function() {
  192. var currentValue = $(this).val();
  193. $(this).find('option').each(function() {
  194. var optionValue = $(this).val();
  195. if (optionValue && optionValue !== currentValue) {
  196. $(this).prop('disabled', (methodCounts[optionValue] || 0) >= 3);
  197. }
  198. });
  199. });
  200. }
  201. // Update placeholder and handle method fields
  202. function updateMethodSelectAndPlaceholder(selectElement) {
  203. var methodRow = $(selectElement).closest('.contact-method-row');
  204. updateMethodPlaceholder(selectElement);
  205. updateMethodFields(methodRow);
  206. var contactIndex = methodRow.closest('.contact-form').attr('id').split('-')[2];
  207. updateAvailableMethodTypes(contactIndex);
  208. }
  209. // Update method placeholder based on selected type
  210. function updateMethodPlaceholder(selectElement) {
  211. var placeholder = "";
  212. var value = $(selectElement).val();
  213. switch(value) {
  214. case "tel":
  215. placeholder = "电话格式必须为:区号+号码 如:+86 15012345678";
  216. break;
  217. case "wechat":
  218. placeholder = "微信";
  219. break;
  220. case "whatsapp":
  221. placeholder = "Whatsapp 格式必须为:区号+号码 如:+86 15012345678";
  222. break;
  223. case "email":
  224. placeholder = "邮箱格式必须正确,如: example@domain.com";
  225. break;
  226. case "linkedin":
  227. placeholder = "领英链接";
  228. break;
  229. case "facebook":
  230. placeholder = "Facebook";
  231. break;
  232. case "alibaba":
  233. placeholder = "阿里巴巴";
  234. break;
  235. default:
  236. placeholder = "请选择联系方式类型";
  237. }
  238. $(selectElement).next('.method-input').attr('placeholder', placeholder);
  239. }
  240. // Custom validation function for multiple contacts form with contact methods
  241. function validateMultipleContactsForm() {
  242. var clientCode = $("#cs_code").val();
  243. var clientCompany = $("#cs_company").val();
  244. var clientFrom = $("#cs_from").val();
  245. var clientCountry = $("#cs_country").val();
  246. // Validate basic customer info
  247. if (clientCode == "" || clientCode == null) {
  248. alert("客户代码不能为空!");
  249. $("#cs_code").focus();
  250. return false;
  251. }
  252. if (clientCountry == 0 || !clientCountry) {
  253. alert("这是哪个国家的客户?");
  254. $("#cs_country").focus();
  255. return false;
  256. }
  257. if (clientFrom == "0") {
  258. alert("请填写客户来源!");
  259. $("#cs_from").focus();
  260. return false;
  261. }
  262. // Validate that at least one business type is selected
  263. if (!$('input[name="cs_type[]"]:checked').length) {
  264. alert("请至少选择一种业务类型!");
  265. return false;
  266. }
  267. // Get source text to check if it's from Alibaba platforms
  268. var clientFromText = $("#cs_from option:selected").text();
  269. var isAlibabaSource = clientFromText.indexOf("1688") >= 0 ||
  270. clientFromText.indexOf("阿里") >= 0 ||
  271. clientFromText.indexOf("alibaba") >= 0;
  272. // Validate that at least one contact has at least one contact method
  273. var hasContactMethod = false;
  274. var hasAlibabaContact = false;
  275. var allContactsValid = true;
  276. var phoneRegex = /^\+\d{1,4}\s\d+$/; // 区号后必须有空格,号码中不能有空格
  277. var emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; // Regex to validate email format
  278. $('.contact-form').each(function(contactIndex) {
  279. var $form = $(this);
  280. var contactName = $form.find('input[name*="[contact_name]"]').val();
  281. var hasMethodInThisContact = false;
  282. // Check if this contact has methods
  283. $form.find('.contact-method-row').each(function() {
  284. var methodType = $(this).find('select.method-select').val();
  285. var methodValue = $(this).find('input.method-input').val();
  286. if (methodValue) {
  287. hasMethodInThisContact = true;
  288. hasContactMethod = true;
  289. // Check if there's an Alibaba contact method
  290. if (methodType === 'alibaba') {
  291. hasAlibabaContact = true;
  292. }
  293. }
  294. // Check if method type is selected but value is empty
  295. if (methodType && !methodValue) {
  296. alert("联系方式类型已选择但值为空");
  297. allContactsValid = false;
  298. return false;
  299. }
  300. // Validate phone number format for tel and whatsapp
  301. if ((methodType === 'tel' || methodType === 'whatsapp') && methodValue) {
  302. if (!phoneRegex.test(methodValue)) {
  303. // 检查具体的错误原因
  304. if (!methodValue.startsWith('+')) {
  305. alert("电话号码必须以'+'开头");
  306. } else if (methodValue.indexOf(' ') === -1) {
  307. alert("区号后必须有空格,例如: +86 15012345678");
  308. } else if (methodValue.split(' ').length > 2 || methodValue.split(' ')[1].indexOf(' ') !== -1) {
  309. alert("号码部分不能包含空格");
  310. } else {
  311. alert("电话格式不正确,正确格式为: +区号 号码,例如 +86 15012345678");
  312. }
  313. $(this).find('input.method-input').focus();
  314. allContactsValid = false;
  315. return false;
  316. }
  317. }
  318. // Validate email format
  319. if (methodType === 'email' && methodValue) {
  320. if (!emailRegex.test(methodValue)) {
  321. alert("邮箱格式不正确,请输入有效的邮箱地址");
  322. $(this).find('input.method-input').focus();
  323. allContactsValid = false;
  324. return false;
  325. }
  326. }
  327. });
  328. // If contact has a name but no methods, or has methods but no name
  329. if ((contactName && !hasMethodInThisContact) || (!contactName && hasMethodInThisContact)) {
  330. alert("联系人 #" + (contactIndex + 1) + " 缺少联系人姓名或联系方式");
  331. allContactsValid = false;
  332. return false;
  333. }
  334. // If contact has neither name nor methods, it's an empty contact
  335. if (!contactName && !hasMethodInThisContact) {
  336. alert("联系人 #" + (contactIndex + 1) + " 是空的,请填写信息或删除此联系人");
  337. allContactsValid = false;
  338. return false;
  339. }
  340. });
  341. if (!allContactsValid) {
  342. return false;
  343. }
  344. if (!hasContactMethod) {
  345. alert("至少需要添加一个联系人,且联系人至少需要一种联系方式!");
  346. return false;
  347. }
  348. // If source is from Alibaba platforms, must have Alibaba contact method
  349. if (isAlibabaSource && !hasAlibabaContact) {
  350. alert("客户来源为1688或阿里国际站时,必须添加至少一个阿里巴巴联系方式!");
  351. return false;
  352. }
  353. // Set tag values
  354. $("input#mytag").val($(".taglist").html());
  355. return true;
  356. }
  357. // Modified submission function
  358. function subform() {
  359. if (validateMultipleContactsForm()) {
  360. $("#form1").submit();
  361. }
  362. }
  363. </script>
  364. <style>
  365. body {
  366. margin: 0;
  367. background: #fff;
  368. }
  369. #man_zone {
  370. margin-left: 0;
  371. }
  372. .contact-form {
  373. margin-bottom: 10px;
  374. /*border: 1px solid #ddd;*/
  375. padding: 8px;
  376. background-color: #FFFFFF;
  377. }
  378. .contact-header {
  379. display: flex;
  380. align-items: center;
  381. margin-bottom: 8px;
  382. gap: 10px;
  383. }
  384. .contact-header h3 {
  385. margin: 0;
  386. order: 2;
  387. flex-grow: 1;
  388. }
  389. .remove-contact-btn {
  390. background-color: #f44336;
  391. color: white;
  392. border: none;
  393. padding: 4px 8px;
  394. cursor: pointer;
  395. order: 1;
  396. }
  397. .add-contact-btn {
  398. padding: 6px 12px;
  399. margin-bottom: 10px;
  400. cursor: pointer;
  401. height: 32px;
  402. border: none;
  403. color: #FFF;
  404. background: #9ad48a;
  405. border-radius: 3px;
  406. margin-left: 10px;
  407. }
  408. .contact-methods-container {
  409. margin-top: 8px;
  410. }
  411. .contact-method-row {
  412. margin-bottom: 6px;
  413. padding: 6px;
  414. /*border: 1px solid #eee;*/
  415. /*background-color: #f5f5f5;*/
  416. display: flex;
  417. align-items: center;
  418. gap: 8px;
  419. }
  420. .add-method-btn {
  421. background-color: #2196F3;
  422. color: white;
  423. border: none;
  424. padding: 4px 8px;
  425. margin-top: 4px;
  426. cursor: pointer;
  427. }
  428. .remove-method-btn {
  429. background-color: #f44336;
  430. color: white;
  431. border: none;
  432. padding: 2px 4px;
  433. cursor: pointer;
  434. }
  435. .method-select {
  436. margin-right: 8px;
  437. padding: 3px;
  438. }
  439. .contact-table {
  440. margin-bottom: 6px;
  441. }
  442. .contact-table td, .contact-table th {
  443. padding: 4px 6px;
  444. }
  445. </style>
  446. </head>
  447. <body class="clear">
  448. <?php // require_once 'panel.php'; ?>
  449. <div id="man_zone">
  450. <form name="form1" id="form1" method="post" action="customerSave.php<?= $hrefstr ?? '' ?>">
  451. <table width="100%" border="0" cellpadding="3" cellspacing="1" class="table1">
  452. <tbody>
  453. <tr>
  454. <th width="8%" nowrap>客户编号</th>
  455. <td>
  456. <input type="text" id="cs_code" name="cs_code" value="" class="txt1" />
  457. <input type="hidden" name="cs_addtime" value="<?= date('Y-m-d H:i:s') ?>" />
  458. </td>
  459. </tr>
  460. <tr>
  461. <th width="8%" nowrap>公司名称</th>
  462. <td><input type="text" id="cs_company" name="cs_company" value="" class="txt1" /></td>
  463. </tr>
  464. <tr>
  465. <th width="8%" nowrap>地区/国家</th>
  466. <td>
  467. <div class="layui-input-inline">
  468. <div class="layui-form-select ySearchSelect y1">
  469. <div class="layui-input">请选择客户区域</div>
  470. <input name="cs_country" id="cs_country" type="hidden">
  471. <i class="layui-edge"></i>
  472. <ul>
  473. <?php
  474. $result = $conn->query("SELECT id, countryCode, countryName FROM country");
  475. while ($row = $result->fetch_assoc()) {
  476. echo "<li class=\"on\" data-c=\"{$row['id']}\">(+{$row['countryCode']}){$row['countryName']}</li>";
  477. }
  478. ?>
  479. <p>无匹配项</p>
  480. </ul>
  481. </div>
  482. </div>
  483. <script>
  484. $(function () {
  485. $(".y1").ySearchSelect();
  486. })
  487. </script>
  488. </td>
  489. </tr>
  490. <tr>
  491. <th width="8%" nowrap>来源</th>
  492. <td>
  493. <select id="cs_from" name="cs_from">
  494. <option value="0">请选择来源</option>
  495. <?php
  496. $result = $conn->query("SELECT id, ch_name FROM qudao");
  497. while ($row = $result->fetch_assoc()) {
  498. echo "<option value=\"{$row['id']}\">{$row['ch_name']}</option>";
  499. }
  500. ?>
  501. </select>
  502. </td>
  503. </tr>
  504. <tr>
  505. <th width="8%" valign="top" nowrap>联系人信息</th>
  506. <td>
  507. <button type="button" class="add-contact-btn">添加联系人</button>
  508. <div id="contacts-container">
  509. <!-- Contact forms will be added here -->
  510. </div>
  511. </td>
  512. </tr>
  513. <tr>
  514. <th nowrap>地址</th>
  515. <td><input type="text" id="cs_address" name="cs_address" value="" class="txt1" /></td>
  516. </tr>
  517. <tr>
  518. <th nowrap>业务类型</th>
  519. <td>
  520. <?php
  521. $result = $conn->query("SELECT id, businessType FROM clienttype");
  522. while ($row = $result->fetch_assoc()) {
  523. echo "<input type=\"checkbox\" name=\"cs_type[]\" value=\"{$row['id']}\" id=\"fortype{$row['id']}\">
  524. <label for=\"fortype{$row['id']}\">{$row['businessType']}</label>";
  525. }
  526. ?>
  527. </td>
  528. </tr>
  529. <tr>
  530. <th>跟进阶段</th>
  531. <td>
  532. <input type="radio" id="fordeal1" class="cs_deal" name="cs_deal" value="0"><label for="fordeal1">无响应</label>
  533. <input type="radio" id="fordeal2" class="cs_deal" name="cs_deal" value="1" checked="checked"><label for="fordeal2">背景调查</label>
  534. <input type="radio" id="fordeal3" class="cs_deal" name="cs_deal" value="2"><label for="fordeal3">明确需求</label>
  535. <input type="radio" id="fordeal4" class="cs_deal" name="cs_deal" value="3"><label for="fordeal4">已成交</label>
  536. </td>
  537. </tr>
  538. <tr>
  539. <th>其他</th>
  540. <td>
  541. <input type="checkbox" id="belongClient" class="cs_belongClient" name="cs_belongClient" value="1">
  542. <label for="belongClient">客户的客户</label>
  543. </td>
  544. </tr>
  545. <tr>
  546. <th>自定义标签</th>
  547. <td>
  548. <div class="taglist"></div>
  549. <input type="hidden" id="mytag" name="mytag" value="">
  550. <div class="commontag clear">
  551. <i class="tag">美特柏品牌客户</i>,
  552. <i class="tag">OEM定制客户</i>,
  553. <i class="tag">小型B端客户</i>,
  554. <i class="tag">C端客户</i>,
  555. <i class="tag">贸易公司</i>,
  556. <i class="tag">档口客户</i>
  557. <?php
  558. // 将bind_param改为SQL拼接
  559. $employee_id = intval($_SESSION['employee_id']);
  560. $sql = "SELECT DISTINCT tagName FROM tagtable WHERE employeeId = ".$employee_id;
  561. $result = $conn->query($sql);
  562. while ($row = $result->fetch_assoc()) {
  563. echo "<i class=\"tag\">" . htmlspecialcharsFix(textUncode($row['tagName'])) . "</i>,";
  564. }
  565. ?>
  566. </div>
  567. <input type="text" id="tapinput" class="txt-short" placeholder="添加新标签,按Enter添加">
  568. </td>
  569. </tr>
  570. <tr>
  571. <th width="8%">备注</th>
  572. <td><textarea name="cs_note" class="txt2" placeholder=""></textarea></td>
  573. </tr>
  574. <tr>
  575. <th></th>
  576. <td>
  577. <input type="button" name="save" id="save" value="确定" class="btn1" onclick="subform();" />
  578. <input type="button" value="返回" class="btn1" onClick="location.href='customers.php'" />
  579. </td>
  580. </tr>
  581. </tbody>
  582. </table>
  583. </form>
  584. </div>
  585. </body>
  586. </html>